diff --git a/.gitmodules b/.gitmodules
deleted file mode 100644
index 4767964..0000000
--- a/.gitmodules
+++ /dev/null
@@ -1,3 +0,0 @@
-[submodule "lib/sat_code"]
- path = lib/sat_code
- url = https://github.com/Bill-Gray/sat_code.git
diff --git a/CLAUDE.md b/CLAUDE.md
index 937a3ce..b22823e 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -11,10 +11,10 @@ A PostgreSQL extension that moves orbital mechanics inside the database — the
```bash
make PG_CONFIG=/usr/bin/pg_config # Compile with PGXS
sudo make install PG_CONFIG=/usr/bin/pg_config # Install extension
-make installcheck PG_CONFIG=/usr/bin/pg_config # Run 12 regression test suites
+make installcheck PG_CONFIG=/usr/bin/pg_config # Run 13 regression test suites
```
-Requires: PostgreSQL 17 development headers, GCC, G++ (for sat_code C++), Make.
+Requires: PostgreSQL 17 development headers, GCC, Make.
### Docker
```bash
@@ -68,11 +68,21 @@ src/
de_reader.h / de_reader.c # Clean-room JPL DE binary reader (Chebyshev/Clenshaw)
eph_provider.h / eph_provider.c # Provider dispatch, GUC, lazy init, frame rotation
de_funcs.c # All _de() SQL function implementations
-lib/
- sat_code/ # Bill Gray's SGP4/SDP4 (MIT, git submodule)
+ sgp4/ # Vendored SGP4/SDP4 (Bill Gray's sat_code, MIT license)
+ sgp4.c # Near-earth propagator (period < 225 min)
+ sdp4.c # Deep-space propagator (period >= 225 min)
+ deep.c # Lunar/solar perturbations, resonance integration
+ common.c # Shared initialization (Brouwer mean elements, Kepler solver)
+ basics.c # select_ephemeris(), FMod2p()
+ get_el.c # TLE parsing (parse_elements(), checksum)
+ tle_out.c # TLE output (write_elements_in_tle_format())
+ norad.h / norad_in.h # Public + internal headers
+ PROVENANCE.md # Vendoring decision, modifications, verification
+ LICENSE # MIT license (Bill Gray / Project Pluto)
test/
- sql/ # 12 regression test suites
+ sql/ # 13 regression test suites
expected/ # Expected output
+ data/vallado_518.json # 518 Vallado test vectors (AIAA 2006-6753-Rev1)
docs/
DESIGN.md # Architecture decisions, theory-to-code mappings
Dockerfile # Starlight docs site (Astro + Caddy)
@@ -210,21 +220,26 @@ Every `_de()` function mirrors an existing VSOP87 function:
| `mars_moon_observe_de()` | `mars_moon_observe()` | STABLE |
| `pg_orbit_ephemeris_info()` | — | STABLE |
-## sat_code Submodule
+## Vendored SGP4/SDP4
-Bill Gray's SGP4/SDP4: https://github.com/Bill-Gray/sat_code (MIT license)
+Bill Gray's sat_code (MIT license): https://github.com/Bill-Gray/sat_code
-C++ sources compiled with `g++ -fPIC`, linked via `-lstdc++`. C linkage through `norad.h`.
+Vendored into `src/sgp4/` from upstream commit `ff7b98957dfa2979700a482bde9de9542807293e`. The `.cpp` files were renamed to `.c` — the code is valid C99 with zero C++ features (no classes, templates, namespaces, exceptions, or STL). This eliminates the `g++` and `-lstdc++` dependencies.
-```bash
-git submodule update --init # Initialize
-```
+Modifications from upstream are minimal and documented in `src/sgp4/PROVENANCE.md`:
+- Renamed `.cpp` → `.c` (no code changes — already valid C99)
+- Stripped Win32 `DLL_FUNC`/`__stdcall` decorators
+- Removed `extern "C"` wrapper (now compiled as C)
+- Removed unused SGP/SGP8/SDP8 model prototypes
+- Added forward declarations (`-Wmissing-prototypes`)
+- Changed bare `inline` to `static inline` for C99 compliance
+- Added equation citations referencing STR#3 and Vallado Rev-1
-Key files: `sgp4.cpp`, `sdp4.cpp`, `deep.cpp`, `common.cpp`, `basics.cpp`, `norad.h`, `norad_in.h`
+All numerical logic is byte-identical to upstream. Verified against 518 Vallado test vectors (AIAA 2006-6753-Rev1).
## Testing
-12 regression test suites via `make installcheck`:
+13 regression test suites via `make installcheck`:
| Suite | What it tests |
|-------|--------------|
@@ -240,6 +255,7 @@ Key files: `sgp4.cpp`, `sdp4.cpp`, `deep.cpp`, `common.cpp`, `basics.cpp`, `nora
| moon_observe | Galilean/Saturn/Uranus/Mars moons, Io phase, Jupiter CML, burst probability |
| lambert_transfer | Lambert solver, lambert_c3, pork chop grid, error handling |
| de_ephemeris | DE function fallback to VSOP87, cross-provider consistency, error handling |
+| vallado_518 | 518 Vallado test vectors (AIAA 2006-6753-Rev1), per-satellite breakdown |
## Error Handling Patterns
@@ -305,7 +321,7 @@ cd docs && make prod
- `ereport(ERROR, ...)` for user-facing errors, never `elog(ERROR, ...)`
- All memory via `palloc`/`pfree` (PostgreSQL memory contexts)
- Comments explain "why", not "what"
-- No global mutable state — all computation from function arguments (exception: per-backend DE handle, lazily initialized, cleaned up via `on_proc_exit`)
+- No global mutable state — all computation from function arguments (exceptions: per-backend DE handle via `on_proc_exit`; 3 statics in vendored `deep.c` + 1 cache in `sdp4.c`, safe in PostgreSQL's fork model, never modified by pg_orbit)
- Every function handling SGP4 must check the error return code
- All functions marked `PARALLEL SAFE`
- DE functions: always fall back to VSOP87/ELP82B on any error
diff --git a/Dockerfile b/Dockerfile
index 499236f..21a9410 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -20,7 +20,7 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
apt-get update && apt-get install -y --no-install-recommends \
postgresql-${PG_MAJOR} \
postgresql-server-dev-${PG_MAJOR} \
- gcc g++ make && \
+ gcc make && \
rm -rf /var/lib/apt/lists/*
# Copy source tree (submodule content included as regular files)
@@ -35,7 +35,7 @@ RUN make PG_CONFIG=${PG_CONFIG}
# Install to system location (needed for installcheck)
RUN make PG_CONFIG=${PG_CONFIG} install
-# Run all 12 regression test suites against a throwaway cluster
+# Run all 13 regression test suites against a throwaway cluster
RUN su postgres -c "/usr/lib/postgresql/${PG_MAJOR}/bin/initdb -D /tmp/pgtest" && \
su postgres -c "/usr/lib/postgresql/${PG_MAJOR}/bin/pg_ctl -D /tmp/pgtest -l /tmp/pgtest.log start" && \
su postgres -c "/usr/lib/postgresql/${PG_MAJOR}/bin/createuser -s root" && \
diff --git a/docs/DESIGN.md b/docs/DESIGN.md
index d85b293..c4606e3 100644
--- a/docs/DESIGN.md
+++ b/docs/DESIGN.md
@@ -49,14 +49,14 @@ prediction error of the TLE by an order of magnitude.
### Constant Inventory
-| Constant | Source Paper | Value | pg_orbit Location | sat_code Location |
-|----------|-------------|-------|-------------------|-------------------|
-| ae (equatorial radius) | Hoots & Roehrich STR#3 | 6378.135 km | `types.h:20` (WGS72_AE) | `norad_in.h:64` (earth_radius_in_km) |
-| J2 | Hoots & Roehrich STR#3 | 0.001082616 | `types.h:21` (WGS72_J2) | `norad_in.h:69` (xj2) |
-| J3 | Hoots & Roehrich STR#3 | -2.53881e-6 | `types.h:22` (WGS72_J3) | `norad_in.h:63` (xj3) |
-| J4 | Hoots & Roehrich STR#3 | -1.65597e-6 | `types.h:23` (WGS72_J4) | `norad_in.h:79` (xj4) |
-| ke | Hoots & Roehrich STR#3 | 0.0743669161331734132 min^-1 | `types.h:24` (WGS72_KE) | `norad_in.h:83` (xke) |
-| mu | Hoots & Roehrich STR#3 | 398600.8 km^3/s^2 | `types.h:19` (WGS72_MU) | (implicit in xke) |
+| Constant | Source Paper | Value | pg_orbit Location | Vendored SGP4 Location |
+|----------|-------------|-------|-------------------|------------------------|
+| ae (equatorial radius) | Hoots & Roehrich STR#3 | 6378.135 km | `types.h` (WGS72_AE) | `src/sgp4/norad_in.h` (earth_radius_in_km) |
+| J2 | Hoots & Roehrich STR#3 | 0.001082616 | `types.h` (WGS72_J2) | `src/sgp4/norad_in.h` (xj2) |
+| J3 | Hoots & Roehrich STR#3 | -2.53881e-6 | `types.h` (WGS72_J3) | `src/sgp4/norad_in.h` (xj3) |
+| J4 | Hoots & Roehrich STR#3 | -1.65597e-6 | `types.h` (WGS72_J4) | `src/sgp4/norad_in.h` (xj4) |
+| ke | Hoots & Roehrich STR#3 | 0.0743669161331734132 min^-1 | `types.h` (WGS72_KE) | `src/sgp4/norad_in.h` (xke) |
+| mu | Hoots & Roehrich STR#3 | 398600.8 km^3/s^2 | `types.h` (WGS72_MU) | (implicit in xke) |
| WGS-84 a | NIMA TR8350.2 | 6378.137 km | `types.h:31` (WGS84_A) | -- |
| WGS-84 f | NIMA TR8350.2 | 1/298.257223563 | `types.h:32` (WGS84_F) | -- |
@@ -112,31 +112,30 @@ across function invocations.
3. **Includes deep-space SDP4.** Many SGP4 implementations only handle
near-earth orbits (period < 225 minutes). sat_code includes the full
- SDP4 with lunar/solar perturbations via `deep.cpp`, handling GEO,
+ SDP4 with lunar/solar perturbations via `deep.c`, handling GEO,
Molniya, and GPS orbits.
4. **MIT license.** Compatible with the PostgreSQL License for embedding
in a shared library.
5. **Actively maintained.** Used in Bill Gray's Find_Orb production
- astrometry software. Bug fixes reach us through the git submodule.
+ astrometry software.
### Build Integration
-The Makefile compiles sat_code's `.cpp` files with `g++` and links the
-resulting `.o` files into the PostgreSQL shared library alongside our C
-sources. The `-lstdc++` link flag pulls in the C++ runtime. This is the
-same pattern used by PostGIS for GEOS integration (C extension linking
-C++ library objects).
+The SGP4/SDP4 source is vendored into `src/sgp4/` — the `.cpp` files
+renamed to `.c` (the code is valid C99 with zero C++ features). The
+Makefile compiles everything with `gcc` and links with `-lm` only. No
+C++ compiler or runtime is required.
```
-src/*.c --> gcc --> .o --|
-lib/sat_code/*.cpp -> g++ -> .o --|--> pg_orbit.so
- -lstdc++ -lm
+src/*.c --[gcc]--> .o --|
+src/sgp4/*.c --[gcc]--> .o --|--> pg_orbit.so
+ -lm
```
-The `-I$(SAT_CODE_DIR)` flag lets our C files `#include "norad.h"`
-directly.
+The `-I$(SGP4_DIR)` flag lets our C files `#include "norad.h"` directly.
+Provenance is recorded in `src/sgp4/PROVENANCE.md`.
## 3. Type System Design
@@ -573,18 +572,18 @@ initialize the propagator.
## 9. Theory-to-Code Mapping
This table maps key equations from the SGP4 theory papers to their
-implementation in pg_orbit and sat_code.
+implementation in pg_orbit and the vendored SGP4 code.
| Theory | Paper | What | Code Location |
|--------|-------|------|---------------|
-| Mean element recovery | Brouwer (1959) | Recover original mean motion (xnodp) and semi-major axis (aodp) from input TLE elements, removing secular J2 perturbations | `sat_code/common.cpp:sxpall_common_init()` lines 17-35 |
-| Secular perturbations | Lane & Cranford (1969), Hoots & Roehrich STR#3 | Secular rates of mean anomaly, argument of perigee, and RAAN due to J2, J4 | `sat_code/common.cpp:sxpx_common_init()` lines 86-101 |
-| Atmospheric drag | Hoots & Roehrich STR#3 | B* formulation of drag, C1/C2/C4 coefficients, perigee-dependent s parameter | `sat_code/common.cpp:sxpx_common_init()` lines 47-84; `sat_code/sgp4.cpp:SGP4_init()` |
-| Short-period perturbations | Lane & Cranford (1969), Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `sat_code/common.cpp:sxpx_posn_vel()` lines 121-229 |
-| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `sat_code/common.cpp:sxpx_posn_vel()` lines 175-208 |
-| Deep-space resonance | Hujsak (1979) | Lunar and solar gravitational perturbations, geopotential resonance for 12-hour and 24-hour orbits | `sat_code/deep.cpp:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` |
-| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `sat_code/sgp4.cpp:SGP4()` |
-| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `sat_code/sdp4.cpp:SDP4()` |
+| Mean element recovery | Brouwer (1959) | Recover original mean motion (xnodp) and semi-major axis (aodp) from input TLE elements, removing secular J2 perturbations | `src/sgp4/common.c:sxpall_common_init()` lines 17-35 |
+| Secular perturbations | Lane & Cranford (1969), Hoots & Roehrich STR#3 | Secular rates of mean anomaly, argument of perigee, and RAAN due to J2, J4 | `src/sgp4/common.c:sxpx_common_init()` lines 86-101 |
+| Atmospheric drag | Hoots & Roehrich STR#3 | B* formulation of drag, C1/C2/C4 coefficients, perigee-dependent s parameter | `src/sgp4/common.c:sxpx_common_init()` lines 47-84; `src/sgp4/sgp4.c:SGP4_init()` |
+| Short-period perturbations | Lane & Cranford (1969), Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `src/sgp4/common.c:sxpx_posn_vel()` lines 121-229 |
+| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `src/sgp4/common.c:sxpx_posn_vel()` lines 175-208 |
+| Deep-space resonance | Hujsak (1979) | Lunar and solar gravitational perturbations, geopotential resonance for 12-hour and 24-hour orbits | `src/sgp4/deep.c:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` |
+| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `src/sgp4/sgp4.c:SGP4()` |
+| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `src/sgp4/sdp4.c:SDP4()` |
| Semi-major axis from n | Kepler's third law | a = (KE / n)^(2/3) in earth radii | `src/tle_type.c:tle_perigee()` line 415; `src/gist_tle.c:tle_to_alt_range()` line 76 |
| GMST | Vallado (2013) Eq. 3-47 | Greenwich Mean Sidereal Time from Julian date | `src/coord_funcs.c:gmst_from_jd()` lines 59-73; `src/pass_funcs.c:gmst_from_jd()` lines 129-151 |
| TEME to ECEF | Vallado (2013) | Z-axis rotation by -GMST, velocity cross-product correction | `src/coord_funcs.c:teme_to_ecef()` lines 83-103; `src/pass_funcs.c:teme_to_ecef()` lines 157-179 |
@@ -592,7 +591,7 @@ implementation in pg_orbit and sat_code.
| Topocentric transform | Standard SEZ | ECEF range vector rotated to South-East-Zenith, azimuth from north | `src/coord_funcs.c:ecef_to_topocentric()` lines 163-188 |
| Observer to ECEF | Geodesy standard | WGS-84 ellipsoid surface point to Cartesian | `src/coord_funcs.c:observer_to_ecef()` lines 143-156 |
| Range rate | Dot product | Projection of relative velocity onto line-of-sight unit vector | `src/coord_funcs.c:eci_to_topocentric()` line 618 |
-| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes (n < 2*pi/225 rad/min) | `sat_code/norad.h:select_ephemeris()` |
+| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes (n < 2*pi/225 rad/min) | `src/sgp4/norad.h:select_ephemeris()` |
## 10. JPL DE Ephemeris Architecture (v0.3.0)
diff --git a/docs/src/content/docs/architecture/constant-chain-of-custody.mdx b/docs/src/content/docs/architecture/constant-chain-of-custody.mdx
index 056834d..ca64774 100644
--- a/docs/src/content/docs/architecture/constant-chain-of-custody.mdx
+++ b/docs/src/content/docs/architecture/constant-chain-of-custody.mdx
@@ -24,7 +24,7 @@ Four rules govern constant usage across the entire codebase. No exceptions.
### Rule 1: WGS-72 for SGP4/SDP4 propagation
-All propagation uses WGS-72 constants: $\mu$, $a_e$, $J_2$, $J_3$, $J_4$, $k_e$. These flow through sat_code's `norad_in.h` defines and are never overridden. The functions `SGP4_init()`, `SGP4()`, `SDP4_init()`, and `SDP4()` operate entirely in the WGS-72 domain.
+All propagation uses WGS-72 constants: $\mu$, $a_e$, $J_2$, $J_3$, $J_4$, $k_e$. These flow through the vendored `src/sgp4/norad_in.h` defines and are never overridden. The functions `SGP4_init()`, `SGP4()`, `SDP4_init()`, and `SDP4()` operate entirely in the WGS-72 domain.
### Rule 2: WGS-84 for coordinate output
@@ -40,7 +40,7 @@ WGS-72 for propagation, WGS-84 for output. Perigee and apogee altitudes use WGS-
## Constant inventory
-The complete set of constants, with provenance and location in both pg_orbit and sat_code.
+The complete set of constants, with provenance and location in both pg_orbit and the vendored SGP4 code.
### WGS-72 constants (propagation domain)
@@ -75,9 +75,9 @@ Source: NIMA TR8350.2, "Department of Defense World Geodetic System 1984."
## Why two copies of AE?
-`types.h` carries a parallel copy of the WGS-72 constants even though sat_code defines them in `norad_in.h`. This is intentional.
+`types.h` carries a parallel copy of the WGS-72 constants even though the vendored SGP4 code defines them in `norad_in.h`. This is intentional.
-`types.h` is the single header for all pg_orbit C sources. `norad_in.h` is an internal sat_code header not meant for external consumers. The GiST index (`gist_tle.c`) and TLE accessor functions (`tle_type.c`) need $k_e$ and $a_e$ without pulling in sat_code internals. The values **must** be identical.
+`types.h` is the single header for all pg_orbit C sources. `norad_in.h` is an internal SGP4 header in `src/sgp4/` not meant for external consumers. The GiST index (`gist_tle.c`) and TLE accessor functions (`tle_type.c`) need $k_e$ and $a_e$ without pulling in sat_code internals. The values **must** be identical.
The perigee and apogee altitude computations derive from mean elements:
diff --git a/docs/src/content/docs/architecture/design-principles.mdx b/docs/src/content/docs/architecture/design-principles.mdx
index f6b83e5..29ac448 100644
--- a/docs/src/content/docs/architecture/design-principles.mdx
+++ b/docs/src/content/docs/architecture/design-principles.mdx
@@ -58,7 +58,7 @@ Every propagation function that can fail has a `_safe()` variant that returns `N
### SGP4 error classification
-sat_code returns six distinct error codes. pg_orbit classifies them into two categories based on physical meaning:
+The vendored SGP4/SDP4 library returns six distinct error codes. pg_orbit classifies them into two categories based on physical meaning:
| Code | Meaning | Severity | Response |
|------|---------|----------|----------|
@@ -122,7 +122,7 @@ The [Theory-to-Code Mapping](/architecture/theory-to-code/) page provides the co
| Equation | Source | Code |
|----------|--------|------|
-| SGP4/SDP4 propagation | Hoots & Roehrich, STR#3 (1980) | `sat_code/sgp4.cpp`, `sdp4.cpp` |
+| SGP4/SDP4 propagation | Hoots & Roehrich, STR#3 (1980) | `src/sgp4/sgp4.c`, `sdp4.c` |
| VSOP87 planetary positions | Bretagnon & Francou (1988) | `src/vsop87.c` |
| GMST computation | Vallado (2013) Eq. 3-47 | `src/coord_funcs.c:gmst_from_jd()` |
| Lambert solver | Izzo (2015) | `src/lambert.c` |
diff --git a/docs/src/content/docs/architecture/memory-thread-safety.mdx b/docs/src/content/docs/architecture/memory-thread-safety.mdx
index a8e62f3..09dc030 100644
--- a/docs/src/content/docs/architecture/memory-thread-safety.mdx
+++ b/docs/src/content/docs/architecture/memory-thread-safety.mdx
@@ -116,9 +116,9 @@ PostgreSQL backends are long-lived processes that serve multiple sessions. A glo
Given the same TLE and timestamp, pg_orbit produces the same result regardless of what queries ran before, how many backends are active, or whether the function is running in a parallel worker. There is no path-dependent behavior.
-## sat_code's memory model
+## SGP4/SDP4 memory model
-sat_code itself has no global mutable state. The propagator state lives entirely in two caller-provided structures:
+The vendored SGP4/SDP4 code has no global mutable state. The propagator state lives entirely in two caller-provided structures:
| Structure | Size | Contains | Owner |
|-----------|------|----------|-------|
@@ -157,7 +157,7 @@ All seven pg_orbit types are fixed-size with `STORAGE = plain`:
The TLE text format is 138+ bytes (two 69-character lines plus separator). The parsed struct is 112 bytes --- smaller than the text it came from, and it eliminates the ~10x parsing overhead that would be incurred on every propagation call if raw text were stored.
-The text representation can be reconstructed from the parsed elements via sat_code's `write_elements_in_tle_format()`. The round-trip is lossless for all fields that affect propagation.
+The text representation can be reconstructed from the parsed elements via the vendored `write_elements_in_tle_format()`. The round-trip is lossless for all fields that affect propagation.
## Memory usage in practice
diff --git a/docs/src/content/docs/architecture/sgp4-integration.mdx b/docs/src/content/docs/architecture/sgp4-integration.mdx
index d268f64..81efd89 100644
--- a/docs/src/content/docs/architecture/sgp4-integration.mdx
+++ b/docs/src/content/docs/architecture/sgp4-integration.mdx
@@ -6,7 +6,7 @@ sidebar:
import { Aside, Tabs, TabItem } from "@astrojs/starlight/components";
-pg_orbit wraps Bill Gray's `sat_code` library (MIT license, Project Pluto) for SGP4/SDP4 propagation. This page covers why sat_code was chosen, how it integrates with PostgreSQL's build and execution model, and the error handling contract between the two codebases.
+pg_orbit vendors Bill Gray's `sat_code` library (MIT license, Project Pluto) for SGP4/SDP4 propagation. The relevant source files are vendored into `src/sgp4/` with `.cpp` extensions renamed to `.c` --- the code contains zero C++ features and compiles as pure C99. This page covers why sat_code was chosen, how it integrates with PostgreSQL's build and execution model, and the error handling contract between the two codebases.
## Why sat_code
@@ -14,7 +14,7 @@ Three SGP4 implementations were evaluated. The choice came down to one question:
- **Pure C linkage.** All public functions are declared `extern "C"` in `norad.h`. The library compiles as C++ but exposes a flat C function interface: `SGP4_init()`, `SGP4()`, `SDP4_init()`, `SDP4()`, `parse_elements()`, `select_ephemeris()`.
+ **Pure C.** Despite upstream's `.cpp` file extensions, the code contains zero C++ features. pg_orbit vendors the files as `.c` and compiles them with `gcc`. The public API in `norad.h` is a flat C function interface: `SGP4_init()`, `SGP4()`, `SDP4_init()`, `SDP4()`, `parse_elements()`, `select_ephemeris()`.
**No global mutable state.** The propagator state lives in a caller-allocated `double params[N_SAT_PARAMS]` array. This maps directly to PostgreSQL's `palloc`-based memory model.
@@ -35,54 +35,48 @@ Three SGP4 implementations were evaluated. The choice came down to one question:
-## The C/C++ boundary
+## Compilation
-sat_code is compiled as C++ but pg_orbit is a C extension. The integration works because sat_code's public API is `extern "C"`:
+sat_code's upstream files use `.cpp` extensions but contain no C++ features --- no classes, templates, namespaces, exceptions, or STL. The vendored copies in `src/sgp4/` are renamed to `.c` and compile with `gcc` alongside the rest of pg_orbit. There is no C/C++ boundary, no `g++`, and no `-lstdc++`.
```
-src/*.c --[gcc]--> .o --|
-lib/sat_code/*.cpp --[g++]--> .o --|--> pg_orbit.so
- -lstdc++ -lm
+src/*.c --[gcc]--> .o --|
+src/sgp4/*.c --[gcc]--> .o --|--> pg_orbit.so
+ -lm
```
-The Makefile compiles sat_code's `.cpp` files with `g++` and links them alongside pg_orbit's `.c` files with `-lstdc++` for the C++ runtime. This is the same pattern PostGIS uses for GEOS integration.
-
### Build rules
```makefile
-# sat_code C++ sources
-SAT_CODE_DIR = lib/sat_code
-SAT_CODE_SRCS = $(SAT_CODE_DIR)/sgp4.cpp $(SAT_CODE_DIR)/sdp4.cpp \
- $(SAT_CODE_DIR)/deep.cpp $(SAT_CODE_DIR)/common.cpp \
- $(SAT_CODE_DIR)/basics.cpp $(SAT_CODE_DIR)/get_el.cpp \
- $(SAT_CODE_DIR)/tle_out.cpp
-SAT_CODE_OBJS = $(SAT_CODE_SRCS:.cpp=.o)
+# Vendored SGP4/SDP4 sources (pure C, from Bill Gray's sat_code, MIT license)
+SGP4_DIR = src/sgp4
+SGP4_SRCS = $(SGP4_DIR)/sgp4.c $(SGP4_DIR)/sdp4.c \
+ $(SGP4_DIR)/deep.c $(SGP4_DIR)/common.c \
+ $(SGP4_DIR)/basics.c $(SGP4_DIR)/get_el.c \
+ $(SGP4_DIR)/tle_out.c
+SGP4_OBJS = $(SGP4_SRCS:.c=.o)
-# Include sat_code headers for our C sources
-PG_CPPFLAGS = -I$(SAT_CODE_DIR)
+# Include vendored SGP4 headers for our C sources
+PG_CPPFLAGS = -I$(SGP4_DIR)
-# C++ runtime for sat_code
-SHLIB_LINK += -lstdc++ -lm
-
-# Compile C++ with position-independent code for shared library
-$(SAT_CODE_DIR)/%.o: $(SAT_CODE_DIR)/%.cpp
- $(CXX) $(CXXFLAGS) -fPIC -I$(SAT_CODE_DIR) -c -o $@ $<
+# Pure C — no C++ runtime needed
+SHLIB_LINK += -lm
```
-The `-fPIC` flag is required because the compiled objects become part of a shared library (`.so`). Without it, the linker would reject the C++ objects.
+PGXS handles the `-fPIC` flag and pattern rules for `.c` to `.o` compilation, so the vendored SGP4 files need no special build rules.
### Header inclusion
pg_orbit's C files include `norad.h` directly:
```c
-#include "norad.h" /* sat_code public API */
+#include "norad.h" /* vendored SGP4 public API */
#include "types.h" /* pg_orbit types and WGS-72/84 constants */
```
-The `PG_CPPFLAGS = -I$(SAT_CODE_DIR)` flag makes `norad.h` available without a path prefix.
+The `PG_CPPFLAGS = -I$(SGP4_DIR)` flag makes `norad.h` available without a path prefix.
-## The sat_code API surface
+## The SGP4 API surface
pg_orbit uses a small subset of sat_code's public functions.
@@ -193,26 +187,31 @@ The error response changes based on the calling context:
The pass prediction context is the most interesting. A TLE valid for part of a search window should not abort the entire pass search. Returning $-\pi$ radians (well below any physical horizon) causes the coarse scan to treat the time point as "satellite below horizon" and continue looking for passes at other times.
-## The git submodule
+## Build integration
-sat_code is included as a git submodule at `lib/sat_code/`. This provides:
+sat_code is vendored into `src/sgp4/` --- the minimal set of source files needed for SGP4/SDP4 propagation, committed directly into the pg_orbit repository. A `PROVENANCE.md` file in that directory records the upstream repository, the exact commit hash, and every modification made during vendoring.
-- **Pinned version.** The submodule pointer records the exact commit. Upstream changes do not affect pg_orbit until the submodule is explicitly updated.
-- **Clear provenance.** `git submodule status` shows the upstream repository (github.com/Bill-Gray/sat_code) and commit hash.
-- **Easy updates.** `git submodule update --remote` pulls the latest upstream, which can then be tested against the Vallado 518 vectors before committing the update.
+This approach provides:
-### Files used from sat_code
+- **Pinned version.** The vendored commit is recorded in `src/sgp4/PROVENANCE.md`. Upstream changes do not affect pg_orbit until the files are explicitly re-vendored.
+- **Clear provenance.** `PROVENANCE.md` documents the upstream repository (github.com/Bill-Gray/sat_code), commit hash, the `.cpp` to `.c` rename rationale, and a line-by-line list of every modification.
+- **No submodule complexity.** Cloning the repository gets a complete, buildable tree. No `git submodule update --init` step, no risk of missing submodule state.
+- **Pure C build.** Renaming `.cpp` to `.c` eliminates the `g++` and `-lstdc++` dependencies. The entire extension compiles with a single C compiler.
+
+### Vendored files
| File | Purpose |
|------|---------|
-| `sgp4.cpp` | SGP4 near-earth propagator |
-| `sdp4.cpp` | SDP4 deep-space propagator |
-| `deep.cpp` | Lunar/solar perturbation routines for SDP4 |
-| `common.cpp` | Shared initialization code for SGP4/SDP4 |
-| `basics.cpp` | Utility functions (angle normalization, etc.) |
-| `get_el.cpp` | TLE parsing (`parse_elements()`) |
-| `tle_out.cpp` | TLE text reconstruction |
+| `sgp4.c` | SGP4 near-earth propagator |
+| `sdp4.c` | SDP4 deep-space propagator |
+| `deep.c` | Lunar/solar perturbation routines for SDP4 |
+| `common.c` | Shared initialization code for SGP4/SDP4 |
+| `basics.c` | Utility functions (angle normalization, etc.) |
+| `get_el.c` | TLE parsing (`parse_elements()`) |
+| `tle_out.c` | TLE text reconstruction |
| `norad.h` | Public API declarations, `tle_t` struct, constants |
| `norad_in.h` | Internal constants (WGS-72 values) |
+| `PROVENANCE.md` | Upstream commit, modifications, verification notes |
+| `LICENSE` | MIT license from upstream |
-Other sat_code files (obs_eph.cpp, sat_id.cpp, etc.) are not compiled. pg_orbit uses sat_code strictly as a propagation library, not as a satellite identification or observation planning tool.
+Other sat_code files (obs_eph.cpp, sat_id.cpp, etc.) are not vendored. pg_orbit uses sat_code strictly as a propagation library, not as a satellite identification or observation planning tool.
diff --git a/docs/src/content/docs/architecture/theory-to-code.mdx b/docs/src/content/docs/architecture/theory-to-code.mdx
index 2bb80c0..ccca403 100644
--- a/docs/src/content/docs/architecture/theory-to-code.mdx
+++ b/docs/src/content/docs/architecture/theory-to-code.mdx
@@ -12,19 +12,19 @@ If a constant, algorithm, or formula appears in the code without a citation, tha
## SGP4/SDP4 propagation
-The core satellite propagation theory, implemented by Bill Gray's sat_code library.
+The core satellite propagation theory, implemented by Bill Gray's sat_code library (vendored into src/sgp4/).
| Theory | Source Paper | What it computes | Code location |
|--------|-------------|------------------|---------------|
-| Mean element recovery | Brouwer (1959) | Original mean motion $n_0'$ and semi-major axis $a_0'$ from input TLE, removing secular $J_2$ perturbations | `sat_code/common.cpp:sxpall_common_init()` |
-| Secular perturbations | Lane & Cranford (1969); Hoots & Roehrich STR#3 | Secular rates of $M$, $\omega$, and $\Omega$ due to $J_2$, $J_4$ | `sat_code/common.cpp:sxpx_common_init()` |
-| Atmospheric drag | Hoots & Roehrich STR#3 | $B^*$ formulation of drag; $C_1$, $C_2$, $C_4$ coefficients; perigee-dependent $s$ parameter | `sat_code/common.cpp:sxpx_common_init()`; `sat_code/sgp4.cpp:SGP4_init()` |
-| Short-period perturbations | Lane & Cranford (1969); Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `sat_code/common.cpp:sxpx_posn_vel()` |
-| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `sat_code/common.cpp:sxpx_posn_vel()` |
-| Deep-space resonance | Hujsak (1979) | Lunar/solar gravitational perturbations; geopotential resonance for 12-hour and 24-hour orbits | `sat_code/deep.cpp:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` |
-| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `sat_code/sgp4.cpp:SGP4()` |
-| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `sat_code/sdp4.cpp:SDP4()` |
-| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes ($n < 2\pi/225$ rad/min) | `sat_code/norad.h:select_ephemeris()` |
+| Mean element recovery | Brouwer (1959) | Original mean motion $n_0'$ and semi-major axis $a_0'$ from input TLE, removing secular $J_2$ perturbations | `src/sgp4/common.c:sxpall_common_init()` |
+| Secular perturbations | Lane & Cranford (1969); Hoots & Roehrich STR#3 | Secular rates of $M$, $\omega$, and $\Omega$ due to $J_2$, $J_4$ | `src/sgp4/common.c:sxpx_common_init()` |
+| Atmospheric drag | Hoots & Roehrich STR#3 | $B^*$ formulation of drag; $C_1$, $C_2$, $C_4$ coefficients; perigee-dependent $s$ parameter | `src/sgp4/common.c:sxpx_common_init()`; `src/sgp4/sgp4.c:SGP4_init()` |
+| Short-period perturbations | Lane & Cranford (1969); Brouwer (1959) | Oscillatory corrections to radius, argument of latitude, node, and inclination | `src/sgp4/common.c:sxpx_posn_vel()` |
+| Kepler equation | Classical | Newton-Raphson with second-order correction, bounded first step | `src/sgp4/common.c:sxpx_posn_vel()` |
+| Deep-space resonance | Hujsak (1979) | Lunar/solar gravitational perturbations; geopotential resonance for 12-hour and 24-hour orbits | `src/sgp4/deep.c:Deep_dpinit()`, `Deep_dpsec()`, `Deep_dpper()` |
+| Near-earth propagation | Hoots & Roehrich STR#3 | SGP4 main loop: secular + short-period + drag terms | `src/sgp4/sgp4.c:SGP4()` |
+| Deep-space propagation | Hoots & Roehrich STR#3 | SDP4: SGP4 core + deep-space secular/periodic corrections | `src/sgp4/sdp4.c:SDP4()` |
+| Near/deep selection | Hoots & Roehrich STR#3 | Period threshold: 225 minutes ($n < 2\pi/225$ rad/min) | `src/sgp4/norad.h:select_ephemeris()` |
### Primary reference
@@ -162,7 +162,7 @@ A quick reference for finding the implementation of a specific theory.
| `src/de_funcs.c` | All `_de()` SQL function implementations | ~650 |
| `src/astro_math.h` | Shared math: obliquity rotation, observation pipeline | ~220 |
| `src/radio_funcs.c` | Jupiter radio emission | ~200 |
-| `sat_code/sgp4.cpp` | SGP4 near-earth propagator | ~300 |
-| `sat_code/sdp4.cpp` | SDP4 deep-space propagator | ~200 |
-| `sat_code/deep.cpp` | Deep-space perturbations | ~800 |
-| `sat_code/common.cpp` | Shared SGP4/SDP4 initialization | ~250 |
+| `src/sgp4/sgp4.c` | SGP4 near-earth propagator | ~300 |
+| `src/sgp4/sdp4.c` | SDP4 deep-space propagator | ~200 |
+| `src/sgp4/deep.c` | Deep-space perturbations | ~800 |
+| `src/sgp4/common.c` | Shared SGP4/SDP4 initialization | ~250 |
diff --git a/docs/src/content/docs/getting-started/installation.mdx b/docs/src/content/docs/getting-started/installation.mdx
index 4b25f85..be22929 100644
--- a/docs/src/content/docs/getting-started/installation.mdx
+++ b/docs/src/content/docs/getting-started/installation.mdx
@@ -36,7 +36,7 @@ import { Tabs, TabItem, Steps, Aside } from "@astrojs/starlight/components";
- Requires PostgreSQL 17 development headers and a C/C++ toolchain.
+ Requires PostgreSQL 17 development headers and a C toolchain.
1. Clone the repository:
@@ -64,7 +64,7 @@ import { Tabs, TabItem, Steps, Aside } from "@astrojs/starlight/components";
diff --git a/docs/src/content/docs/getting-started/quick-start.mdx b/docs/src/content/docs/getting-started/quick-start.mdx
index 90b4de6..d6055c4 100644
--- a/docs/src/content/docs/getting-started/quick-start.mdx
+++ b/docs/src/content/docs/getting-started/quick-start.mdx
@@ -112,4 +112,5 @@ You've seen the five domains pg_orbit covers. For deeper dives:
- **[Tracking Satellites](/guides/tracking-satellites/)** — batch observation, conjunction screening, pass prediction workflows
- **[Observing the Solar System](/guides/observing-solar-system/)** — "what's up tonight?" queries, rise/set times, conjunctions
+- **[JPL DE Ephemeris](/guides/de-ephemeris/)** — opt-in sub-milliarcsecond accuracy using JPL DE440/441 files
- **[The SQL Advantage](/workflow/sql-advantage/)** — why doing this in SQL changes what's possible
diff --git a/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx b/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx
index e28b79a..46c0768 100644
--- a/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx
+++ b/docs/src/content/docs/getting-started/what-is-pg-orbit.mdx
@@ -25,6 +25,7 @@ PostGIS added spatial awareness to PostgreSQL — suddenly your database underst
| Comets/asteroids | Two-body Keplerian | `kepler_propagate()`, `comet_observe()` | Varies with eccentricity |
| Jupiter radio | Carr et al. (1983) sources | `jupiter_burst_probability()` | Empirical probability |
| Transfers | Lambert (Izzo, 2015) | `lambert_transfer()`, `lambert_c3()` | Ballistic two-body |
+| DE ephemeris (optional) | JPL DE440/441 | `planet_observe_de()`, `moon_observe_de()` | ~0.1 milliarcsecond |
## Who it's for
@@ -54,10 +55,10 @@ pg_orbit is a computation engine, not a complete application. Understanding what
**Not a GUI.** pg_orbit returns numbers. Use Stellarium, GPredict, or STK for visualization. Use any plotting library to render its output.
-**Not sub-arcsecond.** VSOP87 is accurate to about 1 arcsecond — sufficient for observation planning and visual astronomy, but not for dish pointing at GHz frequencies or precision astrometry. For that, use SPICE or Skyfield with DE441 ephemerides.
+**Not sub-arcsecond by default.** The built-in VSOP87 pipeline is accurate to about 1 arcsecond — sufficient for observation planning and visual astronomy. For precision work (dish pointing, occultation timing, astrometry), pg_orbit v0.3.0 supports [optional JPL DE440/441 ephemeris files](/guides/de-ephemeris/) that bring accuracy to ~0.1 milliarcsecond. DE is opt-in and requires a one-time GUC configuration.
**Not a TLE source.** Bring your own TLEs from Space-Track, CelesTrak, or any other provider. pg_orbit parses and propagates them; it doesn't fetch them.
-**Not a replacement for SPICE.** No BSP kernel support, no light-time iteration, no aberration corrections at the IAU 2000A level. pg_orbit trades those last few milliarcseconds of accuracy for the ability to run computations at SQL speed, in parallel, joined with your other data.
+**Not a replacement for SPICE.** No BSP kernel support, no light-time iteration, no aberration corrections at the IAU 2000A level. With DE enabled, pg_orbit matches SPICE on raw planet position accuracy — the remaining gap is in apparent-position corrections (aberration, light-time, nutation) that matter for sub-arcsecond apparent coordinates.
**Not a full mission design tool.** The Lambert solver handles ballistic two-body transfers — no low-thrust trajectories, no gravity assists, no multi-body optimization. For full mission design, use GMAT or poliastro.
diff --git a/docs/src/content/docs/workflow/from-jpl-horizons.mdx b/docs/src/content/docs/workflow/from-jpl-horizons.mdx
index afac26d..42e1a4e 100644
--- a/docs/src/content/docs/workflow/from-jpl-horizons.mdx
+++ b/docs/src/content/docs/workflow/from-jpl-horizons.mdx
@@ -298,17 +298,17 @@ This is where the difference is most striking. Horizons doesn't compute transfer
## Where Horizons wins
-
-**Precision.** Skyfield uses the full IAU 2000A nutation model, polar motion corrections, and delta-T from IERS data. When you need sub-arcsecond accuracy — dish pointing at microwave frequencies, occultation timing, precision astrometry — Skyfield with DE441 ephemerides is the right tool.
+**Apparent-position corrections.** Skyfield uses the full IAU 2000A nutation model, polar motion corrections, delta-T from IERS data, and iterates for light-time and stellar aberration. pg_orbit v0.3.0 can [optionally use DE441](/guides/de-ephemeris/) for the same underlying geometric accuracy (~0.1 milliarcsecond), but Skyfield still applies corrections that pg_orbit does not — corrections that matter for precision apparent-coordinate work like occultation timing or sub-arcsecond astrometry.
**Rise/set finding.** `find_events()` uses numerical root-finding to pinpoint the exact moment a body crosses an elevation threshold. pg_orbit's `predict_passes` uses a step-and-refine approach that's fast for batches but less precise for individual events.
@@ -300,11 +300,13 @@ pg_orbit does not replace Skyfield for all use cases. Be clear about where the t
You don't have to choose one or the other. A practical migration path:
-1. **Keep Skyfield for precision work.** Anything requiring sub-arcsecond accuracy, aberration corrections, or custom BSP kernels stays in Python.
+1. **Keep Skyfield for apparent-position work.** Anything requiring aberration corrections, polar motion, nutation at IAU 2000A level, or custom BSP kernels stays in Python. For raw geometric position accuracy, pg_orbit with [DE enabled](/guides/de-ephemeris/) matches Skyfield.
2. **Move batch observation to SQL.** If you're computing positions for hundreds of objects to filter or correlate with database records, pg_orbit eliminates the Python-to-PostgreSQL round trip.
3. **Move scheduling to SQL.** Pass prediction and visibility windows over time ranges are natural `generate_series` + `predict_passes` queries.
4. **Move reporting to SQL.** "What was above 20 degrees from each of our 5 observers last night?" is a single query with a CROSS JOIN, not a Python loop over observers and timestamps.
+
+5. **Enable DE when accuracy matters.** If you find VSOP87's ~1 arcsecond isn't enough for a specific use case, [configure a DE file](/guides/de-ephemeris/) and switch to `_de()` function variants. Same SQL patterns, same parameters — just add `_de` to the function name.
diff --git a/docs/src/content/docs/workflow/sql-advantage.mdx b/docs/src/content/docs/workflow/sql-advantage.mdx
index 2b5f962..af5dbb3 100644
--- a/docs/src/content/docs/workflow/sql-advantage.mdx
+++ b/docs/src/content/docs/workflow/sql-advantage.mdx
@@ -342,6 +342,35 @@ ORDER BY a.tle <-> b.tle;
This is a screening filter, not a precision conjunction analysis. It identifies pairs worth investigating further — the ones where orbital elements suggest close approaches. Detailed conjunction assessment would then propagate those specific pairs at high time resolution.
+## Provider switching: accuracy when you need it
+
+pg_orbit v0.3.0 has two ephemeris providers — the built-in VSOP87 pipeline (~1 arcsecond) and optional [JPL DE440/441](/guides/de-ephemeris/) (~0.1 milliarcsecond). The SQL interface makes switching between them a one-character change.
+
+```sql
+-- VSOP87 (built-in, IMMUTABLE, no setup)
+SELECT topo_elevation(planet_observe(5, '40.0N 105.3W 1655m'::observer, now()));
+
+-- DE441 (opt-in, STABLE, sub-milliarcsecond)
+SELECT topo_elevation(planet_observe_de(5, '40.0N 105.3W 1655m'::observer, now()));
+```
+
+Same parameters, same return type, same SQL patterns. Add `_de` and you get Horizons-quality positions. Remove it and you get zero-dependency speed.
+
+The distinction matters at the SQL level because of **volatility**. VSOP87 functions are `IMMUTABLE` — their output depends only on their arguments. PostgreSQL can constant-fold them during planning, use them in expression indexes, and cache results aggressively. DE functions are `STABLE` — they depend on an external file, so the planner evaluates them once per row per statement but can't index on them.
+
+```sql
+-- This works: expression index on IMMUTABLE VSOP87 function
+CREATE INDEX ON almanac (date)
+ WHERE topo_elevation(planet_observe(5, location, date)) > 0;
+
+-- For DE queries, use a materialized view instead
+CREATE MATERIALIZED VIEW almanac_de AS
+SELECT date, topo_elevation(planet_observe_de(5, location, date)) AS el
+FROM almanac WHERE topo_elevation(planet_observe_de(5, location, date)) > 0;
+```
+
+Use VSOP87 for indexes and fast screening. Use DE for final-answer queries where accuracy matters. Both compose with every other SQL pattern on this page.
+
## Window functions: tracking changes over time
SQL window functions let you compute values relative to neighboring rows — previous values, running averages, ranks within groups — without self-joins or subqueries.
@@ -470,4 +499,4 @@ This query:
In a traditional workflow, each of these steps would be a separate script, a separate data file, and a separate tool. In SQL, they compose into a single declarative statement that the database engine optimizes and parallelizes.
-That's the advantage. Not that SQL is a better programming language — it isn't. But for the specific pattern of "evaluate a function over structured parameter spaces and correlate the results with existing data," SQL is exactly the right tool. And pg_orbit puts the functions inside the tool.
+That's the advantage. Not that SQL is a better programming language — it isn't. But for the specific pattern of "evaluate a function over structured parameter spaces and correlate the results with existing data," SQL is exactly the right tool. pg_orbit puts 68 functions inside that tool — from 17ms satellite batch propagation to sub-milliarcsecond DE441 planet positions — and every one of them composes with every SQL pattern on this page.
diff --git a/lib/sat_code b/lib/sat_code
deleted file mode 160000
index ff7b989..0000000
--- a/lib/sat_code
+++ /dev/null
@@ -1 +0,0 @@
-Subproject commit ff7b98957dfa2979700a482bde9de9542807293e
diff --git a/src/sgp4/LICENSE b/src/sgp4/LICENSE
new file mode 100644
index 0000000..07f8c41
--- /dev/null
+++ b/src/sgp4/LICENSE
@@ -0,0 +1,21 @@
+MIT License
+
+Copyright (c) 2020, Project Pluto
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all
+copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
+SOFTWARE.
diff --git a/src/sgp4/PROVENANCE.md b/src/sgp4/PROVENANCE.md
new file mode 100644
index 0000000..395e4c3
--- /dev/null
+++ b/src/sgp4/PROVENANCE.md
@@ -0,0 +1,70 @@
+# SGP4/SDP4 Provenance
+
+## Origin
+
+Bill Gray's **sat_code** library, MIT license.
+
+- Repository: https://github.com/Bill-Gray/sat_code
+- Commit: `ff7b98957dfa2979700a482bde9de9542807293e`
+- License: MIT (see `LICENSE` in this directory)
+
+## What was vendored
+
+7 source files and 2 headers, the minimal set required by pg_orbit:
+
+| Original file | Vendored as | Purpose |
+|---------------|-------------|---------|
+| `sgp4.cpp` | `sgp4.c` | Near-earth propagator (period < 225 min) |
+| `sdp4.cpp` | `sdp4.c` | Deep-space propagator (period >= 225 min) |
+| `deep.cpp` | `deep.c` | Lunar/solar perturbations, resonance integration |
+| `common.cpp` | `common.c` | Shared initialization (Brouwer mean elements, Kepler solver) |
+| `basics.cpp` | `basics.c` | `select_ephemeris()`, `FMod2p()`, library version |
+| `get_el.cpp` | `get_el.c` | TLE parsing (`parse_elements()`, checksum) |
+| `tle_out.cpp` | `tle_out.c` | TLE output (`write_elements_in_tle_format()`) |
+| `norad.h` | `norad.h` | Public interface (tle_t, function prototypes) |
+| `norad_in.h` | `norad_in.h` | Internal structures (deep_arg_t, init_t, constants) |
+
+## The `.cpp` to `.c` rename
+
+sat_code uses `.cpp` file extensions but contains **zero C++ features** — no classes,
+templates, namespaces, exceptions, or STL usage. The code compiles cleanly under
+`gcc -std=c99` with no modifications to the logic. Renaming to `.c` eliminates the
+phantom dependency on `g++` and `-lstdc++`.
+
+## Modifications from upstream
+
+1. **Renamed `.cpp` to `.c`** — no code changes required (already valid C99).
+
+2. **Stripped `DLL_FUNC` / `__stdcall`** — Win32 DLL export decorators, not needed
+ on Linux/PGXS.
+
+3. **Removed `extern "C"` wrapper** in `norad.h` — no longer compiling as C++.
+
+4. **Removed unused model prototypes** from `norad.h` — `SGP_init()`, `SGP()`,
+ `SGP8_init()`, `SGP8()`, `SDP8_init()`, `SDP8()`, and Win32 dynamic loading
+ functions. pg_orbit uses only SGP4/SDP4.
+
+5. **Added forward declarations** to suppress `-Wmissing-prototypes`:
+ - `common.c`: `sxpall_common_init()` declared before definition
+ - `basics.c`: `sxpx_library_version()` declared before definition
+
+6. **Changed `inline` to `static inline`** for `centralize_angle()` in `common.c`.
+ In C (vs C++), bare `inline` requires an external definition; `static inline`
+ gives the intended behavior.
+
+## What was NOT changed
+
+- All numerical logic is **byte-identical** to upstream commit `ff7b989`.
+- The `deep.c` resonance integration (574 lines) is untouched.
+- Global statics in `deep.c` (`dpsec_integration_step`, `dpsec_integration_order`,
+ `is_dundee_compliant`) and the cache in `sdp4.c` (`lunar_solar_position`) are
+ preserved. These are safe in PostgreSQL's process-per-connection fork model.
+- `N_SAT_PARAMS` retains its original value for binary compatibility.
+- Ephemeris type detection in `select_ephemeris()` still recognizes SGP8/SDP8 types
+ even though their implementations are stripped.
+
+## Verification
+
+All 12 existing regression test suites produce **byte-identical output** to the
+submodule-based build. The vendored code was additionally verified against the 518
+Vallado test vectors (AIAA 2006-6753-Rev1).
diff --git a/src/sgp4/basics.c b/src/sgp4/basics.c
new file mode 100644
index 0000000..123d6f2
--- /dev/null
+++ b/src/sgp4/basics.c
@@ -0,0 +1,79 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * basics.c - Ephemeris type selection and utility functions
+ *
+ * select_ephemeris(): Determines whether a TLE should use the near-earth
+ * (SGP4, period < 225 min) or deep-space (SDP4, period >= 225 min)
+ * propagator. STR#3 p. 74, Vallado Rev-1 Section II.
+ *
+ * FMod2p(): Reduces angle to [0, 2*pi). Used throughout propagation.
+ */
+
+#include
+#include "norad.h"
+#include "norad_in.h"
+
+/*------------------------------------------------------------------*/
+
+/* FMOD2P */
+double FMod2p( const double x)
+{
+ double rval = fmod( x, twopi);
+
+ if( rval < 0.)
+ rval += twopi;
+ return( rval);
+} /* fmod2p */
+
+#define EPHEM_TYPE_DEFAULT '0'
+#define EPHEM_TYPE_SGP '1'
+#define EPHEM_TYPE_SGP4 '2'
+#define EPHEM_TYPE_SDP4 '3'
+#define EPHEM_TYPE_SGP8 '4'
+#define EPHEM_TYPE_SDP8 '5'
+#define EPHEM_TYPE_HIGH 'H'
+
+/*------------------------------------------------------------------*/
+
+void sxpall_common_init( const tle_t *tle, deep_arg_t *deep_arg);
+ /* common.c */
+
+/* Selects the type of ephemeris to be used (SGP*-SDP*) */
+int select_ephemeris( const tle_t *tle)
+{
+ int rval;
+
+ if( tle->ephemeris_type == EPHEM_TYPE_HIGH)
+ rval = 1; /* force high-orbit state vector model */
+ else if( tle->xno <= 0. || tle->eo > 1. || tle->eo < 0.)
+ rval = -1; /* error in input data */
+ else if( tle->ephemeris_type == EPHEM_TYPE_SGP4
+ || tle->ephemeris_type == EPHEM_TYPE_SGP8)
+ rval = 0; /* specifically marked non-deep */
+ else if( tle->ephemeris_type == EPHEM_TYPE_SDP4
+ || tle->ephemeris_type == EPHEM_TYPE_SDP8)
+ rval = 1; /* specifically marked deep */
+ else
+ {
+ deep_arg_t deep_arg;
+
+ sxpall_common_init( tle, &deep_arg);
+ /* Select a deep-space/near-earth ephemeris */
+ /* If the orbital period is greater than 225 minutes... */
+ if (twopi / deep_arg.xnodp >= 225.)
+ rval = 1; /* yes, it should be a deep-space (SDPx) ephemeris */
+ else
+ rval = 0; /* no, you can go with an SGPx ephemeris */
+ }
+ return( rval);
+} /* End of select_ephemeris() */
+
+/*------------------------------------------------------------------*/
+
+/* Forward declaration to suppress -Wmissing-prototypes */
+long sxpx_library_version( void);
+
+long sxpx_library_version( void)
+{
+ return( 0x100);
+}
diff --git a/src/sgp4/common.c b/src/sgp4/common.c
new file mode 100644
index 0000000..204457b
--- /dev/null
+++ b/src/sgp4/common.c
@@ -0,0 +1,283 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * common.c - Shared initialization for SGP4 and SDP4
+ *
+ * Implements the Brouwer mean element recovery (STR#3 pp. 77-78) and the
+ * Kepler equation solver with Newton-Raphson iteration (STR#3 Eq. 2-35).
+ *
+ * sxpall_common_init(): Recovers original mean motion (xnodp) and
+ * semimajor axis (aodp) from the TLE elements. STR#3 Eqs. 12-1..12-6.
+ *
+ * sxpx_common_init(): Computes drag and secular perturbation coefficients
+ * shared between SGP4 and SDP4. STR#3 pp. 77-78, Vallado Rev-1 Sec. II.
+ *
+ * sxpx_posn_vel(): Solves Kepler's equation and applies short-period
+ * corrections to compute final position/velocity. STR#3 Eqs. 2-35..2-47,
+ * Vallado Rev-1 Eqs. 2-4.
+ */
+
+#include
+#include
+#include "norad.h"
+#include "norad_in.h"
+
+/* params[1] and [6]-[9] were used in earlier implementations, but are
+ now unused */
+
+#define c2 params[0]
+#define c1 params[2]
+#define c4 params[3]
+#define xnodcf params[4]
+#define t2cof params[5]
+
+/* Forward declaration to suppress -Wmissing-prototypes */
+void sxpall_common_init( const tle_t *tle, deep_arg_t *deep_arg);
+
+void sxpall_common_init( const tle_t *tle, deep_arg_t *deep_arg)
+{
+ const double a1 = pow(xke / tle->xno, two_thirds); /* in Earth radii */
+ double del1, ao, delo, tval;
+
+ /* Recover original mean motion (xnodp) and */
+ /* semimajor axis (aodp) from input elements. */
+ deep_arg->cosio = cos( tle->xincl);
+ deep_arg->cosio2 = deep_arg->cosio * deep_arg->cosio;
+ deep_arg->eosq = tle->eo*tle->eo;
+ deep_arg->betao2 = 1-deep_arg->eosq;
+ deep_arg->betao = sqrt(deep_arg->betao2);
+ tval = 1.5 * ck2 * (3. * deep_arg->cosio2 - 1.) / (deep_arg->betao * deep_arg->betao2);
+ del1 = tval / (a1 * a1);
+ ao = a1 * (1. - del1 * (1. / 3. + del1 * ( 1. + 134./81. * del1)));
+ delo = tval / (ao * ao);
+ deep_arg->xnodp = tle->xno / (1+delo); /* in radians/minute */
+ deep_arg->aodp = ao / (1-delo);
+}
+
+void sxpx_common_init( double *params, const tle_t *tle,
+ init_t *init, deep_arg_t *deep_arg)
+{
+ double
+ eeta, etasq, perige, pinv, pinvsq,
+ psisq, qoms24, temp1, temp2, temp3,
+ cosio4, tsi_squared, x3thm1, xhdot1;
+
+ sxpall_common_init( tle, deep_arg);
+ x3thm1 = 3. * deep_arg->cosio2 - 1.;
+ /* For perigee below 156 km, the values */
+ /* of s and qoms2t are altered. */
+ init->s4 = s_const;
+ qoms24 = qoms2t;
+ perige = (deep_arg->aodp * (1-tle->eo) - ae) * earth_radius_in_km;
+ if( perige < 156.)
+ {
+ double temp_val, temp_val_squared;
+
+ if(perige <= 98.)
+ init->s4 = 20;
+ else
+ init->s4 = perige-78.;
+ temp_val = (120. - init->s4) * ae / earth_radius_in_km;
+ temp_val_squared = temp_val * temp_val;
+ qoms24 = temp_val_squared * temp_val_squared;
+ init->s4 = init->s4 / earth_radius_in_km + ae;
+ } /* End of if(perige <= 156) */
+
+ pinv = 1. / (deep_arg->aodp * deep_arg->betao2);
+ pinvsq = pinv * pinv;
+ init->tsi = 1. / (deep_arg->aodp - init->s4);
+ init->eta = deep_arg->aodp*tle->eo*init->tsi;
+ etasq = init->eta*init->eta;
+ eeta = tle->eo*init->eta;
+ psisq = fabs(1-etasq);
+ tsi_squared = init->tsi * init->tsi;
+ init->coef = qoms24 * tsi_squared * tsi_squared;
+ init->coef1 = init->coef / pow(psisq,3.5);
+ c2 = init->coef1 * deep_arg->xnodp * (deep_arg->aodp*(1+1.5*etasq+eeta*
+ (4+etasq))+0.75*ck2*init->tsi/psisq*x3thm1*(8+3*etasq*(8+etasq)));
+ c1 = tle->bstar*c2;
+ deep_arg->sinio = sin(tle->xincl);
+ c4 = 2*deep_arg->xnodp*init->coef1*deep_arg->aodp*deep_arg->betao2*
+ (init->eta*(2+0.5*etasq)+tle->eo*(0.5+2*etasq)-2*ck2*init->tsi/
+ (deep_arg->aodp*psisq)*(-3*x3thm1*(1-2*eeta+etasq*
+ (1.5-0.5*eeta))+0.75*(1. - deep_arg->cosio2) *(2*etasq-eeta*(1+etasq))*
+ cos(2*tle->omegao)));
+ cosio4 = deep_arg->cosio2 * deep_arg->cosio2;
+ temp1 = 3*ck2*pinvsq*deep_arg->xnodp;
+ temp2 = temp1 * ck2 * pinvsq;
+ temp3 = 1.25 * ck4 * pinvsq * pinvsq * deep_arg->xnodp;
+ deep_arg->xmdot = deep_arg->xnodp
+ + temp1 * deep_arg->betao* x3thm1 / 2.
+ + temp2 * deep_arg->betao*
+ (13-78*deep_arg->cosio2+137*cosio4) / 16.;
+ deep_arg->omgdot = -temp1 * (1. - 5 * deep_arg->cosio2) / 2.
+ + temp2 * (7-114*deep_arg->cosio2+395*cosio4) / 16.
+ + temp3 * (3-36*deep_arg->cosio2+49*cosio4);
+ xhdot1 = -temp1*deep_arg->cosio;
+ deep_arg->xnodot = xhdot1+(temp2*(4-19*deep_arg->cosio2) / 2.
+ + 2*temp3*(3-7*deep_arg->cosio2))*deep_arg->cosio;
+ xnodcf = 3.5*deep_arg->betao2*xhdot1*c1;
+ t2cof = 1.5*c1;
+}
+
+static inline double centralize_angle( const double ival)
+{
+ double rval = fmod( ival, twopi);
+
+ if( rval > pi)
+ rval -= twopi;
+ else if( rval < - pi)
+ rval += twopi;
+ return( rval);
+}
+
+#define MAX_KEPLER_ITER 10
+
+int sxpx_posn_vel( const double xnode, const double a, const double ecc,
+ const double cosio, const double sinio,
+ const double xincl, const double omega,
+ const double xl, double *pos, double *vel)
+{
+ /* Long period periodics */
+ const double axn = ecc*cos(omega);
+ double temp = 1/(a*(1.-ecc*ecc));
+ const double xlcof = .125 * a3ovk2 * sinio * (3+5*cosio)/ (1. + cosio);
+ const double aycof = 0.25 * a3ovk2 * sinio;
+ const double xll = temp*xlcof*axn;
+ const double aynl = temp*aycof;
+ const double xlt = xl+xll;
+ const double ayn = ecc*sin(omega)+aynl;
+ const double elsq = axn*axn+ayn*ayn;
+ const double capu = centralize_angle( xlt - xnode);
+ const double chicken_factor_on_eccentricity = 1.e-6;
+ double epw = capu;
+ double temp1, temp2;
+ double ecosE, esinE, pl, r;
+ double betal;
+ double u, sinu, cosu, sin2u, cos2u;
+ double rk, uk, xnodek, xinck;
+ double sinuk, cosuk, sinik, cosik, sinnok, cosnok, xmx, xmy;
+ double sinEPW, cosEPW;
+ double ux, uy, uz;
+ int i, rval = 0;
+
+/* Dundee changes: items dependent on cosio get recomputed: */
+ const double cosio_squared = cosio * cosio;
+ const double x3thm1 = 3.0 * cosio_squared - 1.0;
+ const double sinio2 = 1.0 - cosio_squared;
+ const double x7thm1 = 7.0 * cosio_squared - 1.0;
+
+ /* Added 29 Mar 2003, modified 26 Sep 2006: extremely */
+ /* decayed satellites can end up "orbiting" within the */
+ /* earth. Eventually, the semimajor axis becomes zero, */
+ /* then negative. In that case, or if the orbit is near */
+ /* to parabolic, we zero the posn/vel and quit. If the */
+ /* object has a perigee or apogee indicating a crash, we */
+ /* just flag it. Revised 28 Oct 2006. */
+
+ if( a < 0.)
+ rval = SXPX_ERR_NEGATIVE_MAJOR_AXIS;
+ if( elsq > 1. - chicken_factor_on_eccentricity)
+ rval = SXPX_ERR_NEARLY_PARABOLIC;
+ for( i = 0; i < 3; i++)
+ {
+ pos[i] = 0.;
+ if( vel)
+ vel[i] = 0.;
+ }
+ if( rval)
+ return( rval);
+ if( a * (1. - ecc) < 1. && a * (1. + ecc) < 1.) /* entirely within earth */
+ rval = SXPX_WARN_ORBIT_WITHIN_EARTH; /* remember, e can be negative */
+ if( a * (1. - ecc) < 1. || a * (1. + ecc) < 1.) /* perigee within earth */
+ rval = SXPX_WARN_PERIGEE_WITHIN_EARTH;
+ /* Solve Kepler's' Equation */
+ for( i = 0; i < MAX_KEPLER_ITER; i++)
+ {
+ const double newton_raphson_epsilon = 1e-12;
+ double f, fdot, delta_epw;
+ int do_second_order_newton_raphson = 1;
+
+ sinEPW = sin( epw);
+ cosEPW = cos( epw);
+ ecosE = axn * cosEPW + ayn * sinEPW;
+ esinE = axn * sinEPW - ayn * cosEPW;
+ f = capu - epw + esinE;
+ if (fabs(f) < newton_raphson_epsilon) break;
+ fdot = 1. - ecosE;
+ delta_epw = f / fdot;
+ if( !i)
+ {
+ const double max_newton_raphson = 1.25 * fabs( ecc);
+
+ do_second_order_newton_raphson = 0;
+ if( delta_epw > max_newton_raphson)
+ delta_epw = max_newton_raphson;
+ else if( delta_epw < -max_newton_raphson)
+ delta_epw = -max_newton_raphson;
+ else
+ do_second_order_newton_raphson = 1;
+ }
+ if( do_second_order_newton_raphson)
+ delta_epw = f / (fdot + 0.5*esinE*delta_epw);
+ /* f/(fdot - 0.5*fdotdot * f / fdot) */
+ epw += delta_epw;
+ }
+
+ if( i == MAX_KEPLER_ITER)
+ return( SXPX_ERR_CONVERGENCE_FAIL);
+
+ /* Short period preliminary quantities */
+ temp = 1-elsq;
+ pl = a*temp;
+ r = a*(1-ecosE);
+ temp2 = a / r;
+ betal = sqrt(temp);
+ temp = esinE/(1+betal);
+ cosu = temp2 * (cosEPW - axn + ayn * temp);
+ sinu = temp2 * (sinEPW - ayn - axn * temp);
+ u = atan2( sinu, cosu);
+ sin2u = 2*sinu*cosu;
+ cos2u = 2*cosu*cosu-1;
+ temp1 = ck2 / pl;
+ temp2 = temp1 / pl;
+
+ /* Update for short periodics */
+ rk = r*(1-1.5*temp2*betal*x3thm1)+0.5*temp1*sinio2*cos2u;
+ uk = u-0.25*temp2*x7thm1*sin2u;
+ xnodek = xnode+1.5*temp2*cosio*sin2u;
+ xinck = xincl+1.5*temp2*cosio*sinio*cos2u;
+
+ /* Orientation vectors */
+ sinuk = sin(uk);
+ cosuk = cos(uk);
+ sinik = sin(xinck);
+ cosik = cos(xinck);
+ sinnok = sin(xnodek);
+ cosnok = cos(xnodek);
+ xmx = -sinnok*cosik;
+ xmy = cosnok*cosik;
+ ux = xmx*sinuk+cosnok*cosuk;
+ uy = xmy*sinuk+sinnok*cosuk;
+ uz = sinik*sinuk;
+
+ /* Position and velocity */
+ pos[0] = rk * ux * earth_radius_in_km;
+ pos[1] = rk * uy * earth_radius_in_km;
+ pos[2] = rk * uz * earth_radius_in_km;
+ if( vel)
+ {
+ const double rdot = xke * sqrt(a) * esinE / r;
+ const double rfdot = xke * sqrt(pl) / r;
+ const double xn = xke / (a * sqrt(a));
+ const double rdotk = rdot - xn * temp1 * sinio2 * sin2u;
+ const double rfdotk = rfdot + xn * temp1 * (sinio2 * cos2u + 1.5 * x3thm1);
+ const double vx = xmx * cosuk - cosnok * sinuk;
+ const double vy = xmy * cosuk - sinnok * sinuk;
+ const double vz = sinik*cosuk;
+
+ vel[0] = (rdotk * ux + rfdotk * vx) * earth_radius_in_km;
+ vel[1] = (rdotk * uy + rfdotk * vy) * earth_radius_in_km;
+ vel[2] = (rdotk * uz + rfdotk * vz) * earth_radius_in_km;
+ }
+ return( rval);
+} /*SGP4*/
diff --git a/src/sgp4/deep.c b/src/sgp4/deep.c
new file mode 100644
index 0000000..a41821b
--- /dev/null
+++ b/src/sgp4/deep.c
@@ -0,0 +1,781 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * deep.c - Deep-space lunar/solar perturbations and resonance integration
+ *
+ * Implements the deep-space model from STR#1 (Hujsak 1979, 72pp) and
+ * STR#3 (Hoots & Roehrich 1980) Chapter 8. This is the most complex
+ * module: 80+ intermediate variables, 3 resonance modes.
+ *
+ * Deep_dpinit(): Lunar/solar perturbation initialization with 2-pass
+ * refinement. Computes solar terms, then lunar terms, then recomputes
+ * solar with improved data. Determines resonance mode:
+ * - Synchronous (GEO): period ~1436 min, mean motion ~1 rev/day
+ * - Half-day (Molniya): period ~720 min, e >= 0.5, ~2 rev/day
+ * - Non-resonant: all other deep-space orbits
+ * STR#1 Chapter 4, STR#3 Eqs. 8-1..8-47.
+ *
+ * Deep_dpsec(): Secular perturbation updates. For resonant orbits, performs
+ * numerical integration of mean motion and longitude in 720-minute steps.
+ * STR#1 Chapter 5, STR#3 Eqs. 8-48..8-62.
+ *
+ * Deep_dpper(): Periodic perturbation corrections (lunar + solar).
+ * Includes Lyddane modification for near-zero inclination to avoid
+ * singularity in node/perigee. STR#1 Chapter 6, STR#3 Eqs. 8-63..8-80.
+ *
+ * Global statics (safe in PostgreSQL fork model):
+ * dpsec_integration_step = 720.0 (minutes, never modified by pg_orbit)
+ * dpsec_integration_order = 2 (never modified by pg_orbit)
+ * is_dundee_compliant = 0 (never modified by pg_orbit)
+ */
+
+#include
+#include "norad.h"
+#include "norad_in.h"
+
+ /* omega_E = number of (sidereal) rotations of the earth per UT day: */
+const double omega_E = 1.00273790934;
+#ifdef USE_ACCURATE_ANOMALISTICS
+ /* The anomalistic month is the mean time it takes the moon to go
+ from perigee to perigee. The anomalistic year is the mean time
+ it takes the earth to go from perihelion to perihelion.
+ The following lines compute the "correct" mean motions of
+ the earth and sun: zns_per_day is the rate of change of
+ the earth's mean anomaly, in radians per day, and the 'znl'
+ quantities give similar rates for the moon.
+ Problem is, the original SxPx sources give values that are
+ close to, but not exactly equal to, these values. The
+ "new" values are probably improvements from further observations,
+ but if you actually used them, you'd break compatibility with
+ older implementations, and wouldn't match up with the way
+ NORAD and others actually compute TLEs. So the following few
+ lines should be regarded as explanatory; we're stuck with using
+ the older, less accurate SxPx values. */
+const double days_per_anomalistic_month = 27.554551;
+const double days_per_anomalistic_year = 365.259635864;
+const double zns_per_day = twopi / days_per_anomalistic_year;
+const double zns_per_min = zns_per_day / minutes_per_day;
+const double znl_per_day = twopi / days_per_anomalistic_month;
+const double znl_per_min = znl_per_day / minutes_per_day;
+ /* thdt = angular velocity of the earth, in radians/minute. */
+ /* Again, we have to use a less accurate value from the original */
+ /* SxPx, to replicate everybody else's results. */
+const double thdt = twopi * omega_E / minutes_per_day;
+#else
+const double zns_per_min = 1.19459E-5;
+const double zns_per_day = 0.017201977;
+const double znl_per_day = 0.228027132;
+const double znl_per_min = 1.5835218E-4;
+const double thdt = 4.37526908801129966e-3;
+#endif
+ /* zes = mean eccentricity of earth's orbit */
+ /* zel = mean eccentricity of the moon's orbit */
+#define zes 0.01675
+#define zel 0.05490
+
+/* thetag: computes Greenwich sidereal time, as an angle in radians
+from 0 to 2*pi, for a given UT0 JD. */
+
+static inline double ThetaG( const double jd)
+{
+ /* Reference: The 1992 Astronomical Almanac, page B6. */
+ /* Earth rotations per sidereal day (non-constant) */
+ const double UT = fmod( jd + .5, 1.);
+ const double seconds_per_day = 86400.;
+ const double jd_2000 = 2451545.0; /* 1.5 Jan 2000 = JD 2451545. */
+ double t_cen, GMST, rval;
+
+ t_cen = (jd - UT - jd_2000) / 36525.;
+ GMST = 24110.54841 + t_cen * (8640184.812866 + t_cen *
+ (0.093104 - t_cen * 6.2E-6));
+ GMST = fmod( GMST / seconds_per_day + omega_E * UT, 1.);
+ if( GMST < 0.)
+ GMST += 1.;
+ rval = twopi * GMST;
+
+ return( rval);
+} /*Function thetag*/
+
+ /* Previously, the integration step was given as two variables: */
+ /* 'stepp' (positive step = +720) and 'stepn' (negative step = -720). */
+ /* Exactly why this should be made a variable, much less _different_ */
+ /* variables for positive and negative, is entirely unclear... */
+ /* (8 Apr 2003) INTEGRATION_STEP is now a maximum integration step. */
+ /* The code in 'dpsec' splits the integration range into equally-sized */
+ /* pieces of 720 minutes (half a day) or smaller. */
+ /* (25 Aug 2006) INTEGRATION_STEP is now the variable */
+ /* 'dpsec_integration_step' so I can experiment with different */
+ /* integration techniques & evaluate their errors. */
+
+static double dpsec_integration_step = 720.;
+static int dpsec_integration_order = 2;
+static int is_dundee_compliant = 0;
+
+void sxpx_set_implementation_param( const int param_index,
+ const int new_param)
+{
+ switch( param_index)
+ {
+ case SXPX_DPSEC_INTEGRATION_ORDER:
+ dpsec_integration_order = new_param;
+ break;
+ case SXPX_DUNDEE_COMPLIANCE:
+ is_dundee_compliant = new_param;
+ break;
+ }
+}
+
+void sxpx_set_dpsec_integration_step( const double new_step_size)
+{
+ dpsec_integration_step = new_step_size;
+}
+
+static inline double eval_cubic_poly( const double x, const double constant,
+ const double linear, const double quadratic_term,
+ const double cubic_term)
+{
+ return( constant + x * (linear + x * (quadratic_term + x * cubic_term)));
+}
+
+/* DEEP */
+void Deep_dpinit( const tle_t *tle, deep_arg_t *deep_arg)
+{
+ const double sinq = sin(tle->xnodeo);
+ const double cosq = cos(tle->xnodeo);
+ const double aqnv = 1/deep_arg->aodp;
+ const double c1ss = 2.9864797E-6;
+ /* 1900 Jan 0.5 = JD 2415020. */
+ const double days_since_1900 = tle->epoch - 2415020.;
+ /* zcosi, zsini start as cos & sin of obliquity of earth's */
+ /* orbit = 23.444100 degrees... matches obliquity in 1963; */
+ /* probably just a slightly inaccurate value: */
+ const double zcosi0 = 0.91744867;
+ const double zsini0 = 0.39785416;
+ double zcosi = zcosi0;
+ double zsini = zsini0;
+ /* zcosg, zsing start as cos & sin of -78.779197 degrees */
+ double zsing = -0.98088458;
+ double zcosg = 0.1945905;
+ double bfact, cc = c1ss, se;
+ double ze = zes, zn = zns_per_min;
+ double sgh, sh, si;
+ double zsinh = sinq, zcosh = cosq;
+ double zcosil, zsinil, zcoshl, zsinhl;
+ double zcosgl, zsingl;
+ double sl;
+ int iteration;
+
+ deep_arg->thgr = ThetaG( tle->epoch);
+ deep_arg->xnq = deep_arg->xnodp;
+ deep_arg->omegaq = tle->omegao;
+
+/* if( days_since_1900 != deep_arg->preep) */
+ {
+ const double lunar_asc_node = 4.5236020 - 9.2422029E-4 * days_since_1900;
+ const double sin_asc_node = sin(lunar_asc_node);
+ const double cos_asc_node = cos(lunar_asc_node);
+ const double c_minus_gam = znl_per_day * days_since_1900 - 1.1151842;
+ /* gam = longitude of perigee for the moon, in radians: */
+ const double gam = 5.8351514 + 0.0019443680 * days_since_1900;
+ double zx, zy;
+
+ deep_arg->preep = days_since_1900;
+ zcosil = 0.91375164 - 0.03568096 * cos_asc_node;
+ zsinil = sqrt(1. - zcosil * zcosil);
+ zsinhl = 0.089683511 * sin_asc_node / zsinil;
+ zcoshl = sqrt(1. - zsinhl*zsinhl);
+ deep_arg->zmol = FMod2p( c_minus_gam);
+ zx = zsini0 * sin_asc_node / zsinil;
+ zy = zcoshl * cos_asc_node + zcosi0 * zsinhl * sin_asc_node;
+ zx = atan2( zx, zy) + gam - lunar_asc_node;
+ zcosgl = cos( zx);
+ zsingl = sin( zx);
+ deep_arg->zmos = FMod2p( 6.2565837
+ + zns_per_day * days_since_1900);
+ } /* End if( days_since_1900 != deep_arg->preep) */
+
+ /* Do solar terms */
+ deep_arg->savtsn = 1E20;
+
+ /* There was previously some convoluted logic here, but it boils */
+ /* down to this: we compute the solar terms, then the lunar terms. */
+ /* On a second pass, we recompute the solar terms, taking advantage */
+ /* of the improved data that resulted from computing lunar terms. */
+ for( iteration = 0; iteration < 2; iteration++)
+ {
+ const double c1l = 4.7968065E-7;
+ const double a1 = zcosg * zcosh + zsing * zcosi * zsinh;
+ const double a3 = -zsing * zcosh + zcosg * zcosi * zsinh;
+ const double a7 = -zcosg * zsinh + zsing * zcosi * zcosh;
+ const double a8 = zsing * zsini;
+ const double a9 = zsing * zsinh + zcosg * zcosi * zcosh;
+ const double a10 = zcosg * zsini;
+ const double a2 = deep_arg->cosio * a7 + deep_arg->sinio * a8;
+ const double a4 = deep_arg->cosio * a9 + deep_arg->sinio * a10;
+ const double a5 = -deep_arg->sinio * a7 + deep_arg->cosio * a8;
+ const double a6 = -deep_arg->sinio * a9 + deep_arg->cosio * a10;
+ const double x1 = a1 * deep_arg->cosg + a2 * deep_arg->sing;
+ const double x2 = a3 * deep_arg->cosg + a4 * deep_arg->sing;
+ const double x3 = -a1 * deep_arg->sing + a2 * deep_arg->cosg;
+ const double x4 = -a3 * deep_arg->sing + a4 * deep_arg->cosg;
+ const double x5 = a5 * deep_arg->sing;
+ const double x6 = a6 * deep_arg->sing;
+ const double x7 = a5 * deep_arg->cosg;
+ const double x8 = a6 * deep_arg->cosg;
+ const double z31 = 12 * x1 * x1 - 3 * x3 * x3;
+ const double z32 = 24 * x1 * x2 - 6 * x3 * x4;
+ const double z33 = 12 * x2 * x2 - 3 * x4 * x4;
+ const double z11 = -6 * a1 * a5 + deep_arg->eosq * (-24 * x1 * x7 - 6 * x3 * x5);
+ const double z12 = -6 * (a1 * a6 + a3 * a5) + deep_arg->eosq *
+ (-24 * (x2 * x7 + x1 * x8) - 6 * (x3 * x6 + x4 * x5));
+ const double z13 = -6 * a3 * a6 + deep_arg->eosq * (-24 * x2 * x8 - 6 * x4 * x6);
+ const double z21 = 6 * a2 * a5 + deep_arg->eosq * (24 * x1 * x5 - 6 * x3 * x7);
+ const double z22 = 6 * (a4 * a5 + a2 * a6) + deep_arg->eosq *
+ (24 * (x2 * x5 + x1 * x6) - 6 * (x4 * x7 + x3 * x8));
+ const double z23 = 6 * a4 * a6 + deep_arg->eosq * (24 * x2 * x6 - 6 * x4 * x8);
+ const double s3 = cc / deep_arg->xnq;
+ const double s2 = -0.5 * s3 / deep_arg->betao;
+ const double s4 = s3 * deep_arg->betao;
+ const double s1 = -15 * tle->eo * s4;
+ const double s5 = x1 * x3 + x2 * x4;
+ const double s6 = x2 * x3 + x1 * x4;
+ const double s7 = x2 * x4 - x1 * x3;
+ double z1 = 3 * (a1 * a1 + a2 * a2) + z31 * deep_arg->eosq;
+ double z2 = 6 * (a1 * a3 + a2 * a4) + z32 * deep_arg->eosq;
+ double z3 = 3 * (a3 * a3 + a4 * a4) + z33 * deep_arg->eosq;
+
+ z1 = z1 + z1 + deep_arg->betao2 * z31;
+ z2 = z2 + z2 + deep_arg->betao2 * z32;
+ z3 = z3 + z3 + deep_arg->betao2 * z33;
+ se = s1*zn*s5;
+ si = s2*zn*(z11+z13);
+ sl = -zn*s3*(z1+z3-14-6*deep_arg->eosq);
+ sgh = s4*zn*(z31+z33-6);
+ if( tle->xincl < pi / 60.) /* pi / 60 radians = 3 degrees */
+ sh = 0;
+ else
+ sh = -zn*s2*(z21+z23);
+ deep_arg->ee2 = 2*s1*s6;
+ deep_arg->e3 = 2*s1*s7;
+ deep_arg->xi2 = 2*s2*z12;
+ deep_arg->xi3 = 2*s2*(z13-z11);
+ deep_arg->xl2 = -2*s3*z2;
+ deep_arg->xl3 = -2*s3*(z3-z1);
+ deep_arg->xl4 = -2*s3*(-21-9*deep_arg->eosq)*ze;
+ deep_arg->xgh2 = 2*s4*z32;
+ deep_arg->xgh3 = 2*s4*(z33-z31);
+ deep_arg->xgh4 = -18*s4*ze;
+ deep_arg->xh2 = -2*s2*z22;
+ deep_arg->xh3 = -2*s2*(z23-z21);
+
+ if( !iteration) /* we compute lunar terms only on the first pass: */
+ {
+ deep_arg->sse = se;
+ deep_arg->ssi = si;
+ deep_arg->ssl = sl;
+ deep_arg->ssh = (deep_arg->sinio ? sh / deep_arg->sinio : 0.);
+ deep_arg->ssg = sgh-deep_arg->cosio*deep_arg->ssh;
+ deep_arg->se2 = deep_arg->ee2;
+ deep_arg->si2 = deep_arg->xi2;
+ deep_arg->sl2 = deep_arg->xl2;
+ deep_arg->sgh2 = deep_arg->xgh2;
+ deep_arg->sh2 = deep_arg->xh2;
+ deep_arg->se3 = deep_arg->e3;
+ deep_arg->si3 = deep_arg->xi3;
+ deep_arg->sl3 = deep_arg->xl3;
+ deep_arg->sgh3 = deep_arg->xgh3;
+ deep_arg->sh3 = deep_arg->xh3;
+ deep_arg->sl4 = deep_arg->xl4;
+ deep_arg->sgh4 = deep_arg->xgh4;
+ zcosg = zcosgl;
+ zsing = zsingl;
+ zcosi = zcosil;
+ zsini = zsinil;
+ zcosh = zcoshl * cosq + zsinhl * sinq;
+ zsinh = sinq * zcoshl - cosq * zsinhl;
+ zn = znl_per_min;
+ cc = c1l;
+ ze = zel;
+ }
+ }
+
+ deep_arg->sse += se;
+ deep_arg->ssi += si;
+ deep_arg->ssl += sl;
+ deep_arg->ssg += sgh;
+ if( deep_arg->sinio)
+ {
+ deep_arg->ssg -= sh * deep_arg->cosio / deep_arg->sinio;
+ deep_arg->ssh += sh / deep_arg->sinio;
+ }
+
+ /* "if mean motion is 1.893053 to 2.117652 revs/day, and ecc >= .5" */
+ if( deep_arg->xnq >= 0.00826 && deep_arg->xnq <= 0.00924 && tle->eo >= .5)
+ { /* start of 12-hour orbit, e >.5 section */
+ /* 'root##' variables are somewhat inaccurate values for */
+ /* a few fully normalized sectorial/tesseral spherical */
+ /* harmonics of the Earth's gravitational potential: */
+ const double root22 = 1.7891679E-6;
+ const double root32 = 3.7393792E-7;
+ const double root44 = 7.3636953E-9;
+ const double root52 = 1.1428639E-7;
+ const double root54 = 2.1765803E-9;
+ const double g201 = -0.306 - (tle->eo - 0.64) * 0.440;
+ const double sini2 = deep_arg->sinio*deep_arg->sinio;
+ const double f220 = 0.75*(1+2*deep_arg->cosio+deep_arg->cosio2);
+ const double f221 = 1.5 * sini2;
+ const double f321 = 1.875 * deep_arg->sinio * (1 - 2 *\
+ deep_arg->cosio - 3 * deep_arg->cosio2);
+ const double f322 = -1.875*deep_arg->sinio*(1+2*
+ deep_arg->cosio-3*deep_arg->cosio2);
+ const double f441 = 35 * sini2 * f220;
+ const double f442 = 39.3750 * sini2 * sini2;
+ const double f522 = 9.84375*deep_arg->sinio*(sini2*(1-2*deep_arg->cosio-5*
+ deep_arg->cosio2)+0.33333333*(-2+4*deep_arg->cosio+
+ 6*deep_arg->cosio2));
+ const double f523 = deep_arg->sinio*(4.92187512*sini2*(-2-4*
+ deep_arg->cosio+10*deep_arg->cosio2)+6.56250012
+ *(1+2*deep_arg->cosio-3*deep_arg->cosio2));
+ const double f542 = 29.53125*deep_arg->sinio*(2-8*
+ deep_arg->cosio+deep_arg->cosio2*
+ (-12+8*deep_arg->cosio+10*deep_arg->cosio2));
+ const double f543 = 29.53125*deep_arg->sinio*(-2-8*deep_arg->cosio+
+ deep_arg->cosio2*(12+8*deep_arg->cosio-10*
+ deep_arg->cosio2));
+ double g410, g422, g520, g521, g532, g533;
+ double g211, g310, g322;
+ double temp, temp1;
+
+ deep_arg->resonance_flag = 1; /* it _is_ resonant... */
+ deep_arg->synchronous_flag = 0; /* but it's not synchronous */
+ /* Geopotential resonance initialization for 12 hour orbits: */
+ if (tle->eo <= 0.65)
+ {
+ g211 = 3.616-13.247*tle->eo+16.290*deep_arg->eosq;
+ g310 = eval_cubic_poly( tle->eo, -19.302, 117.390, -228.419, 156.591);
+ g322 = eval_cubic_poly( tle->eo, -18.9068, 109.7927, -214.6334, 146.5816);
+ g410 = eval_cubic_poly( tle->eo, -41.122, 242.694, -471.094, 313.953);
+ g422 = eval_cubic_poly( tle->eo, -146.407, 841.880, -1629.014, 1083.435);
+ g520 = eval_cubic_poly( tle->eo, -532.114, 3017.977, -5740.032, 3708.276);
+ /* NOTE: quadratic coeff was 5740 */
+ }
+ else
+ {
+ g211 = eval_cubic_poly( tle->eo, -72.099, 331.819, -508.738, 266.724);
+ g310 = eval_cubic_poly( tle->eo, -346.844, 1582.851, -2415.925, 1246.113);
+ g322 = eval_cubic_poly( tle->eo, -342.585, 1554.908, -2366.899, 1215.972);
+ g410 = eval_cubic_poly( tle->eo, -1052.797, 4758.686, -7193.992, 3651.957);
+ g422 = eval_cubic_poly( tle->eo, -3581.69, 16178.11, -24462.77, 12422.52);
+ if (tle->eo <= 0.715)
+ g520 = eval_cubic_poly( tle->eo, 1464.74, -4664.75, 3763.64, 0.);
+ else
+ g520 = eval_cubic_poly( tle->eo, -5149.66, 29936.92, -54087.36, 31324.56);
+ } /* End if (tle->eo <= 0.65) */
+
+ if (tle->eo < 0.7)
+ {
+ g533 = eval_cubic_poly( tle->eo, -919.2277, 4988.61, -9064.77, 5542.21);
+ g521 = eval_cubic_poly( tle->eo, -822.71072, 4568.6173, -8491.4146, 5337.524);
+ g532 = eval_cubic_poly( tle->eo, -853.666, 4690.25, -8624.77, 5341.4);
+ }
+ else
+ {
+ g533 = eval_cubic_poly( tle->eo, -37995.78, 161616.52, -229838.2, 109377.94);
+ g521 = eval_cubic_poly( tle->eo, -51752.104, 218913.95, -309468.16, 146349.42);
+ g532 = eval_cubic_poly( tle->eo, -40023.88, 170470.89, -242699.48, 115605.82);
+ } /* End if (tle->eo <= 0.7) */
+
+ temp1 = 3 * deep_arg->xnq * deep_arg->xnq * aqnv * aqnv;
+ temp = temp1*root22;
+ deep_arg->d2201 = temp * f220 * g201;
+ deep_arg->d2211 = temp * f221 * g211;
+ temp1 *= aqnv;
+ temp = temp1*root32;
+ deep_arg->d3210 = temp * f321 * g310;
+ deep_arg->d3222 = temp * f322 * g322;
+ temp1 *= aqnv;
+ temp = 2*temp1*root44;
+ deep_arg->d4410 = temp * f441 * g410;
+ deep_arg->d4422 = temp * f442 * g422;
+ temp1 *= aqnv;
+ temp = temp1*root52;
+ deep_arg->d5220 = temp * f522 * g520;
+ deep_arg->d5232 = temp * f523 * g532;
+ temp = 2*temp1*root54;
+ deep_arg->d5421 = temp * f542 * g521;
+ deep_arg->d5433 = temp * f543 * g533;
+ deep_arg->xlamo = tle->xmo+tle->xnodeo+tle->xnodeo-deep_arg->thgr-deep_arg->thgr;
+ bfact = deep_arg->xmdot + deep_arg->xnodot+
+ deep_arg->xnodot - thdt - thdt;
+ bfact += deep_arg->ssl + deep_arg->ssh + deep_arg->ssh;
+ } /* end of 12-hour orbit, e >.5 section */
+ else if( deep_arg->xnq < 1.2 * twopi / minutes_per_day &&
+ deep_arg->xnq > 0.8 * twopi / minutes_per_day)
+ { /* "if mean motion is .8 to 1.2 revs/day" */
+ const double q22 = 1.7891679E-6;
+ const double q31 = 2.1460748E-6;
+ const double q33 = 2.2123015E-7;
+ const double cosio_plus_1 = 1. + deep_arg->cosio;
+ const double g200 = 1+deep_arg->eosq*(-2.5+0.8125*deep_arg->eosq);
+ const double g300 = 1+deep_arg->eosq*(-6+6.60937*deep_arg->eosq);
+ const double f311 = 0.9375*deep_arg->sinio*deep_arg->sinio*
+ (1+3*deep_arg->cosio)-0.75*cosio_plus_1;
+ const double g310 = 1+2*deep_arg->eosq;
+ const double f220 = 0.75 * cosio_plus_1 * cosio_plus_1;
+ const double f330 = 2.5 * f220 * cosio_plus_1;
+
+ deep_arg->resonance_flag = deep_arg->synchronous_flag = 1;
+ /* Synchronous resonance terms initialization */
+ deep_arg->del1 = 3*deep_arg->xnq*deep_arg->xnq*aqnv*aqnv;
+ deep_arg->del2 = 2*deep_arg->del1*f220*g200*q22;
+ deep_arg->del3 = 3*deep_arg->del1*f330*g300*q33*aqnv;
+ deep_arg->del1 *= f311*g310*q31*aqnv;
+ deep_arg->xlamo = tle->xmo+tle->xnodeo+tle->omegao-deep_arg->thgr;
+ bfact = deep_arg->xmdot + deep_arg->omgdot + deep_arg->xnodot - thdt;
+ bfact = bfact+deep_arg->ssl+deep_arg->ssg+deep_arg->ssh;
+ } /* End of geosych case */
+ else /* it's neither a high-e 12-hr orbit nor a geosynch: */
+ deep_arg->resonance_flag = deep_arg->synchronous_flag = 0;
+
+ if( deep_arg->resonance_flag)
+ {
+ deep_arg->xfact = bfact-deep_arg->xnq;
+
+ /* Initialize integrator */
+ deep_arg->xli = deep_arg->xlamo;
+ deep_arg->xni = deep_arg->xnq;
+ deep_arg->atime = 0;
+ }
+ /* End case dpinit: */
+}
+
+/* 'dpsec' is unavoidably confusing. See https://projectpluto.com/dpsec.htm
+for some commentary on what's going on here. */
+
+static inline void compute_dpsec_derivs( const deep_arg_t *deep_arg,
+ double *derivs)
+{
+ const double sin_li = sin( deep_arg->xli);
+ const double cos_li = cos( deep_arg->xli);
+ const double sin_2li = 2. * sin_li * cos_li;
+ const double cos_2li = 2. * cos_li * cos_li - 1.;
+ int i;
+
+ derivs[0] = 0.;
+ /* Dot terms calculated, using a lot of trig add/subtract */
+ /* identities to reduce the computational load... at the */
+ /* cost of making the code somewhat hard to follow: */
+ if( deep_arg->synchronous_flag )
+ {
+/* const double fasx2 = 0.1313091 radians = 7.523456 degrees */
+/* const double fasx4 = 2.8843198 radians = 165.259351 degrees */
+/* const double fasx6 = 0.3744809 radians = 21.456173 degrees */
+ const double c_fasx2 = 0.99139134268488593;
+ const double s_fasx2 = 0.13093206501640101;
+ const double c_2fasx4 = 0.87051638752972937;
+ const double s_2fasx4 = -0.49213943048915526;
+ const double c_3fasx6 = 0.43258117585763334;
+ const double s_3fasx6 = 0.90159499016666422;
+ const double sin_3li = sin_2li * cos_li + cos_2li * sin_li;
+ const double cos_3li = cos_2li * cos_li - sin_2li * sin_li;
+ double term1a = deep_arg->del1 * (sin_li * c_fasx2 - cos_li * s_fasx2);
+ double term2a = deep_arg->del2 * (sin_2li * c_2fasx4 - cos_2li * s_2fasx4);
+ double term3a = deep_arg->del3 * (sin_3li * c_3fasx6 - cos_3li * s_3fasx6);
+ double term1b = deep_arg->del1 * (cos_li * c_fasx2 + sin_li * s_fasx2);
+ double term2b = 2. * deep_arg->del2 * (cos_2li * c_2fasx4 + sin_2li * s_2fasx4);
+ double term3b = 3. * deep_arg->del3 * (cos_3li * c_3fasx6 + sin_3li * s_3fasx6);
+
+ for( i = 0; i < dpsec_integration_order; i += 2)
+ {
+ *derivs++ = term1a + term2a + term3a;
+ *derivs++ = term1b + term2b + term3b;
+ if( i + 2 < dpsec_integration_order)
+ {
+ term1a = -term1a;
+ term2a *= -4.;
+ term3a *= -9.;
+ term1b = -term1b;
+ term2b *= -4.;
+ term3b *= -9.;
+ }
+ }
+ } /* end of geosynch case */
+ else
+ { /* orbit is a 12-hour resonant one: */
+/* const double g22 = 5.7686396; */
+/* const double g32 = 0.95240898; */
+/* const double g44 = 1.8014998; */
+/* const double g52 = 1.0508330; */
+/* const double g54 = 4.4108898; */
+ const double c_g22 = 0.87051638752972937;
+ const double s_g22 = -0.49213943048915526;
+ const double c_g32 = 0.57972190187001149;
+ const double s_g32 = 0.81481440616389245;
+ const double c_g44 = -0.22866241528815548;
+ const double s_g44 = 0.97350577801807991;
+ const double c_g52 = 0.49684831179884198;
+ const double s_g52 = 0.86783740128127729;
+ const double c_g54 = -0.29695209575316894;
+ const double s_g54 = -0.95489237761529999;
+ const double xomi =
+ deep_arg->omegaq + deep_arg->omgdot * deep_arg->atime;
+ const double sin_omi = sin( xomi), cos_omi = cos( xomi);
+ const double sin_li_m_omi = sin_li * cos_omi - sin_omi * cos_li;
+ const double sin_li_p_omi = sin_li * cos_omi + sin_omi * cos_li;
+ const double cos_li_m_omi = cos_li * cos_omi + sin_omi * sin_li;
+ const double cos_li_p_omi = cos_li * cos_omi - sin_omi * sin_li;
+ const double sin_2omi = 2. * sin_omi * cos_omi;
+ const double cos_2omi = 2. * cos_omi * cos_omi - 1.;
+ const double sin_2li_m_omi = sin_2li * cos_omi - sin_omi * cos_2li;
+ const double sin_2li_p_omi = sin_2li * cos_omi + sin_omi * cos_2li;
+ const double cos_2li_m_omi = cos_2li * cos_omi + sin_omi * sin_2li;
+ const double cos_2li_p_omi = cos_2li * cos_omi - sin_omi * sin_2li;
+ const double sin_2li_p_2omi = sin_2li * cos_2omi + sin_2omi * cos_2li;
+ const double cos_2li_p_2omi = cos_2li * cos_2omi - sin_2omi * sin_2li;
+ const double sin_2omi_p_li = sin_li * cos_2omi + sin_2omi * cos_li;
+ const double cos_2omi_p_li = cos_li * cos_2omi - sin_2omi * sin_li;
+ double term1a =
+ deep_arg->d2201 * (sin_2omi_p_li*c_g22 - cos_2omi_p_li*s_g22)
+ + deep_arg->d2211 * (sin_li * c_g22 - cos_li * s_g22)
+ + deep_arg->d3210 * (sin_li_p_omi*c_g32 - cos_li_p_omi*s_g32)
+ + deep_arg->d3222 * (sin_li_m_omi*c_g32 - cos_li_m_omi*s_g32)
+ + deep_arg->d5220 * (sin_li_p_omi*c_g52 - cos_li_p_omi*s_g52)
+ + deep_arg->d5232 * (sin_li_m_omi*c_g52 - cos_li_m_omi*s_g52);
+ double term2a =
+ deep_arg->d4410 * (sin_2li_p_2omi*c_g44 - cos_2li_p_2omi*s_g44)
+ + deep_arg->d4422 * (sin_2li * c_g44 - cos_2li * s_g44)
+ + deep_arg->d5421 * (sin_2li_p_omi*c_g54 - cos_2li_p_omi*s_g54)
+ + deep_arg->d5433 * (sin_2li_m_omi*c_g54 - cos_2li_m_omi*s_g54);
+ double term1b =
+ (deep_arg->d2201 * (cos_2omi_p_li*c_g22 + sin_2omi_p_li*s_g22)
+ + deep_arg->d2211 * (cos_li * c_g22 + sin_li * s_g22)
+ + deep_arg->d3210 * (cos_li_p_omi*c_g32 + sin_li_p_omi*s_g32)
+ + deep_arg->d3222 * (cos_li_m_omi*c_g32 + sin_li_m_omi*s_g32)
+ + deep_arg->d5220 * (cos_li_p_omi*c_g52 + sin_li_p_omi*s_g52)
+ + deep_arg->d5232 * (cos_li_m_omi*c_g52 + sin_li_m_omi*s_g52));
+ double term2b = 2. *
+ (deep_arg->d4410 * (cos_2li_p_2omi*c_g44 + sin_2li_p_2omi*s_g44)
+ + deep_arg->d4422 * (cos_2li * c_g44 + sin_2li * s_g44)
+ + deep_arg->d5421 * (cos_2li_p_omi*c_g54 + sin_2li_p_omi*s_g54)
+ + deep_arg->d5433 * (cos_2li_m_omi*c_g54 + sin_2li_m_omi*s_g54));
+
+ for( i = 0; i < dpsec_integration_order; i += 2)
+ {
+ *derivs++ = term1a + term2a;
+ *derivs++ = term1b + term2b;
+ if( i + 2 < dpsec_integration_order)
+ {
+ term1a = -term1a;
+ term2a *= -4.;
+ term1b = -term1b;
+ term2b *= -4.;
+ }
+ }
+ } /* End of 12-hr resonant case */
+}
+
+void Deep_dpsec( const tle_t *tle, deep_arg_t *deep_arg)
+{
+ double temp, xni, xli;
+ int final_integration_step = 0;
+
+ deep_arg->xll += deep_arg->ssl*deep_arg->t;
+ deep_arg->omgadf += deep_arg->ssg*deep_arg->t;
+ deep_arg->xnode += deep_arg->ssh*deep_arg->t;
+ deep_arg->em = tle->eo+deep_arg->sse*deep_arg->t;
+ deep_arg->xinc = tle->xincl+deep_arg->ssi*deep_arg->t;
+ if( !deep_arg->resonance_flag ) return;
+
+ /* If we're closer to t=0 than to the currently-stored data
+ from the previous call to this function, then we're
+ better off "restarting", going back to the initial data.
+ The Dundee code rigs things up to _always_ take 720-minute
+ steps from epoch to end time, except for the final step.
+ So if we'd have to integrate "backwards" (toward the epoch),
+ we gotta do a restart if we're to be Dundee-compliant. */
+ if( fabs( deep_arg->t) < fabs( deep_arg->t - deep_arg->atime)
+ || (is_dundee_compliant && fabs( deep_arg->t) < fabs( deep_arg->atime)))
+ { /* Epoch restart */
+ deep_arg->atime = 0.;
+ xni = deep_arg->xnq;
+ xli = deep_arg->xlamo;
+ }
+ else /* use xni, xli from previous runs: */
+ {
+ xni = deep_arg->xni;
+ xli = deep_arg->xli;
+ }
+
+ while( !final_integration_step)
+ {
+ double xldot, derivs[20], xlpow = 1., delt_factor;
+ double delt = deep_arg->t - deep_arg->atime;
+ int i;
+
+ deep_arg->xni = xni;
+ deep_arg->xli = xli;
+ compute_dpsec_derivs( deep_arg, derivs);
+ if( delt > dpsec_integration_step)
+ delt = dpsec_integration_step;
+ else if( delt < -dpsec_integration_step)
+ delt = -dpsec_integration_step;
+ else
+ final_integration_step = 1;
+
+ xldot = xni+deep_arg->xfact;
+
+ xli += delt * xldot;
+ xni += delt * derivs[0];
+ delt_factor = delt;
+ for( i = 2; i <= dpsec_integration_order; i++)
+ {
+ xlpow *= xldot;
+ derivs[i - 1] *= xlpow;
+ delt_factor *= delt / (double)i;
+ xli += delt_factor * derivs[i - 2];
+ xni += delt_factor * derivs[i - 1];
+ }
+ if( !is_dundee_compliant || !final_integration_step)
+ {
+ deep_arg->xni = xni;
+ deep_arg->xli = xli;
+ deep_arg->atime += delt;
+ }
+ }
+
+ deep_arg->xn = xni;
+
+ temp = -deep_arg->xnode + deep_arg->thgr + deep_arg->t * thdt;
+
+ deep_arg->xll = xli + temp
+ + (deep_arg->synchronous_flag ? -deep_arg->omgadf : temp);
+ /*End case dpsec: */
+}
+
+void Deep_dpper( const tle_t *tle, deep_arg_t *deep_arg)
+{
+ double sinis, cosis;
+
+ /* If the time didn't change by more than 30 minutes, */
+ /* there's no good reason to recompute the perturbations; */
+ /* they don't change enough over so short a time span. */
+ /* However, the Dundee code _always_ recomputes, so if */
+ /* we're attempting to replicate its results, we've gotta */
+ /* recompute everything, too. */
+ if( fabs(deep_arg->savtsn-deep_arg->t) >= 30. || is_dundee_compliant)
+ {
+ double zf, zm, sinzf, ses, sis, sil, sel, sll, sls;
+ double f2, f3, sghl, sghs, shs, sh1;
+
+ deep_arg->savtsn = deep_arg->t;
+
+ /* Update solar perturbations for time T: */
+ zm = deep_arg->zmos+zns_per_min*deep_arg->t;
+ zf = zm+2*zes*sin(zm);
+ sinzf = sin(zf);
+ f2 = 0.5*sinzf*sinzf-0.25;
+ f3 = -0.5*sinzf*cos(zf);
+ ses = deep_arg->se2*f2+deep_arg->se3*f3;
+ sis = deep_arg->si2*f2+deep_arg->si3*f3;
+ sls = deep_arg->sl2*f2+deep_arg->sl3*f3+deep_arg->sl4*sinzf;
+ sghs = deep_arg->sgh2*f2+deep_arg->sgh3*f3+deep_arg->sgh4*sinzf;
+ shs = deep_arg->sh2*f2+deep_arg->sh3*f3;
+
+ /* Update lunar perturbations for time T: */
+ zm = deep_arg->zmol+znl_per_min*deep_arg->t;
+ zf = zm+2*zel*sin(zm);
+ sinzf = sin(zf);
+ f2 = 0.5*sinzf*sinzf-0.25;
+ f3 = -0.5*sinzf*cos(zf);
+ sel = deep_arg->ee2*f2+deep_arg->e3*f3;
+ sil = deep_arg->xi2*f2+deep_arg->xi3*f3;
+ sll = deep_arg->xl2*f2+deep_arg->xl3*f3+deep_arg->xl4*sinzf;
+ sghl = deep_arg->xgh2*f2+deep_arg->xgh3*f3+deep_arg->xgh4*sinzf;
+ sh1 = deep_arg->xh2*f2+deep_arg->xh3*f3;
+
+ /* Sum the solar and lunar contributions: */
+ deep_arg->pe = ses+sel;
+ deep_arg->pinc = sis+sil;
+ deep_arg->pl = sls+sll;
+ deep_arg->pgh = sghs+sghl;
+ deep_arg->ph = shs+sh1;
+#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH
+ if( deep_arg->solar_lunar_init_flag)
+ {
+ deep_arg->pe0 = deep_arg->pe;
+ deep_arg->pinc0 = deep_arg->pinc;
+ deep_arg->pl0 = deep_arg->pl;
+ deep_arg->pgh0 = deep_arg->pgh;
+ deep_arg->ph0 = deep_arg->ph;
+ }
+ deep_arg->pe -= deep_arg->pe0;
+ deep_arg->pinc -= deep_arg->pinc0;
+ deep_arg->pl -= deep_arg->pl0;
+ deep_arg->pgh -= deep_arg->pgh0;
+ deep_arg->ph -= deep_arg->ph0;
+ if( deep_arg->solar_lunar_init_flag)
+ return; /* done all we really need to do here... */
+#endif
+ }
+
+ /* In Spacetrack 3, sinis & cosis were initialized */
+ /* _before_ perturbations were added to xinc. In */
+ /* Spacetrack 6, it's the other way around (see below). */
+#ifndef SPACETRACK_3
+ deep_arg->xinc += deep_arg->pinc;
+#endif
+ sinis = sin( deep_arg->xinc);
+ cosis = cos( deep_arg->xinc);
+#ifdef SPACETRACK_3
+ deep_arg->xinc += deep_arg->pinc;
+#endif
+
+ /* Add solar/lunar perturbation correction to eccentricity: */
+ deep_arg->em += deep_arg->pe;
+ deep_arg->xll += deep_arg->pl;
+ deep_arg->omgadf += deep_arg->pgh;
+ if( tle->xincl >= 0.2)
+ { /* Apply periodics directly */
+ double temp_val;
+
+#ifdef SPACETRACK_3
+ sinis = sin(deep_arg->xinc);
+ cosis = cos(deep_arg->xinc);
+#endif
+ temp_val = deep_arg->ph / sinis;
+ deep_arg->omgadf -= cosis * temp_val;
+ deep_arg->xnode += temp_val;
+ }
+ else
+ {
+ /* Apply periodics with Lyddane modification */
+ const double sinok = sin(deep_arg->xnode);
+ const double cosok = cos(deep_arg->xnode);
+ const double alfdp = deep_arg->ph * cosok
+ + (deep_arg->pinc * cosis + sinis) * sinok;
+ const double betdp = - deep_arg->ph * sinok
+ + (deep_arg->pinc * cosis + sinis) * cosok;
+ double dls, delta_xnode;
+
+// deep_arg->xnode = FMod2p(deep_arg->xnode);
+ delta_xnode = atan2(alfdp,betdp) - deep_arg->xnode;
+
+ /* This is a patch to Lyddane modification suggested */
+ /* by Rob Matson, streamlined very slightly by BJG, to */
+ /* keep 'delta_xnode' between +/- 180 degrees: */
+
+ if( delta_xnode < - pi)
+ delta_xnode += twopi;
+ else if( delta_xnode > pi)
+ delta_xnode -= twopi;
+
+ dls = -deep_arg->xnode * sinis * deep_arg->pinc;
+#ifdef SPACETRACK_3
+ deep_arg->omgadf += dls
+ + cosis * deep_arg->xnode -
+ - cos( deep_arg->xinc) * (deep_arg->xnode + delta_xnode);
+#else
+ deep_arg->omgadf += dls - cosis * delta_xnode;
+#endif
+ deep_arg->xnode += delta_xnode;
+ } /* End case dpper: */
+}
diff --git a/src/sgp4/get_el.c b/src/sgp4/get_el.c
new file mode 100644
index 0000000..247b4a3
--- /dev/null
+++ b/src/sgp4/get_el.c
@@ -0,0 +1,392 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * get_el.c - TLE (Two-Line Element) parsing
+ *
+ * Parses the standard NORAD/18th SDS two-line element format into the
+ * in-memory tle_t structure. Format defined in STR#3 Appendix (pp. 83-91)
+ * and Vallado Rev-1 Appendix B.
+ *
+ * Key conversions performed during parsing:
+ * - Angles (inclination, RAAN, arg perigee, mean anomaly): deg -> rad
+ * - Mean motion: rev/day -> rad/min
+ * - Mean motion derivatives: rev/day^n -> rad/min^n
+ * - Eccentricity: implied decimal point (e.g., "1859667" -> 0.1859667)
+ * - B* drag: quasi-scientific notation -> double, multiplied by AE
+ * - Epoch: YY+DDD.DDDDDDDD -> Julian Date
+ *
+ * Also handles Alpha-5 and Super-5 NORAD catalog number extensions,
+ * and Bill Gray's 'H' ephemeris type (state vector in base-36 encoding).
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include "norad.h"
+
+#define PI 3.141592653589793238462643383279502884197
+#define TWOPI (2. * PI)
+#define MINUTES_PER_DAY 1440.
+#define MINUTES_PER_DAY_SQUARED (MINUTES_PER_DAY * MINUTES_PER_DAY)
+#define MINUTES_PER_DAY_CUBED (MINUTES_PER_DAY * MINUTES_PER_DAY_SQUARED)
+#define AE 1.0
+ /* distance units, earth radii */
+
+/* TLEs have four angles on line 2, given in the form DDD.DDDD. This
+can be parsed more quickly as an integer, then cast to double and
+converted to radians, all in one step. */
+
+static int get_angle( const char *buff)
+{
+ int rval = 0;
+
+ while( *buff == ' ')
+ buff++;
+ while( *buff != ' ')
+ {
+ if( *buff != '.')
+ rval = rval * 10 + (int)( *buff - '0');
+ buff++;
+ }
+ return( rval);
+}
+
+/* Converts the quasi scientific notation of the "Motion Dot Dot/6" or
+"BSTAR" field to double. The input will always be of the form
+
+sdddddSe
+
+ ....where s is blank or + or -; ddddd is a five-digit mantissa;
+S is + or - or blank; and e is a single-digit exponent. A decimal
+point is assumed before the five-digit mantissa. */
+
+static double sci( const char *string)
+{
+ double rval = 0.;
+
+ if( string[1] != ' ')
+ {
+ const int ival = atoi( string);
+
+ if( ival)
+ {
+ rval = (double)ival * 1.e-5;
+ if( string[7] != '0')
+ {
+ int exponent = string[7] - '0';
+
+ if( string[6] == '-')
+ while( exponent--)
+ rval *= .1;
+ else
+ while( exponent--)
+ rval *= 10.;
+ }
+ }
+ }
+ return( rval);
+}
+
+
+/* Does a checksum modulo 10 on the given line. Digits = their
+value, '-' = 1, all other chars = 0. Returns 0 if ok, a negative
+value if it's definitely not a TLE line, positive if it's all OK
+except the checksum. This last was added because people sometimes
+want to use TLEs without worrying about the checksum. */
+
+int tle_checksum( const char *buff)
+{
+ int rval = 0;
+ int count = 69;
+
+ if( (*buff != '1' && *buff != '2') || buff[1] != ' ')
+ return( -1);
+ while( --count)
+ {
+ if( *buff > '0' && *buff <= '9')
+ rval += *buff - '0';
+ else if( *buff == '-')
+ rval++;
+ if( *buff < ' ' || *buff > 'z') /* invalid character */
+ return( -2);
+ buff++;
+ }
+ rval -= *buff++ - '0';
+ if( *buff > ' ') /* line unterminated */
+ rval = -3;
+ else
+ {
+ rval %= 10;
+ if( rval < 0)
+ rval += 10;
+ }
+ return( rval);
+}
+
+static inline int mutant_dehex( const char ichar)
+{
+ int rval;
+
+ if( ichar <= '9' && ichar >= '0')
+ rval = ichar - '0';
+ else if( ichar >= 'A' && ichar <= 'Z')
+ rval = ichar + 10 - 'A';
+ else
+ rval = -1;
+ return( rval);
+}
+
+/* The "standard" SDP4 model fails badly for very high-flying satellites
+(mostly, but not always, those with orbital periods of greater than
+about a week). Highly eccentric orbits are more likely to fail than
+near-circular ones. And of course, hyperbolic orbits never work with
+SGP4/SDP4.
+
+ As a non-standard extension, I'm simply storing state vectors for
+such orbits, using the following somewhat odd scheme :
+
+1 40391U 15007B 15091.99922241 sxxxxxxxx syyyyyyyy szzzzzzzzH 9997
+2 49391 [valid range, accuracy] saaaaaaaa sbbbbbbbb scccccccc 0 8
+
+ Epoch, int'l & NORAD IDs are stored in the standard manner. The
+'ephemeris type' is H (rather than the otherwise universal 0). The
+xyz position and vx, vy, vz velocity are stored as 8-digit signed
+base-36 integers, hence a range of +/- 36^8 = about +/- 2.82x10^12.
+
+ x, y, z are in meters, and hence cover a range +/- 18.9 AU.
+vx, vy, vz are in 10^-4 m/s, range +/- 94% c. The state vectors
+are in the geocentric ecliptic plane of date. See 'sdp4.cpp' for
+a discussion of how they're actually used. */
+
+static double get_high_value( const char *iptr)
+{
+ int64_t rval = 0;
+
+ assert( *iptr == '+' || *iptr == '-');
+ if( *iptr == '+' || *iptr == '-')
+ {
+ int i, digit;
+
+ for( i = 1; i < 9; i++)
+ {
+ digit = mutant_dehex( iptr[i]);
+ assert( digit >= 0);
+ rval = rval * (int64_t)36 + (int64_t)digit;
+ }
+ if( *iptr == '-')
+ rval = -rval;
+ }
+ return( (double)rval);
+}
+
+/* Traditionally, NORAD numbers were stored as five digits. In 2020, new
+detectors threatened to go past 100K objects; the 'Alpha-5' scheme allows
+the first byte to be replaced by an uppercase letter, with I and O
+skipped. That gets us to 339999 :
+
+https://www.space-track.org/documentation#tle-alpha5
+
+ Note that Alpha-5 is referred to as a "stopgap". Near the bottom of
+the above link, "space-track.org encourages users to switch to... XML,
+KVN, or JSON", (partly) because these will handle nine-digit catalog
+numbers.
+
+ To go beyond the Alpha-5 limit of 340000 possible numbers and store
+all nine-digit numbers in five bytes, I have added options 3 and 4
+below. To do so, we need a 'base64'-like scheme, using all ten
+digits, 26 uppercase and 26 lowercase letters, and + and /.
+
+ d = digit, L = uppercase letter, x = any base64 character
+ X = non-digit base-64 character
+
+(1) ddddd = 'traditional' scheme provides 100000 combinations;
+ Numbers 0 to 99999
+
+(2) Ldddd = Alpha-5 scheme adds 240000
+ Numbers 100000 to 339999; A0000 to Z9999
+
+(3) xxxxX = 64^4*54 = 905969664 more (start of 'Super-5' range)
+ Numbers 340000 to 906309663; 0000A to -----
+
+(4) xxxXd = 64^3*54*10 = 141557760 more
+ Numbers 906309664 to 1047867423; 000A0 and up
+ (going slightly past the billion we actually need) */
+
+static int base64_to_int( const char c)
+{
+ int offset;
+
+ if( c >= 'A')
+ {
+ if( c <= 'Z')
+ offset = 'A' - 10;
+ else if( c >= 'a' && c <= 'z')
+ offset = 'a' - 10 - 26;
+ else
+ return( -1);
+ }
+ else
+ {
+ if( c >= '0' && c <= '9')
+ offset = '0';
+ else if( c == ' ')
+ return( 0);
+ else if( c == '+')
+ return( 62);
+ else if( c == '-')
+ return( 63);
+ else
+ return( -1);
+ }
+ return( c - offset);
+}
+
+static int get_norad_number( const char *buff)
+{
+ size_t i;
+ int digits[5], rval = 0;
+
+ for( i = 0; i < 5; i++)
+ {
+ digits[i] = base64_to_int( buff[i]);
+ if( digits[i] == -1) /* not a valid number */
+ return( 0);
+ }
+ if( digits[4] > 9) /* case (3): last char is uppercase */
+ rval = 340000 + (digits[4] - 10)
+ + 54 * (digits[3] + (digits[2] << 6) + (digits[1] << 12) + (digits[0] << 18));
+ else if( digits[3] > 9) /* case (4) above */
+ rval = 340000 + 905969664 + digits[4] + (digits[3] - 10) * 10
+ + 540 * (digits[2] + (digits[1] << 6) + (digits[0] << 12));
+ else /* last four digits are 0-9; 'standard' NORAD desig */
+ {
+ for( i = 1; i <= 4; i++)
+ assert( (buff[i] >= '0' && buff[i] <= '9') || buff[i] == ' ');
+ if( *buff > 'I')
+ {
+ digits[0]--;
+ if( *buff > 'O')
+ digits[0]--;
+ }
+ rval = digits[0] * 10000 + atoi( buff + 1);
+ }
+ return( rval);
+}
+
+static inline double get_eight_places( const char *ptr)
+{
+ return( (double)atoi( ptr) + (double)atoi(ptr + 4) * 1e-8);
+}
+
+/* Meteor 2-08 */
+/* 1 13113U 88245.60005115 0.00000076 63463-4 0 5998 */
+/* 2 13113 82.5386 288.0994 0015973 147.1294 213.0868 13.83869004325321 */
+
+#define J2000 2451545.5
+#define J1900 (J2000 - 36525. - 1.)
+
+/* parse_elements returns:
+ 0 if the elements are parsed without error;
+ 1 if they're OK except the first line has a checksum error;
+ 2 if they're OK except the second line has a checksum error;
+ 3 if they're OK except both lines have checksum errors;
+ a negative value if the lines aren't at all parseable */
+
+int parse_elements( const char *line1, const char *line2, tle_t *sat)
+{
+ int rval, checksum_problem = 0;
+
+ if( *line1 != '1' || *line2 != '2')
+ rval = -4;
+ else
+ {
+ rval = tle_checksum( line1);
+ if( rval > 0)
+ {
+ checksum_problem = 1; /* there's a checksum problem, but it's */
+ rval = 0; /* not fatal; continue processing the TLE */
+ }
+ }
+
+ if( rval)
+ rval -= 100;
+ else
+ {
+ rval = tle_checksum( line2);
+ if( rval > 0)
+ {
+ checksum_problem |= 2; /* there's a checksum problem, but it's */
+ rval = 0; /* not fatal; continue processing the TLE */
+ }
+ }
+
+ if( !rval)
+ {
+ char tbuff[13];
+ int year = line1[19] - '0';
+
+ if( line1[18] >= '0')
+ year += (line1[18] - '0') * 10;
+ if( year < 57) /* cycle around Y2K */
+ year += 100;
+ sat->epoch = get_eight_places( line1 + 20) + J1900
+ + (double)( year * 365 + (year - 1) / 4);
+ sat->norad_number = get_norad_number( line1 + 2);
+ memcpy( tbuff, line1 + 64, 4);
+ tbuff[4] = '\0';
+ sat->bulletin_number = atoi( tbuff);
+ sat->classification = line1[7]; /* almost always 'U' */
+ memcpy( sat->intl_desig, line1 + 9, 8);
+ if( !memcmp( sat->intl_desig, " ", 5))
+ { /* usually 'analyst' object w/o international (COSPAR) desig; */
+ int i, n = sat->norad_number; /* set launch 000, year/part */
+ /* data mapped from NORAD # */
+ for( i = 7; i > 4; i--, n /= 26)
+ sat->intl_desig[i] = 'A' + n % 26;
+ sat->intl_desig[2] = sat->intl_desig[3] = sat->intl_desig[4] = '0';
+ sat->intl_desig[1] = '0' + n % 10;
+ sat->intl_desig[0] = '0' + n / 10;
+ }
+ sat->intl_desig[8] = '\0';
+ memcpy( tbuff, line2 + 63, 5);
+ tbuff[5] = '\0';
+ sat->revolution_number = atoi( tbuff);
+ sat->ephemeris_type = line1[62];
+ if( sat->ephemeris_type == 'H')
+ {
+ size_t i;
+ double *state_vect = &sat->xincl;
+
+ for( i = 0; i < 3; i++)
+ {
+ state_vect[i] = get_high_value( line1 + 33 + i * 10);
+ state_vect[i + 3] = get_high_value( line2 + 33 + i * 10) * 1e-4;
+ }
+ return( 0);
+ }
+
+ sat->xmo = (double)get_angle( line2 + 43) * (PI / 180e+4);
+ sat->xnodeo = (double)get_angle( line2 + 17) * (PI / 180e+4);
+ sat->omegao = (double)get_angle( line2 + 34) * (PI / 180e+4);
+ sat->xincl = (double)get_angle( line2 + 8) * (PI / 180e+4);
+ sat->eo = atoi( line2 + 26) * 1.e-7;
+
+ /* Make sure mean motion is null-terminated, since rev. no.
+ may immediately follow. */
+ memcpy( tbuff, line2 + 51, 12);
+ tbuff[12] = '\0';
+ /* Input mean motion, derivative of mean motion and second */
+ /* deriv of mean motion, are all in revolutions and days. */
+ /* Convert them here to radians and minutes: */
+ sat->xno = get_eight_places( tbuff) * TWOPI / MINUTES_PER_DAY;
+ sat->xndt2o = (double)atoi( line1 + 35)
+ * 1.e-8 * TWOPI / MINUTES_PER_DAY_SQUARED;
+ if( line1[33] == '-')
+ sat->xndt2o *= -1.;
+ sat->xndd6o = sci( line1 + 44) * TWOPI / MINUTES_PER_DAY_CUBED;
+
+ sat->bstar = sci( line1 + 53) * AE;
+ }
+ return( rval ? rval : checksum_problem);
+}
diff --git a/src/sgp4/norad.h b/src/sgp4/norad.h
new file mode 100644
index 0000000..1e45887
--- /dev/null
+++ b/src/sgp4/norad.h
@@ -0,0 +1,90 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * norad.h - SGP4/SDP4 satellite propagation interface
+ *
+ * Public API for the SGP4/SDP4 orbital propagators as described in:
+ * - Hoots & Roehrich, "Spacetrack Report No. 3" (1980)
+ * - Vallado, Crawford, Hujsak, Kelso, AIAA 2006-6753-Rev1
+ *
+ * Vendored from Bill Gray's sat_code (commit ff7b989, MIT license).
+ * Stripped: SGP, SGP8, SDP8 model prototypes (pg_orbit uses only SGP4/SDP4).
+ * Stripped: Win32 DLL_FUNC/__stdcall and dynamic loading support.
+ * Stripped: extern "C" wrapper (now compiled as C, not C++).
+ * N_SAT_PARAMS kept at its original value for binary compatibility.
+ */
+
+#ifndef NORAD_H
+#define NORAD_H 1
+
+/* Two-line-element satellite orbital data */
+typedef struct
+{
+ double epoch, xndt2o, xndd6o, bstar;
+ double xincl, xnodeo, eo, omegao, xmo, xno;
+ int norad_number, bulletin_number, revolution_number;
+ char classification; /* "U" = unclassified; only type I've seen */
+ char ephemeris_type;
+ char intl_desig[9];
+} tle_t;
+
+ /* epoch is a Julian Day, UTC */
+ /* xmo = mean anomaly at epoch, radians */
+ /* xno = mean motion at epoch, radians/minute */
+
+#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH
+ #define DEEP_ARG_T_PARAMS 87
+#else
+ #define DEEP_ARG_T_PARAMS 81
+#endif
+
+#define N_SGP4_PARAMS 30
+#define N_SDP4_PARAMS (10 + DEEP_ARG_T_PARAMS)
+
+/* Maximum params array size — covers both SGP4 and SDP4.
+ * Kept at original sat_code value (11 + DEEP_ARG_T_PARAMS)
+ * even though SDP4 only needs 10; do not shrink. */
+#define N_SAT_PARAMS (11 + DEEP_ARG_T_PARAMS)
+
+/* Ephemeris type codes from TLE line 1, column 63. */
+#define TLE_EPHEMERIS_TYPE_DEFAULT 0
+#define TLE_EPHEMERIS_TYPE_SGP4 2
+#define TLE_EPHEMERIS_TYPE_SDP4 3
+
+/* Configuration parameter indices for sxpx_set_implementation_param() */
+#define SXPX_DPSEC_INTEGRATION_ORDER 0
+#define SXPX_DUNDEE_COMPLIANCE 1
+#define SXPX_ZERO_PERTURBATIONS_AT_EPOCH 2
+
+/* SGP4/SDP4 error and warning codes.
+ * Warnings: a mathematically reasonable value is still returned.
+ * Errors: no reasonable position/velocity was determined. */
+#define SXPX_ERR_NEARLY_PARABOLIC -1
+#define SXPX_ERR_NEGATIVE_MAJOR_AXIS -2
+#define SXPX_WARN_ORBIT_WITHIN_EARTH -3
+#define SXPX_WARN_PERIGEE_WITHIN_EARTH -4
+#define SXPX_ERR_NEGATIVE_XN -5
+#define SXPX_ERR_CONVERGENCE_FAIL -6
+
+/* --- SGP4 (near-earth, period < 225 min) --- */
+void SGP4_init( double *params, const tle_t *tle);
+int SGP4( const double tsince, const tle_t *tle, const double *params,
+ double *pos, double *vel);
+
+/* --- SDP4 (deep-space, period >= 225 min) --- */
+void SDP4_init( double *params, const tle_t *tle);
+int SDP4( const double tsince, const tle_t *tle, const double *params,
+ double *pos, double *vel);
+
+/* --- Shared utilities --- */
+int select_ephemeris( const tle_t *tle);
+int parse_elements( const char *line1, const char *line2, tle_t *sat);
+int tle_checksum( const char *buff);
+void write_elements_in_tle_format( char *buff, const tle_t *tle);
+
+void sxpx_set_implementation_param( const int param_index,
+ const int new_param);
+void sxpx_set_dpsec_integration_step( const double new_step_size);
+void lunar_solar_position( const double jd,
+ double *lunar_xyzr, double *solar_xyzr);
+
+#endif /* NORAD_H */
diff --git a/src/sgp4/norad_in.h b/src/sgp4/norad_in.h
new file mode 100644
index 0000000..6cbb91b
--- /dev/null
+++ b/src/sgp4/norad_in.h
@@ -0,0 +1,110 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * norad_in.h - Internal structures and constants for SGP4/SDP4
+ *
+ * Theory chain:
+ * Brouwer (1959) - mean element theory for artificial satellites
+ * Kozai (1959) - secular and long-period perturbations
+ * Lyddane (1963) - singularity-free formulation near zero inclination
+ * Lane & Cranford (1969) - atmospheric drag model
+ * Hujsak (1979) - STR#1: deep-space lunar/solar perturbations
+ * Lane & Hoots (1979) - STR#2: near-earth SGP4 model
+ * Hoots & Roehrich (1980) - STR#3: combined SGP4/SDP4 reference
+ * Vallado et al. (2006) - AIAA 2006-6753-Rev1: modern implementation
+ *
+ * Constants from STR#3 Chapter 12 (pp. 79-81, "Users Guide, Constants,
+ * and Symbols"), compiled by T.S. Kelso (1988). All constants use the
+ * WGS-72 geodetic model — do NOT substitute WGS-84 values.
+ */
+
+#ifndef NORAD_IN_H
+#define NORAD_IN_H
+
+/* Common "internal" arguments between deep-space functions; users of */
+/* the satellite routines shouldn't need to bother with any of this */
+
+typedef struct
+{
+ double
+ /* Common between SGP4 and SDP4: */
+ aodp, cosio, sinio, omgdot, xmdot, xnodot, xnodp,
+ /* Used by dpinit part of Deep() */
+ eosq, betao, cosio2, sing, cosg, betao2,
+
+ /* Used by dpsec and dpper parts of Deep() */
+ xll, omgadf, xnode, em, xinc, xn, t,
+
+ /* 'd####' secular coeffs for 12-hour, e>.5 orbits: */
+ d2201, d2211, d3210, d3222, d4410, d4422, d5220, d5232, d5421, d5433,
+ /* formerly static to Deep( ), but more logically part of this struct: */
+ atime, del1, del2, del3, e3, ee2, omegaq, pe, pgh, ph, pinc, pl, preep,
+ savtsn, se2, se3, sgh2, sgh3, sgh4, sh2, sh3, si2, si3, sl2, sl3,
+ sl4, sse, ssg, ssh, ssi, ssl, thgr, xfact, xgh2, xgh3, xgh4, xh2,
+ xh3, xi2, xi3, xl2, xl3, xl4, xlamo, xli, xni, xnq,
+ zmol, zmos;
+
+ /* Epoch offsets, described by Rob Matson, added by BJG, */
+ /* then commented out; I don't think they really ought to */
+ /* be used... */
+#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH
+ double pe0, pinc0, pl0, pgh0, ph0;
+ int solar_lunar_init_flag;
+#endif
+ int resonance_flag, synchronous_flag;
+} deep_arg_t;
+
+double FMod2p( const double x);
+void Deep_dpinit( const tle_t *tle, deep_arg_t *deep_arg);
+void Deep_dpsec( const tle_t *tle, deep_arg_t *deep_arg);
+void Deep_dpper( const tle_t *tle, deep_arg_t *deep_arg);
+
+int sxpx_posn_vel( const double xnode, const double a, const double e,
+ const double cosio, const double sinio,
+ const double xincl, const double omega,
+ const double xl, double *pos, double *vel);
+
+typedef struct
+{
+ double coef, coef1, tsi, s4, unused_a3ovk2, eta;
+} init_t;
+
+void sxpx_common_init( double *params, const tle_t *tle,
+ init_t *init, deep_arg_t *deep_arg);
+
+/* Table of constant values — STR#3 Chapter 12 (pp. 79-81)
+ *
+ * WGS-72 geodetic constants. These are baked into every TLE ever published
+ * by NORAD/18th Space Defense Squadron. Changing them silently corrupts
+ * positions by kilometers. See CLAUDE.md "Constant Chain of Custody". */
+#define pi 3.141592653589793238462643383279502884197
+#define twopi (pi*2.)
+#define e6a 1.0E-6
+#define two_thirds (2. / 3.)
+#define xj3 -2.53881E-6 /* J3: third gravitational zonal harmonic */
+#define minus_xj3 2.53881E-6
+#define earth_radius_in_km 6378.135 /* WGS-72 equatorial radius (km) */
+#ifndef minutes_per_day
+ #define minutes_per_day 1440.
+#endif
+#define ae 1.0 /* distance units per Earth radius */
+#define xj2 1.082616e-3 /* J2: second gravitational zonal harmonic */
+#define ck2 (.5 * xj2 * ae * ae) /* CK2 = (1/2)*J2*aE^2 */
+
+ /* xke = sqrt(GM) in Earth-radii^(3/2) / minute.
+ * STR#3: ke*(er/min)^(3/2), derived from mu = 398600.8 km^3/s^2 (WGS-72) */
+#ifdef OLD_CONSTANTS
+#define ck4 6.209887E-7
+#define s 1.012229
+#define qoms2t 1.880279E-09
+#define xke 7.43669161E-2
+#else
+#define xj4 (-1.65597e-6) /* J4: fourth gravitational zonal harmonic */
+#define ck4 (-.375 * xj4 * ae * ae * ae * ae) /* CK4 = -(3/8)*J4*aE^4 */
+#define s_const (ae * (1. + 78. / earth_radius_in_km)) /* atmospheric parameter s (er) */
+#define qoms2t 1.880279159015270643865e-9 /* (qo - s)^4 in er^4 */
+#define xke 0.0743669161331734132 /* ke = sqrt(3.986008e14) * 60 / 6378135^(3/2) */
+#endif
+
+#define a3ovk2 (minus_xj3/ck2*ae*ae*ae) /* -J3/(2*CK2) * aE^3 */
+
+#endif /* #ifndef NORAD_IN_H */
diff --git a/src/sgp4/sdp4.c b/src/sgp4/sdp4.c
new file mode 100644
index 0000000..2395590
--- /dev/null
+++ b/src/sgp4/sdp4.c
@@ -0,0 +1,378 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * sdp4.c - Deep-space satellite propagator (orbital period >= 225 min)
+ *
+ * Implements the SDP4 model from STR#3 (Hoots & Roehrich 1980) Chapter 7
+ * (pp. 33-42), with deep-space perturbations from STR#1 (Hujsak 1979).
+ *
+ * SDP4_init(): Initializes deep-space perturbation terms via Deep_dpinit().
+ * STR#3 Eqs. 7-1..7-5, Vallado Rev-1 Section IV.
+ *
+ * SDP4(): Applies secular gravity/drag updates, then calls Deep_dpsec()
+ * for deep-space secular effects and Deep_dpper() for periodic effects.
+ * Final position via sxpx_posn_vel(). STR#3 Eqs. 7-6..7-18.
+ *
+ * high_ephemeris(): Bill Gray extension for very high orbits (ephemeris
+ * type 'H'). RK4 numerical integration with simplified Earth+Moon+Sun
+ * gravity model. Not part of STR#3; state vectors stored in TLE fields.
+ *
+ * Global state (safe in PostgreSQL fork model):
+ * lunar_solar_position() cache in raw_lunar_solar_position() — memoizes
+ * the most recent JD computation to avoid recomputing during RK4 steps.
+ */
+
+#include
+#include
+#include "norad.h"
+#include "norad_in.h"
+
+#include
+
+/* For high satellites, we do a numerical integration that uses a
+rather drastic set of simplifications. We include the earth,
+moon, and sun, but with low-precision approximations for the
+positions of those last two. References are to Meeus' _Astronomical
+Algorithms_, 2nd edition. Results are in meters from the center
+of the earth, in ecliptic coordinates of date.
+
+The numerical integration is done using the 'classic' RK4 algorithm,
+as described at (for example)
+
+https://en.wikipedia.org/wiki/Runge–Kutta_methods
+
+The solar and lunar positions are computed using Meeus' formulae, which
+are a little computationally intensive. RK4 has the slight advantage of
+requiring us to compute lunar/solar positions only for the steps
+themselves and their midpoints.
+
+You probably know that the 'elements' for traditional TLEs are fitted to
+the SGP4 and SDP4 models : if you tried to numerically integrate TLEs
+using a more sophisticated model, you'd actually get _worse_ results.
+Similarly, the state vectors for my modified TLEs are integrated using
+the following model, which tries to balance accuracy and speed. Just as
+you shouldn't try to "improve" SGP4/SDP4, you shouldn't try to "improve"
+the following; it'll only break backward compatibility. */
+
+static void raw_lunar_solar_position( const double jd, double *lunar_xyzr, double *solar_xyzr)
+{
+ const double j2000 = 2451545; /* 1.5 Jan 2000 = JD 2451545 */
+ const double t_cen = (jd - j2000) / 36525.;
+ /* Mean lunar longitude, (47.1) */
+ const double l_prime = 218.3164477 * pi / 180.
+ + (481267.88123421 * pi / 180.) * t_cen;
+ /* Lunar mean anomaly, (47.4) */
+ const double m_prime = 134.9633964 * pi / 180.
+ + (477198.8675055 * pi / 180.) * t_cen;
+ /* Solar mean longitude, (25.2) */
+ const double l_solar = 280.46646 * pi / 180.
+ + (36000.76983 * pi / 180.) * t_cen;
+ /* Solar mean anomaly, (47.3) */
+ const double m_solar = 357.5291092 * pi / 180.
+ + (35999.0502909 * pi / 180.) * t_cen;
+ /* Lunar mean argument of latitude (47.5) */
+ const double f = 93.2720950 * pi / 180.
+ + (483202.0175233 * pi / 180.) * t_cen;
+ const double lunar_mean_elong = (297.8501921 * pi / 180.)
+ + (445267.1114034 * pi / 180.) * t_cen;
+ const double term2 = 2. * lunar_mean_elong - m_prime;
+ const double lunar_lon = l_prime /* See table 47.A */
+ + (6.288774 * pi / 180.) * sin( m_prime)
+ + (1.274027 * pi / 180.) * sin( term2)
+ + (0.658314 * pi / 180.) * sin( 2. * lunar_mean_elong)
+ + (0.213618 * pi / 180.) * sin( 2. * m_prime)
+ - (0.185166 * pi / 180.) * sin( m_solar)
+ - (0.114332 * pi / 180.) * sin( 2. * f);
+ const double lunar_lat = (5.128122 * pi / 180.) * sin( f)
+ + (0.280602 * pi / 180.) * sin( m_prime + f)
+ + (0.277693 * pi / 180.) * sin( m_prime - f)
+ + (0.173237 * pi / 180.) * sin( 2. * lunar_mean_elong - f);
+ const double lunar_r = 385000560. /* in meters */
+ - 20905355. * cos( m_prime)
+ - 3699111. * cos( term2)
+ - 2955968 * cos( 2. * lunar_mean_elong)
+ - 569925 * cos( 2. * m_solar);
+ const double solar_ecc = 0.016708634; /* (25.4) */
+ const double solar_lon = l_solar /* (above (25.5)) */
+ + (1.914602 * pi / 180.) * sin( m_solar);
+ const double au_in_meters = 1.495978707e+11;
+ const double solar_r = au_in_meters * (1. - solar_ecc * cos( m_solar));
+ double tval;
+
+ tval = lunar_r * cos( lunar_lat);
+ *lunar_xyzr++ = tval * cos( lunar_lon);
+ *lunar_xyzr++ = tval * sin( lunar_lon);
+ *lunar_xyzr++ = lunar_r * sin( lunar_lat);
+ *lunar_xyzr++ = lunar_r;
+
+ *solar_xyzr++ = solar_r * cos( solar_lon);
+ *solar_xyzr++ = solar_r * sin( solar_lon);
+ *solar_xyzr++ = 0.;
+ *solar_xyzr++ = solar_r;
+}
+
+/* For the RK4 integration, we're frequently asking for the sun and
+moon positions at the exact same time we needed for the preceding step.
+Caching those positions saves recomputing them. */
+
+void lunar_solar_position( const double jd,
+ double *lunar_xyzr, double *solar_xyzr)
+{
+ static double curr_jd = 0., lunar[4], solar[4];
+ size_t i;
+
+ if( curr_jd != jd)
+ {
+ curr_jd = jd;
+ raw_lunar_solar_position( jd, lunar, solar);
+ }
+ for( i = 0; i < 4; i++)
+ {
+ if( lunar_xyzr)
+ lunar_xyzr[i] = lunar[i];
+ if( solar_xyzr)
+ solar_xyzr[i] = solar[i];
+ }
+}
+
+static const double sin_obliq_2000 = 0.397777155931913701597179975942380896684;
+static const double cos_obliq_2000 = 0.917482062069181825744000384639406458043;
+
+static void equatorial_to_ecliptic( double *vect)
+{
+ double temp;
+
+ temp = vect[2] * cos_obliq_2000 - vect[1] * sin_obliq_2000;
+ vect[1] = vect[1] * cos_obliq_2000 + vect[2] * sin_obliq_2000;
+ vect[2] = temp;
+}
+
+static void ecliptic_to_equatorial( double *vect)
+{
+ double temp;
+
+ temp = vect[2] * cos_obliq_2000 + vect[1] * sin_obliq_2000;
+ vect[1] = vect[1] * cos_obliq_2000 - vect[2] * sin_obliq_2000;
+ vect[2] = temp;
+}
+
+static void init_high_ephemeris( double *params, const tle_t *tle)
+{
+ const double *state_vect = &tle->xincl; /* position at epoch, in meters */
+ size_t i;
+
+ for( i = 0; i < 6; i++)
+ params[i] = state_vect[i];
+ equatorial_to_ecliptic( params);
+ equatorial_to_ecliptic( params + 3);
+}
+
+#define c1 params[2]
+#define c4 params[3]
+#define xnodcf params[4]
+#define t2cof params[5]
+#define deep_arg ((deep_arg_t *)( params + 10))
+
+void SDP4_init( double *params, const tle_t *tle)
+{
+ init_t init;
+
+ if( tle->ephemeris_type == 'H')
+ {
+ init_high_ephemeris( params, tle);
+ return;
+ }
+ sxpx_common_init( params, tle, &init, deep_arg);
+ deep_arg->sing = sin(tle->omegao);
+ deep_arg->cosg = cos(tle->omegao);
+
+ /* initialize Deep() */
+ Deep_dpinit( tle, deep_arg);
+#ifdef RETAIN_PERTURBATION_VALUES_AT_EPOCH
+ /* initialize lunisolar perturbations: */
+ deep_arg->t = 0.; /* added 30 Dec 2003 */
+ deep_arg->solar_lunar_init_flag = 1;
+ Deep_dpper( tle, deep_arg);
+ deep_arg->solar_lunar_init_flag = 0;
+#endif
+} /*End of SDP4() initialization */
+
+static inline double vector_len( const double *vect)
+{
+ double len2 = vect[0] * vect[0] + vect[1] * vect[1] + vect[2] * vect[2];
+
+ return( sqrt( len2));
+}
+
+/* Input position is in meters, accel is in m/sec^2 */
+
+static int calc_accel( const double jd, const double *pos, double *accel)
+{
+ size_t i;
+ const double earth_gm = 3.9860044e+14; /* in m^3/s^2 */
+ const double solar_gm = 1.3271243994e+20; /* m^3/s^2 */
+ const double lunar_gm = 4.902798e+12; /* m^3/s^2 */
+ double r = vector_len( pos);
+ double accel_factor = -earth_gm / (r * r * r);
+ double lunar_xyzr[4], solar_xyzr[4];
+ unsigned obj_idx;
+
+ for( i = 0; i < 3; i++)
+ accel[i] = accel_factor * pos[i];
+ lunar_solar_position( jd, lunar_xyzr, solar_xyzr);
+ for( obj_idx = 0; obj_idx < 2; obj_idx++)
+ {
+ double *opos = (obj_idx ? lunar_xyzr : solar_xyzr);
+ double delta[3], d;
+ const double gm = (obj_idx ? lunar_gm : solar_gm);
+ double accel_factor2;
+
+ accel_factor = gm / (opos[3] * opos[3] * opos[3]);
+ for( i = 0; i < 3; i++)
+ delta[i] = opos[i] - pos[i];
+ d = vector_len( delta);
+ accel_factor2 = gm / (d * d * d);
+ for( i = 0; i < 3; i++)
+ accel[i] -= accel_factor * opos[i] - accel_factor2 * delta[i];
+ }
+ return( 0);
+}
+
+static int calc_state_vector_deriv( const double jd,
+ const double state_vect[6], double deriv[6])
+{
+ deriv[0] = state_vect[3];
+ deriv[1] = state_vect[4];
+ deriv[2] = state_vect[5];
+ return( calc_accel( jd, state_vect, deriv + 3));
+}
+
+/* NOTE: t_since is in minutes, posn is in km, vel is in km/minutes.
+State vector is in meters and m/s. Hence some conversions...
+
+'high_ephemeris()' does the actual RK4 numerical integration, using a
+simplified model of the earth and moon and a quite basic integration
+step size adjustment so that it can take small steps when the object is
+close to the earth or moon and larger steps when far away. As described
+above, any temptation to "improve" the integration should be resisted. */
+
+static int high_ephemeris( double tsince, const tle_t *tle, const double *params,
+ double *pos, double *vel)
+{
+ const double meters_per_km = 1000.;
+ const double seconds_per_minute = 60.;
+ const double seconds_per_day =
+ seconds_per_minute * minutes_per_day; /* a.k.a. 86400 */
+ size_t i, j;
+ double jd = tle->epoch, state_vect[6];
+
+ for( i = 0; i < 6; i++)
+ state_vect[i] = params[i];
+ tsince /= minutes_per_day; /* input was in minutes; days are */
+ while( tsince) /* more convenient hereforth */
+ {
+ double dt = tsince, dt_in_seconds;
+ double max_step = 1.;
+ double kvects[4][6];
+
+ calc_state_vector_deriv( jd, state_vect, kvects[0]);
+ for( j = 3; j < 6; j++)
+ if( max_step > 1e-3 / fabs( kvects[0][j]))
+ max_step = 1e-3 / fabs( kvects[0][j]);
+ if( max_step < 1e-5)
+ max_step = 1e-5;
+ if( tsince > max_step)
+ dt = max_step;
+ else if( tsince < -max_step)
+ dt = -max_step;
+ dt_in_seconds = dt * seconds_per_day;
+ for( j = 1; j < 4; j++)
+ {
+ const double step = (j == 3 ? dt_in_seconds : dt_in_seconds * .5);
+ double tstate[6];
+
+ for( i = 0; i < 6; i++)
+ tstate[i] = state_vect[i] + step * kvects[j - 1][i];
+ calc_state_vector_deriv( jd + (j == 3 ? dt : dt / 2.),
+ tstate, kvects[j]);
+ }
+
+ for( i = 0; i < 6; i++)
+ state_vect[i] += (dt_in_seconds / 6.) *
+ (kvects[0][i] + 2. * (kvects[1][i] + kvects[2][i]) + kvects[3][i]);
+ jd += dt;
+ tsince -= dt;
+ }
+ for( i = 0; i < 3; i++)
+ {
+ pos[i] = state_vect[i];
+ vel[i] = state_vect[i + 3];
+ }
+ ecliptic_to_equatorial( vel);
+ ecliptic_to_equatorial( pos);
+ /* Now, cvt meters to km, meters/second to km/minute: */
+ for( i = 0; i < 3; i++)
+ {
+ pos[i] /= meters_per_km;
+ vel[i] *= seconds_per_minute / meters_per_km;
+ }
+ return( 0);
+}
+
+int SDP4( const double tsince, const tle_t *tle, const double *params,
+ double *pos, double *vel)
+{
+ double
+ a, tempa, tsince_squared,
+ xl, xnoddf;
+
+ if( tle->ephemeris_type == 'H')
+ {
+ double unused_vel[3];
+
+ return( high_ephemeris( tsince, tle, params, pos, (vel ? vel : unused_vel)));
+ }
+ /* Update for secular gravity and atmospheric drag */
+ deep_arg->omgadf = tle->omegao + deep_arg->omgdot * tsince;
+ xnoddf = tle->xnodeo + deep_arg->xnodot * tsince;
+ tsince_squared = tsince*tsince;
+ deep_arg->xnode = xnoddf + xnodcf * tsince_squared;
+ deep_arg->xn = deep_arg->xnodp;
+
+ /* Update for deep-space secular effects */
+ deep_arg->xll = tle->xmo + deep_arg->xmdot * tsince;
+ deep_arg->t = tsince;
+
+ Deep_dpsec( tle, deep_arg);
+
+ tempa = 1-c1*tsince;
+ if( deep_arg->xn < 0.)
+ return( SXPX_ERR_NEGATIVE_XN);
+ a = pow(xke/deep_arg->xn,two_thirds)*tempa*tempa;
+ deep_arg->em -= tle->bstar*c4*tsince;
+
+ /* Update for deep-space periodic effects */
+ deep_arg->xll += deep_arg->xnodp * t2cof * tsince_squared;
+
+ Deep_dpper( tle, deep_arg);
+
+ /* Keeping xinc positive is not really necessary, unless */
+ /* you're displaying elements and dislike negative inclinations. */
+#ifdef KEEP_INCLINATION_POSITIVE
+ if (deep_arg->xinc < 0.) /* Begin April 1983 errata correction: */
+ {
+ deep_arg->xinc = -deep_arg->xinc;
+ deep_arg->sinio = -deep_arg->sinio;
+ deep_arg->xnode += pi;
+ deep_arg->omgadf -= pi;
+ } /* End April 1983 errata correction. */
+#endif
+
+ xl = deep_arg->xll + deep_arg->omgadf + deep_arg->xnode;
+ /* Dundee change: Reset cosio, sinio for new xinc: */
+ deep_arg->cosio = cos( deep_arg->xinc);
+ deep_arg->sinio = sin( deep_arg->xinc);
+
+ return( sxpx_posn_vel( deep_arg->xnode, a, deep_arg->em, deep_arg->cosio,
+ deep_arg->sinio, deep_arg->xinc, deep_arg->omgadf,
+ xl, pos, vel));
+} /* SDP4 */
diff --git a/src/sgp4/sgp4.c b/src/sgp4/sgp4.c
new file mode 100644
index 0000000..0f1bb4d
--- /dev/null
+++ b/src/sgp4/sgp4.c
@@ -0,0 +1,150 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * sgp4.c - Near-earth satellite propagator (orbital period < 225 min)
+ *
+ * Implements the SGP4 model from STR#2 (Lane & Hoots 1979), as unified
+ * in STR#3 (Hoots & Roehrich 1980) Chapter 6 (pp. 25-32).
+ *
+ * SGP4_init(): Computes drag coefficients c1..c5, d2..d4, and the
+ * "simple" vs full mode flag (perigee < 220 km truncates to linear
+ * variation in sqrt(a) and quadratic in mean anomaly).
+ * STR#3 Eqs. 6-1..6-17, Vallado Rev-1 Section III.
+ *
+ * SGP4(): Secular updates for gravity + atmospheric drag, then delegates
+ * to sxpx_posn_vel() for Kepler solution and short-period corrections.
+ * STR#3 Eqs. 6-18..6-32, Vallado Rev-1 Eqs. 18-22.
+ */
+
+#include
+#include
+#include "norad.h"
+#include "norad_in.h"
+
+#define c1 params[2]
+#define c4 params[3]
+#define xnodcf params[4]
+#define t2cof params[5]
+#define p_aodp params[10]
+#define p_cosio params[11]
+#define p_sinio params[12]
+#define p_omgdot params[13]
+#define p_xmdot params[14]
+#define p_xnodot params[15]
+#define p_xnodp params[16]
+#define c5 params[17]
+#define d2 params[18]
+#define d3 params[19]
+#define d4 params[20]
+#define delmo params[21]
+#define p_eta params[22]
+#define omgcof params[23]
+#define sinmo params[24]
+#define t3cof params[25]
+#define t4cof params[26]
+#define t5cof params[27]
+#define xmcof params[28]
+#define simple_flag *((int *)( params + 29))
+#define MINIMAL_E 1.e-4
+#define ECC_EPS 1.e-6 /* Too low for computing further drops. */
+
+void SGP4_init( double *params, const tle_t *tle)
+{
+ deep_arg_t deep_arg;
+ init_t init;
+ double eeta, etasq;
+
+ sxpx_common_init( params, tle, &init, &deep_arg);
+ p_aodp = deep_arg.aodp;
+ p_cosio = deep_arg.cosio;
+ p_sinio = deep_arg.sinio;
+ p_omgdot = deep_arg.omgdot;
+ p_xmdot = deep_arg.xmdot;
+ p_xnodot = deep_arg.xnodot;
+ p_xnodp = deep_arg.xnodp;
+ p_eta = deep_arg.aodp*tle->eo*init.tsi;
+// p_eta = init.eta;
+
+ eeta = tle->eo*p_eta;
+ /* For perigee less than 220 kilometers, the "simple" flag is set */
+ /* and the equations are truncated to linear variation in sqrt a */
+ /* and quadratic variation in mean anomaly. Also, the c3 term, */
+ /* the delta omega term, and the delta m term are dropped. */
+ simple_flag = ((p_aodp*(1-tle->eo)/ae) < (220./earth_radius_in_km+ae));
+ if( !simple_flag)
+ {
+ const double c1sq = c1*c1;
+ double temp;
+
+ simple_flag = 0;
+ delmo = 1. + p_eta * cos(tle->xmo);
+ delmo *= delmo * delmo;
+ d2 = 4*p_aodp*init.tsi*c1sq;
+ temp = d2*init.tsi*c1/3;
+ d3 = (17*p_aodp+init.s4)*temp;
+ d4 = 0.5*temp*p_aodp*init.tsi*(221*p_aodp+31*init.s4)*c1;
+ t3cof = d2+2*c1sq;
+ t4cof = 0.25*(3*d3+c1*(12*d2+10*c1sq));
+ t5cof = 0.2*(3*d4+12*c1*d3+6*d2*d2+15*c1sq*(2*d2+c1sq));
+ sinmo = sin(tle->xmo);
+ if( tle->eo < MINIMAL_E)
+ omgcof = xmcof = 0.;
+ else
+ {
+ const double c3 =
+ init.coef * init.tsi * a3ovk2 * p_xnodp * ae * p_sinio / tle->eo;
+
+ xmcof = -two_thirds * init.coef * tle->bstar * ae / eeta;
+ omgcof = tle->bstar*c3*cos(tle->omegao);
+ }
+ } /* End of if (isFlagClear(SIMPLE_FLAG)) */
+ etasq = p_eta * p_eta;
+ c5 = 2*init.coef1*p_aodp * deep_arg.betao2*(1+2.75*(etasq+eeta)+eeta*etasq);
+} /* End of SGP4() initialization */
+
+int SGP4( const double tsince, const tle_t *tle, const double *params,
+ double *pos, double *vel)
+{
+ double
+ a, e, omega, omgadf,
+ temp, tempa, tempe, templ, tsq,
+ xl, xmdf, xmp, xnoddf, xnode;
+
+ /* Update for secular gravity and atmospheric drag. */
+ xmdf = tle->xmo+p_xmdot*tsince;
+ omgadf = tle->omegao+p_omgdot*tsince;
+ xnoddf = tle->xnodeo+p_xnodot*tsince;
+ omega = omgadf;
+ xmp = xmdf;
+ tsq = tsince*tsince;
+ xnode = xnoddf+xnodcf*tsq;
+ tempa = 1-c1*tsince;
+ tempe = tle->bstar*c4*tsince;
+ templ = t2cof*tsq;
+ if( !simple_flag)
+ {
+ const double delomg = omgcof*tsince;
+ double delm = 1. + p_eta * cos(xmdf);
+ double tcube, tfour;
+
+ delm = xmcof * (delm * delm * delm - delmo);
+ temp = delomg+delm;
+ xmp = xmdf+temp;
+ omega = omgadf-temp;
+ tcube = tsq*tsince;
+ tfour = tsince*tcube;
+ tempa = tempa-d2*tsq-d3*tcube-d4*tfour;
+ tempe = tempe+tle->bstar*c5*(sin(xmp)-sinmo);
+ templ = templ+t3cof*tcube+tfour*(t4cof+tsince*t5cof);
+ }; /* End of if (isFlagClear(SIMPLE_FLAG)) */
+
+ a = p_aodp*tempa*tempa;
+ e = tle->eo-tempe;
+ /* A highly arbitrary lower limit on e, of 1e-6: */
+ if( e < ECC_EPS)
+ e = ECC_EPS;
+ xl = xmp+omega+xnode+p_xnodp*templ;
+ if( tempa < 0.) /* force negative a, to indicate error condition */
+ a = -a;
+ return( sxpx_posn_vel( xnode, a, e, p_cosio, p_sinio, tle->xincl,
+ omega, xl, pos, vel));
+} /*SGP4*/
diff --git a/src/sgp4/tle_out.c b/src/sgp4/tle_out.c
new file mode 100644
index 0000000..b02d313
--- /dev/null
+++ b/src/sgp4/tle_out.c
@@ -0,0 +1,303 @@
+/* Copyright (C) 2018, Project Pluto. See LICENSE.
+ *
+ * tle_out.c - TLE (Two-Line Element) output formatting
+ *
+ * Converts in-memory tle_t structures back to the standard NORAD TLE
+ * text format. Inverse of get_el.c. Format per STR#3 Appendix (pp. 83-91).
+ *
+ * Key conversions (reverse of parsing):
+ * - Angles: radians -> degrees, normalized to [0, 360)
+ * - Mean motion: rad/min -> rev/day
+ * - B* drag: double -> quasi-scientific notation (sDDDDDSe)
+ * - Epoch: Julian Date -> YY+DDD.DDDDDDDD
+ *
+ * Also handles Alpha-5/Super-5 catalog numbers and 'H' state vectors.
+ * See: https://en.wikipedia.org/wiki/Two-line_elements
+ */
+
+#include
+#include
+#include
+#include
+#include
+#include "norad.h"
+
+ /* Useful constants to define, in case the value of PI or the number
+ of minutes in a day should change: */
+#define PI 3.141592653589793238462643383279502884197169399375105
+#define MINUTES_PER_DAY 1440.
+#define MINUTES_PER_DAY_SQUARED (MINUTES_PER_DAY * MINUTES_PER_DAY)
+#define MINUTES_PER_DAY_CUBED (MINUTES_PER_DAY_SQUARED * MINUTES_PER_DAY)
+
+#define AE 1.0
+#define J1900 (2451545.5 - 36525. - 1.)
+
+static int add_tle_checksum_data( char *buff)
+{
+ int count = 69, rval = 0;
+
+ if( (*buff != '1' && *buff != '2') || buff[1] != ' ')
+ return( 0); /* not a .TLE */
+ while( --count)
+ {
+ if( *buff < ' ' || *buff > 'z')
+ return( 0); /* wups! those shouldn't happen in .TLEs */
+ if( *buff > '0' && *buff <= '9')
+ rval += *buff - '0';
+ else if( *buff == '-')
+ rval++;
+ buff++;
+ }
+ if( *buff != 10 && buff[1] != 10 && buff[2] != 10)
+ return( 0); /* _still_ not a .TLE */
+ *buff++ = (char)( '0' + (rval % 10));
+ *buff++ = 13;
+ *buff++ = 10;
+ *buff++ = '\0';
+ return( 1);
+}
+
+static double zero_to_two_pi( double angle_in_radians)
+{
+ angle_in_radians = fmod( angle_in_radians, PI + PI);
+ if( angle_in_radians < 0.)
+ angle_in_radians += PI + PI;
+ return( angle_in_radians);
+}
+
+/* See comments for get_high_value() in 'get_el.cpp'. Essentially, we are
+ writing out a state vector in a convoluted base-36 form. */
+
+static void set_high_value( char *obuff, const double value)
+{
+ int64_t oval = (int64_t)fabs( value);
+ int i;
+
+ *obuff++ = (value >= 0. ? '+' : '-');
+ for( i = 7; i >= 0; i--, oval /= (int64_t)36)
+ {
+ obuff[i] = (char)( oval % (int64_t)36);
+ if( obuff[i] < 10)
+ obuff[i] += '0';
+ else
+ obuff[i] += 'A' - 10;
+ }
+ obuff[8] = ' ';
+}
+
+
+/* The second derivative of the mean motion, 'xnddo6', and the 'bstar'
+drag term, are stored in a simplified scientific notation. To save
+valuable bytes, the decimal point and 'E' are assumed. */
+
+static void put_sci( char *obuff, double ival)
+{
+ if( !ival)
+ memcpy( obuff, " 00000-0", 7);
+ else
+ {
+ int oval, exponent = 0;
+
+ if( ival > 0.)
+ *obuff++ = ' ';
+ else
+ {
+ *obuff++ = '-';
+ ival = -ival;
+ }
+ while( 1)
+ {
+ if( ival > 1.) /* avoid integer overflow */
+ oval = 100000;
+ else
+ oval = (int)( ival * 100000. + .5);
+ if( oval > 99999)
+ {
+ ival /= 10;
+ exponent++;
+ }
+ else if( oval < 10000)
+ {
+ ival *= 10;
+ exponent--;
+ }
+ else
+ break;
+ }
+ snprintf( obuff, 7, "%5d", oval);
+ assert( 5 == strlen( obuff));
+ if( exponent > 0)
+ {
+ obuff[5] = '+';
+ obuff[6] = (char)( '0' + exponent);
+ }
+ else
+ {
+ obuff[5] = '-';
+ obuff[6] = (char)( '0' - exponent);
+ }
+ }
+}
+
+/* See comments for get_norad_number( ) in get_el.cpp. This
+performs the reverse function of setting the five bytes corresponding
+to a NORAD number, using the 'standard' Alpha-5 method for numbers
+0 to 339000 and the nonstandard Super-5 method beyond that. */
+
+static char int_to_base64( const int digit)
+{
+ int rval;
+
+ assert( digit >= 0 && digit < 64);
+ if( digit < 0 || digit >= 64)
+ rval = ' ';
+ else if( digit < 10)
+ rval = '0' + digit;
+ else if( digit < 36)
+ rval = 'A' + digit - 10;
+ else if( digit < 62)
+ rval = 'a' + digit - 36;
+ else
+ rval = (digit == 62 ? '+' : '-');
+ return( rval);
+}
+
+static void store_norad_number_in_alpha5( char *obuff, const int norad_number)
+{
+ const int N_TYPE_STANDARD = 340000; /* five digits plus Alpha-5 */
+ const int N_TYPE_2 = 64 * 64 * 64 * 64 * 54; /* xxxxL */
+/* const int N_TYPE_3 = 64 * 64 * 64 * 54 * 10; xxxLd; we don't actually use this */
+ const int one_billion = 1000000000;
+ int i, tval = norad_number;
+
+ assert( norad_number >= 0 && norad_number < one_billion);
+ if( norad_number < 0 || norad_number >= one_billion)
+ strcpy( obuff, " "); /* outside representable range */
+ else if( norad_number < N_TYPE_STANDARD)
+ {
+ for( i = 4; i > 0; i--, tval /= 10)
+ obuff[i] = '0' + (tval % 10);
+ *obuff = int_to_base64( tval);
+ if( *obuff >= 'I')
+ (*obuff)++;
+ if( *obuff >= 'O')
+ (*obuff)++;
+ }
+ else if( norad_number < N_TYPE_STANDARD + N_TYPE_2)
+ {
+ tval -= N_TYPE_STANDARD;
+ obuff[4] = int_to_base64( tval % 54 + 10);
+ tval /= 54;
+ for( i = 3; i >= 0; i--, tval >>= 6)
+ obuff[i] = int_to_base64( tval & 0x3f);
+ }
+ else
+ {
+ tval -= N_TYPE_STANDARD + N_TYPE_2;
+ obuff[4] = int_to_base64( tval % 10);
+ obuff[3] = int_to_base64( (tval / 10) % 54 + 10);
+ tval /= 540;
+ for( i = 2; i >= 0; i--, tval >>= 6)
+ obuff[i] = int_to_base64( tval & 0x3f);
+ }
+ obuff[5] = '\0';
+}
+
+/* SpaceTrack TLEs have, on the second line, leading zeroes in front of the
+inclination, ascending node, argument of perigee, and mean motion. Which
+is why I've used this format string :
+
+ snprintf( line2 + 8, 57, "%08.4f %08.4f %07ld %08.4f %08.4f %011.8f", ...)
+
+ 'classfd.tle' and some other sources don't use leading zeroes. For them,
+one should use the following format string for those four quantities :
+
+ snprintf( line2 + 8, 57, "%8.4f %8.4f %07ld %8.4f %8.4f %11.8f", ...) */
+
+void write_elements_in_tle_format( char *buff, const tle_t *tle)
+{
+ long year = (long)( tle->epoch - J1900) / 365 + 1;
+ double day_of_year;
+ char *line2, norad_num_text[6];
+
+ do
+ {
+ double start_of_year;
+
+ year--;
+ start_of_year = J1900 + (double)year * 365. + (double)((year - 1) / 4);
+ day_of_year = tle->epoch - start_of_year;
+ }
+ while( day_of_year < 1.);
+ if( year < 0 || year > 200) /* bogus input */
+ {
+ year = 56;
+ day_of_year = 0.;
+ }
+ store_norad_number_in_alpha5( norad_num_text, tle->norad_number);
+ snprintf( buff, 72,
+/* xndt2o xndd6o bstar eph bull */
+ "1 %5s%c %-8s %02ld%12.8f -.000hit00 +00000-0 +00000-0 %c %4dZ\n",
+ norad_num_text, tle->classification, tle->intl_desig,
+ year % 100L, day_of_year,
+ tle->ephemeris_type, tle->bulletin_number);
+ if( buff[20] == ' ') /* fill in leading zeroes for day of year */
+ buff[20] = '0';
+ if( buff[21] == ' ')
+ buff[21] = '0';
+ if( tle->ephemeris_type != 'H') /* "normal", standard TLEs */
+ {
+ double deriv_mean_motion = tle->xndt2o * MINUTES_PER_DAY_SQUARED / (2. * PI);
+ unsigned long lderiv;
+
+ if( deriv_mean_motion >= 0)
+ buff[33] = ' ';
+ lderiv = (unsigned long)( fabs( deriv_mean_motion * 100000000.) + .5);
+ assert( lderiv < 100000000);
+ snprintf( buff + 35, 10, "%08lu", lderiv);
+ assert( 8 == strlen( buff + 35));
+ buff[43] = ' ';
+ put_sci( buff + 44, tle->xndd6o * MINUTES_PER_DAY_CUBED / (2. * PI));
+ put_sci( buff + 53, tle->bstar / AE);
+ }
+ else
+ {
+ size_t i;
+ const double *posn = &tle->xincl;
+
+ for( i = 0; i < 3; i++)
+ set_high_value( buff + 33 + i * 10, posn[i]);
+ buff[62] = 'H';
+ }
+ add_tle_checksum_data( buff);
+ assert( 71 == strlen( buff));
+ line2 = buff + 71;
+ snprintf( line2, 10, "2 %5s ", norad_num_text);
+ assert( 8 == strlen( line2));
+ if( tle->ephemeris_type != 'H') /* "normal", standard TLEs */
+ {
+ const double revs_per_day = tle->xno * MINUTES_PER_DAY / (2. * PI);
+
+ assert( revs_per_day > 0. && revs_per_day < 99.);
+ snprintf( line2 + 8, 57, "%08.4f %08.4f %07ld %08.4f %08.4f %011.8f",
+ zero_to_two_pi( tle->xincl) * 180. / PI,
+ zero_to_two_pi( tle->xnodeo) * 180. / PI,
+ (long)( tle->eo * 10000000. + .5),
+ zero_to_two_pi( tle->omegao) * 180. / PI,
+ zero_to_two_pi( tle->xmo) * 180. / PI,
+ revs_per_day);
+ assert( 55 == strlen( line2 + 8));
+ }
+ else
+ {
+ size_t i;
+ const double *vel = &tle->xincl + 3;
+
+ memset( line2 + 8, ' ', 25); /* reserved for future use */
+ for( i = 0; i < 3; i++)
+ set_high_value( line2 + 33 + i * 10, vel[i] * 1e+4);
+ }
+ assert( tle->revolution_number >= 0 && tle->revolution_number < 100000);
+ snprintf( line2 + 63, 8, "%5dZ\n", tle->revolution_number);
+ add_tle_checksum_data( line2);
+}
diff --git a/test/data/vallado_518.json b/test/data/vallado_518.json
new file mode 100644
index 0000000..4d01eda
--- /dev/null
+++ b/test/data/vallado_518.json
@@ -0,0 +1,7068 @@
+{
+ "source": "AIAA 2006-6753-Rev1, Appendices D & E",
+ "description": "SGP4 verification test cases from 'Revisiting Spacetrack Report #3: Rev 1' by Vallado, Crawford, Hujsak, and Kelso",
+ "coordinate_system": "TEME of date",
+ "constants": "WGS-72",
+ "mode": "afspc (option 'a')",
+ "lyddane_choice": "perturbed inclination (GSFC)",
+ "position_units": "km",
+ "velocity_units": "km/s",
+ "tsince_units": "minutes from epoch",
+ "total_satellites": 29,
+ "total_predictions": 518,
+ "test_cases": [
+ {
+ "satellite": "00005",
+ "description": "TEME example",
+ "tle_line1": "1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753",
+ "tle_line2": "2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667",
+ "startmfe": 0.0,
+ "stopmfe": 4320.0,
+ "deltamin": 360.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "7022.46529266",
+ "y": "-1400.08296755",
+ "z": "0.03995155"
+ },
+ "velocity_km_s": {
+ "x": "1.893841015",
+ "y": "6.405893759",
+ "z": "4.534807250"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-7154.03120202",
+ "y": "-3783.17682504",
+ "z": "-3536.19412294"
+ },
+ "velocity_km_s": {
+ "x": "4.741887409",
+ "y": "-4.151817765",
+ "z": "-2.093935425"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-7134.59340119",
+ "y": "6531.68641334",
+ "z": "3260.27186483"
+ },
+ "velocity_km_s": {
+ "x": "-4.113793027",
+ "y": "-2.911922039",
+ "z": "-2.557327851"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "5568.53901181",
+ "y": "4492.06992591",
+ "z": "3863.87641983"
+ },
+ "velocity_km_s": {
+ "x": "-4.209106476",
+ "y": "5.159719888",
+ "z": "2.744852980"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-938.55923943",
+ "y": "-6268.18748831",
+ "z": "-4294.02924751"
+ },
+ "velocity_km_s": {
+ "x": "7.536105209",
+ "y": "-0.427127707",
+ "z": "0.989878080"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-9680.56121728",
+ "y": "2802.47771354",
+ "z": "124.10688038"
+ },
+ "velocity_km_s": {
+ "x": "-0.905874102",
+ "y": "-4.659467970",
+ "z": "-3.227347517"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "190.19796988",
+ "y": "7746.96653614",
+ "z": "5110.00675412"
+ },
+ "velocity_km_s": {
+ "x": "-6.112325142",
+ "y": "1.527008184",
+ "z": "-0.139152358"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "5579.55640116",
+ "y": "-3995.61396789",
+ "z": "-1518.82108966"
+ },
+ "velocity_km_s": {
+ "x": "4.767927483",
+ "y": "5.123185301",
+ "z": "4.276837355"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "-8650.73082219",
+ "y": "-1914.93811525",
+ "z": "-3007.03603443"
+ },
+ "velocity_km_s": {
+ "x": "3.067165127",
+ "y": "-4.828384068",
+ "z": "-2.515322836"
+ }
+ },
+ {
+ "tsince_min": 3240.0,
+ "position_km": {
+ "x": "-5429.79204164",
+ "y": "7574.36493792",
+ "z": "3747.39305236"
+ },
+ "velocity_km_s": {
+ "x": "-4.999442110",
+ "y": "-1.800561422",
+ "z": "-2.229392830"
+ }
+ },
+ {
+ "tsince_min": 3600.0,
+ "position_km": {
+ "x": "6759.04583722",
+ "y": "2001.58198220",
+ "z": "2783.55192533"
+ },
+ "velocity_km_s": {
+ "x": "-2.180993947",
+ "y": "6.402085603",
+ "z": "3.644723952"
+ }
+ },
+ {
+ "tsince_min": 3960.0,
+ "position_km": {
+ "x": "-3791.44531559",
+ "y": "-5712.95617894",
+ "z": "-4533.48630714"
+ },
+ "velocity_km_s": {
+ "x": "6.668817493",
+ "y": "-2.516382327",
+ "z": "-0.082384354"
+ }
+ },
+ {
+ "tsince_min": 4320.0,
+ "position_km": {
+ "x": "-9060.47373569",
+ "y": "4658.70952502",
+ "z": "813.68673153"
+ },
+ "velocity_km_s": {
+ "x": "-2.232832783",
+ "y": "-4.110453490",
+ "z": "-3.157345433"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "04632",
+ "description": "Lyddane fix error with GSFC ver (fig)",
+ "tle_line1": "1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955",
+ "tle_line2": "2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145",
+ "startmfe": -5184.0,
+ "stopmfe": -4896.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "2334.11450085",
+ "y": "-41920.44035349",
+ "z": "-0.03867437"
+ },
+ "velocity_km_s": {
+ "x": "2.826321032",
+ "y": "-0.065091664",
+ "z": "0.570936053"
+ }
+ },
+ {
+ "tsince_min": -5184.0,
+ "position_km": {
+ "x": "-29020.02587128",
+ "y": "13819.84419063",
+ "z": "-5713.33679183"
+ },
+ "velocity_km_s": {
+ "x": "-1.768068390",
+ "y": "-3.235371192",
+ "z": "-0.395206135"
+ }
+ },
+ {
+ "tsince_min": -5064.0,
+ "position_km": {
+ "x": "-32982.56870101",
+ "y": "-11125.54996609",
+ "z": "-6803.28472771"
+ },
+ "velocity_km_s": {
+ "x": "0.617446996",
+ "y": "-3.379240041",
+ "z": "0.085954707"
+ }
+ },
+ {
+ "tsince_min": -4944.0,
+ "position_km": {
+ "x": "-22097.68730513",
+ "y": "-31583.13829284",
+ "z": "-4836.34329328"
+ },
+ "velocity_km_s": {
+ "x": "2.230597499",
+ "y": "-2.166594667",
+ "z": "0.426443070"
+ }
+ },
+ {
+ "tsince_min": -4896.0,
+ "position_km": {
+ "x": "-15129.94694545",
+ "y": "-36907.74526221",
+ "z": "-3487.56256701"
+ },
+ "velocity_km_s": {
+ "x": "2.581167187",
+ "y": "-1.524204737",
+ "z": "0.504805763"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "06251",
+ "description": "DELTA 1 DEB - near earth normal drag, perigee=377.26km",
+ "tle_line1": "1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985",
+ "tle_line2": "2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "3988.31022699",
+ "y": "5498.96657235",
+ "z": "0.90055879"
+ },
+ "velocity_km_s": {
+ "x": "-3.290032738",
+ "y": "2.357652820",
+ "z": "6.496623475"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-3935.69800083",
+ "y": "409.10980837",
+ "z": "5471.33577327"
+ },
+ "velocity_km_s": {
+ "x": "-3.374784183",
+ "y": "-6.635211043",
+ "z": "-1.942056221"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-1675.12766915",
+ "y": "-5683.30432352",
+ "z": "-3286.21510937"
+ },
+ "velocity_km_s": {
+ "x": "5.282496925",
+ "y": "1.508674259",
+ "z": "-5.354872978"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "4993.62642836",
+ "y": "2890.54969900",
+ "z": "-3600.40145627"
+ },
+ "velocity_km_s": {
+ "x": "0.347333429",
+ "y": "5.707031557",
+ "z": "5.070699638"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-1115.07959514",
+ "y": "4015.11691491",
+ "z": "5326.99727718"
+ },
+ "velocity_km_s": {
+ "x": "-5.524279443",
+ "y": "-4.765738774",
+ "z": "2.402255961"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-4329.10008198",
+ "y": "-5176.70287935",
+ "z": "409.65313857"
+ },
+ "velocity_km_s": {
+ "x": "2.858408303",
+ "y": "-2.933091792",
+ "z": "-6.509690397"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "3692.60030028",
+ "y": "-976.24265255",
+ "z": "-5623.36447493"
+ },
+ "velocity_km_s": {
+ "x": "3.897257243",
+ "y": "6.415554948",
+ "z": "1.429112190"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "2301.83510037",
+ "y": "5723.92394553",
+ "z": "2814.61514580"
+ },
+ "velocity_km_s": {
+ "x": "-5.110924966",
+ "y": "-0.764510559",
+ "z": "5.662120145"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-4990.91637950",
+ "y": "-2303.42547880",
+ "z": "3920.86335598"
+ },
+ "velocity_km_s": {
+ "x": "-0.993439372",
+ "y": "-5.967458360",
+ "z": "-4.759110856"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "642.27769977",
+ "y": "-4332.89821901",
+ "z": "-5183.31523910"
+ },
+ "velocity_km_s": {
+ "x": "5.720542579",
+ "y": "4.216573838",
+ "z": "-2.846576139"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "4719.78335752",
+ "y": "4798.06938996",
+ "z": "-943.58851062"
+ },
+ "velocity_km_s": {
+ "x": "-2.294860662",
+ "y": "3.492499389",
+ "z": "6.408334723"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-3299.16993602",
+ "y": "1576.83168320",
+ "z": "5678.67840638"
+ },
+ "velocity_km_s": {
+ "x": "-4.460347074",
+ "y": "-6.202025196",
+ "z": "-0.885874586"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-2777.14682335",
+ "y": "-5663.16031708",
+ "z": "-2462.54889123"
+ },
+ "velocity_km_s": {
+ "x": "4.915493146",
+ "y": "0.123328992",
+ "z": "-5.896495091"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "4992.31573893",
+ "y": "1716.62356770",
+ "z": "-4287.86065581"
+ },
+ "velocity_km_s": {
+ "x": "1.640717189",
+ "y": "6.071570434",
+ "z": "4.338797931"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "-8.22384755",
+ "y": "4662.21521668",
+ "z": "4905.66411857"
+ },
+ "velocity_km_s": {
+ "x": "-5.891011274",
+ "y": "-3.593173872",
+ "z": "3.365100460"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-4966.20137963",
+ "y": "-4379.59155037",
+ "z": "1349.33347502"
+ },
+ "velocity_km_s": {
+ "x": "1.763172581",
+ "y": "-3.981456387",
+ "z": "-6.343279443"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "2954.49390331",
+ "y": "-2080.65984650",
+ "z": "-5754.75038057"
+ },
+ "velocity_km_s": {
+ "x": "4.895893306",
+ "y": "5.858184322",
+ "z": "0.375474825"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "3363.28794321",
+ "y": "5559.55841180",
+ "z": "1956.05542266"
+ },
+ "velocity_km_s": {
+ "x": "-4.587378863",
+ "y": "0.591943403",
+ "z": "6.107838605"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "-4856.66780070",
+ "y": "-1107.03450192",
+ "z": "4557.21258241"
+ },
+ "velocity_km_s": {
+ "x": "-2.304158557",
+ "y": "-6.186437070",
+ "z": "-3.956549542"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "-497.84480071",
+ "y": "-4863.46005312",
+ "z": "-4700.81211217"
+ },
+ "velocity_km_s": {
+ "x": "5.960065407",
+ "y": "2.996683369",
+ "z": "-3.767123329"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "5241.61936096",
+ "y": "3910.75960683",
+ "z": "-1857.93473952"
+ },
+ "velocity_km_s": {
+ "x": "-1.124834806",
+ "y": "4.406213160",
+ "z": "6.148161299"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "-2451.38045953",
+ "y": "2610.60463261",
+ "z": "5729.79022069"
+ },
+ "velocity_km_s": {
+ "x": "-5.366560525",
+ "y": "-5.500855666",
+ "z": "0.187958716"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "-3791.87520638",
+ "y": "-5378.82851382",
+ "z": "-1575.82737930"
+ },
+ "velocity_km_s": {
+ "x": "4.266273592",
+ "y": "-1.199162551",
+ "z": "-6.276154080"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "4730.53958356",
+ "y": "524.05006433",
+ "z": "-4857.29369725"
+ },
+ "velocity_km_s": {
+ "x": "2.918056288",
+ "y": "6.135412849",
+ "z": "3.495115636"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "1159.27802897",
+ "y": "5056.60175495",
+ "z": "4353.49418579"
+ },
+ "velocity_km_s": {
+ "x": "-5.968060341",
+ "y": "-2.314790406",
+ "z": "4.230722669"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "08195",
+ "description": "MOLNIYA 2-14 - 12h resonant ecc 0.65-0.7",
+ "tle_line1": "1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813",
+ "tle_line2": "2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "2349.89483350",
+ "y": "-14785.93811562",
+ "z": "0.02119378"
+ },
+ "velocity_km_s": {
+ "x": "2.721488096",
+ "y": "-3.256811655",
+ "z": "4.498416672"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "15223.91713658",
+ "y": "-17852.95881713",
+ "z": "25280.39558224"
+ },
+ "velocity_km_s": {
+ "x": "1.079041732",
+ "y": "0.875187372",
+ "z": "2.485682813"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "19752.78050009",
+ "y": "-8600.07130962",
+ "z": "37522.72921090"
+ },
+ "velocity_km_s": {
+ "x": "0.238105279",
+ "y": "1.546110924",
+ "z": "0.986410447"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "19089.29762968",
+ "y": "3107.89495018",
+ "z": "39958.14661370"
+ },
+ "velocity_km_s": {
+ "x": "-0.410308034",
+ "y": "1.640332277",
+ "z": "-0.306873818"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "13829.66070574",
+ "y": "13977.39999817",
+ "z": "32736.32082508"
+ },
+ "velocity_km_s": {
+ "x": "-1.065096849",
+ "y": "1.279983299",
+ "z": "-1.760166075"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "3333.05838525",
+ "y": "18395.31728674",
+ "z": "12738.25031238"
+ },
+ "velocity_km_s": {
+ "x": "-1.882432221",
+ "y": "-0.611623333",
+ "z": "-4.039586549"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "2622.13222207",
+ "y": "-15125.15464924",
+ "z": "474.51048398"
+ },
+ "velocity_km_s": {
+ "x": "2.688287199",
+ "y": "-3.078426664",
+ "z": "4.494979530"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "15320.56770017",
+ "y": "-17777.32564586",
+ "z": "25539.53198382"
+ },
+ "velocity_km_s": {
+ "x": "1.064346229",
+ "y": "0.892184771",
+ "z": "2.459822414"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "19769.70267785",
+ "y": "-8458.65104454",
+ "z": "37624.20130236"
+ },
+ "velocity_km_s": {
+ "x": "0.229304396",
+ "y": "1.550363884",
+ "z": "0.966993056"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "19048.56201523",
+ "y": "3260.43223119",
+ "z": "39923.39143967"
+ },
+ "velocity_km_s": {
+ "x": "-0.418015536",
+ "y": "1.639346953",
+ "z": "-0.326094840"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "13729.19205837",
+ "y": "14097.70014810",
+ "z": "32547.52799890"
+ },
+ "velocity_km_s": {
+ "x": "-1.074511043",
+ "y": "1.270505211",
+ "z": "-1.785099927"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "3148.86165643",
+ "y": "18323.19841703",
+ "z": "12305.75195578"
+ },
+ "velocity_km_s": {
+ "x": "-1.895271701",
+ "y": "-0.678343847",
+ "z": "-4.086577951"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "2890.80638268",
+ "y": "-15446.43952300",
+ "z": "948.77010176"
+ },
+ "velocity_km_s": {
+ "x": "2.654407490",
+ "y": "-2.909344895",
+ "z": "4.486437362"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "15415.98410712",
+ "y": "-17699.90714437",
+ "z": "25796.19644689"
+ },
+ "velocity_km_s": {
+ "x": "1.049818334",
+ "y": "0.908822332",
+ "z": "2.434107329"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "19786.00618538",
+ "y": "-8316.74570581",
+ "z": "37723.74539119"
+ },
+ "velocity_km_s": {
+ "x": "0.220539813",
+ "y": "1.554518900",
+ "z": "0.947601047"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "19007.28688729",
+ "y": "3412.85948715",
+ "z": "39886.66579255"
+ },
+ "velocity_km_s": {
+ "x": "-0.425733568",
+ "y": "1.638276809",
+ "z": "-0.345353807"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "13627.93015254",
+ "y": "14216.95401307",
+ "z": "32356.13706868"
+ },
+ "velocity_km_s": {
+ "x": "-1.083991976",
+ "y": "1.260802347",
+ "z": "-1.810193903"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "2963.26486560",
+ "y": "18243.85063641",
+ "z": "11868.25797486"
+ },
+ "velocity_km_s": {
+ "x": "-1.908015447",
+ "y": "-0.747870342",
+ "z": "-4.134004492"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "3155.85126036",
+ "y": "-15750.70393364",
+ "z": "1422.32496953"
+ },
+ "velocity_km_s": {
+ "x": "2.620085624",
+ "y": "-2.748990396",
+ "z": "4.473527039"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "15510.15191770",
+ "y": "-17620.71002219",
+ "z": "26050.43525345"
+ },
+ "velocity_km_s": {
+ "x": "1.035454678",
+ "y": "0.925111006",
+ "z": "2.408534465"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "19801.67198812",
+ "y": "-8174.33337167",
+ "z": "37821.38577439"
+ },
+ "velocity_km_s": {
+ "x": "0.211812700",
+ "y": "1.558576937",
+ "z": "0.928231880"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "18965.46529379",
+ "y": "3565.19666242",
+ "z": "39847.97510998"
+ },
+ "velocity_km_s": {
+ "x": "-0.433459945",
+ "y": "1.637120585",
+ "z": "-0.364653213"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "13525.88227400",
+ "y": "14335.15978787",
+ "z": "32162.13236536"
+ },
+ "velocity_km_s": {
+ "x": "-1.093537945",
+ "y": "1.250868256",
+ "z": "-1.835451681"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "2776.30574260",
+ "y": "18156.98538451",
+ "z": "11425.73046481"
+ },
+ "velocity_km_s": {
+ "x": "-1.920632199",
+ "y": "-0.820370733",
+ "z": "-4.181839232"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "3417.20931587",
+ "y": "-16038.79510665",
+ "z": "1894.74934058"
+ },
+ "velocity_km_s": {
+ "x": "2.585515864",
+ "y": "-2.596818146",
+ "z": "4.456882556"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "09880",
+ "description": "MOLNIYA 1-36 - 12h resonant ecc 0.7-0.715 (fig)",
+ "tle_line1": "1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814",
+ "tle_line2": "2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "13020.06750784",
+ "y": "-2449.07193500",
+ "z": "1.15896030"
+ },
+ "velocity_km_s": {
+ "x": "4.247363935",
+ "y": "1.597178501",
+ "z": "4.956708611"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "19190.32482476",
+ "y": "9249.01266902",
+ "z": "26596.71345328"
+ },
+ "velocity_km_s": {
+ "x": "-0.624960193",
+ "y": "1.324550562",
+ "z": "2.495697637"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "11332.67806218",
+ "y": "16517.99124008",
+ "z": "38569.78482991"
+ },
+ "velocity_km_s": {
+ "x": "-1.400974747",
+ "y": "0.710947006",
+ "z": "0.923935636"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "328.74217398",
+ "y": "19554.92047380",
+ "z": "40558.26246145"
+ },
+ "velocity_km_s": {
+ "x": "-1.593281066",
+ "y": "0.126772913",
+ "z": "-0.359627307"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-10684.90590680",
+ "y": "18057.15728839",
+ "z": "33158.75253886"
+ },
+ "velocity_km_s": {
+ "x": "-1.383205997",
+ "y": "-0.582328999",
+ "z": "-1.744412556"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-17069.78000550",
+ "y": "9944.86797897",
+ "z": "13885.91649059"
+ },
+ "velocity_km_s": {
+ "x": "0.044133354",
+ "y": "-1.853448464",
+ "z": "-3.815303117"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "13725.09398980",
+ "y": "-2180.70877090",
+ "z": "863.29684523"
+ },
+ "velocity_km_s": {
+ "x": "3.878478111",
+ "y": "1.656846496",
+ "z": "4.944867241"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "19089.63879226",
+ "y": "9456.29670247",
+ "z": "27026.79562883"
+ },
+ "velocity_km_s": {
+ "x": "-0.656614299",
+ "y": "1.309112636",
+ "z": "2.449371941"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "11106.41248373",
+ "y": "16627.60874079",
+ "z": "38727.35140296"
+ },
+ "velocity_km_s": {
+ "x": "-1.409722680",
+ "y": "0.698582526",
+ "z": "0.891383535"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "72.40958621",
+ "y": "19575.08054144",
+ "z": "40492.12544001"
+ },
+ "velocity_km_s": {
+ "x": "-1.593394604",
+ "y": "0.113655142",
+ "z": "-0.390556063"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-10905.89252576",
+ "y": "17965.41205111",
+ "z": "32850.07298244"
+ },
+ "velocity_km_s": {
+ "x": "-1.371396120",
+ "y": "-0.601706604",
+ "z": "-1.782817058"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-17044.61207568",
+ "y": "9635.48491849",
+ "z": "13212.59462953"
+ },
+ "velocity_km_s": {
+ "x": "0.129244030",
+ "y": "-1.903551430",
+ "z": "-3.884569098"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "14369.90303735",
+ "y": "-1903.85601062",
+ "z": "1722.15319853"
+ },
+ "velocity_km_s": {
+ "x": "3.543393116",
+ "y": "1.701687176",
+ "z": "4.913881358"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "18983.96210441",
+ "y": "9661.12233804",
+ "z": "27448.99557732"
+ },
+ "velocity_km_s": {
+ "x": "-0.687189304",
+ "y": "1.293808870",
+ "z": "2.403630759"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "10878.79336704",
+ "y": "16735.31433954",
+ "z": "38879.23434264"
+ },
+ "velocity_km_s": {
+ "x": "-1.418239666",
+ "y": "0.686235750",
+ "z": "0.858951848"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-184.03743100",
+ "y": "19593.09371709",
+ "z": "40420.40606889"
+ },
+ "velocity_km_s": {
+ "x": "-1.593348925",
+ "y": "0.100448697",
+ "z": "-0.421571993"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "-11125.12138631",
+ "y": "17870.19488928",
+ "z": "32534.21521208"
+ },
+ "velocity_km_s": {
+ "x": "-1.359116236",
+ "y": "-0.621413776",
+ "z": "-1.821629856"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "-17004.43272827",
+ "y": "9316.53926351",
+ "z": "12526.11883812"
+ },
+ "velocity_km_s": {
+ "x": "0.220330736",
+ "y": "-1.955594322",
+ "z": "-3.955058575"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "14960.06492693",
+ "y": "-1620.68430805",
+ "z": "2574.96359381"
+ },
+ "velocity_km_s": {
+ "x": "3.238634028",
+ "y": "1.734723385",
+ "z": "4.868880331"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "18873.46347257",
+ "y": "9863.57004586",
+ "z": "27863.46574735"
+ },
+ "velocity_km_s": {
+ "x": "-0.716736981",
+ "y": "1.278632817",
+ "z": "2.358448535"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "10649.86857581",
+ "y": "16841.14172669",
+ "z": "39025.48035006"
+ },
+ "velocity_km_s": {
+ "x": "-1.426527152",
+ "y": "0.673901057",
+ "z": "0.826632332"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "-440.53459323",
+ "y": "19608.95524423",
+ "z": "40343.10675451"
+ },
+ "velocity_km_s": {
+ "x": "-1.593138597",
+ "y": "0.087147884",
+ "z": "-0.452680559"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "-11342.45028909",
+ "y": "17771.44223942",
+ "z": "32211.12535721"
+ },
+ "velocity_km_s": {
+ "x": "-1.346344015",
+ "y": "-0.641464291",
+ "z": "-1.860864234"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "-16948.06005711",
+ "y": "8987.64254880",
+ "z": "11826.28284367"
+ },
+ "velocity_km_s": {
+ "x": "0.318007297",
+ "y": "-2.009693492",
+ "z": "-4.026726648"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "15500.53445068",
+ "y": "-1332.90981042",
+ "z": "3419.72315308"
+ },
+ "velocity_km_s": {
+ "x": "2.960917974",
+ "y": "1.758331634",
+ "z": "4.813698638"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "09998",
+ "description": "SMS 1 AKM - integrator problem with GSFC ver",
+ "tle_line1": "1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480",
+ "tle_line2": "2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878",
+ "startmfe": -1440.0,
+ "stopmfe": -720.0,
+ "deltamin": 60.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "25532.98947267",
+ "y": "-27244.26327953",
+ "z": "-1.11572421"
+ },
+ "velocity_km_s": {
+ "x": "2.410283885",
+ "y": "2.194175683",
+ "z": "0.545888526"
+ }
+ },
+ {
+ "tsince_min": -1440.0,
+ "position_km": {
+ "x": "-11362.18265118",
+ "y": "-35117.55867813",
+ "z": "-5413.62537994"
+ },
+ "velocity_km_s": {
+ "x": "3.137861261",
+ "y": "-1.011678260",
+ "z": "0.267510059"
+ }
+ },
+ {
+ "tsince_min": -1380.0,
+ "position_km": {
+ "x": "309.25349929",
+ "y": "-36960.43090143",
+ "z": "-4198.48007670"
+ },
+ "velocity_km_s": {
+ "x": "3.292429375",
+ "y": "-0.002166046",
+ "z": "0.402111628"
+ }
+ },
+ {
+ "tsince_min": -1320.0,
+ "position_km": {
+ "x": "11949.04009077",
+ "y": "-35127.37816804",
+ "z": "-2565.89806468"
+ },
+ "velocity_km_s": {
+ "x": "3.119942784",
+ "y": "1.012096444",
+ "z": "0.497284100"
+ }
+ },
+ {
+ "tsince_min": -1260.0,
+ "position_km": {
+ "x": "22400.45329336",
+ "y": "-29798.63236321",
+ "z": "-677.91515122"
+ },
+ "velocity_km_s": {
+ "x": "2.638533344",
+ "y": "1.922477736",
+ "z": "0.542792913"
+ }
+ },
+ {
+ "tsince_min": -1200.0,
+ "position_km": {
+ "x": "30640.84752458",
+ "y": "-21525.02340201",
+ "z": "1277.34808722"
+ },
+ "velocity_km_s": {
+ "x": "1.903464941",
+ "y": "2.634294312",
+ "z": "0.534540934"
+ }
+ },
+ {
+ "tsince_min": -1140.0,
+ "position_km": {
+ "x": "35899.56788035",
+ "y": "-11152.71158138",
+ "z": "3108.72535238"
+ },
+ "velocity_km_s": {
+ "x": "0.997393045",
+ "y": "3.079858548",
+ "z": "0.474873291"
+ }
+ },
+ {
+ "tsince_min": -1080.0,
+ "position_km": {
+ "x": "37732.45438600",
+ "y": "288.18821054",
+ "z": "4643.87587495"
+ },
+ "velocity_km_s": {
+ "x": "0.016652226",
+ "y": "3.225184410",
+ "z": "0.371669746"
+ }
+ },
+ {
+ "tsince_min": -1020.0,
+ "position_km": {
+ "x": "36045.92961699",
+ "y": "11706.61816230",
+ "z": "5746.32646574"
+ },
+ "velocity_km_s": {
+ "x": "-0.942409065",
+ "y": "3.069888941",
+ "z": "0.236662980"
+ }
+ },
+ {
+ "tsince_min": -960.0,
+ "position_km": {
+ "x": "31076.77273609",
+ "y": "22063.44379776",
+ "z": "6325.93403705"
+ },
+ "velocity_km_s": {
+ "x": "-1.794027976",
+ "y": "2.642072476",
+ "z": "0.083556127"
+ }
+ },
+ {
+ "tsince_min": -900.0,
+ "position_km": {
+ "x": "23341.26015320",
+ "y": "30460.88002531",
+ "z": "6342.91707895"
+ },
+ "velocity_km_s": {
+ "x": "-2.469409743",
+ "y": "1.990861658",
+ "z": "-0.073612096"
+ }
+ },
+ {
+ "tsince_min": -840.0,
+ "position_km": {
+ "x": "13568.39733054",
+ "y": "36204.45930900",
+ "z": "5806.79548733"
+ },
+ "velocity_km_s": {
+ "x": "-2.919354203",
+ "y": "1.178920217",
+ "z": "-0.221646814"
+ }
+ },
+ {
+ "tsince_min": -780.0,
+ "position_km": {
+ "x": "2628.58762420",
+ "y": "38840.10855897",
+ "z": "4771.91979854"
+ },
+ "velocity_km_s": {
+ "x": "-3.114400514",
+ "y": "0.276239109",
+ "z": "-0.348926401"
+ }
+ },
+ {
+ "tsince_min": -720.0,
+ "position_km": {
+ "x": "-8535.81598158",
+ "y": "38171.79073851",
+ "z": "3331.00311285"
+ },
+ "velocity_km_s": {
+ "x": "-3.043839958",
+ "y": "-0.644462527",
+ "z": "-0.445808894"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "11801",
+ "description": "Original STR#3 SDP4 test",
+ "tle_line1": "1 11801U 80230.29629788 .01431103 00000-0 14311-1 13",
+ "tle_line2": "2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 360.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "7473.37102491",
+ "y": "428.94748312",
+ "z": "5828.74846783"
+ },
+ "velocity_km_s": {
+ "x": "5.107155391",
+ "y": "6.444680305",
+ "z": "-0.186133297"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-3305.22148694",
+ "y": "32410.84323331",
+ "z": "-24697.16974954"
+ },
+ "velocity_km_s": {
+ "x": "-1.301137319",
+ "y": "-1.151315600",
+ "z": "-0.283335823"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "14271.29083858",
+ "y": "24110.44309009",
+ "z": "-4725.76320143"
+ },
+ "velocity_km_s": {
+ "x": "-0.320504528",
+ "y": "2.679841539",
+ "z": "-2.084054355"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-9990.05800009",
+ "y": "22717.34212448",
+ "z": "-23616.88515553"
+ },
+ "velocity_km_s": {
+ "x": "-1.016674392",
+ "y": "-2.290267981",
+ "z": "0.728923337"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "9787.87836256",
+ "y": "33753.32249667",
+ "z": "-15030.79874625"
+ },
+ "velocity_km_s": {
+ "x": "-1.094251553",
+ "y": "0.923589906",
+ "z": "-1.522311008"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "14128",
+ "description": "EUTELSAT 1-F1 (ECS1) - Lyddane choice in GSFC at 2080 min (fig)",
+ "tle_line1": "1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627",
+ "tle_line2": "2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "34747.57932696",
+ "y": "24502.37114079",
+ "z": "-1.32832986"
+ },
+ "velocity_km_s": {
+ "x": "-1.731642662",
+ "y": "2.452772615",
+ "z": "0.608510081"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "18263.33439094",
+ "y": "38159.96004751",
+ "z": "4186.18304085"
+ },
+ "velocity_km_s": {
+ "x": "-2.744396611",
+ "y": "1.255583260",
+ "z": "0.528558932"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-3023.38840703",
+ "y": "41783.13186459",
+ "z": "7273.03412906"
+ },
+ "velocity_km_s": {
+ "x": "-3.035574793",
+ "y": "-0.271656544",
+ "z": "0.309645251"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-23516.34391907",
+ "y": "34424.42065671",
+ "z": "8448.49867693"
+ },
+ "velocity_km_s": {
+ "x": "-2.529120477",
+ "y": "-1.726186020",
+ "z": "0.009582303"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-37837.46699511",
+ "y": "18028.39727170",
+ "z": "7406.25540271"
+ },
+ "velocity_km_s": {
+ "x": "-1.360069525",
+ "y": "-2.725794686",
+ "z": "-0.292555349"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-42243.58460661",
+ "y": "-3093.72887774",
+ "z": "4422.91711801"
+ },
+ "velocity_km_s": {
+ "x": "0.163110919",
+ "y": "-3.009980598",
+ "z": "-0.517584362"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-35597.57919549",
+ "y": "-23407.91145393",
+ "z": "282.09554383"
+ },
+ "velocity_km_s": {
+ "x": "1.641405246",
+ "y": "-2.506773678",
+ "z": "-0.606963478"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-19649.19834455",
+ "y": "-37606.11623860",
+ "z": "-3932.71525948"
+ },
+ "velocity_km_s": {
+ "x": "2.689647056",
+ "y": "-1.349150016",
+ "z": "-0.537710698"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "1431.30912160",
+ "y": "-41982.04949668",
+ "z": "-7120.45467057"
+ },
+ "velocity_km_s": {
+ "x": "3.035263353",
+ "y": "0.160882945",
+ "z": "-0.327993994"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "22136.97605384",
+ "y": "-35388.19823762",
+ "z": "-8447.62393401"
+ },
+ "velocity_km_s": {
+ "x": "2.587624889",
+ "y": "1.630097136",
+ "z": "-0.032349004"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "37050.15790219",
+ "y": "-19537.23321425",
+ "z": "-7564.83463543"
+ },
+ "velocity_km_s": {
+ "x": "1.461844494",
+ "y": "2.674654256",
+ "z": "0.272202191"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "42253.81760945",
+ "y": "1431.81867593",
+ "z": "-4699.87621174"
+ },
+ "velocity_km_s": {
+ "x": "-0.049247334",
+ "y": "3.019518960",
+ "z": "0.505890058"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "36366.59147396",
+ "y": "22023.54245720",
+ "z": "-601.47121821"
+ },
+ "velocity_km_s": {
+ "x": "-1.549681546",
+ "y": "2.571788981",
+ "z": "0.607057418"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "20922.12287985",
+ "y": "36826.33975981",
+ "z": "3654.91125886"
+ },
+ "velocity_km_s": {
+ "x": "-2.644070068",
+ "y": "1.447521216",
+ "z": "0.548722983"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "-23.77224182",
+ "y": "41945.51688402",
+ "z": "6950.29891751"
+ },
+ "velocity_km_s": {
+ "x": "-3.043358385",
+ "y": "-0.057417440",
+ "z": "0.346112094"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-20964.17821076",
+ "y": "36039.06206172",
+ "z": "8418.91984963"
+ },
+ "velocity_km_s": {
+ "x": "-2.642795221",
+ "y": "-1.546099886",
+ "z": "0.052725852"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "-36401.63863057",
+ "y": "20669.75286162",
+ "z": "7677.19769359"
+ },
+ "velocity_km_s": {
+ "x": "-1.549488154",
+ "y": "-2.627052310",
+ "z": "-0.254079652"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "-42298.30327543",
+ "y": "-119.03351118",
+ "z": "4922.96388841"
+ },
+ "velocity_km_s": {
+ "x": "-0.052232768",
+ "y": "-3.018152669",
+ "z": "-0.493827331"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "-37125.62383511",
+ "y": "-20879.63058368",
+ "z": "879.86971348"
+ },
+ "velocity_km_s": {
+ "x": "1.456499841",
+ "y": "-2.619358421",
+ "z": "-0.604081694"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "-22250.12320553",
+ "y": "-36182.74736487",
+ "z": "-3393.15365183"
+ },
+ "velocity_km_s": {
+ "x": "2.583161226",
+ "y": "-1.536647628",
+ "z": "-0.556404555"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "-1563.06258654",
+ "y": "-42035.43179159",
+ "z": "-6780.02161760"
+ },
+ "velocity_km_s": {
+ "x": "3.034917506",
+ "y": "-0.052702046",
+ "z": "-0.363395654"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "19531.64069587",
+ "y": "-36905.65470956",
+ "z": "-8395.46892032"
+ },
+ "velocity_km_s": {
+ "x": "2.693682199",
+ "y": "1.446079999",
+ "z": "-0.075256054"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "35516.53506142",
+ "y": "-22123.71916638",
+ "z": "-7815.04516935"
+ },
+ "velocity_km_s": {
+ "x": "1.646882125",
+ "y": "2.568416058",
+ "z": "0.232985912"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "42196.03535976",
+ "y": "-1547.32646751",
+ "z": "-5187.39401981"
+ },
+ "velocity_km_s": {
+ "x": "0.166491841",
+ "y": "3.019211549",
+ "z": "0.480665780"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "37802.25393045",
+ "y": "19433.57330019",
+ "z": "-1198.66634226"
+ },
+ "velocity_km_s": {
+ "x": "-1.359930580",
+ "y": "2.677830903",
+ "z": "0.602507466"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "16925",
+ "description": "SL-6 R/B(2) - Deep space, perigee=82.48 (<98) s4>20 mod",
+ "tle_line1": "1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486",
+ "tle_line2": "2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "5559.11686836",
+ "y": "-11941.04090781",
+ "z": "-19.41235206"
+ },
+ "velocity_km_s": {
+ "x": "3.392116762",
+ "y": "-1.946985124",
+ "z": "4.250755852"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "12339.83273749",
+ "y": "-2771.14447871",
+ "z": "18904.57603433"
+ },
+ "velocity_km_s": {
+ "x": "-0.871247614",
+ "y": "2.600917693",
+ "z": "0.581560002"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-3385.00215658",
+ "y": "7538.13955729",
+ "z": "200.59008616"
+ },
+ "velocity_km_s": {
+ "x": "-2.023512865",
+ "y": "-4.261808344",
+ "z": "-6.856385787"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "12805.22442200",
+ "y": "-10258.94667177",
+ "z": "13780.16486738"
+ },
+ "velocity_km_s": {
+ "x": "0.619279224",
+ "y": "1.821510542",
+ "z": "2.507365975"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "5682.46556318",
+ "y": "7199.30270473",
+ "z": "15437.67134070"
+ },
+ "velocity_km_s": {
+ "x": "-2.474365406",
+ "y": "2.087897336",
+ "z": "-2.583767460"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "7628.94243982",
+ "y": "-12852.72097492",
+ "z": "2902.87208981"
+ },
+ "velocity_km_s": {
+ "x": "2.748131081",
+ "y": "-0.740084579",
+ "z": "4.125307943"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "11531.64866625",
+ "y": "-858.27542736",
+ "z": "19086.85993771"
+ },
+ "velocity_km_s": {
+ "x": "-1.170071901",
+ "y": "2.660311986",
+ "z": "0.096005705"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-3866.98069515",
+ "y": "2603.73442786",
+ "z": "-4577.36484577"
+ },
+ "velocity_km_s": {
+ "x": "1.157257298",
+ "y": "-8.453281164",
+ "z": "-4.683959407"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "13054.77732721",
+ "y": "-8707.92757730",
+ "z": "15537.63259903"
+ },
+ "velocity_km_s": {
+ "x": "0.229846748",
+ "y": "2.119467054",
+ "z": "2.063396852"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "3496.91064652",
+ "y": "8712.83919778",
+ "z": "12845.81838327"
+ },
+ "velocity_km_s": {
+ "x": "-2.782184997",
+ "y": "1.552950644",
+ "z": "-3.554436131"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "9593.07424729",
+ "y": "-13023.75963608",
+ "z": "6250.46484931"
+ },
+ "velocity_km_s": {
+ "x": "2.072666376",
+ "y": "0.278735334",
+ "z": "3.778111073"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "10284.79205084",
+ "y": "1487.89914169",
+ "z": "18824.37381327"
+ },
+ "velocity_km_s": {
+ "x": "-1.530335053",
+ "y": "2.663107730",
+ "z": "-0.542205966"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-984.62035146",
+ "y": "-5187.03480813",
+ "z": "-5745.59594144"
+ },
+ "velocity_km_s": {
+ "x": "4.340271916",
+ "y": "-7.266811354",
+ "z": "1.777668888"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "20413",
+ "description": "SL-12 R/B - Lyddane choice at 1860 and 4700 min",
+ "tle_line1": "1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041",
+ "tle_line2": "2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978",
+ "startmfe": 1440.0,
+ "stopmfe": 4320.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "25123.29290741",
+ "y": "-13225.49966286",
+ "z": "3249.40351869"
+ },
+ "velocity_km_s": {
+ "x": "0.488683419",
+ "y": "4.797897593",
+ "z": "-0.961119693"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-151669.05280515",
+ "y": "-5645.20454550",
+ "z": "-2198.51592118"
+ },
+ "velocity_km_s": {
+ "x": "-0.869182889",
+ "y": "-0.870759872",
+ "z": "0.156508219"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "-157497.71657495",
+ "y": "-11884.99595074",
+ "z": "-1061.44439402"
+ },
+ "velocity_km_s": {
+ "x": "-0.749657961",
+ "y": "-0.864016715",
+ "z": "0.157766101"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "-162498.32255577",
+ "y": "-18062.99733167",
+ "z": "81.00915253"
+ },
+ "velocity_km_s": {
+ "x": "-0.638980378",
+ "y": "-0.853687105",
+ "z": "0.158098992"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-166728.76010920",
+ "y": "-24155.99648299",
+ "z": "1222.84128677"
+ },
+ "velocity_km_s": {
+ "x": "-0.535600687",
+ "y": "-0.840455444",
+ "z": "0.157680857"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "-169935.81924592",
+ "y": "-31767.29787964",
+ "z": "2749.01540345"
+ },
+ "velocity_km_s": {
+ "x": "-0.430050431",
+ "y": "-0.828904183",
+ "z": "0.157812340"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "-172703.07831815",
+ "y": "-37662.95639336",
+ "z": "3883.60052579"
+ },
+ "velocity_km_s": {
+ "x": "-0.338004891",
+ "y": "-0.810277487",
+ "z": "0.156020035"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "-174823.19337404",
+ "y": "-43417.55605219",
+ "z": "5003.26312809"
+ },
+ "velocity_km_s": {
+ "x": "-0.250258622",
+ "y": "-0.789828672",
+ "z": "0.153764903"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "-176324.63925775",
+ "y": "-49018.51958648",
+ "z": "6104.85025002"
+ },
+ "velocity_km_s": {
+ "x": "-0.166136613",
+ "y": "-0.767706262",
+ "z": "0.151092242"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "-177231.42142458",
+ "y": "-54454.12699497",
+ "z": "7185.48661607"
+ },
+ "velocity_km_s": {
+ "x": "-0.085067854",
+ "y": "-0.744001567",
+ "z": "0.148033403"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "-177563.73583232",
+ "y": "-59713.14859144",
+ "z": "8242.48472591"
+ },
+ "velocity_km_s": {
+ "x": "-0.006561730",
+ "y": "-0.718760309",
+ "z": "0.144608676"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "-177338.48026483",
+ "y": "-64784.54644698",
+ "z": "9273.27220003"
+ },
+ "velocity_km_s": {
+ "x": "0.069809946",
+ "y": "-0.691990238",
+ "z": "0.140829236"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "-176569.65151461",
+ "y": "-69657.21976255",
+ "z": "10275.33063459"
+ },
+ "velocity_km_s": {
+ "x": "0.144426878",
+ "y": "-0.663665876",
+ "z": "0.136698419"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "-175268.65299073",
+ "y": "-74319.77625463",
+ "z": "11246.14177160"
+ },
+ "velocity_km_s": {
+ "x": "0.217631370",
+ "y": "-0.633731091",
+ "z": "0.132212491"
+ }
+ },
+ {
+ "tsince_min": 3000.0,
+ "position_km": {
+ "x": "-173444.53039609",
+ "y": "-78760.31560396",
+ "z": "12183.13775212"
+ },
+ "velocity_km_s": {
+ "x": "0.289737325",
+ "y": "-0.602099929",
+ "z": "0.127361017"
+ }
+ },
+ {
+ "tsince_min": 3120.0,
+ "position_km": {
+ "x": "-171104.14813653",
+ "y": "-82966.21323591",
+ "z": "13083.65278381"
+ },
+ "velocity_km_s": {
+ "x": "0.361037779",
+ "y": "-0.568655903",
+ "z": "0.122126889"
+ }
+ },
+ {
+ "tsince_min": 3240.0,
+ "position_km": {
+ "x": "-168252.31543803",
+ "y": "-86923.89363433",
+ "z": "13944.87382716"
+ },
+ "velocity_km_s": {
+ "x": "0.431811396",
+ "y": "-0.533249797",
+ "z": "0.116486022"
+ }
+ },
+ {
+ "tsince_min": 3360.0,
+ "position_km": {
+ "x": "-164891.86832887",
+ "y": "-90618.58225954",
+ "z": "14763.78794247"
+ },
+ "velocity_km_s": {
+ "x": "0.502328269",
+ "y": "-0.495695896",
+ "z": "0.110406725"
+ }
+ },
+ {
+ "tsince_min": 3480.0,
+ "position_km": {
+ "x": "-161023.71139825",
+ "y": "-94034.02398835",
+ "z": "15537.12375729"
+ },
+ "velocity_km_s": {
+ "x": "0.572855321",
+ "y": "-0.455766412",
+ "z": "0.103848688"
+ }
+ },
+ {
+ "tsince_min": 3600.0,
+ "position_km": {
+ "x": "-156646.82136726",
+ "y": "-97152.15370791",
+ "z": "16261.28409305"
+ },
+ "velocity_km_s": {
+ "x": "0.643661538",
+ "y": "-0.413183688",
+ "z": "0.096761524"
+ }
+ },
+ {
+ "tsince_min": 3720.0,
+ "position_km": {
+ "x": "-151758.21285737",
+ "y": "-99952.70098346",
+ "z": "16932.26607548"
+ },
+ "velocity_km_s": {
+ "x": "0.715023254",
+ "y": "-0.367609561",
+ "z": "0.089082727"
+ }
+ },
+ {
+ "tsince_min": 3840.0,
+ "position_km": {
+ "x": "-146352.86521283",
+ "y": "-102412.70506284",
+ "z": "17545.56394158"
+ },
+ "velocity_km_s": {
+ "x": "0.787229695",
+ "y": "-0.318630913",
+ "z": "0.080734873"
+ }
+ },
+ {
+ "tsince_min": 3960.0,
+ "position_km": {
+ "x": "-140423.60777444",
+ "y": "-104505.90799734",
+ "z": "18096.04807097"
+ },
+ "velocity_km_s": {
+ "x": "0.860588979",
+ "y": "-0.265739987",
+ "z": "0.071621768"
+ }
+ },
+ {
+ "tsince_min": 4080.0,
+ "position_km": {
+ "x": "-133960.95961851",
+ "y": "-106201.98091318",
+ "z": "18577.81121953"
+ },
+ "velocity_km_s": {
+ "x": "0.935434758",
+ "y": "-0.208307307",
+ "z": "0.061623110"
+ }
+ },
+ {
+ "tsince_min": 4200.0,
+ "position_km": {
+ "x": "-126952.91860010",
+ "y": "-107465.51906186",
+ "z": "18983.96903112"
+ },
+ "velocity_km_s": {
+ "x": "1.012133628",
+ "y": "-0.145543878",
+ "z": "0.050587007"
+ }
+ },
+ {
+ "tsince_min": 4320.0,
+ "position_km": {
+ "x": "-119384.69396454",
+ "y": "-108254.71115372",
+ "z": "19306.39581892"
+ },
+ "velocity_km_s": {
+ "x": "1.091093313",
+ "y": "-0.076447479",
+ "z": "0.038319282"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "21897",
+ "description": "MOLNIYA 1-83 - 12h resonant, ecc>0.715, negative BSTAR",
+ "tle_line1": "1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044",
+ "tle_line2": "2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-14464.72135182",
+ "y": "-4699.19517587",
+ "z": "0.06681686"
+ },
+ "velocity_km_s": {
+ "x": "-3.249312013",
+ "y": "-3.281032707",
+ "z": "4.007046940"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-19410.46286123",
+ "y": "-19143.03318969",
+ "z": "23114.05522619"
+ },
+ "velocity_km_s": {
+ "x": "0.508602237",
+ "y": "-1.156882269",
+ "z": "2.379923455"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-12686.06129708",
+ "y": "-23853.75335645",
+ "z": "35529.81733588"
+ },
+ "velocity_km_s": {
+ "x": "1.231633829",
+ "y": "-0.221718202",
+ "z": "1.118440291"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-2775.46649359",
+ "y": "-22839.64574119",
+ "z": "39494.64689967"
+ },
+ "velocity_km_s": {
+ "x": "1.468963405",
+ "y": "0.489481769",
+ "z": "-0.023972788"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "7679.87883570",
+ "y": "-16780.50760106",
+ "z": "34686.21815555"
+ },
+ "velocity_km_s": {
+ "x": "1.364171080",
+ "y": "1.211183897",
+ "z": "-1.385151371"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "14552.40023028",
+ "y": "-4819.50121461",
+ "z": "17154.70672449"
+ },
+ "velocity_km_s": {
+ "x": "0.109201591",
+ "y": "2.176124494",
+ "z": "-3.854856805"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-15302.38845375",
+ "y": "-5556.43440300",
+ "z": "1095.95088753"
+ },
+ "velocity_km_s": {
+ "x": "-2.838224312",
+ "y": "-3.134231137",
+ "z": "3.992596326"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-19289.20066748",
+ "y": "-19427.04851118",
+ "z": "23759.45685636"
+ },
+ "velocity_km_s": {
+ "x": "0.552495087",
+ "y": "-1.112499437",
+ "z": "2.325112654"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-12376.21976437",
+ "y": "-23893.38020018",
+ "z": "35831.33691892"
+ },
+ "velocity_km_s": {
+ "x": "1.246701529",
+ "y": "-0.194294048",
+ "z": "1.074867282"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-2400.55677665",
+ "y": "-22698.62264640",
+ "z": "39482.75964390"
+ },
+ "velocity_km_s": {
+ "x": "1.472582922",
+ "y": "0.513555654",
+ "z": "-0.069306561"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "8031.66819252",
+ "y": "-16455.77592085",
+ "z": "34298.94391742"
+ },
+ "velocity_km_s": {
+ "x": "1.351357426",
+ "y": "1.239633234",
+ "z": "-1.448195324"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "14559.48780372",
+ "y": "-4238.43773813",
+ "z": "16079.23154704"
+ },
+ "velocity_km_s": {
+ "x": "-0.026409655",
+ "y": "2.218938770",
+ "z": "-4.012628896"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-16036.04980660",
+ "y": "-6372.51406468",
+ "z": "2183.44834232"
+ },
+ "velocity_km_s": {
+ "x": "-2.485113443",
+ "y": "-2.994994355",
+ "z": "3.955891272"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "-19156.71583814",
+ "y": "-19698.89059957",
+ "z": "24389.29473934"
+ },
+ "velocity_km_s": {
+ "x": "0.594278133",
+ "y": "-1.069418599",
+ "z": "2.271152044"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "-12062.72925552",
+ "y": "-23925.82362911",
+ "z": "36120.66680667"
+ },
+ "velocity_km_s": {
+ "x": "1.261238798",
+ "y": "-0.167201856",
+ "z": "1.031478939"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-2024.96136966",
+ "y": "-22551.56626703",
+ "z": "39458.50085787"
+ },
+ "velocity_km_s": {
+ "x": "1.475816889",
+ "y": "0.537615764",
+ "z": "-0.114887472"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "8379.80916204",
+ "y": "-16123.95878459",
+ "z": "33894.75123231"
+ },
+ "velocity_km_s": {
+ "x": "1.337468254",
+ "y": "1.268432783",
+ "z": "-1.512473301"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "14527.86748873",
+ "y": "-3646.33817120",
+ "z": "14960.74306518"
+ },
+ "velocity_km_s": {
+ "x": "-0.180035839",
+ "y": "2.261273515",
+ "z": "-4.179355590"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "-16680.12147335",
+ "y": "-7149.80800425",
+ "z": "3257.64227208"
+ },
+ "velocity_km_s": {
+ "x": "-2.178897351",
+ "y": "-2.863927095",
+ "z": "3.904876943"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "-19013.58793448",
+ "y": "-19958.93766022",
+ "z": "25003.81778666"
+ },
+ "velocity_km_s": {
+ "x": "0.634100431",
+ "y": "-1.027559823",
+ "z": "2.218002685"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "-11745.76155818",
+ "y": "-23951.19438627",
+ "z": "36397.87676581"
+ },
+ "velocity_km_s": {
+ "x": "1.275261813",
+ "y": "-0.140425132",
+ "z": "0.988259441"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "-1648.81945070",
+ "y": "-22398.50594576",
+ "z": "39421.83273890"
+ },
+ "velocity_km_s": {
+ "x": "1.478660174",
+ "y": "0.561671519",
+ "z": "-0.160733093"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "8723.97652795",
+ "y": "-15784.99406275",
+ "z": "33473.35215527"
+ },
+ "velocity_km_s": {
+ "x": "1.322433593",
+ "y": "1.297602497",
+ "z": "-1.578055493"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "14452.25571587",
+ "y": "-3043.42332645",
+ "z": "13796.84870805"
+ },
+ "velocity_km_s": {
+ "x": "-0.355190169",
+ "y": "2.302485443",
+ "z": "-4.355767077"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "-17246.31075678",
+ "y": "-7890.72601508",
+ "z": "4315.39410307"
+ },
+ "velocity_km_s": {
+ "x": "-1.910968458",
+ "y": "-2.740945672",
+ "z": "3.844722726"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "22312",
+ "description": "SL-6 R/B(2) - last TLE, decayed 2006-04-04",
+ "tle_line1": "1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953",
+ "tle_line2": "2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783",
+ "startmfe": 54.2028672,
+ "stopmfe": 1440.0,
+ "deltamin": 20.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "1442.10132912",
+ "y": "6510.23625449",
+ "z": "8.83145885"
+ },
+ "velocity_km_s": {
+ "x": "-3.475714837",
+ "y": "0.997262768",
+ "z": "6.835860345"
+ }
+ },
+ {
+ "tsince_min": 54.2028672,
+ "position_km": {
+ "x": "306.10478453",
+ "y": "-5816.45655525",
+ "z": "-2979.55846068"
+ },
+ "velocity_km_s": {
+ "x": "3.950663855",
+ "y": "3.415332543",
+ "z": "-5.879974329"
+ }
+ },
+ {
+ "tsince_min": 74.2028672,
+ "position_km": {
+ "x": "3282.82085464",
+ "y": "2077.46972905",
+ "z": "-5189.17988770"
+ },
+ "velocity_km_s": {
+ "x": "0.097342701",
+ "y": "7.375135692",
+ "z": "2.900196702"
+ }
+ },
+ {
+ "tsince_min": 94.2028672,
+ "position_km": {
+ "x": "530.82729176",
+ "y": "6426.20790003",
+ "z": "1712.37076793"
+ },
+ "velocity_km_s": {
+ "x": "-3.837120395",
+ "y": "-1.252430637",
+ "z": "6.561602577"
+ }
+ },
+ {
+ "tsince_min": 114.2028672,
+ "position_km": {
+ "x": "-3191.69170212",
+ "y": "170.27219912",
+ "z": "5956.29807775"
+ },
+ "velocity_km_s": {
+ "x": "-1.394956872",
+ "y": "-7.438073471",
+ "z": "-0.557553115"
+ }
+ },
+ {
+ "tsince_min": 134.2028672,
+ "position_km": {
+ "x": "-1818.99222465",
+ "y": "-6322.45146616",
+ "z": "681.95247154"
+ },
+ "velocity_km_s": {
+ "x": "3.349795173",
+ "y": "-1.530140265",
+ "z": "-6.831522765"
+ }
+ },
+ {
+ "tsince_min": 154.2028672,
+ "position_km": {
+ "x": "2515.66448634",
+ "y": "-2158.83091224",
+ "z": "-5552.13320544"
+ },
+ "velocity_km_s": {
+ "x": "2.571979660",
+ "y": "7.311930509",
+ "z": "-1.639865620"
+ }
+ },
+ {
+ "tsince_min": 174.2028672,
+ "position_km": {
+ "x": "2414.52833210",
+ "y": "5749.10150922",
+ "z": "-1998.59693165"
+ },
+ "velocity_km_s": {
+ "x": "-2.681032960",
+ "y": "3.527589301",
+ "z": "6.452951429"
+ }
+ },
+ {
+ "tsince_min": 194.2028672,
+ "position_km": {
+ "x": "-1877.98944331",
+ "y": "3862.27848302",
+ "z": "5112.48435863"
+ },
+ "velocity_km_s": {
+ "x": "-3.261489804",
+ "y": "-6.026859137",
+ "z": "3.433254768"
+ }
+ },
+ {
+ "tsince_min": 214.2028672,
+ "position_km": {
+ "x": "-3117.36584395",
+ "y": "-4419.74773864",
+ "z": "3840.85960912"
+ },
+ "velocity_km_s": {
+ "x": "1.545479182",
+ "y": "-5.475416581",
+ "z": "-5.207913748"
+ }
+ },
+ {
+ "tsince_min": 234.2028672,
+ "position_km": {
+ "x": "815.32034678",
+ "y": "-5231.67692249",
+ "z": "-3760.04690354"
+ },
+ "velocity_km_s": {
+ "x": "3.870864200",
+ "y": "4.455588552",
+ "z": "-5.211082191"
+ }
+ },
+ {
+ "tsince_min": 254.2028672,
+ "position_km": {
+ "x": "3269.54341810",
+ "y": "3029.00081083",
+ "z": "-4704.67969713"
+ },
+ "velocity_km_s": {
+ "x": "-0.526711345",
+ "y": "6.812157950",
+ "z": "3.929825087"
+ }
+ },
+ {
+ "tsince_min": 274.2028672,
+ "position_km": {
+ "x": "-10.18099756",
+ "y": "6026.23341453",
+ "z": "2643.50518407"
+ },
+ "velocity_km_s": {
+ "x": "-3.953623254",
+ "y": "-2.616070012",
+ "z": "6.145637500"
+ }
+ },
+ {
+ "tsince_min": 294.2028672,
+ "position_km": {
+ "x": "-3320.58819584",
+ "y": "-1248.42679945",
+ "z": "5563.06017927"
+ },
+ "velocity_km_s": {
+ "x": "-0.637046974",
+ "y": "-7.417786044",
+ "z": "-2.076120187"
+ }
+ },
+ {
+ "tsince_min": 314.2028672,
+ "position_km": {
+ "x": "-1025.48974616",
+ "y": "-6366.98945782",
+ "z": "-911.23559153"
+ },
+ "velocity_km_s": {
+ "x": "3.811771909",
+ "y": "0.438071490",
+ "z": "-6.829260617"
+ }
+ },
+ {
+ "tsince_min": 334.2028672,
+ "position_km": {
+ "x": "3003.75996128",
+ "y": "-413.85708003",
+ "z": "-5706.15591435"
+ },
+ "velocity_km_s": {
+ "x": "1.674350083",
+ "y": "7.694169068",
+ "z": "0.316915204"
+ }
+ },
+ {
+ "tsince_min": 354.2028672,
+ "position_km": {
+ "x": "1731.42816980",
+ "y": "6258.27676925",
+ "z": "-409.32527982"
+ },
+ "velocity_km_s": {
+ "x": "-3.400497806",
+ "y": "1.447945424",
+ "z": "6.904010052"
+ }
+ },
+ {
+ "tsince_min": 374.2028672,
+ "position_km": {
+ "x": "-2582.52111460",
+ "y": "2024.19020680",
+ "z": "5647.55650268"
+ },
+ "velocity_km_s": {
+ "x": "-2.530348121",
+ "y": "-7.221719393",
+ "z": "1.438141553"
+ }
+ },
+ {
+ "tsince_min": 394.2028672,
+ "position_km": {
+ "x": "-2440.56848578",
+ "y": "-5702.77311877",
+ "z": "1934.81094689"
+ },
+ "velocity_km_s": {
+ "x": "2.731792947",
+ "y": "-3.350576075",
+ "z": "-6.527773339"
+ }
+ },
+ {
+ "tsince_min": 414.2028672,
+ "position_km": {
+ "x": "1951.22934391",
+ "y": "-3423.59443045",
+ "z": "-5121.67808201"
+ },
+ "velocity_km_s": {
+ "x": "3.249039133",
+ "y": "6.465974362",
+ "z": "-3.069806659"
+ }
+ },
+ {
+ "tsince_min": 434.2028672,
+ "position_km": {
+ "x": "2886.50939356",
+ "y": "4888.68626216",
+ "z": "-3096.29885989"
+ },
+ "velocity_km_s": {
+ "x": "-1.973162139",
+ "y": "4.877039020",
+ "z": "5.832414910"
+ }
+ },
+ {
+ "tsince_min": 454.2028672,
+ "position_km": {
+ "x": "-1276.55532182",
+ "y": "4553.26898463",
+ "z": "4406.19787375"
+ },
+ "velocity_km_s": {
+ "x": "-3.715146421",
+ "y": "-5.320176914",
+ "z": "4.418210777"
+ }
+ },
+ {
+ "tsince_min": 474.2028672,
+ "position_km": {
+ "x": "-3181.54698042",
+ "y": "-3831.29976506",
+ "z": "4096.80242787"
+ },
+ "velocity_km_s": {
+ "x": "1.114159970",
+ "y": "-6.104773578",
+ "z": "-4.829967400"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "22674",
+ "description": "SL-6 R/B(2) - 12h resonant ecc > 0.715",
+ "tle_line1": "1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569",
+ "tle_line2": "2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "14712.22023280",
+ "y": "-1443.81061850",
+ "z": "0.83497888"
+ },
+ "velocity_km_s": {
+ "x": "4.418965470",
+ "y": "1.629592098",
+ "z": "4.115531802"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "25418.88807860",
+ "y": "9342.60307989",
+ "z": "23611.46690798"
+ },
+ "velocity_km_s": {
+ "x": "0.051284086",
+ "y": "1.213127306",
+ "z": "2.429004159"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "21619.59550749",
+ "y": "16125.24978864",
+ "z": "36396.79365831"
+ },
+ "velocity_km_s": {
+ "x": "-0.963604380",
+ "y": "0.685454965",
+ "z": "1.177181937"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "12721.50543331",
+ "y": "19258.96193362",
+ "z": "40898.47648359"
+ },
+ "velocity_km_s": {
+ "x": "-1.457448565",
+ "y": "0.179955469",
+ "z": "0.071502601"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "1272.80760054",
+ "y": "18458.41971897",
+ "z": "37044.74742696"
+ },
+ "velocity_km_s": {
+ "x": "-1.674863386",
+ "y": "-0.436454983",
+ "z": "-1.201040990"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-10058.43188619",
+ "y": "11906.60764454",
+ "z": "21739.62097733"
+ },
+ "velocity_km_s": {
+ "x": "-1.245829683",
+ "y": "-1.543789125",
+ "z": "-3.324449221"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "10924.40116466",
+ "y": "-2571.92414170",
+ "z": "-2956.34856294"
+ },
+ "velocity_km_s": {
+ "x": "6.071727751",
+ "y": "1.349579102",
+ "z": "3.898430260"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "25332.14851525",
+ "y": "8398.91099924",
+ "z": "21783.90654357"
+ },
+ "velocity_km_s": {
+ "x": "0.222320754",
+ "y": "1.272214306",
+ "z": "2.580527192"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "22317.71926039",
+ "y": "15574.82086129",
+ "z": "35495.77144092"
+ },
+ "velocity_km_s": {
+ "x": "-0.892750056",
+ "y": "0.737383381",
+ "z": "1.291738834"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "13795.68675885",
+ "y": "19088.83051008",
+ "z": "40803.69584385"
+ },
+ "velocity_km_s": {
+ "x": "-1.420277669",
+ "y": "0.235599456",
+ "z": "0.185517056"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "2515.17145049",
+ "y": "18746.63776282",
+ "z": "37864.58088636"
+ },
+ "velocity_km_s": {
+ "x": "-1.668016053",
+ "y": "-0.360431458",
+ "z": "-1.052854596"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-9084.48602106",
+ "y": "12982.62608646",
+ "z": "24045.63900249"
+ },
+ "velocity_km_s": {
+ "x": "-1.378032363",
+ "y": "-1.373184736",
+ "z": "-3.013963835"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "5647.00909495",
+ "y": "-3293.90518693",
+ "z": "-5425.85235063"
+ },
+ "velocity_km_s": {
+ "x": "8.507977176",
+ "y": "0.414560797",
+ "z": "2.543322806"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "25111.63372210",
+ "y": "7412.55109488",
+ "z": "19844.25781729"
+ },
+ "velocity_km_s": {
+ "x": "0.416496290",
+ "y": "1.332106006",
+ "z": "2.739301737"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "22961.47461641",
+ "y": "14985.74459578",
+ "z": "34511.09257381"
+ },
+ "velocity_km_s": {
+ "x": "-0.816711048",
+ "y": "0.789391108",
+ "z": "1.407901804"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "14841.15301459",
+ "y": "18876.91439870",
+ "z": "40626.25901619"
+ },
+ "velocity_km_s": {
+ "x": "-1.380403341",
+ "y": "0.290228810",
+ "z": "0.298258120"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "3750.70174081",
+ "y": "18978.57939698",
+ "z": "38578.11783220"
+ },
+ "velocity_km_s": {
+ "x": "-1.656939412",
+ "y": "-0.287930881",
+ "z": "-0.910825599"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "-8027.30219489",
+ "y": "13939.54436955",
+ "z": "26136.49045637"
+ },
+ "velocity_km_s": {
+ "x": "-1.474476061",
+ "y": "-1.222693624",
+ "z": "-2.737178731"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "-1296.95657092",
+ "y": "-2813.69369768",
+ "z": "-5871.09587258"
+ },
+ "velocity_km_s": {
+ "x": "9.881929371",
+ "y": "-1.978467207",
+ "z": "-1.922261005"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "24738.60364819",
+ "y": "6383.41644019",
+ "z": "17787.27631900"
+ },
+ "velocity_km_s": {
+ "x": "0.639556952",
+ "y": "1.392554379",
+ "z": "2.906206324"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "23546.85388669",
+ "y": "14358.15602832",
+ "z": "33441.67679479"
+ },
+ "velocity_km_s": {
+ "x": "-0.734895006",
+ "y": "0.841564851",
+ "z": "1.526009909"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "15855.87696303",
+ "y": "18624.05633582",
+ "z": "40367.13420574"
+ },
+ "velocity_km_s": {
+ "x": "-1.337753546",
+ "y": "0.343969522",
+ "z": "0.410018472"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "4976.44933591",
+ "y": "19156.75504042",
+ "z": "39189.68603184"
+ },
+ "velocity_km_s": {
+ "x": "-1.642084365",
+ "y": "-0.218525096",
+ "z": "-0.774148204"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "-6909.20746210",
+ "y": "14790.44707042",
+ "z": "28034.46732222"
+ },
+ "velocity_km_s": {
+ "x": "-1.545152610",
+ "y": "-1.088119523",
+ "z": "-2.487447214"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "-7331.65006707",
+ "y": "-604.17323419",
+ "z": "-2723.51014575"
+ },
+ "velocity_km_s": {
+ "x": "6.168997265",
+ "y": "-3.634011554",
+ "z": "-5.963531682"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "23177",
+ "description": "ARIANE 44L+ R/B - Lyddane bug at <=70 min for atan2()",
+ "tle_line1": "1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95",
+ "tle_line2": "2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-8801.60046706",
+ "y": "-0.03357557",
+ "z": "-0.44522743"
+ },
+ "velocity_km_s": {
+ "x": "-3.835279101",
+ "y": "-7.662552175",
+ "z": "0.944561323"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-1684.34352858",
+ "y": "-31555.95196340",
+ "z": "3888.99944319"
+ },
+ "velocity_km_s": {
+ "x": "2.023055719",
+ "y": "-2.151306405",
+ "z": "0.265065778"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "12325.51410155",
+ "y": "-38982.15046244",
+ "z": "4802.88832275"
+ },
+ "velocity_km_s": {
+ "x": "1.763224157",
+ "y": "-0.102514446",
+ "z": "0.012397139"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "22773.66831936",
+ "y": "-34348.02176606",
+ "z": "4228.77407391"
+ },
+ "velocity_km_s": {
+ "x": "1.067616787",
+ "y": "1.352427865",
+ "z": "-0.166956367"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "26194.40441089",
+ "y": "-19482.94203672",
+ "z": "2393.84774063"
+ },
+ "velocity_km_s": {
+ "x": "-0.313732186",
+ "y": "2.808771328",
+ "z": "-0.346204118"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "8893.50573448",
+ "y": "5763.38890561",
+ "z": "-713.69884164"
+ },
+ "velocity_km_s": {
+ "x": "-7.037399220",
+ "y": "3.022613131",
+ "z": "-0.370272416"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-6028.75686537",
+ "y": "-25648.99913786",
+ "z": "3164.37107274"
+ },
+ "velocity_km_s": {
+ "x": "1.883159288",
+ "y": "-3.177051976",
+ "z": "0.390793162"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "8313.57299056",
+ "y": "-38146.45710922",
+ "z": "4697.80777535"
+ },
+ "velocity_km_s": {
+ "x": "1.905002133",
+ "y": "-0.625883074",
+ "z": "0.076098187"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "20181.29108622",
+ "y": "-36842.60674073",
+ "z": "4529.12568218"
+ },
+ "velocity_km_s": {
+ "x": "1.326244476",
+ "y": "0.921916487",
+ "z": "-0.114527455"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "26302.61794569",
+ "y": "-25173.39539436",
+ "z": "3084.65309986"
+ },
+ "velocity_km_s": {
+ "x": "0.245398835",
+ "y": "2.329974347",
+ "z": "-0.287495880"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "19365.07045602",
+ "y": "-2700.00490122",
+ "z": "317.42727417"
+ },
+ "velocity_km_s": {
+ "x": "-3.009733018",
+ "y": "3.902496058",
+ "z": "-0.478928582"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-9667.81878780",
+ "y": "-16930.19112642",
+ "z": "2095.87469034"
+ },
+ "velocity_km_s": {
+ "x": "1.279288285",
+ "y": "-4.736005905",
+ "z": "0.582878255"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "4021.31438583",
+ "y": "-36066.09209609",
+ "z": "4442.91587411"
+ },
+ "velocity_km_s": {
+ "x": "2.007322354",
+ "y": "-1.227461376",
+ "z": "0.149383897"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "23333",
+ "description": "WIND - STR#3 Kepler fails past ~200 min",
+ "tle_line1": "1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15",
+ "tle_line2": "2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70",
+ "startmfe": 0.0,
+ "stopmfe": 1600.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-9301.24542292",
+ "y": "3326.10200382",
+ "z": "2318.36441127"
+ },
+ "velocity_km_s": {
+ "x": "-8.729303005",
+ "y": "-0.828225037",
+ "z": "-0.122314827"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-44672.91239680",
+ "y": "-6213.11996581",
+ "z": "-1738.80131727"
+ },
+ "velocity_km_s": {
+ "x": "-3.719475070",
+ "y": "-1.336673022",
+ "z": "-0.621888261"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-67053.08885388",
+ "y": "-14994.69685946",
+ "z": "-5897.99072793"
+ },
+ "velocity_km_s": {
+ "x": "-2.860576613",
+ "y": "-1.183771565",
+ "z": "-0.568473909"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-85227.84253168",
+ "y": "-22897.08484471",
+ "z": "-9722.59184564"
+ },
+ "velocity_km_s": {
+ "x": "-2.426469823",
+ "y": "-1.078592475",
+ "z": "-0.525341431"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-100986.00419136",
+ "y": "-30171.19698695",
+ "z": "-13283.77044765"
+ },
+ "velocity_km_s": {
+ "x": "-2.147108978",
+ "y": "-1.000530827",
+ "z": "-0.491587582"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-115093.00686387",
+ "y": "-36962.56316477",
+ "z": "-16634.15682929"
+ },
+ "velocity_km_s": {
+ "x": "-1.945446188",
+ "y": "-0.938947736",
+ "z": "-0.464199202"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-127965.80064891",
+ "y": "-43363.32967165",
+ "z": "-19809.90480432"
+ },
+ "velocity_km_s": {
+ "x": "-1.789652016",
+ "y": "-0.888278463",
+ "z": "-0.441254468"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-139863.28332207",
+ "y": "-49436.45704153",
+ "z": "-22836.80438139"
+ },
+ "velocity_km_s": {
+ "x": "-1.663762568",
+ "y": "-0.845315913",
+ "z": "-0.421548627"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-150960.22978259",
+ "y": "-55227.45413896",
+ "z": "-25734.01408879"
+ },
+ "velocity_km_s": {
+ "x": "-1.558730986",
+ "y": "-0.808061065",
+ "z": "-0.404293846"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-161381.71414630",
+ "y": "-60770.64040903",
+ "z": "-28516.26290017"
+ },
+ "velocity_km_s": {
+ "x": "-1.468977174",
+ "y": "-0.775190459",
+ "z": "-0.388951810"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-171221.18736947",
+ "y": "-66092.76474442",
+ "z": "-31195.19847387"
+ },
+ "velocity_km_s": {
+ "x": "-1.390837596",
+ "y": "-0.745785633",
+ "z": "-0.375140398"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-180550.82888746",
+ "y": "-71215.23290630",
+ "z": "-33780.24938270"
+ },
+ "velocity_km_s": {
+ "x": "-1.321788672",
+ "y": "-0.719184752",
+ "z": "-0.362579495"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-189427.87533074",
+ "y": "-76155.54943344",
+ "z": "-36279.19882816"
+ },
+ "velocity_km_s": {
+ "x": "-1.260024473",
+ "y": "-0.694896053",
+ "z": "-0.351058133"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "-197898.69401409",
+ "y": "-80928.29015181",
+ "z": "-38698.57972447"
+ },
+ "velocity_km_s": {
+ "x": "-1.204211888",
+ "y": "-0.672544709",
+ "z": "-0.340413731"
+ }
+ },
+ {
+ "tsince_min": 1600.0,
+ "position_km": {
+ "x": "-200638.82986236",
+ "y": "-82484.14969882",
+ "z": "-39488.34331447"
+ },
+ "velocity_km_s": {
+ "x": "-1.186748462",
+ "y": "-0.665472422",
+ "z": "-0.337037582"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "23599",
+ "description": "ARIANE 42P+3 R/B - Lyddane bug at >280.5 min for AcTan() (fig)",
+ "tle_line1": "1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905",
+ "tle_line2": "2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555",
+ "startmfe": 0.0,
+ "stopmfe": 720.0,
+ "deltamin": 20.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "9892.63794341",
+ "y": "35.76144969",
+ "z": "-1.08228838"
+ },
+ "velocity_km_s": {
+ "x": "3.556643237",
+ "y": "6.456009375",
+ "z": "0.783610890"
+ }
+ },
+ {
+ "tsince_min": 20.0,
+ "position_km": {
+ "x": "11931.95642997",
+ "y": "7340.74973750",
+ "z": "886.46365987"
+ },
+ "velocity_km_s": {
+ "x": "0.308329116",
+ "y": "5.532328972",
+ "z": "0.672887281"
+ }
+ },
+ {
+ "tsince_min": 40.0,
+ "position_km": {
+ "x": "11321.71039205",
+ "y": "13222.84749156",
+ "z": "1602.40119049"
+ },
+ "velocity_km_s": {
+ "x": "-1.151973982",
+ "y": "4.285810871",
+ "z": "0.521919425"
+ }
+ },
+ {
+ "tsince_min": 60.0,
+ "position_km": {
+ "x": "9438.29395675",
+ "y": "17688.05450261",
+ "z": "2146.59293402"
+ },
+ "velocity_km_s": {
+ "x": "-1.907904054",
+ "y": "3.179955046",
+ "z": "0.387692479"
+ }
+ },
+ {
+ "tsince_min": 80.0,
+ "position_km": {
+ "x": "6872.08634639",
+ "y": "20910.11016811",
+ "z": "2539.79945034"
+ },
+ "velocity_km_s": {
+ "x": "-2.323995367",
+ "y": "2.207398462",
+ "z": "0.269506121"
+ }
+ },
+ {
+ "tsince_min": 100.0,
+ "position_km": {
+ "x": "3933.37509798",
+ "y": "23024.07662542",
+ "z": "2798.25966746"
+ },
+ "velocity_km_s": {
+ "x": "-2.542860616",
+ "y": "1.327134966",
+ "z": "0.162450076"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "816.64091546",
+ "y": "24118.98675475",
+ "z": "2932.69459428"
+ },
+ "velocity_km_s": {
+ "x": "-2.626838010",
+ "y": "0.504502763",
+ "z": "0.062344306"
+ }
+ },
+ {
+ "tsince_min": 140.0,
+ "position_km": {
+ "x": "-2334.41705804",
+ "y": "24246.86096326",
+ "z": "2949.36448841"
+ },
+ "velocity_km_s": {
+ "x": "-2.602259646",
+ "y": "-0.288058266",
+ "z": "-0.034145135"
+ }
+ },
+ {
+ "tsince_min": 160.0,
+ "position_km": {
+ "x": "-5394.31798039",
+ "y": "23429.42716149",
+ "z": "2850.86832586"
+ },
+ "velocity_km_s": {
+ "x": "-2.474434068",
+ "y": "-1.074055982",
+ "z": "-0.129868366"
+ }
+ },
+ {
+ "tsince_min": 180.0,
+ "position_km": {
+ "x": "-8233.35130237",
+ "y": "21661.24480883",
+ "z": "2636.51456118"
+ },
+ "velocity_km_s": {
+ "x": "-2.230845533",
+ "y": "-1.875742344",
+ "z": "-0.227528603"
+ }
+ },
+ {
+ "tsince_min": 200.0,
+ "position_km": {
+ "x": "-10693.96497348",
+ "y": "18909.88168891",
+ "z": "2302.33707548"
+ },
+ "velocity_km_s": {
+ "x": "-1.835912433",
+ "y": "-2.716169865",
+ "z": "-0.329931880"
+ }
+ },
+ {
+ "tsince_min": 220.0,
+ "position_km": {
+ "x": "-12553.89669904",
+ "y": "15114.63990716",
+ "z": "1840.93573231"
+ },
+ "velocity_km_s": {
+ "x": "-1.212478879",
+ "y": "-3.619036996",
+ "z": "-0.439970633"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-13450.20591864",
+ "y": "10190.57904289",
+ "z": "1241.95958736"
+ },
+ "velocity_km_s": {
+ "x": "-0.189082511",
+ "y": "-4.596701971",
+ "z": "-0.559173899"
+ }
+ },
+ {
+ "tsince_min": 260.0,
+ "position_km": {
+ "x": "-12686.60437121",
+ "y": "4079.31106161",
+ "z": "498.27078614"
+ },
+ "velocity_km_s": {
+ "x": "1.664498211",
+ "y": "-5.559889865",
+ "z": "-0.676747779"
+ }
+ },
+ {
+ "tsince_min": 280.0,
+ "position_km": {
+ "x": "-8672.55867753",
+ "y": "-2827.56823315",
+ "z": "-342.59644716"
+ },
+ "velocity_km_s": {
+ "x": "5.515079852",
+ "y": "-5.551222962",
+ "z": "-0.676360044"
+ }
+ },
+ {
+ "tsince_min": 300.0,
+ "position_km": {
+ "x": "1153.31498060",
+ "y": "-6411.98692060",
+ "z": "-779.87288941"
+ },
+ "velocity_km_s": {
+ "x": "9.689818102",
+ "y": "1.388598425",
+ "z": "0.167868798"
+ }
+ },
+ {
+ "tsince_min": 320.0,
+ "position_km": {
+ "x": "9542.79201056",
+ "y": "-533.71253081",
+ "z": "-65.73165428"
+ },
+ "velocity_km_s": {
+ "x": "3.926947087",
+ "y": "6.459583539",
+ "z": "0.785686755"
+ }
+ },
+ {
+ "tsince_min": 340.0,
+ "position_km": {
+ "x": "11868.80960100",
+ "y": "6861.59590848",
+ "z": "833.72780602"
+ },
+ "velocity_km_s": {
+ "x": "0.452957852",
+ "y": "5.632811328",
+ "z": "0.685262323"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "11376.23941678",
+ "y": "12858.97121366",
+ "z": "1563.40660172"
+ },
+ "velocity_km_s": {
+ "x": "-1.087665695",
+ "y": "4.374693347",
+ "z": "0.532207051"
+ }
+ },
+ {
+ "tsince_min": 380.0,
+ "position_km": {
+ "x": "9547.70300782",
+ "y": "17421.48570758",
+ "z": "2118.56907515"
+ },
+ "velocity_km_s": {
+ "x": "-1.876540262",
+ "y": "3.253891728",
+ "z": "0.395810243"
+ }
+ },
+ {
+ "tsince_min": 400.0,
+ "position_km": {
+ "x": "7008.51470263",
+ "y": "20725.47471227",
+ "z": "2520.56064289"
+ },
+ "velocity_km_s": {
+ "x": "-2.308703599",
+ "y": "2.270724438",
+ "z": "0.276138613"
+ }
+ },
+ {
+ "tsince_min": 420.0,
+ "position_km": {
+ "x": "4083.18551180",
+ "y": "22910.88306802",
+ "z": "2786.35642660"
+ },
+ "velocity_km_s": {
+ "x": "-2.536610941",
+ "y": "1.383768875",
+ "z": "0.168165414"
+ }
+ },
+ {
+ "tsince_min": 440.0,
+ "position_km": {
+ "x": "970.13107533",
+ "y": "24071.19896282",
+ "z": "2927.30875440"
+ },
+ "velocity_km_s": {
+ "x": "-2.626673095",
+ "y": "0.557274717",
+ "z": "0.067549303"
+ }
+ },
+ {
+ "tsince_min": 460.0,
+ "position_km": {
+ "x": "-2183.75499348",
+ "y": "24261.30188126",
+ "z": "2950.09189560"
+ },
+ "velocity_km_s": {
+ "x": "-2.607082241",
+ "y": "-0.236785937",
+ "z": "-0.029112844"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-5252.49066783",
+ "y": "23505.58108388",
+ "z": "2857.68628654"
+ },
+ "velocity_km_s": {
+ "x": "-2.484465059",
+ "y": "-1.022158411",
+ "z": "-0.124702643"
+ }
+ },
+ {
+ "tsince_min": 500.0,
+ "position_km": {
+ "x": "-8107.41437587",
+ "y": "21801.13395060",
+ "z": "2649.76852683"
+ },
+ "velocity_km_s": {
+ "x": "-2.247669530",
+ "y": "-1.821071275",
+ "z": "-0.221914939"
+ }
+ },
+ {
+ "tsince_min": 520.0,
+ "position_km": {
+ "x": "-10594.01813094",
+ "y": "19118.22269010",
+ "z": "2322.77197767"
+ },
+ "velocity_km_s": {
+ "x": "-1.863224062",
+ "y": "-2.656353699",
+ "z": "-0.323512642"
+ }
+ },
+ {
+ "tsince_min": 540.0,
+ "position_km": {
+ "x": "-12496.70758499",
+ "y": "15399.13096351",
+ "z": "1869.75958053"
+ },
+ "velocity_km_s": {
+ "x": "-1.258272118",
+ "y": "-3.551534022",
+ "z": "-0.432332913"
+ }
+ },
+ {
+ "tsince_min": 560.0,
+ "position_km": {
+ "x": "-13467.50382653",
+ "y": "10561.43040038",
+ "z": "1280.84842178"
+ },
+ "velocity_km_s": {
+ "x": "-0.272050695",
+ "y": "-4.520503543",
+ "z": "-0.550014833"
+ }
+ },
+ {
+ "tsince_min": 580.0,
+ "position_km": {
+ "x": "-12848.00717497",
+ "y": "4541.72432009",
+ "z": "548.59976478"
+ },
+ "velocity_km_s": {
+ "x": "1.493938056",
+ "y": "-5.489644146",
+ "z": "-0.667479244"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-9152.79920397",
+ "y": "-2343.88902799",
+ "z": "-287.93741332"
+ },
+ "velocity_km_s": {
+ "x": "5.127695273",
+ "y": "-5.650584983",
+ "z": "-0.686013644"
+ }
+ },
+ {
+ "tsince_min": 620.0,
+ "position_km": {
+ "x": "280.12478642",
+ "y": "-6500.11368508",
+ "z": "-790.36236302"
+ },
+ "velocity_km_s": {
+ "x": "9.779642904",
+ "y": "0.581430120",
+ "z": "0.074124421"
+ }
+ },
+ {
+ "tsince_min": 640.0,
+ "position_km": {
+ "x": "9166.21406115",
+ "y": "-1093.48756223",
+ "z": "-129.53833135"
+ },
+ "velocity_km_s": {
+ "x": "4.316926785",
+ "y": "6.438465969",
+ "z": "0.785095966"
+ }
+ },
+ {
+ "tsince_min": 660.0,
+ "position_km": {
+ "x": "11794.74563870",
+ "y": "6381.74484842",
+ "z": "780.82775971"
+ },
+ "velocity_km_s": {
+ "x": "0.604642523",
+ "y": "5.731705440",
+ "z": "0.697571522"
+ }
+ },
+ {
+ "tsince_min": 680.0,
+ "position_km": {
+ "x": "11424.80363789",
+ "y": "12493.80833338",
+ "z": "1524.27683836"
+ },
+ "velocity_km_s": {
+ "x": "-1.021148661",
+ "y": "4.463489406",
+ "z": "0.542537702"
+ }
+ },
+ {
+ "tsince_min": 700.0,
+ "position_km": {
+ "x": "9652.78920084",
+ "y": "17153.46470428",
+ "z": "2090.43413681"
+ },
+ "velocity_km_s": {
+ "x": "-1.844382696",
+ "y": "3.327595388",
+ "z": "0.403924198"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "7141.24742526",
+ "y": "20538.97115158",
+ "z": "2501.18059966"
+ },
+ "velocity_km_s": {
+ "x": "-2.293079623",
+ "y": "2.333598993",
+ "z": "0.282727441"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "24208",
+ "description": "ITALSAT 2 - 24h resonant GEO, inclination > 3 deg",
+ "tle_line1": "1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600",
+ "tle_line2": "2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "7534.10987189",
+ "y": "41266.39266843",
+ "z": "-0.10801028"
+ },
+ "velocity_km_s": {
+ "x": "-3.027168008",
+ "y": "0.558848996",
+ "z": "0.207982755"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-14289.19940414",
+ "y": "39469.05530051",
+ "z": "1428.62838591"
+ },
+ "velocity_km_s": {
+ "x": "-2.893205245",
+ "y": "-1.045447840",
+ "z": "0.179634249"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-32222.92014955",
+ "y": "26916.25425799",
+ "z": "2468.59996594"
+ },
+ "velocity_km_s": {
+ "x": "-1.973007929",
+ "y": "-2.359335071",
+ "z": "0.102539376"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-41413.95109398",
+ "y": "7055.51656639",
+ "z": "2838.90906671"
+ },
+ "velocity_km_s": {
+ "x": "-0.521665080",
+ "y": "-3.029172207",
+ "z": "-0.002066843"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-39402.72251896",
+ "y": "-14716.42475223",
+ "z": "2441.32678358"
+ },
+ "velocity_km_s": {
+ "x": "1.066928187",
+ "y": "-2.878714619",
+ "z": "-0.105865729"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-26751.08889828",
+ "y": "-32515.13982431",
+ "z": "1384.38865570"
+ },
+ "velocity_km_s": {
+ "x": "2.366228869",
+ "y": "-1.951032799",
+ "z": "-0.181018498"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-6874.77975542",
+ "y": "-41530.38329422",
+ "z": "-46.60245459"
+ },
+ "velocity_km_s": {
+ "x": "3.027415087",
+ "y": "-0.494671177",
+ "z": "-0.207337260"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "14859.52039042",
+ "y": "-39302.58907247",
+ "z": "-1465.02482524"
+ },
+ "velocity_km_s": {
+ "x": "2.869609883",
+ "y": "1.100123969",
+ "z": "-0.177514425"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "32553.14863770",
+ "y": "-26398.88401807",
+ "z": "-2485.45866002"
+ },
+ "velocity_km_s": {
+ "x": "1.930064459",
+ "y": "2.401574539",
+ "z": "-0.099250520"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "41365.67576837",
+ "y": "-6298.09965811",
+ "z": "-2828.05254033"
+ },
+ "velocity_km_s": {
+ "x": "0.459741276",
+ "y": "3.051680214",
+ "z": "0.006431872"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "38858.83295070",
+ "y": "15523.39314924",
+ "z": "-2396.86850752"
+ },
+ "velocity_km_s": {
+ "x": "-1.140211488",
+ "y": "2.867567143",
+ "z": "0.110637217"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "25701.46068162",
+ "y": "33089.42617648",
+ "z": "-1308.68556638"
+ },
+ "velocity_km_s": {
+ "x": "-2.428713821",
+ "y": "1.897381431",
+ "z": "0.184605907"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "5501.08137100",
+ "y": "41590.27784405",
+ "z": "138.32522930"
+ },
+ "velocity_km_s": {
+ "x": "-3.050691874",
+ "y": "0.409203052",
+ "z": "0.207958133"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "25954",
+ "description": "AMC-4 - low incl, incl shift with GSFC version (fig)",
+ "tle_line1": "1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847",
+ "tle_line2": "2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615",
+ "startmfe": -1440.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "8827.15660472",
+ "y": "-41223.00971237",
+ "z": "3.63482963"
+ },
+ "velocity_km_s": {
+ "x": "3.007087319",
+ "y": "0.643701323",
+ "z": "0.000941663"
+ }
+ },
+ {
+ "tsince_min": -1440.0,
+ "position_km": {
+ "x": "8118.18519221",
+ "y": "-41368.40537378",
+ "z": "4.11046687"
+ },
+ "velocity_km_s": {
+ "x": "3.017696741",
+ "y": "0.591994297",
+ "z": "0.000933016"
+ }
+ },
+ {
+ "tsince_min": -1320.0,
+ "position_km": {
+ "x": "27766.34015328",
+ "y": "-31724.97000557",
+ "z": "9.93297846"
+ },
+ "velocity_km_s": {
+ "x": "2.314236153",
+ "y": "2.024903193",
+ "z": "0.000660861"
+ }
+ },
+ {
+ "tsince_min": -1200.0,
+ "position_km": {
+ "x": "39932.57237973",
+ "y": "-13532.60040454",
+ "z": "13.12958252"
+ },
+ "velocity_km_s": {
+ "x": "0.987382819",
+ "y": "2.911942843",
+ "z": "0.000213298"
+ }
+ },
+ {
+ "tsince_min": -1080.0,
+ "position_km": {
+ "x": "41341.01365441",
+ "y": "8305.71681955",
+ "z": "12.84988501"
+ },
+ "velocity_km_s": {
+ "x": "-0.605098224",
+ "y": "3.014378268",
+ "z": "-0.000291034"
+ }
+ },
+ {
+ "tsince_min": -960.0,
+ "position_km": {
+ "x": "31614.99210558",
+ "y": "27907.29155353",
+ "z": "9.16618797"
+ },
+ "velocity_km_s": {
+ "x": "-2.034243523",
+ "y": "2.305014102",
+ "z": "-0.000718418"
+ }
+ },
+ {
+ "tsince_min": -840.0,
+ "position_km": {
+ "x": "13375.75227587",
+ "y": "39994.27017651",
+ "z": "3.05416854"
+ },
+ "velocity_km_s": {
+ "x": "-2.915424366",
+ "y": "0.975119874",
+ "z": "-0.000955576"
+ }
+ },
+ {
+ "tsince_min": -720.0,
+ "position_km": {
+ "x": "-8464.89963309",
+ "y": "41312.93549892",
+ "z": "-3.86622919"
+ },
+ "velocity_km_s": {
+ "x": "-3.011600615",
+ "y": "-0.617275050",
+ "z": "-0.000939664"
+ }
+ },
+ {
+ "tsince_min": -600.0,
+ "position_km": {
+ "x": "-28026.23406158",
+ "y": "31507.89995661",
+ "z": "-9.76047869"
+ },
+ "velocity_km_s": {
+ "x": "-2.296840160",
+ "y": "-2.043607595",
+ "z": "-0.000674889"
+ }
+ },
+ {
+ "tsince_min": -480.0,
+ "position_km": {
+ "x": "-40040.01314363",
+ "y": "13218.00579413",
+ "z": "-13.06594832"
+ },
+ "velocity_km_s": {
+ "x": "-0.963328772",
+ "y": "-2.919827983",
+ "z": "-0.000231414"
+ }
+ },
+ {
+ "tsince_min": -360.0,
+ "position_km": {
+ "x": "-41268.43291976",
+ "y": "-8632.06859693",
+ "z": "-12.90661266"
+ },
+ "velocity_km_s": {
+ "x": "0.630042315",
+ "y": "-3.009677376",
+ "z": "0.000273163"
+ }
+ },
+ {
+ "tsince_min": -240.0,
+ "position_km": {
+ "x": "-31377.85317015",
+ "y": "-28156.13970334",
+ "z": "-9.32605530"
+ },
+ "velocity_km_s": {
+ "x": "2.054021717",
+ "y": "-2.288554158",
+ "z": "0.000704959"
+ }
+ },
+ {
+ "tsince_min": -120.0,
+ "position_km": {
+ "x": "-13031.41552688",
+ "y": "-40092.33381029",
+ "z": "-3.27636660"
+ },
+ "velocity_km_s": {
+ "x": "2.924657466",
+ "y": "-0.950541167",
+ "z": "0.000949381"
+ }
+ },
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "8827.15660472",
+ "y": "-41223.00971237",
+ "z": "3.63482963"
+ },
+ "velocity_km_s": {
+ "x": "3.007087319",
+ "y": "0.643701323",
+ "z": "0.000941663"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "28306.85426674",
+ "y": "-31243.80147394",
+ "z": "9.57216891"
+ },
+ "velocity_km_s": {
+ "x": "2.279137743",
+ "y": "2.064316875",
+ "z": "0.000684127"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "40159.05128805",
+ "y": "-12845.39151157",
+ "z": "12.96086316"
+ },
+ "velocity_km_s": {
+ "x": "0.937265422",
+ "y": "2.928448287",
+ "z": "0.000245505"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "41192.55903455",
+ "y": "9013.79606759",
+ "z": "12.90495666"
+ },
+ "velocity_km_s": {
+ "x": "-0.656727442",
+ "y": "3.003543458",
+ "z": "-0.000257479"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "31131.69755798",
+ "y": "28445.55681731",
+ "z": "9.42419238"
+ },
+ "velocity_km_s": {
+ "x": "-2.073484842",
+ "y": "2.269770851",
+ "z": "-0.000691233"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "12687.81846530",
+ "y": "40217.83324639",
+ "z": "3.44726249"
+ },
+ "velocity_km_s": {
+ "x": "-2.931721827",
+ "y": "0.924962230",
+ "z": "-0.000940766"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-9172.23500245",
+ "y": "41161.63475527",
+ "z": "-3.43575757"
+ },
+ "velocity_km_s": {
+ "x": "-3.000571486",
+ "y": "-0.668847508",
+ "z": "-0.000940101"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-28562.51093192",
+ "y": "31022.45987587",
+ "z": "-9.39562161"
+ },
+ "velocity_km_s": {
+ "x": "-2.261449202",
+ "y": "-2.082713897",
+ "z": "-0.000689669"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-40260.77504549",
+ "y": "12529.11484344",
+ "z": "-12.84915105"
+ },
+ "velocity_km_s": {
+ "x": "-0.913097031",
+ "y": "-2.935933528",
+ "z": "-0.000256181"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-41114.14376538",
+ "y": "-9338.87194483",
+ "z": "-12.87952404"
+ },
+ "velocity_km_s": {
+ "x": "0.681588815",
+ "y": "-2.998432565",
+ "z": "0.000245006"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-30890.01512240",
+ "y": "-28690.40750792",
+ "z": "-9.48037212"
+ },
+ "velocity_km_s": {
+ "x": "2.092989805",
+ "y": "-2.252978152",
+ "z": "0.000680459"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-12341.46194020",
+ "y": "-40310.06316386",
+ "z": "-3.55833201"
+ },
+ "velocity_km_s": {
+ "x": "2.940537098",
+ "y": "-0.900219523",
+ "z": "0.000934170"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "9533.27750818",
+ "y": "-41065.52390214",
+ "z": "3.30756482"
+ },
+ "velocity_km_s": {
+ "x": "2.995596171",
+ "y": "0.695200236",
+ "z": "0.000938525"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "26900",
+ "description": "INTELSAT 902 - negative incl at 9313 min",
+ "tle_line1": "1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290",
+ "tle_line2": "2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981",
+ "startmfe": 9300.0,
+ "stopmfe": 9400.0,
+ "deltamin": 60.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-42014.83795787",
+ "y": "3702.34357772",
+ "z": "-26.67500257"
+ },
+ "velocity_km_s": {
+ "x": "-0.269775247",
+ "y": "-3.061854393",
+ "z": "0.000336726"
+ }
+ },
+ {
+ "tsince_min": 9300.0,
+ "position_km": {
+ "x": "40968.68133298",
+ "y": "-9905.99156086",
+ "z": "11.84946837"
+ },
+ "velocity_km_s": {
+ "x": "0.722756848",
+ "y": "2.989645389",
+ "z": "-0.000161261"
+ }
+ },
+ {
+ "tsince_min": 9360.0,
+ "position_km": {
+ "x": "42135.66858481",
+ "y": "1072.99195618",
+ "z": "10.83481752"
+ },
+ "velocity_km_s": {
+ "x": "-0.078150602",
+ "y": "3.074772455",
+ "z": "-0.000380063"
+ }
+ },
+ {
+ "tsince_min": 9400.0,
+ "position_km": {
+ "x": "41304.75156132",
+ "y": "8398.27742944",
+ "z": "9.74006214"
+ },
+ "velocity_km_s": {
+ "x": "-0.612515135",
+ "y": "3.014117469",
+ "z": "-0.000511575"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "26975",
+ "description": "COSMOS 1024 DEB - 12h resonant ecc 0.5-0.65",
+ "tle_line1": "1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809",
+ "tle_line2": "2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-14506.92313768",
+ "y": "-21613.56043281",
+ "z": "10.05018894"
+ },
+ "velocity_km_s": {
+ "x": "2.212943308",
+ "y": "1.159970892",
+ "z": "3.020600202"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "7309.62197950",
+ "y": "6076.00713664",
+ "z": "6800.08705263"
+ },
+ "velocity_km_s": {
+ "x": "1.300543383",
+ "y": "5.322579615",
+ "z": "-4.788746312"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-3882.62933791",
+ "y": "11960.00543452",
+ "z": "-25088.14383845"
+ },
+ "velocity_km_s": {
+ "x": "-2.146773699",
+ "y": "-1.372461491",
+ "z": "-2.579382089"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-16785.45507465",
+ "y": "-734.79159704",
+ "z": "-34300.57085853"
+ },
+ "velocity_km_s": {
+ "x": "-1.386528125",
+ "y": "-1.907762641",
+ "z": "-0.220949641"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-23524.16689356",
+ "y": "-13629.45124622",
+ "z": "-30246.27899200"
+ },
+ "velocity_km_s": {
+ "x": "-0.462846784",
+ "y": "-1.586139830",
+ "z": "1.269293624"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-22890.23597092",
+ "y": "-22209.35900155",
+ "z": "-16769.91946116"
+ },
+ "velocity_km_s": {
+ "x": "0.704351342",
+ "y": "-0.671112594",
+ "z": "2.432433851"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-11646.39698980",
+ "y": "-19855.44222106",
+ "z": "3574.00109607"
+ },
+ "velocity_km_s": {
+ "x": "2.626712727",
+ "y": "1.815887329",
+ "z": "2.960883901"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "7665.76124241",
+ "y": "11159.78946577",
+ "z": "345.93813117"
+ },
+ "velocity_km_s": {
+ "x": "-0.584818007",
+ "y": "3.193514161",
+ "z": "-5.750338922"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-6369.35388112",
+ "y": "10204.80073022",
+ "z": "-27844.52150384"
+ },
+ "velocity_km_s": {
+ "x": "-2.050573276",
+ "y": "-1.582940542",
+ "z": "-2.076075232"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-18345.64763145",
+ "y": "-2977.76684430",
+ "z": "-34394.90760612"
+ },
+ "velocity_km_s": {
+ "x": "-1.243589864",
+ "y": "-1.892050757",
+ "z": "0.060372061"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-23979.74839255",
+ "y": "-15436.44139571",
+ "z": "-28616.50540218"
+ },
+ "velocity_km_s": {
+ "x": "-0.294973425",
+ "y": "-1.482987916",
+ "z": "1.478255628"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-21921.97167880",
+ "y": "-22852.45147658",
+ "z": "-13784.85308485"
+ },
+ "velocity_km_s": {
+ "x": "0.945455629",
+ "y": "-0.428940995",
+ "z": "2.596964378"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-8266.43821031",
+ "y": "-17210.74590112",
+ "z": "6967.95546070"
+ },
+ "velocity_km_s": {
+ "x": "3.082244069",
+ "y": "2.665881872",
+ "z": "2.712555075"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "6286.85464535",
+ "y": "13809.56328971",
+ "z": "-6321.60663781"
+ },
+ "velocity_km_s": {
+ "x": "-1.615964016",
+ "y": "1.383135377",
+ "z": "-5.358719132"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "-8730.87526788",
+ "y": "8244.63344365",
+ "z": "-30039.92372791"
+ },
+ "velocity_km_s": {
+ "x": "-1.935622871",
+ "y": "-1.724162072",
+ "z": "-1.631224738"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-19735.81883249",
+ "y": "-5191.76593007",
+ "z": "-34166.14974143"
+ },
+ "velocity_km_s": {
+ "x": "-1.097835530",
+ "y": "-1.860148418",
+ "z": "0.324401050"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "-24232.73847703",
+ "y": "-17112.08243255",
+ "z": "-26742.88893252"
+ },
+ "velocity_km_s": {
+ "x": "-0.119786184",
+ "y": "-1.364365317",
+ "z": "1.680220468"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "-20654.45640708",
+ "y": "-23184.54386047",
+ "z": "-10611.55144716"
+ },
+ "velocity_km_s": {
+ "x": "1.209238113",
+ "y": "-0.144169639",
+ "z": "2.748054938"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "-4337.15988957",
+ "y": "-13410.46817244",
+ "z": "9870.45949215"
+ },
+ "velocity_km_s": {
+ "x": "3.532753095",
+ "y": "3.772236461",
+ "z": "2.088424247"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "4074.62263523",
+ "y": "14698.07548285",
+ "z": "-12248.65327973"
+ },
+ "velocity_km_s": {
+ "x": "-2.053824693",
+ "y": "0.203325817",
+ "z": "-4.607867718"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "-10950.23438984",
+ "y": "6148.66879447",
+ "z": "-31736.65532865"
+ },
+ "velocity_km_s": {
+ "x": "-1.809875605",
+ "y": "-1.816179062",
+ "z": "-1.233364913"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "-20952.40702045",
+ "y": "-7358.71507895",
+ "z": "-33633.06643074"
+ },
+ "velocity_km_s": {
+ "x": "-0.948973031",
+ "y": "-1.813594137",
+ "z": "0.573893078"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "-24273.48944134",
+ "y": "-18637.15546906",
+ "z": "-24633.27702390"
+ },
+ "velocity_km_s": {
+ "x": "0.064161440",
+ "y": "-1.228537560",
+ "z": "1.875728935"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "-19057.55468077",
+ "y": "-23148.29322082",
+ "z": "-7269.38614178"
+ },
+ "velocity_km_s": {
+ "x": "1.500802809",
+ "y": "0.195383037",
+ "z": "2.879031237"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "43.69305308",
+ "y": "-8145.90299207",
+ "z": "11634.57079913"
+ },
+ "velocity_km_s": {
+ "x": "3.780661682",
+ "y": "5.105315423",
+ "z": "0.714401345"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "28057",
+ "description": "CBERS 2 - Near Earth, ecc=8.84E-5, drop normal drag terms",
+ "tle_line1": "1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836",
+ "tle_line2": "2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-2715.28237486",
+ "y": "-6619.26436889",
+ "z": "-0.01341443"
+ },
+ "velocity_km_s": {
+ "x": "-1.008587273",
+ "y": "0.422782003",
+ "z": "7.385272942"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-1816.87920942",
+ "y": "-1835.78762132",
+ "z": "6661.07926465"
+ },
+ "velocity_km_s": {
+ "x": "2.325140071",
+ "y": "6.655669329",
+ "z": "2.463394512"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "1483.17364291",
+ "y": "5395.21248786",
+ "z": "4448.65907172"
+ },
+ "velocity_km_s": {
+ "x": "2.560540387",
+ "y": "4.039025766",
+ "z": "-5.736648561"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "2801.25607157",
+ "y": "5455.03931333",
+ "z": "-3692.12865695"
+ },
+ "velocity_km_s": {
+ "x": "-0.595095864",
+ "y": "-3.951923117",
+ "z": "-6.298799125"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "411.09332812",
+ "y": "-1728.99769152",
+ "z": "-6935.45548810"
+ },
+ "velocity_km_s": {
+ "x": "-2.935970964",
+ "y": "-6.684085058",
+ "z": "1.492800886"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-2506.52558454",
+ "y": "-6628.98655094",
+ "z": "-988.07784497"
+ },
+ "velocity_km_s": {
+ "x": "-1.390577189",
+ "y": "-0.556164143",
+ "z": "7.312736468"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-2090.79884266",
+ "y": "-2723.22832193",
+ "z": "6266.13356576"
+ },
+ "velocity_km_s": {
+ "x": "1.992640665",
+ "y": "6.337529519",
+ "z": "3.411803080"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "1091.80560222",
+ "y": "4809.88229503",
+ "z": "5172.42897894"
+ },
+ "velocity_km_s": {
+ "x": "2.717483546",
+ "y": "4.805518977",
+ "z": "-5.030019896"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "2811.14062300",
+ "y": "5950.65707171",
+ "z": "-2813.23705389"
+ },
+ "velocity_km_s": {
+ "x": "-0.159662742",
+ "y": "-3.121215491",
+ "z": "-6.775341949"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "805.72698304",
+ "y": "-812.16627907",
+ "z": "-7067.58483968"
+ },
+ "velocity_km_s": {
+ "x": "-2.798936020",
+ "y": "-6.889265977",
+ "z": "0.472770873"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-2249.59837532",
+ "y": "-6505.84890714",
+ "z": "-1956.72365062"
+ },
+ "velocity_km_s": {
+ "x": "-1.731234729",
+ "y": "-1.528750230",
+ "z": "7.096660885"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-2311.57375797",
+ "y": "-3560.99112891",
+ "z": "5748.16749600"
+ },
+ "velocity_km_s": {
+ "x": "1.626569751",
+ "y": "5.890482233",
+ "z": "4.293545048"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "688.16056594",
+ "y": "4124.87618964",
+ "z": "5794.55994449"
+ },
+ "velocity_km_s": {
+ "x": "2.810973665",
+ "y": "5.479585563",
+ "z": "-4.224866316"
+ }
+ },
+ {
+ "tsince_min": 1560.0,
+ "position_km": {
+ "x": "2759.94088230",
+ "y": "6329.87271798",
+ "z": "-1879.19518331"
+ },
+ "velocity_km_s": {
+ "x": "0.266930672",
+ "y": "-2.222670878",
+ "z": "-7.119390567"
+ }
+ },
+ {
+ "tsince_min": 1680.0,
+ "position_km": {
+ "x": "1171.50677137",
+ "y": "125.82053748",
+ "z": "-7061.96626202"
+ },
+ "velocity_km_s": {
+ "x": "-2.605687852",
+ "y": "-6.958489749",
+ "z": "-0.556333225"
+ }
+ },
+ {
+ "tsince_min": 1800.0,
+ "position_km": {
+ "x": "-1951.43708472",
+ "y": "-6251.71945820",
+ "z": "-2886.95472355"
+ },
+ "velocity_km_s": {
+ "x": "-2.024131483",
+ "y": "-2.475214272",
+ "z": "6.741537478"
+ }
+ },
+ {
+ "tsince_min": 1920.0,
+ "position_km": {
+ "x": "-2475.70722288",
+ "y": "-4331.90569958",
+ "z": "5117.31234924"
+ },
+ "velocity_km_s": {
+ "x": "1.235823539",
+ "y": "5.322743371",
+ "z": "5.091281211"
+ }
+ },
+ {
+ "tsince_min": 2040.0,
+ "position_km": {
+ "x": "281.46097847",
+ "y": "3353.51057102",
+ "z": "6302.87900650"
+ },
+ "velocity_km_s": {
+ "x": "2.840647273",
+ "y": "6.047222485",
+ "z": "-3.337085992"
+ }
+ },
+ {
+ "tsince_min": 2160.0,
+ "position_km": {
+ "x": "2650.33118860",
+ "y": "6584.33434851",
+ "z": "-908.29027134"
+ },
+ "velocity_km_s": {
+ "x": "0.675457235",
+ "y": "-1.274044972",
+ "z": "-7.323921567"
+ }
+ },
+ {
+ "tsince_min": 2280.0,
+ "position_km": {
+ "x": "1501.17226597",
+ "y": "1066.31132756",
+ "z": "-6918.71472952"
+ },
+ "velocity_km_s": {
+ "x": "-2.361891904",
+ "y": "-6.889669974",
+ "z": "-1.574718619"
+ }
+ },
+ {
+ "tsince_min": 2400.0,
+ "position_km": {
+ "x": "-1619.73468334",
+ "y": "-5871.14051991",
+ "z": "-3760.56587071"
+ },
+ "velocity_km_s": {
+ "x": "-2.264093975",
+ "y": "-3.376316601",
+ "z": "6.254622256"
+ }
+ },
+ {
+ "tsince_min": 2520.0,
+ "position_km": {
+ "x": "-2581.04202505",
+ "y": "-5020.05572531",
+ "z": "4385.92329047"
+ },
+ "velocity_km_s": {
+ "x": "0.829668458",
+ "y": "4.645048038",
+ "z": "5.789262667"
+ }
+ },
+ {
+ "tsince_min": 2640.0,
+ "position_km": {
+ "x": "-119.22080628",
+ "y": "2510.90620488",
+ "z": "6687.45615459"
+ },
+ "velocity_km_s": {
+ "x": "2.807575712",
+ "y": "6.496549689",
+ "z": "-2.384136661"
+ }
+ },
+ {
+ "tsince_min": 2760.0,
+ "position_km": {
+ "x": "2486.23806726",
+ "y": "6708.18210028",
+ "z": "80.43349581"
+ },
+ "velocity_km_s": {
+ "x": "1.057274905",
+ "y": "-0.294294027",
+ "z": "-7.384689123"
+ }
+ },
+ {
+ "tsince_min": 2880.0,
+ "position_km": {
+ "x": "1788.42334580",
+ "y": "1990.50530957",
+ "z": "-6640.59337725"
+ },
+ "velocity_km_s": {
+ "x": "-2.074169091",
+ "y": "-6.683381288",
+ "z": "-2.562777776"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "28129",
+ "description": "NAVSTAR 53 (USA 175) - 12h non-resonant GPS (ecc<0.5)",
+ "tle_line1": "1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459",
+ "tle_line2": "2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "21707.46412351",
+ "y": "-15318.61752390",
+ "z": "0.13551152"
+ },
+ "velocity_km_s": {
+ "x": "1.304029214",
+ "y": "1.816904974",
+ "z": "3.161919976"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "18616.75971861",
+ "y": "3166.15177043",
+ "z": "18833.41523210"
+ },
+ "velocity_km_s": {
+ "x": "-2.076122016",
+ "y": "2.838457575",
+ "z": "1.586210535"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-3006.50596328",
+ "y": "18522.20742011",
+ "z": "18941.84078154"
+ },
+ "velocity_km_s": {
+ "x": "-3.375452789",
+ "y": "1.032680773",
+ "z": "-1.559324534"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-21607.02086957",
+ "y": "15432.59962630",
+ "z": "206.62470309"
+ },
+ "velocity_km_s": {
+ "x": "-1.306049851",
+ "y": "-1.817011568",
+ "z": "-3.163725018"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-18453.06134549",
+ "y": "-3150.83256134",
+ "z": "-18685.83030936"
+ },
+ "velocity_km_s": {
+ "x": "2.106017925",
+ "y": "-2.860236337",
+ "z": "-1.586151870"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "3425.11742384",
+ "y": "-18514.73232706",
+ "z": "-18588.67200557"
+ },
+ "velocity_km_s": {
+ "x": "3.394666340",
+ "y": "-1.003072030",
+ "z": "1.610061295"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "21858.23838148",
+ "y": "-15101.51661554",
+ "z": "387.34517048"
+ },
+ "velocity_km_s": {
+ "x": "1.247973967",
+ "y": "1.856017403",
+ "z": "3.161439948"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "18360.69935796",
+ "y": "3506.55256762",
+ "z": "19024.81678979"
+ },
+ "velocity_km_s": {
+ "x": "-2.122684184",
+ "y": "2.830618605",
+ "z": "1.537510677"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-3412.84765409",
+ "y": "18646.85269710",
+ "z": "18748.00359987"
+ },
+ "velocity_km_s": {
+ "x": "-3.366815728",
+ "y": "0.986039922",
+ "z": "-1.607874972"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-21758.08331586",
+ "y": "15215.44829478",
+ "z": "-180.82181406"
+ },
+ "velocity_km_s": {
+ "x": "-1.250144680",
+ "y": "-1.856490448",
+ "z": "-3.163774870"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-18193.41290284",
+ "y": "-3493.85876912",
+ "z": "-18877.14757717"
+ },
+ "velocity_km_s": {
+ "x": "2.153326942",
+ "y": "-2.852221264",
+ "z": "-1.536617760"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "3833.57386848",
+ "y": "-18635.77026711",
+ "z": "-18388.68722885"
+ },
+ "velocity_km_s": {
+ "x": "3.384748179",
+ "y": "-0.955363841",
+ "z": "1.658785020"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "22002.20074562",
+ "y": "-14879.72595593",
+ "z": "774.32827099"
+ },
+ "velocity_km_s": {
+ "x": "1.191573619",
+ "y": "1.894561165",
+ "z": "3.159953047"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "28350",
+ "description": "COSMOS 2405 - Near Earth, perigee=127.20 (<156) s4 mod",
+ "tle_line1": "1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894",
+ "tle_line2": "2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490",
+ "startmfe": 0.0,
+ "stopmfe": 2880.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "6333.08123128",
+ "y": "-1580.82852326",
+ "z": "90.69355720"
+ },
+ "velocity_km_s": {
+ "x": "0.714634423",
+ "y": "3.224246550",
+ "z": "7.083128132"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-3990.93845855",
+ "y": "3052.98341907",
+ "z": "4155.32700629"
+ },
+ "velocity_km_s": {
+ "x": "-5.909006188",
+ "y": "-0.876307966",
+ "z": "-5.039131404"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-603.55232010",
+ "y": "-2685.13474569",
+ "z": "-5891.70274282"
+ },
+ "velocity_km_s": {
+ "x": "7.572519907",
+ "y": "-1.975656726",
+ "z": "0.121722605"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "4788.22345627",
+ "y": "782.56169214",
+ "z": "4335.14284621"
+ },
+ "velocity_km_s": {
+ "x": "-4.954509026",
+ "y": "3.683346464",
+ "z": "4.804645839"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-6291.84601644",
+ "y": "1547.82790772",
+ "z": "-453.67116498"
+ },
+ "velocity_km_s": {
+ "x": "-0.308625588",
+ "y": "-3.341538574",
+ "z": "-7.082659115"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "4480.74573428",
+ "y": "-3028.55200374",
+ "z": "-3586.94343641"
+ },
+ "velocity_km_s": {
+ "x": "5.320920857",
+ "y": "1.199736275",
+ "z": "5.626350481"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-446.42460916",
+ "y": "2932.28872588",
+ "z": "5759.19389757"
+ },
+ "velocity_km_s": {
+ "x": "-7.561000245",
+ "y": "1.550975493",
+ "z": "-1.374970885"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-3713.79581831",
+ "y": "-1382.66125130",
+ "z": "-5122.45131136"
+ },
+ "velocity_km_s": {
+ "x": "6.090931626",
+ "y": "-3.512629733",
+ "z": "-3.467571746"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "6058.32017522",
+ "y": "-827.47406722",
+ "z": "2104.04678651"
+ },
+ "velocity_km_s": {
+ "x": "-1.798403024",
+ "y": "3.787067272",
+ "z": "6.641439744"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-5631.73659006",
+ "y": "2623.70953644",
+ "z": "1766.49125084"
+ },
+ "velocity_km_s": {
+ "x": "-3.216401578",
+ "y": "-2.309140959",
+ "z": "-6.788609120"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "2776.84991560",
+ "y": "-3255.36941953",
+ "z": "-4837.19667790"
+ },
+ "velocity_km_s": {
+ "x": "6.748135564",
+ "y": "-0.193044825",
+ "z": "4.005718698"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "1148.04430837",
+ "y": "2486.07343386",
+ "z": "5826.34075913"
+ },
+ "velocity_km_s": {
+ "x": "-7.420162295",
+ "y": "2.589456382",
+ "z": "0.356350006"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-4527.90871828",
+ "y": "-723.29199041",
+ "z": "-4527.44608319"
+ },
+ "velocity_km_s": {
+ "x": "5.121674217",
+ "y": "-3.909895427",
+ "z": "-4.500218556"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "28623",
+ "description": "H-2 R/B - Deep space, perigee=135.75 (<156) s4 mod",
+ "tle_line1": "1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000",
+ "tle_line2": "2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-11665.70902324",
+ "y": "24943.61433357",
+ "z": "25.80543633"
+ },
+ "velocity_km_s": {
+ "x": "-1.596228621",
+ "y": "-1.476127961",
+ "z": "1.126059754"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "-11645.35454950",
+ "y": "979.37668356",
+ "z": "5517.89500058"
+ },
+ "velocity_km_s": {
+ "x": "3.407743502",
+ "y": "-5.183094988",
+ "z": "-0.492983277"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "5619.19252274",
+ "y": "19651.44862280",
+ "z": "-7261.38496765"
+ },
+ "velocity_km_s": {
+ "x": "-2.013634213",
+ "y": "3.106842861",
+ "z": "0.284235517"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-9708.68629714",
+ "y": "26306.14553149",
+ "z": "-1204.29478856"
+ },
+ "velocity_km_s": {
+ "x": "-1.824164290",
+ "y": "-0.931909596",
+ "z": "1.113419052"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-14394.03162892",
+ "y": "6659.30765074",
+ "z": "5593.38345858"
+ },
+ "velocity_km_s": {
+ "x": "1.556522911",
+ "y": "-4.681657614",
+ "z": "0.296912248"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "7712.09476270",
+ "y": "15565.72627434",
+ "z": "-7342.40465571"
+ },
+ "velocity_km_s": {
+ "x": "-1.646800364",
+ "y": "4.070313571",
+ "z": "-0.109483081"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-7558.36739603",
+ "y": "27035.11367962",
+ "z": "-2385.12054184"
+ },
+ "velocity_km_s": {
+ "x": "-1.999583791",
+ "y": "-0.393409283",
+ "z": "1.078093515"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-15495.61862220",
+ "y": "11550.15897828",
+ "z": "5053.83178121"
+ },
+ "velocity_km_s": {
+ "x": "0.469277336",
+ "y": "-4.029761073",
+ "z": "0.679054742"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "9167.02568222",
+ "y": "10363.65204210",
+ "z": "-6871.52576042"
+ },
+ "velocity_km_s": {
+ "x": "-0.881621027",
+ "y": "5.223361510",
+ "z": "-0.740696297"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-5275.80272094",
+ "y": "27151.78486008",
+ "z": "-3494.50687216"
+ },
+ "velocity_km_s": {
+ "x": "-2.129609388",
+ "y": "0.150196480",
+ "z": "1.021038089"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-15601.37656145",
+ "y": "15641.29379850",
+ "z": "4217.03266850"
+ },
+ "velocity_km_s": {
+ "x": "-0.249183123",
+ "y": "-3.405238557",
+ "z": "0.888214503"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "9301.05872300",
+ "y": "3883.15265574",
+ "z": "-5477.86477017"
+ },
+ "velocity_km_s": {
+ "x": "0.871447821",
+ "y": "6.493677331",
+ "z": "-1.885545282"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-2914.31065828",
+ "y": "26665.20392758",
+ "z": "-4511.09814335"
+ },
+ "velocity_km_s": {
+ "x": "-2.216261909",
+ "y": "0.710067769",
+ "z": "0.940691824"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "28626",
+ "description": "XM-3 - 24h resonant geo, incl<3 deg, negative ~1130 min",
+ "tle_line1": "1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190",
+ "tle_line2": "2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "42080.71852213",
+ "y": "-2646.86387436",
+ "z": "0.81851294"
+ },
+ "velocity_km_s": {
+ "x": "0.193105177",
+ "y": "3.068688251",
+ "z": "0.000438449"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "37740.00085593",
+ "y": "18802.76872802",
+ "z": "3.45512584"
+ },
+ "velocity_km_s": {
+ "x": "-1.371035206",
+ "y": "2.752105932",
+ "z": "0.000336883"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "23232.82515008",
+ "y": "35187.33981802",
+ "z": "4.98927428"
+ },
+ "velocity_km_s": {
+ "x": "-2.565776620",
+ "y": "1.694193132",
+ "z": "0.000163365"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "2467.44290178",
+ "y": "42093.60909959",
+ "z": "5.15062987"
+ },
+ "velocity_km_s": {
+ "x": "-3.069341800",
+ "y": "0.179976276",
+ "z": "-0.000031739"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "-18962.59052991",
+ "y": "37661.66243819",
+ "z": "4.04433258"
+ },
+ "velocity_km_s": {
+ "x": "-2.746151982",
+ "y": "-1.382675777",
+ "z": "-0.000197633"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-35285.00095313",
+ "y": "23085.44402778",
+ "z": "2.08711880"
+ },
+ "velocity_km_s": {
+ "x": "-1.683277908",
+ "y": "-2.572893625",
+ "z": "-0.000296282"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-42103.20138132",
+ "y": "2291.06228893",
+ "z": "-0.13274964"
+ },
+ "velocity_km_s": {
+ "x": "-0.166974816",
+ "y": "-3.070104560",
+ "z": "-0.000311007"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "-37580.31858370",
+ "y": "-19120.40485693",
+ "z": "-2.02755702"
+ },
+ "velocity_km_s": {
+ "x": "1.394367848",
+ "y": "-2.740341612",
+ "z": "-0.000248591"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-22934.20761876",
+ "y": "-35381.23870806",
+ "z": "-3.16495932"
+ },
+ "velocity_km_s": {
+ "x": "2.580167539",
+ "y": "-1.672360951",
+ "z": "-0.000134907"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-2109.90332389",
+ "y": "-42110.71508198",
+ "z": "-3.36507889"
+ },
+ "velocity_km_s": {
+ "x": "3.070935369",
+ "y": "-0.153808390",
+ "z": "-0.000005855"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "19282.77774728",
+ "y": "-37495.59250598",
+ "z": "-2.71861462"
+ },
+ "velocity_km_s": {
+ "x": "2.734400524",
+ "y": "1.406220933",
+ "z": "0.000103486"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "35480.60990600",
+ "y": "-22779.03375285",
+ "z": "-1.52841859"
+ },
+ "velocity_km_s": {
+ "x": "1.661210676",
+ "y": "2.587414593",
+ "z": "0.000168300"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "42119.96263499",
+ "y": "-1925.77567263",
+ "z": "-0.19827433"
+ },
+ "velocity_km_s": {
+ "x": "0.140521206",
+ "y": "3.071541613",
+ "z": "0.000179561"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "28872",
+ "description": "MINOTAUR R/B - Sub-orbital, decayed 2005-11-29, perigee=-51km",
+ "tle_line1": "1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534",
+ "tle_line2": "2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708",
+ "startmfe": 0.0,
+ "stopmfe": 50.0,
+ "deltamin": 5.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-6131.82730456",
+ "y": "2446.52815528",
+ "z": "-253.64211033"
+ },
+ "velocity_km_s": {
+ "x": "-0.144920228",
+ "y": "0.995100963",
+ "z": "7.658645067"
+ }
+ },
+ {
+ "tsince_min": 5.0,
+ "position_km": {
+ "x": "-5799.24256134",
+ "y": "2589.14811119",
+ "z": "2011.54515100"
+ },
+ "velocity_km_s": {
+ "x": "2.325207364",
+ "y": "-0.047125672",
+ "z": "7.296234071"
+ }
+ },
+ {
+ "tsince_min": 10.0,
+ "position_km": {
+ "x": "-4769.05061967",
+ "y": "2420.46580562",
+ "z": "4035.30855837"
+ },
+ "velocity_km_s": {
+ "x": "4.464585796",
+ "y": "-1.060923209",
+ "z": "6.070907874"
+ }
+ },
+ {
+ "tsince_min": 15.0,
+ "position_km": {
+ "x": "-3175.45157340",
+ "y": "1965.98738086",
+ "z": "5582.12569607"
+ },
+ "velocity_km_s": {
+ "x": "6.049639376",
+ "y": "-1.935777558",
+ "z": "4.148607019"
+ }
+ },
+ {
+ "tsince_min": 20.0,
+ "position_km": {
+ "x": "-1210.19024802",
+ "y": "1281.54541294",
+ "z": "6474.68172772"
+ },
+ "velocity_km_s": {
+ "x": "6.920746273",
+ "y": "-2.580517337",
+ "z": "1.748783868"
+ }
+ },
+ {
+ "tsince_min": 25.0,
+ "position_km": {
+ "x": "896.73799533",
+ "y": "447.12357305",
+ "z": "6607.22400507"
+ },
+ "velocity_km_s": {
+ "x": "6.983396282",
+ "y": "-2.925846168",
+ "z": "-0.872655207"
+ }
+ },
+ {
+ "tsince_min": 30.0,
+ "position_km": {
+ "x": "2896.99663534",
+ "y": "-440.04738594",
+ "z": "5954.92675486"
+ },
+ "velocity_km_s": {
+ "x": "6.211488246",
+ "y": "-2.926949815",
+ "z": "-3.433959806"
+ }
+ },
+ {
+ "tsince_min": 35.0,
+ "position_km": {
+ "x": "4545.78970167",
+ "y": "-1273.55952872",
+ "z": "4580.16512984"
+ },
+ "velocity_km_s": {
+ "x": "4.656984233",
+ "y": "-2.568711513",
+ "z": "-5.638510954"
+ }
+ },
+ {
+ "tsince_min": 40.0,
+ "position_km": {
+ "x": "5627.43299371",
+ "y": "-1947.94282469",
+ "z": "2634.16714930"
+ },
+ "velocity_km_s": {
+ "x": "2.464141047",
+ "y": "-1.873985161",
+ "z": "-7.195743032"
+ }
+ },
+ {
+ "tsince_min": 45.0,
+ "position_km": {
+ "x": "5984.72318534",
+ "y": "-2371.37691609",
+ "z": "349.87996209"
+ },
+ "velocity_km_s": {
+ "x": "-0.121276950",
+ "y": "-0.911981546",
+ "z": "-7.859613894"
+ }
+ },
+ {
+ "tsince_min": 50.0,
+ "position_km": {
+ "x": "5548.43325922",
+ "y": "-2480.16469245",
+ "z": "-1979.24314527"
+ },
+ "velocity_km_s": {
+ "x": "-2.763269534",
+ "y": "0.199691915",
+ "z": "-7.482796996"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "29141",
+ "description": "SL-14 DEB - Last stage of decay, lost in under 420 min",
+ "tle_line1": "1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718",
+ "tle_line2": "2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828",
+ "startmfe": 0.0,
+ "stopmfe": 440.0,
+ "deltamin": 20.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "423.99295524",
+ "y": "-6658.12256149",
+ "z": "136.13040356"
+ },
+ "velocity_km_s": {
+ "x": "1.006373613",
+ "y": "0.217309983",
+ "z": "7.662587892"
+ }
+ },
+ {
+ "tsince_min": 20.0,
+ "position_km": {
+ "x": "931.80883587",
+ "y": "-1017.17852239",
+ "z": "6529.19244527"
+ },
+ "velocity_km_s": {
+ "x": "-0.298847918",
+ "y": "7.613891977",
+ "z": "1.226399480"
+ }
+ },
+ {
+ "tsince_min": 40.0,
+ "position_km": {
+ "x": "-83.44906141",
+ "y": "6286.20208453",
+ "z": "2223.49837161"
+ },
+ "velocity_km_s": {
+ "x": "-1.113515974",
+ "y": "2.530970283",
+ "z": "-7.219445568"
+ }
+ },
+ {
+ "tsince_min": 60.0,
+ "position_km": {
+ "x": "-958.57681221",
+ "y": "3259.26005348",
+ "z": "-5722.63732467"
+ },
+ "velocity_km_s": {
+ "x": "-0.101225813",
+ "y": "-6.735338321",
+ "z": "-3.804851872"
+ }
+ },
+ {
+ "tsince_min": 80.0,
+ "position_km": {
+ "x": "-255.25619985",
+ "y": "-5132.59762974",
+ "z": "-4221.27233118"
+ },
+ "velocity_km_s": {
+ "x": "1.077709303",
+ "y": "-4.905938824",
+ "z": "5.892521264"
+ }
+ },
+ {
+ "tsince_min": 100.0,
+ "position_km": {
+ "x": "867.44295097",
+ "y": "-5038.40402933",
+ "z": "4256.73810533"
+ },
+ "velocity_km_s": {
+ "x": "0.479447535",
+ "y": "5.032326446",
+ "z": "5.857126248"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "559.16882013",
+ "y": "3376.30587937",
+ "z": "5699.22017391"
+ },
+ "velocity_km_s": {
+ "x": "-0.906749328",
+ "y": "6.646149867",
+ "z": "-3.852331832"
+ }
+ },
+ {
+ "tsince_min": 140.0,
+ "position_km": {
+ "x": "-669.85184205",
+ "y": "6196.00229484",
+ "z": "-2281.95741770"
+ },
+ "velocity_km_s": {
+ "x": "-0.795804092",
+ "y": "-2.752114827",
+ "z": "-7.202478520"
+ }
+ },
+ {
+ "tsince_min": 160.0,
+ "position_km": {
+ "x": "-784.20708019",
+ "y": "-1278.53125553",
+ "z": "-6449.19892596"
+ },
+ "velocity_km_s": {
+ "x": "0.636702380",
+ "y": "-7.595425203",
+ "z": "1.431090802"
+ }
+ },
+ {
+ "tsince_min": 180.0,
+ "position_km": {
+ "x": "406.15811659",
+ "y": "-6607.03115799",
+ "z": "148.33021477"
+ },
+ "velocity_km_s": {
+ "x": "1.009818575",
+ "y": "0.231843765",
+ "z": "7.692047844"
+ }
+ },
+ {
+ "tsince_min": 200.0,
+ "position_km": {
+ "x": "916.34911813",
+ "y": "-884.08649248",
+ "z": "6491.09810362"
+ },
+ "velocity_km_s": {
+ "x": "-0.302163049",
+ "y": "7.669887109",
+ "z": "1.084336909"
+ }
+ },
+ {
+ "tsince_min": 220.0,
+ "position_km": {
+ "x": "-104.02490970",
+ "y": "6304.31821405",
+ "z": "1960.08739882"
+ },
+ "velocity_km_s": {
+ "x": "-1.108873823",
+ "y": "2.259522809",
+ "z": "-7.351147710"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-944.61642849",
+ "y": "2872.17248379",
+ "z": "-5846.94103362"
+ },
+ "velocity_km_s": {
+ "x": "-0.051117686",
+ "y": "-6.989747076",
+ "z": "-3.413102600"
+ }
+ },
+ {
+ "tsince_min": 260.0,
+ "position_km": {
+ "x": "-187.16569888",
+ "y": "-5404.86163467",
+ "z": "-3731.97057618"
+ },
+ "velocity_km_s": {
+ "x": "1.094696706",
+ "y": "-4.412110995",
+ "z": "6.326060952"
+ }
+ },
+ {
+ "tsince_min": 280.0,
+ "position_km": {
+ "x": "884.59720467",
+ "y": "-4465.74516163",
+ "z": "4725.83632696"
+ },
+ "velocity_km_s": {
+ "x": "0.380656028",
+ "y": "5.691554046",
+ "z": "5.303910983"
+ }
+ },
+ {
+ "tsince_min": 300.0,
+ "position_km": {
+ "x": "446.40767236",
+ "y": "4086.66839620",
+ "z": "5093.05596650"
+ },
+ "velocity_km_s": {
+ "x": "-0.982424447",
+ "y": "6.072965199",
+ "z": "-4.791630682"
+ }
+ },
+ {
+ "tsince_min": 320.0,
+ "position_km": {
+ "x": "-752.24467495",
+ "y": "5588.35473301",
+ "z": "-3275.04092573"
+ },
+ "velocity_km_s": {
+ "x": "-0.661161370",
+ "y": "-4.016290740",
+ "z": "-6.676898026"
+ }
+ },
+ {
+ "tsince_min": 340.0,
+ "position_km": {
+ "x": "-643.72872525",
+ "y": "-2585.02528560",
+ "z": "-5923.01306608"
+ },
+ "velocity_km_s": {
+ "x": "0.807922142",
+ "y": "-7.171597814",
+ "z": "3.041115058"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "584.40295819",
+ "y": "-6202.35605817",
+ "z": "1781.00536019"
+ },
+ "velocity_km_s": {
+ "x": "0.869250450",
+ "y": "2.226927514",
+ "z": "7.471676765"
+ }
+ },
+ {
+ "tsince_min": 380.0,
+ "position_km": {
+ "x": "779.59211765",
+ "y": "1100.73728301",
+ "z": "6311.59529480"
+ },
+ "velocity_km_s": {
+ "x": "-0.599552305",
+ "y": "7.721032522",
+ "z": "-1.275153027"
+ }
+ },
+ {
+ "tsince_min": 400.0,
+ "position_km": {
+ "x": "-403.03155588",
+ "y": "6399.18000837",
+ "z": "-364.12735875"
+ },
+ "velocity_km_s": {
+ "x": "-1.008861924",
+ "y": "-0.516636615",
+ "z": "-7.799812287"
+ }
+ },
+ {
+ "tsince_min": 420.0,
+ "position_km": {
+ "x": "-852.93910071",
+ "y": "192.65232023",
+ "z": "-6322.47054784"
+ },
+ "velocity_km_s": {
+ "x": "0.396006194",
+ "y": "-7.882964919",
+ "z": "-0.289331517"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "29238",
+ "description": "SL-12 DEB - Near Earth, perigee=212.24 (<220), simplified drag",
+ "tle_line1": "1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101",
+ "tle_line2": "2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "-5566.59512819",
+ "y": "-3789.75991159",
+ "z": "67.60382245"
+ },
+ "velocity_km_s": {
+ "x": "2.873759367",
+ "y": "-3.825340523",
+ "z": "6.023253926"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "4474.27915495",
+ "y": "-1447.72286142",
+ "z": "4619.83927235"
+ },
+ "velocity_km_s": {
+ "x": "4.712595822",
+ "y": "5.668306153",
+ "z": "-2.701606741"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "1922.17712474",
+ "y": "5113.01138342",
+ "z": "-4087.08470203"
+ },
+ "velocity_km_s": {
+ "x": "-6.490769651",
+ "y": "-0.522350158",
+ "z": "-3.896001154"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "-6157.93546882",
+ "y": "-2094.70798790",
+ "z": "-1941.63730960"
+ },
+ "velocity_km_s": {
+ "x": "0.149900661",
+ "y": "-5.175192523",
+ "z": "5.604262034"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "2482.64052411",
+ "y": "-3268.45944555",
+ "z": "5146.38006190"
+ },
+ "velocity_km_s": {
+ "x": "6.501814698",
+ "y": "4.402848754",
+ "z": "-0.350943511"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "4036.26455287",
+ "y": "4827.43347201",
+ "z": "-2507.99063955"
+ },
+ "velocity_km_s": {
+ "x": "-5.184409515",
+ "y": "1.772280695",
+ "z": "-5.331390168"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "-5776.81371622",
+ "y": "-118.64155319",
+ "z": "-3641.22052418"
+ },
+ "velocity_km_s": {
+ "x": "-2.539917207",
+ "y": "-5.622701582",
+ "z": "4.403125405"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "67.98699487",
+ "y": "-4456.49213473",
+ "z": "4863.71794283"
+ },
+ "velocity_km_s": {
+ "x": "7.183809420",
+ "y": "2.418917791",
+ "z": "2.015642495"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "5520.62207038",
+ "y": "3782.38203554",
+ "z": "-596.73193161"
+ },
+ "velocity_km_s": {
+ "x": "-3.027966069",
+ "y": "3.754152525",
+ "z": "-6.013506363"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "-4528.05104455",
+ "y": "1808.46273329",
+ "z": "-4816.99727762"
+ },
+ "velocity_km_s": {
+ "x": "-4.808419763",
+ "y": "-5.185789345",
+ "z": "2.642104494"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "-2356.61468078",
+ "y": "-4852.51202272",
+ "z": "3856.53816184"
+ },
+ "velocity_km_s": {
+ "x": "6.688446735",
+ "y": "0.118520958",
+ "z": "4.021854210"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "6149.65800134",
+ "y": "2173.59423261",
+ "z": "1369.29488732"
+ },
+ "velocity_km_s": {
+ "x": "-0.345832777",
+ "y": "5.109857861",
+ "z": "-5.842951828"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "-2629.55011449",
+ "y": "3400.98040158",
+ "z": "-5344.38217129"
+ },
+ "velocity_km_s": {
+ "x": "-6.368548448",
+ "y": "-3.998963509",
+ "z": "0.577253064"
+ }
+ }
+ ]
+ },
+ {
+ "satellite": "88888",
+ "description": "Original STR#3 SGP4 test",
+ "tle_line1": "1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87",
+ "tle_line2": "2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058",
+ "startmfe": 0.0,
+ "stopmfe": 1440.0,
+ "deltamin": 120.0,
+ "predictions": [
+ {
+ "tsince_min": 0.0,
+ "position_km": {
+ "x": "2328.96975262",
+ "y": "-5995.22051338",
+ "z": "1719.97297192"
+ },
+ "velocity_km_s": {
+ "x": "2.912073281",
+ "y": "-0.983417956",
+ "z": "-7.090816210"
+ }
+ },
+ {
+ "tsince_min": 120.0,
+ "position_km": {
+ "x": "1020.69234558",
+ "y": "2286.56260634",
+ "z": "-6191.55565927"
+ },
+ "velocity_km_s": {
+ "x": "-3.746543902",
+ "y": "6.467532721",
+ "z": "1.827985678"
+ }
+ },
+ {
+ "tsince_min": 240.0,
+ "position_km": {
+ "x": "-3226.54349155",
+ "y": "3503.70977525",
+ "z": "4532.80979343"
+ },
+ "velocity_km_s": {
+ "x": "1.000992116",
+ "y": "-5.788042888",
+ "z": "5.162585826"
+ }
+ },
+ {
+ "tsince_min": 360.0,
+ "position_km": {
+ "x": "2456.10706533",
+ "y": "-6071.93855503",
+ "z": "1222.89768554"
+ },
+ "velocity_km_s": {
+ "x": "2.679390040",
+ "y": "-0.448290811",
+ "z": "-7.228792155"
+ }
+ },
+ {
+ "tsince_min": 480.0,
+ "position_km": {
+ "x": "787.16457349",
+ "y": "2719.91800946",
+ "z": "-6043.86662024"
+ },
+ "velocity_km_s": {
+ "x": "-3.759883839",
+ "y": "6.277439314",
+ "z": "2.397897864"
+ }
+ },
+ {
+ "tsince_min": 600.0,
+ "position_km": {
+ "x": "-3110.97648029",
+ "y": "3121.73026235",
+ "z": "4878.15217035"
+ },
+ "velocity_km_s": {
+ "x": "1.244916056",
+ "y": "-6.124880425",
+ "z": "4.700576353"
+ }
+ },
+ {
+ "tsince_min": 720.0,
+ "position_km": {
+ "x": "2567.56229695",
+ "y": "-6112.50383922",
+ "z": "713.96374435"
+ },
+ "velocity_km_s": {
+ "x": "2.440245751",
+ "y": "0.098109002",
+ "z": "-7.319959258"
+ }
+ },
+ {
+ "tsince_min": 840.0,
+ "position_km": {
+ "x": "556.05661780",
+ "y": "3144.52288201",
+ "z": "-5855.34636178"
+ },
+ "velocity_km_s": {
+ "x": "-3.754660143",
+ "y": "6.044752775",
+ "z": "2.957941672"
+ }
+ },
+ {
+ "tsince_min": 960.0,
+ "position_km": {
+ "x": "-2982.47940539",
+ "y": "2712.61663711",
+ "z": "5192.32330472"
+ },
+ "velocity_km_s": {
+ "x": "1.475566773",
+ "y": "-6.427737014",
+ "z": "4.202420227"
+ }
+ },
+ {
+ "tsince_min": 1080.0,
+ "position_km": {
+ "x": "2663.08964352",
+ "y": "-6115.48290885",
+ "z": "196.40072866"
+ },
+ "velocity_km_s": {
+ "x": "2.196121564",
+ "y": "0.652415093",
+ "z": "-7.362824152"
+ }
+ },
+ {
+ "tsince_min": 1200.0,
+ "position_km": {
+ "x": "328.54999674",
+ "y": "3557.09490552",
+ "z": "-5626.21427211"
+ },
+ "velocity_km_s": {
+ "x": "-3.731193288",
+ "y": "5.769341172",
+ "z": "3.504058731"
+ }
+ },
+ {
+ "tsince_min": 1320.0,
+ "position_km": {
+ "x": "-2842.06876757",
+ "y": "2278.42343492",
+ "z": "5472.33437150"
+ },
+ "velocity_km_s": {
+ "x": "1.691852635",
+ "y": "-6.693216335",
+ "z": "3.671022712"
+ }
+ },
+ {
+ "tsince_min": 1440.0,
+ "position_km": {
+ "x": "2742.55398832",
+ "y": "-6079.67009123",
+ "z": "-326.39012649"
+ },
+ "velocity_km_s": {
+ "x": "1.948497651",
+ "y": "1.211072678",
+ "z": "-7.356193131"
+ }
+ }
+ ]
+ }
+ ]
+}
diff --git a/test/expected/vallado_518.out b/test/expected/vallado_518.out
new file mode 100644
index 0000000..4a5c9aa
--- /dev/null
+++ b/test/expected/vallado_518.out
@@ -0,0 +1,671 @@
+-- Vallado 518 Test Vectors (AIAA 2006-6753-Rev1, Appendices D & E)
+--
+-- 518 propagation predictions across 29 satellites, covering both
+-- SGP4 (near-earth) and SDP4 (deep-space) models. Reference values
+-- from Vallado, Crawford, Hujsak, and Kelso's definitive SGP4 paper.
+--
+-- The reference vectors use Vallado's "AFSPC (option 'a')" mode with
+-- "perturbed inclination (GSFC)" Lyddane choice. Bill Gray's sat_code
+-- takes a different path through the Lyddane singularity and deep-space
+-- resonance logic, producing small numerical differences for most
+-- satellites and larger divergences for 4 known edge cases:
+--
+-- 20413 (e=0.79, Molniya-like): up to 1694 km at large tsince
+-- 04632 (deep-space, e=0.15): up to 7.5 km
+-- 14128 (deep-space): up to 1.7 km
+-- 23599 (deep-space, GEO): up to 1.0 km
+--
+-- These differences are expected and documented. This test detects
+-- regressions — if any number changes, the vendored SGP4/SDP4 code
+-- was inadvertently modified.
+--
+-- Tolerances for the summary check:
+-- Position: 1e-4 km (0.1 m) — catches marginal velocity-only failures
+-- Velocity: 1e-7 km/s (0.1 mm/s) — tight enough for regression detection
+CREATE EXTENSION IF NOT EXISTS pg_orbit;
+NOTICE: extension "pg_orbit" already exists, skipping
+-- Helper: convert Julian date + minutes-since-epoch to timestamptz.
+-- JD 2440587.5 = 1970-01-01 00:00:00 UTC (Unix epoch).
+CREATE OR REPLACE FUNCTION _vallado_jd_plus_min(jd float8, tsince_min float8)
+RETURNS timestamptz AS $$
+ SELECT to_timestamp((jd + tsince_min / 1440.0 - 2440587.5) * 86400.0)
+$$ LANGUAGE sql IMMUTABLE STRICT;
+-- Test vector table
+CREATE TEMP TABLE vallado_vectors (
+ satnum text,
+ tle_line1 text,
+ tle_line2 text,
+ tsince_min float8,
+ ref_x float8, ref_y float8, ref_z float8,
+ ref_vx float8, ref_vy float8, ref_vz float8
+);
+INSERT INTO vallado_vectors VALUES
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',0.0,7022.46529266,-1400.08296755,0.03995155,1.893841015,6.405893759,4.534807250),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',360.0,-7154.03120202,-3783.17682504,-3536.19412294,4.741887409,-4.151817765,-2.093935425),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',720.0,-7134.59340119,6531.68641334,3260.27186483,-4.113793027,-2.911922039,-2.557327851),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1080.0,5568.53901181,4492.06992591,3863.87641983,-4.209106476,5.159719888,2.744852980),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1440.0,-938.55923943,-6268.18748831,-4294.02924751,7.536105209,-0.427127707,0.989878080),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1800.0,-9680.56121728,2802.47771354,124.10688038,-0.905874102,-4.659467970,-3.227347517),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2160.0,190.19796988,7746.96653614,5110.00675412,-6.112325142,1.527008184,-0.139152358),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2520.0,5579.55640116,-3995.61396789,-1518.82108966,4.767927483,5.123185301,4.276837355),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2880.0,-8650.73082219,-1914.93811525,-3007.03603443,3.067165127,-4.828384068,-2.515322836),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3240.0,-5429.79204164,7574.36493792,3747.39305236,-4.999442110,-1.800561422,-2.229392830),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3600.0,6759.04583722,2001.58198220,2783.55192533,-2.180993947,6.402085603,3.644723952),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3960.0,-3791.44531559,-5712.95617894,-4533.48630714,6.668817493,-2.516382327,-0.082384354),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',4320.0,-9060.47373569,4658.70952502,813.68673153,-2.232832783,-4.110453490,-3.157345433),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',0.0,2334.11450085,-41920.44035349,-0.03867437,2.826321032,-0.065091664,0.570936053),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5184.0,-29020.02587128,13819.84419063,-5713.33679183,-1.768068390,-3.235371192,-0.395206135),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5064.0,-32982.56870101,-11125.54996609,-6803.28472771,0.617446996,-3.379240041,0.085954707),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4944.0,-22097.68730513,-31583.13829284,-4836.34329328,2.230597499,-2.166594667,0.426443070),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4896.0,-15129.94694545,-36907.74526221,-3487.56256701,2.581167187,-1.524204737,0.504805763),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',0.0,3988.31022699,5498.96657235,0.90055879,-3.290032738,2.357652820,6.496623475),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',120.0,-3935.69800083,409.10980837,5471.33577327,-3.374784183,-6.635211043,-1.942056221),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',240.0,-1675.12766915,-5683.30432352,-3286.21510937,5.282496925,1.508674259,-5.354872978),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',360.0,4993.62642836,2890.54969900,-3600.40145627,0.347333429,5.707031557,5.070699638),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',480.0,-1115.07959514,4015.11691491,5326.99727718,-5.524279443,-4.765738774,2.402255961),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',600.0,-4329.10008198,-5176.70287935,409.65313857,2.858408303,-2.933091792,-6.509690397),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',720.0,3692.60030028,-976.24265255,-5623.36447493,3.897257243,6.415554948,1.429112190),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',840.0,2301.83510037,5723.92394553,2814.61514580,-5.110924966,-0.764510559,5.662120145),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',960.0,-4990.91637950,-2303.42547880,3920.86335598,-0.993439372,-5.967458360,-4.759110856),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1080.0,642.27769977,-4332.89821901,-5183.31523910,5.720542579,4.216573838,-2.846576139),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1200.0,4719.78335752,4798.06938996,-943.58851062,-2.294860662,3.492499389,6.408334723),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1320.0,-3299.16993602,1576.83168320,5678.67840638,-4.460347074,-6.202025196,-0.885874586),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1440.0,-2777.14682335,-5663.16031708,-2462.54889123,4.915493146,0.123328992,-5.896495091),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1560.0,4992.31573893,1716.62356770,-4287.86065581,1.640717189,6.071570434,4.338797931),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1680.0,-8.22384755,4662.21521668,4905.66411857,-5.891011274,-3.593173872,3.365100460),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1800.0,-4966.20137963,-4379.59155037,1349.33347502,1.763172581,-3.981456387,-6.343279443),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1920.0,2954.49390331,-2080.65984650,-5754.75038057,4.895893306,5.858184322,0.375474825),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2040.0,3363.28794321,5559.55841180,1956.05542266,-4.587378863,0.591943403,6.107838605),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2160.0,-4856.66780070,-1107.03450192,4557.21258241,-2.304158557,-6.186437070,-3.956549542),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2280.0,-497.84480071,-4863.46005312,-4700.81211217,5.960065407,2.996683369,-3.767123329),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2400.0,5241.61936096,3910.75960683,-1857.93473952,-1.124834806,4.406213160,6.148161299),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2520.0,-2451.38045953,2610.60463261,5729.79022069,-5.366560525,-5.500855666,0.187958716),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2640.0,-3791.87520638,-5378.82851382,-1575.82737930,4.266273592,-1.199162551,-6.276154080),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2760.0,4730.53958356,524.05006433,-4857.29369725,2.918056288,6.135412849,3.495115636),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2880.0,1159.27802897,5056.60175495,4353.49418579,-5.968060341,-2.314790406,4.230722669),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',0.0,2349.89483350,-14785.93811562,0.02119378,2.721488096,-3.256811655,4.498416672),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',120.0,15223.91713658,-17852.95881713,25280.39558224,1.079041732,0.875187372,2.485682813),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',240.0,19752.78050009,-8600.07130962,37522.72921090,0.238105279,1.546110924,0.986410447),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',360.0,19089.29762968,3107.89495018,39958.14661370,-0.410308034,1.640332277,-0.306873818),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',480.0,13829.66070574,13977.39999817,32736.32082508,-1.065096849,1.279983299,-1.760166075),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',600.0,3333.05838525,18395.31728674,12738.25031238,-1.882432221,-0.611623333,-4.039586549),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',720.0,2622.13222207,-15125.15464924,474.51048398,2.688287199,-3.078426664,4.494979530),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',840.0,15320.56770017,-17777.32564586,25539.53198382,1.064346229,0.892184771,2.459822414),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',960.0,19769.70267785,-8458.65104454,37624.20130236,0.229304396,1.550363884,0.966993056),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1080.0,19048.56201523,3260.43223119,39923.39143967,-0.418015536,1.639346953,-0.326094840),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1200.0,13729.19205837,14097.70014810,32547.52799890,-1.074511043,1.270505211,-1.785099927),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1320.0,3148.86165643,18323.19841703,12305.75195578,-1.895271701,-0.678343847,-4.086577951),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1440.0,2890.80638268,-15446.43952300,948.77010176,2.654407490,-2.909344895,4.486437362),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1560.0,15415.98410712,-17699.90714437,25796.19644689,1.049818334,0.908822332,2.434107329),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1680.0,19786.00618538,-8316.74570581,37723.74539119,0.220539813,1.554518900,0.947601047),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1800.0,19007.28688729,3412.85948715,39886.66579255,-0.425733568,1.638276809,-0.345353807),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1920.0,13627.93015254,14216.95401307,32356.13706868,-1.083991976,1.260802347,-1.810193903),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2040.0,2963.26486560,18243.85063641,11868.25797486,-1.908015447,-0.747870342,-4.134004492),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2160.0,3155.85126036,-15750.70393364,1422.32496953,2.620085624,-2.748990396,4.473527039),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2280.0,15510.15191770,-17620.71002219,26050.43525345,1.035454678,0.925111006,2.408534465),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2400.0,19801.67198812,-8174.33337167,37821.38577439,0.211812700,1.558576937,0.928231880),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2520.0,18965.46529379,3565.19666242,39847.97510998,-0.433459945,1.637120585,-0.364653213),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2640.0,13525.88227400,14335.15978787,32162.13236536,-1.093537945,1.250868256,-1.835451681),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2760.0,2776.30574260,18156.98538451,11425.73046481,-1.920632199,-0.820370733,-4.181839232),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2880.0,3417.20931587,-16038.79510665,1894.74934058,2.585515864,-2.596818146,4.456882556),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',0.0,13020.06750784,-2449.07193500,1.15896030,4.247363935,1.597178501,4.956708611),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',120.0,19190.32482476,9249.01266902,26596.71345328,-0.624960193,1.324550562,2.495697637),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',240.0,11332.67806218,16517.99124008,38569.78482991,-1.400974747,0.710947006,0.923935636),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',360.0,328.74217398,19554.92047380,40558.26246145,-1.593281066,0.126772913,-0.359627307),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',480.0,-10684.90590680,18057.15728839,33158.75253886,-1.383205997,-0.582328999,-1.744412556),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',600.0,-17069.78000550,9944.86797897,13885.91649059,0.044133354,-1.853448464,-3.815303117),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',720.0,13725.09398980,-2180.70877090,863.29684523,3.878478111,1.656846496,4.944867241),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',840.0,19089.63879226,9456.29670247,27026.79562883,-0.656614299,1.309112636,2.449371941),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',960.0,11106.41248373,16627.60874079,38727.35140296,-1.409722680,0.698582526,0.891383535),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1080.0,72.40958621,19575.08054144,40492.12544001,-1.593394604,0.113655142,-0.390556063),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1200.0,-10905.89252576,17965.41205111,32850.07298244,-1.371396120,-0.601706604,-1.782817058),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1320.0,-17044.61207568,9635.48491849,13212.59462953,0.129244030,-1.903551430,-3.884569098),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1440.0,14369.90303735,-1903.85601062,1722.15319853,3.543393116,1.701687176,4.913881358),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1560.0,18983.96210441,9661.12233804,27448.99557732,-0.687189304,1.293808870,2.403630759),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1680.0,10878.79336704,16735.31433954,38879.23434264,-1.418239666,0.686235750,0.858951848),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1800.0,-184.03743100,19593.09371709,40420.40606889,-1.593348925,0.100448697,-0.421571993),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1920.0,-11125.12138631,17870.19488928,32534.21521208,-1.359116236,-0.621413776,-1.821629856),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2040.0,-17004.43272827,9316.53926351,12526.11883812,0.220330736,-1.955594322,-3.955058575),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2160.0,14960.06492693,-1620.68430805,2574.96359381,3.238634028,1.734723385,4.868880331),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2280.0,18873.46347257,9863.57004586,27863.46574735,-0.716736981,1.278632817,2.358448535),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2400.0,10649.86857581,16841.14172669,39025.48035006,-1.426527152,0.673901057,0.826632332),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2520.0,-440.53459323,19608.95524423,40343.10675451,-1.593138597,0.087147884,-0.452680559),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2640.0,-11342.45028909,17771.44223942,32211.12535721,-1.346344015,-0.641464291,-1.860864234),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2760.0,-16948.06005711,8987.64254880,11826.28284367,0.318007297,-2.009693492,-4.026726648),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2880.0,15500.53445068,-1332.90981042,3419.72315308,2.960917974,1.758331634,4.813698638),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',0.0,25532.98947267,-27244.26327953,-1.11572421,2.410283885,2.194175683,0.545888526),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1440.0,-11362.18265118,-35117.55867813,-5413.62537994,3.137861261,-1.011678260,0.267510059),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1380.0,309.25349929,-36960.43090143,-4198.48007670,3.292429375,-0.002166046,0.402111628),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1320.0,11949.04009077,-35127.37816804,-2565.89806468,3.119942784,1.012096444,0.497284100),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1260.0,22400.45329336,-29798.63236321,-677.91515122,2.638533344,1.922477736,0.542792913),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1200.0,30640.84752458,-21525.02340201,1277.34808722,1.903464941,2.634294312,0.534540934),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1140.0,35899.56788035,-11152.71158138,3108.72535238,0.997393045,3.079858548,0.474873291),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1080.0,37732.45438600,288.18821054,4643.87587495,0.016652226,3.225184410,0.371669746),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1020.0,36045.92961699,11706.61816230,5746.32646574,-0.942409065,3.069888941,0.236662980),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-960.0,31076.77273609,22063.44379776,6325.93403705,-1.794027976,2.642072476,0.083556127),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-900.0,23341.26015320,30460.88002531,6342.91707895,-2.469409743,1.990861658,-0.073612096),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-840.0,13568.39733054,36204.45930900,5806.79548733,-2.919354203,1.178920217,-0.221646814),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-780.0,2628.58762420,38840.10855897,4771.91979854,-3.114400514,0.276239109,-0.348926401),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-720.0,-8535.81598158,38171.79073851,3331.00311285,-3.043839958,-0.644462527,-0.445808894),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',0.0,7473.37102491,428.94748312,5828.74846783,5.107155391,6.444680305,-0.186133297),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',360.0,-3305.22148694,32410.84323331,-24697.16974954,-1.301137319,-1.151315600,-0.283335823),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',720.0,14271.29083858,24110.44309009,-4725.76320143,-0.320504528,2.679841539,-2.084054355),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1080.0,-9990.05800009,22717.34212448,-23616.88515553,-1.016674392,-2.290267981,0.728923337),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1440.0,9787.87836256,33753.32249667,-15030.79874625,-1.094251553,0.923589906,-1.522311008),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',0.0,34747.57932696,24502.37114079,-1.32832986,-1.731642662,2.452772615,0.608510081),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',120.0,18263.33439094,38159.96004751,4186.18304085,-2.744396611,1.255583260,0.528558932),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',240.0,-3023.38840703,41783.13186459,7273.03412906,-3.035574793,-0.271656544,0.309645251),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',360.0,-23516.34391907,34424.42065671,8448.49867693,-2.529120477,-1.726186020,0.009582303),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',480.0,-37837.46699511,18028.39727170,7406.25540271,-1.360069525,-2.725794686,-0.292555349),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',600.0,-42243.58460661,-3093.72887774,4422.91711801,0.163110919,-3.009980598,-0.517584362),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',720.0,-35597.57919549,-23407.91145393,282.09554383,1.641405246,-2.506773678,-0.606963478),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',840.0,-19649.19834455,-37606.11623860,-3932.71525948,2.689647056,-1.349150016,-0.537710698),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',960.0,1431.30912160,-41982.04949668,-7120.45467057,3.035263353,0.160882945,-0.327993994),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1080.0,22136.97605384,-35388.19823762,-8447.62393401,2.587624889,1.630097136,-0.032349004),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1200.0,37050.15790219,-19537.23321425,-7564.83463543,1.461844494,2.674654256,0.272202191),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1320.0,42253.81760945,1431.81867593,-4699.87621174,-0.049247334,3.019518960,0.505890058),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1440.0,36366.59147396,22023.54245720,-601.47121821,-1.549681546,2.571788981,0.607057418),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1560.0,20922.12287985,36826.33975981,3654.91125886,-2.644070068,1.447521216,0.548722983),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1680.0,-23.77224182,41945.51688402,6950.29891751,-3.043358385,-0.057417440,0.346112094),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1800.0,-20964.17821076,36039.06206172,8418.91984963,-2.642795221,-1.546099886,0.052725852),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1920.0,-36401.63863057,20669.75286162,7677.19769359,-1.549488154,-2.627052310,-0.254079652),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2040.0,-42298.30327543,-119.03351118,4922.96388841,-0.052232768,-3.018152669,-0.493827331),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2160.0,-37125.62383511,-20879.63058368,879.86971348,1.456499841,-2.619358421,-0.604081694),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2280.0,-22250.12320553,-36182.74736487,-3393.15365183,2.583161226,-1.536647628,-0.556404555),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2400.0,-1563.06258654,-42035.43179159,-6780.02161760,3.034917506,-0.052702046,-0.363395654),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2520.0,19531.64069587,-36905.65470956,-8395.46892032,2.693682199,1.446079999,-0.075256054),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2640.0,35516.53506142,-22123.71916638,-7815.04516935,1.646882125,2.568416058,0.232985912),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2760.0,42196.03535976,-1547.32646751,-5187.39401981,0.166491841,3.019211549,0.480665780),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2880.0,37802.25393045,19433.57330019,-1198.66634226,-1.359930580,2.677830903,0.602507466),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',0.0,5559.11686836,-11941.04090781,-19.41235206,3.392116762,-1.946985124,4.250755852),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',120.0,12339.83273749,-2771.14447871,18904.57603433,-0.871247614,2.600917693,0.581560002),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',240.0,-3385.00215658,7538.13955729,200.59008616,-2.023512865,-4.261808344,-6.856385787),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',360.0,12805.22442200,-10258.94667177,13780.16486738,0.619279224,1.821510542,2.507365975),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',480.0,5682.46556318,7199.30270473,15437.67134070,-2.474365406,2.087897336,-2.583767460),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',600.0,7628.94243982,-12852.72097492,2902.87208981,2.748131081,-0.740084579,4.125307943),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',720.0,11531.64866625,-858.27542736,19086.85993771,-1.170071901,2.660311986,0.096005705),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',840.0,-3866.98069515,2603.73442786,-4577.36484577,1.157257298,-8.453281164,-4.683959407),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',960.0,13054.77732721,-8707.92757730,15537.63259903,0.229846748,2.119467054,2.063396852),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1080.0,3496.91064652,8712.83919778,12845.81838327,-2.782184997,1.552950644,-3.554436131),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1200.0,9593.07424729,-13023.75963608,6250.46484931,2.072666376,0.278735334,3.778111073),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1320.0,10284.79205084,1487.89914169,18824.37381327,-1.530335053,2.663107730,-0.542205966),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1440.0,-984.62035146,-5187.03480813,-5745.59594144,4.340271916,-7.266811354,1.777668888),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',0.0,25123.29290741,-13225.49966286,3249.40351869,0.488683419,4.797897593,-0.961119693),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1440.0,-151669.05280515,-5645.20454550,-2198.51592118,-0.869182889,-0.870759872,0.156508219),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1560.0,-157497.71657495,-11884.99595074,-1061.44439402,-0.749657961,-0.864016715,0.157766101),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1680.0,-162498.32255577,-18062.99733167,81.00915253,-0.638980378,-0.853687105,0.158098992),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1800.0,-166728.76010920,-24155.99648299,1222.84128677,-0.535600687,-0.840455444,0.157680857),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1920.0,-169935.81924592,-31767.29787964,2749.01540345,-0.430050431,-0.828904183,0.157812340),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2040.0,-172703.07831815,-37662.95639336,3883.60052579,-0.338004891,-0.810277487,0.156020035),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2160.0,-174823.19337404,-43417.55605219,5003.26312809,-0.250258622,-0.789828672,0.153764903),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2280.0,-176324.63925775,-49018.51958648,6104.85025002,-0.166136613,-0.767706262,0.151092242),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2400.0,-177231.42142458,-54454.12699497,7185.48661607,-0.085067854,-0.744001567,0.148033403),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2520.0,-177563.73583232,-59713.14859144,8242.48472591,-0.006561730,-0.718760309,0.144608676),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2640.0,-177338.48026483,-64784.54644698,9273.27220003,0.069809946,-0.691990238,0.140829236),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2760.0,-176569.65151461,-69657.21976255,10275.33063459,0.144426878,-0.663665876,0.136698419),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2880.0,-175268.65299073,-74319.77625463,11246.14177160,0.217631370,-0.633731091,0.132212491),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3000.0,-173444.53039609,-78760.31560396,12183.13775212,0.289737325,-0.602099929,0.127361017),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3120.0,-171104.14813653,-82966.21323591,13083.65278381,0.361037779,-0.568655903,0.122126889),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3240.0,-168252.31543803,-86923.89363433,13944.87382716,0.431811396,-0.533249797,0.116486022),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3360.0,-164891.86832887,-90618.58225954,14763.78794247,0.502328269,-0.495695896,0.110406725),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3480.0,-161023.71139825,-94034.02398835,15537.12375729,0.572855321,-0.455766412,0.103848688),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3600.0,-156646.82136726,-97152.15370791,16261.28409305,0.643661538,-0.413183688,0.096761524),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3720.0,-151758.21285737,-99952.70098346,16932.26607548,0.715023254,-0.367609561,0.089082727),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3840.0,-146352.86521283,-102412.70506284,17545.56394158,0.787229695,-0.318630913,0.080734873),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3960.0,-140423.60777444,-104505.90799734,18096.04807097,0.860588979,-0.265739987,0.071621768),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4080.0,-133960.95961851,-106201.98091318,18577.81121953,0.935434758,-0.208307307,0.061623110),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4200.0,-126952.91860010,-107465.51906186,18983.96903112,1.012133628,-0.145543878,0.050587007),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4320.0,-119384.69396454,-108254.71115372,19306.39581892,1.091093313,-0.076447479,0.038319282),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',0.0,-14464.72135182,-4699.19517587,0.06681686,-3.249312013,-3.281032707,4.007046940),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',120.0,-19410.46286123,-19143.03318969,23114.05522619,0.508602237,-1.156882269,2.379923455),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',240.0,-12686.06129708,-23853.75335645,35529.81733588,1.231633829,-0.221718202,1.118440291),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',360.0,-2775.46649359,-22839.64574119,39494.64689967,1.468963405,0.489481769,-0.023972788),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',480.0,7679.87883570,-16780.50760106,34686.21815555,1.364171080,1.211183897,-1.385151371),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',600.0,14552.40023028,-4819.50121461,17154.70672449,0.109201591,2.176124494,-3.854856805),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',720.0,-15302.38845375,-5556.43440300,1095.95088753,-2.838224312,-3.134231137,3.992596326),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',840.0,-19289.20066748,-19427.04851118,23759.45685636,0.552495087,-1.112499437,2.325112654),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',960.0,-12376.21976437,-23893.38020018,35831.33691892,1.246701529,-0.194294048,1.074867282),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1080.0,-2400.55677665,-22698.62264640,39482.75964390,1.472582922,0.513555654,-0.069306561),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1200.0,8031.66819252,-16455.77592085,34298.94391742,1.351357426,1.239633234,-1.448195324),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1320.0,14559.48780372,-4238.43773813,16079.23154704,-0.026409655,2.218938770,-4.012628896),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1440.0,-16036.04980660,-6372.51406468,2183.44834232,-2.485113443,-2.994994355,3.955891272),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1560.0,-19156.71583814,-19698.89059957,24389.29473934,0.594278133,-1.069418599,2.271152044),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1680.0,-12062.72925552,-23925.82362911,36120.66680667,1.261238798,-0.167201856,1.031478939),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1800.0,-2024.96136966,-22551.56626703,39458.50085787,1.475816889,0.537615764,-0.114887472),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1920.0,8379.80916204,-16123.95878459,33894.75123231,1.337468254,1.268432783,-1.512473301),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2040.0,14527.86748873,-3646.33817120,14960.74306518,-0.180035839,2.261273515,-4.179355590),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2160.0,-16680.12147335,-7149.80800425,3257.64227208,-2.178897351,-2.863927095,3.904876943),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2280.0,-19013.58793448,-19958.93766022,25003.81778666,0.634100431,-1.027559823,2.218002685),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2400.0,-11745.76155818,-23951.19438627,36397.87676581,1.275261813,-0.140425132,0.988259441),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2520.0,-1648.81945070,-22398.50594576,39421.83273890,1.478660174,0.561671519,-0.160733093),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2640.0,8723.97652795,-15784.99406275,33473.35215527,1.322433593,1.297602497,-1.578055493),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2760.0,14452.25571587,-3043.42332645,13796.84870805,-0.355190169,2.302485443,-4.355767077),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2880.0,-17246.31075678,-7890.72601508,4315.39410307,-1.910968458,-2.740945672,3.844722726),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',0.0,1442.10132912,6510.23625449,8.83145885,-3.475714837,0.997262768,6.835860345),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',54.2028672,306.10478453,-5816.45655525,-2979.55846068,3.950663855,3.415332543,-5.879974329),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',74.2028672,3282.82085464,2077.46972905,-5189.17988770,0.097342701,7.375135692,2.900196702),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',94.2028672,530.82729176,6426.20790003,1712.37076793,-3.837120395,-1.252430637,6.561602577),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',114.2028672,-3191.69170212,170.27219912,5956.29807775,-1.394956872,-7.438073471,-0.557553115),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',134.2028672,-1818.99222465,-6322.45146616,681.95247154,3.349795173,-1.530140265,-6.831522765),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',154.2028672,2515.66448634,-2158.83091224,-5552.13320544,2.571979660,7.311930509,-1.639865620),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',174.2028672,2414.52833210,5749.10150922,-1998.59693165,-2.681032960,3.527589301,6.452951429),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',194.2028672,-1877.98944331,3862.27848302,5112.48435863,-3.261489804,-6.026859137,3.433254768),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',214.2028672,-3117.36584395,-4419.74773864,3840.85960912,1.545479182,-5.475416581,-5.207913748),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',234.2028672,815.32034678,-5231.67692249,-3760.04690354,3.870864200,4.455588552,-5.211082191),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',254.2028672,3269.54341810,3029.00081083,-4704.67969713,-0.526711345,6.812157950,3.929825087),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',274.2028672,-10.18099756,6026.23341453,2643.50518407,-3.953623254,-2.616070012,6.145637500),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',294.2028672,-3320.58819584,-1248.42679945,5563.06017927,-0.637046974,-7.417786044,-2.076120187),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',314.2028672,-1025.48974616,-6366.98945782,-911.23559153,3.811771909,0.438071490,-6.829260617),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',334.2028672,3003.75996128,-413.85708003,-5706.15591435,1.674350083,7.694169068,0.316915204),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',354.2028672,1731.42816980,6258.27676925,-409.32527982,-3.400497806,1.447945424,6.904010052),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',374.2028672,-2582.52111460,2024.19020680,5647.55650268,-2.530348121,-7.221719393,1.438141553),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',394.2028672,-2440.56848578,-5702.77311877,1934.81094689,2.731792947,-3.350576075,-6.527773339),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',414.2028672,1951.22934391,-3423.59443045,-5121.67808201,3.249039133,6.465974362,-3.069806659),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',434.2028672,2886.50939356,4888.68626216,-3096.29885989,-1.973162139,4.877039020,5.832414910),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',454.2028672,-1276.55532182,4553.26898463,4406.19787375,-3.715146421,-5.320176914,4.418210777),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',474.2028672,-3181.54698042,-3831.29976506,4096.80242787,1.114159970,-6.104773578,-4.829967400),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',0.0,14712.22023280,-1443.81061850,0.83497888,4.418965470,1.629592098,4.115531802),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',120.0,25418.88807860,9342.60307989,23611.46690798,0.051284086,1.213127306,2.429004159),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',240.0,21619.59550749,16125.24978864,36396.79365831,-0.963604380,0.685454965,1.177181937),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',360.0,12721.50543331,19258.96193362,40898.47648359,-1.457448565,0.179955469,0.071502601),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',480.0,1272.80760054,18458.41971897,37044.74742696,-1.674863386,-0.436454983,-1.201040990),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',600.0,-10058.43188619,11906.60764454,21739.62097733,-1.245829683,-1.543789125,-3.324449221),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',720.0,10924.40116466,-2571.92414170,-2956.34856294,6.071727751,1.349579102,3.898430260),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',840.0,25332.14851525,8398.91099924,21783.90654357,0.222320754,1.272214306,2.580527192),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',960.0,22317.71926039,15574.82086129,35495.77144092,-0.892750056,0.737383381,1.291738834),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1080.0,13795.68675885,19088.83051008,40803.69584385,-1.420277669,0.235599456,0.185517056),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1200.0,2515.17145049,18746.63776282,37864.58088636,-1.668016053,-0.360431458,-1.052854596),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1320.0,-9084.48602106,12982.62608646,24045.63900249,-1.378032363,-1.373184736,-3.013963835),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1440.0,5647.00909495,-3293.90518693,-5425.85235063,8.507977176,0.414560797,2.543322806),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1560.0,25111.63372210,7412.55109488,19844.25781729,0.416496290,1.332106006,2.739301737),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1680.0,22961.47461641,14985.74459578,34511.09257381,-0.816711048,0.789391108,1.407901804),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1800.0,14841.15301459,18876.91439870,40626.25901619,-1.380403341,0.290228810,0.298258120),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1920.0,3750.70174081,18978.57939698,38578.11783220,-1.656939412,-0.287930881,-0.910825599),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2040.0,-8027.30219489,13939.54436955,26136.49045637,-1.474476061,-1.222693624,-2.737178731),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2160.0,-1296.95657092,-2813.69369768,-5871.09587258,9.881929371,-1.978467207,-1.922261005),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2280.0,24738.60364819,6383.41644019,17787.27631900,0.639556952,1.392554379,2.906206324),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2400.0,23546.85388669,14358.15602832,33441.67679479,-0.734895006,0.841564851,1.526009909),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2520.0,15855.87696303,18624.05633582,40367.13420574,-1.337753546,0.343969522,0.410018472),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2640.0,4976.44933591,19156.75504042,39189.68603184,-1.642084365,-0.218525096,-0.774148204),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2760.0,-6909.20746210,14790.44707042,28034.46732222,-1.545152610,-1.088119523,-2.487447214),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2880.0,-7331.65006707,-604.17323419,-2723.51014575,6.168997265,-3.634011554,-5.963531682),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',0.0,-8801.60046706,-0.03357557,-0.44522743,-3.835279101,-7.662552175,0.944561323),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',120.0,-1684.34352858,-31555.95196340,3888.99944319,2.023055719,-2.151306405,0.265065778),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',240.0,12325.51410155,-38982.15046244,4802.88832275,1.763224157,-0.102514446,0.012397139),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',360.0,22773.66831936,-34348.02176606,4228.77407391,1.067616787,1.352427865,-0.166956367),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',480.0,26194.40441089,-19482.94203672,2393.84774063,-0.313732186,2.808771328,-0.346204118),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',600.0,8893.50573448,5763.38890561,-713.69884164,-7.037399220,3.022613131,-0.370272416),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',720.0,-6028.75686537,-25648.99913786,3164.37107274,1.883159288,-3.177051976,0.390793162),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',840.0,8313.57299056,-38146.45710922,4697.80777535,1.905002133,-0.625883074,0.076098187),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',960.0,20181.29108622,-36842.60674073,4529.12568218,1.326244476,0.921916487,-0.114527455),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1080.0,26302.61794569,-25173.39539436,3084.65309986,0.245398835,2.329974347,-0.287495880),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1200.0,19365.07045602,-2700.00490122,317.42727417,-3.009733018,3.902496058,-0.478928582),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1320.0,-9667.81878780,-16930.19112642,2095.87469034,1.279288285,-4.736005905,0.582878255),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1440.0,4021.31438583,-36066.09209609,4442.91587411,2.007322354,-1.227461376,0.149383897),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',0.0,-9301.24542292,3326.10200382,2318.36441127,-8.729303005,-0.828225037,-0.122314827),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',120.0,-44672.91239680,-6213.11996581,-1738.80131727,-3.719475070,-1.336673022,-0.621888261),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',240.0,-67053.08885388,-14994.69685946,-5897.99072793,-2.860576613,-1.183771565,-0.568473909),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',360.0,-85227.84253168,-22897.08484471,-9722.59184564,-2.426469823,-1.078592475,-0.525341431),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',480.0,-100986.00419136,-30171.19698695,-13283.77044765,-2.147108978,-1.000530827,-0.491587582),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',600.0,-115093.00686387,-36962.56316477,-16634.15682929,-1.945446188,-0.938947736,-0.464199202),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',720.0,-127965.80064891,-43363.32967165,-19809.90480432,-1.789652016,-0.888278463,-0.441254468),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',840.0,-139863.28332207,-49436.45704153,-22836.80438139,-1.663762568,-0.845315913,-0.421548627),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',960.0,-150960.22978259,-55227.45413896,-25734.01408879,-1.558730986,-0.808061065,-0.404293846),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1080.0,-161381.71414630,-60770.64040903,-28516.26290017,-1.468977174,-0.775190459,-0.388951810),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1200.0,-171221.18736947,-66092.76474442,-31195.19847387,-1.390837596,-0.745785633,-0.375140398),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1320.0,-180550.82888746,-71215.23290630,-33780.24938270,-1.321788672,-0.719184752,-0.362579495),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1440.0,-189427.87533074,-76155.54943344,-36279.19882816,-1.260024473,-0.694896053,-0.351058133),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1560.0,-197898.69401409,-80928.29015181,-38698.57972447,-1.204211888,-0.672544709,-0.340413731),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1600.0,-200638.82986236,-82484.14969882,-39488.34331447,-1.186748462,-0.665472422,-0.337037582),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',0.0,9892.63794341,35.76144969,-1.08228838,3.556643237,6.456009375,0.783610890),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',20.0,11931.95642997,7340.74973750,886.46365987,0.308329116,5.532328972,0.672887281),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',40.0,11321.71039205,13222.84749156,1602.40119049,-1.151973982,4.285810871,0.521919425),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',60.0,9438.29395675,17688.05450261,2146.59293402,-1.907904054,3.179955046,0.387692479),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',80.0,6872.08634639,20910.11016811,2539.79945034,-2.323995367,2.207398462,0.269506121),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',100.0,3933.37509798,23024.07662542,2798.25966746,-2.542860616,1.327134966,0.162450076),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',120.0,816.64091546,24118.98675475,2932.69459428,-2.626838010,0.504502763,0.062344306),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',140.0,-2334.41705804,24246.86096326,2949.36448841,-2.602259646,-0.288058266,-0.034145135),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',160.0,-5394.31798039,23429.42716149,2850.86832586,-2.474434068,-1.074055982,-0.129868366),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',180.0,-8233.35130237,21661.24480883,2636.51456118,-2.230845533,-1.875742344,-0.227528603),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',200.0,-10693.96497348,18909.88168891,2302.33707548,-1.835912433,-2.716169865,-0.329931880),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',220.0,-12553.89669904,15114.63990716,1840.93573231,-1.212478879,-3.619036996,-0.439970633),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',240.0,-13450.20591864,10190.57904289,1241.95958736,-0.189082511,-4.596701971,-0.559173899),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',260.0,-12686.60437121,4079.31106161,498.27078614,1.664498211,-5.559889865,-0.676747779),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',280.0,-8672.55867753,-2827.56823315,-342.59644716,5.515079852,-5.551222962,-0.676360044),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',300.0,1153.31498060,-6411.98692060,-779.87288941,9.689818102,1.388598425,0.167868798),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',320.0,9542.79201056,-533.71253081,-65.73165428,3.926947087,6.459583539,0.785686755),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',340.0,11868.80960100,6861.59590848,833.72780602,0.452957852,5.632811328,0.685262323),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',360.0,11376.23941678,12858.97121366,1563.40660172,-1.087665695,4.374693347,0.532207051),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',380.0,9547.70300782,17421.48570758,2118.56907515,-1.876540262,3.253891728,0.395810243),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',400.0,7008.51470263,20725.47471227,2520.56064289,-2.308703599,2.270724438,0.276138613),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',420.0,4083.18551180,22910.88306802,2786.35642660,-2.536610941,1.383768875,0.168165414),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',440.0,970.13107533,24071.19896282,2927.30875440,-2.626673095,0.557274717,0.067549303),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',460.0,-2183.75499348,24261.30188126,2950.09189560,-2.607082241,-0.236785937,-0.029112844),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',480.0,-5252.49066783,23505.58108388,2857.68628654,-2.484465059,-1.022158411,-0.124702643),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',500.0,-8107.41437587,21801.13395060,2649.76852683,-2.247669530,-1.821071275,-0.221914939),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',520.0,-10594.01813094,19118.22269010,2322.77197767,-1.863224062,-2.656353699,-0.323512642),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',540.0,-12496.70758499,15399.13096351,1869.75958053,-1.258272118,-3.551534022,-0.432332913),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',560.0,-13467.50382653,10561.43040038,1280.84842178,-0.272050695,-4.520503543,-0.550014833),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',580.0,-12848.00717497,4541.72432009,548.59976478,1.493938056,-5.489644146,-0.667479244),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',600.0,-9152.79920397,-2343.88902799,-287.93741332,5.127695273,-5.650584983,-0.686013644),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',620.0,280.12478642,-6500.11368508,-790.36236302,9.779642904,0.581430120,0.074124421),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',640.0,9166.21406115,-1093.48756223,-129.53833135,4.316926785,6.438465969,0.785095966),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',660.0,11794.74563870,6381.74484842,780.82775971,0.604642523,5.731705440,0.697571522),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',680.0,11424.80363789,12493.80833338,1524.27683836,-1.021148661,4.463489406,0.542537702),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',700.0,9652.78920084,17153.46470428,2090.43413681,-1.844382696,3.327595388,0.403924198),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',720.0,7141.24742526,20538.97115158,2501.18059966,-2.293079623,2.333598993,0.282727441),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',0.0,7534.10987189,41266.39266843,-0.10801028,-3.027168008,0.558848996,0.207982755),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',120.0,-14289.19940414,39469.05530051,1428.62838591,-2.893205245,-1.045447840,0.179634249),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',240.0,-32222.92014955,26916.25425799,2468.59996594,-1.973007929,-2.359335071,0.102539376),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',360.0,-41413.95109398,7055.51656639,2838.90906671,-0.521665080,-3.029172207,-0.002066843),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',480.0,-39402.72251896,-14716.42475223,2441.32678358,1.066928187,-2.878714619,-0.105865729),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',600.0,-26751.08889828,-32515.13982431,1384.38865570,2.366228869,-1.951032799,-0.181018498),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',720.0,-6874.77975542,-41530.38329422,-46.60245459,3.027415087,-0.494671177,-0.207337260),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',840.0,14859.52039042,-39302.58907247,-1465.02482524,2.869609883,1.100123969,-0.177514425),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',960.0,32553.14863770,-26398.88401807,-2485.45866002,1.930064459,2.401574539,-0.099250520),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1080.0,41365.67576837,-6298.09965811,-2828.05254033,0.459741276,3.051680214,0.006431872),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1200.0,38858.83295070,15523.39314924,-2396.86850752,-1.140211488,2.867567143,0.110637217),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1320.0,25701.46068162,33089.42617648,-1308.68556638,-2.428713821,1.897381431,0.184605907),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1440.0,5501.08137100,41590.27784405,138.32522930,-3.050691874,0.409203052,0.207958133),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1440.0,8118.18519221,-41368.40537378,4.11046687,3.017696741,0.591994297,0.000933016),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1320.0,27766.34015328,-31724.97000557,9.93297846,2.314236153,2.024903193,0.000660861),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1200.0,39932.57237973,-13532.60040454,13.12958252,0.987382819,2.911942843,0.000213298),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1080.0,41341.01365441,8305.71681955,12.84988501,-0.605098224,3.014378268,-0.000291034),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-960.0,31614.99210558,27907.29155353,9.16618797,-2.034243523,2.305014102,-0.000718418),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-840.0,13375.75227587,39994.27017651,3.05416854,-2.915424366,0.975119874,-0.000955576),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-720.0,-8464.89963309,41312.93549892,-3.86622919,-3.011600615,-0.617275050,-0.000939664),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-600.0,-28026.23406158,31507.89995661,-9.76047869,-2.296840160,-2.043607595,-0.000674889),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-480.0,-40040.01314363,13218.00579413,-13.06594832,-0.963328772,-2.919827983,-0.000231414),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-360.0,-41268.43291976,-8632.06859693,-12.90661266,0.630042315,-3.009677376,0.000273163),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-240.0,-31377.85317015,-28156.13970334,-9.32605530,2.054021717,-2.288554158,0.000704959),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-120.0,-13031.41552688,-40092.33381029,-3.27636660,2.924657466,-0.950541167,0.000949381),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',120.0,28306.85426674,-31243.80147394,9.57216891,2.279137743,2.064316875,0.000684127),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',240.0,40159.05128805,-12845.39151157,12.96086316,0.937265422,2.928448287,0.000245505),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',360.0,41192.55903455,9013.79606759,12.90495666,-0.656727442,3.003543458,-0.000257479),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',480.0,31131.69755798,28445.55681731,9.42419238,-2.073484842,2.269770851,-0.000691233),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',600.0,12687.81846530,40217.83324639,3.44726249,-2.931721827,0.924962230,-0.000940766),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',720.0,-9172.23500245,41161.63475527,-3.43575757,-3.000571486,-0.668847508,-0.000940101),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',840.0,-28562.51093192,31022.45987587,-9.39562161,-2.261449202,-2.082713897,-0.000689669),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',960.0,-40260.77504549,12529.11484344,-12.84915105,-0.913097031,-2.935933528,-0.000256181),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1080.0,-41114.14376538,-9338.87194483,-12.87952404,0.681588815,-2.998432565,0.000245006),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1200.0,-30890.01512240,-28690.40750792,-9.48037212,2.092989805,-2.252978152,0.000680459),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1320.0,-12341.46194020,-40310.06316386,-3.55833201,2.940537098,-0.900219523,0.000934170),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1440.0,9533.27750818,-41065.52390214,3.30756482,2.995596171,0.695200236,0.000938525),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',0.0,-42014.83795787,3702.34357772,-26.67500257,-0.269775247,-3.061854393,0.000336726),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9300.0,40968.68133298,-9905.99156086,11.84946837,0.722756848,2.989645389,-0.000161261),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9360.0,42135.66858481,1072.99195618,10.83481752,-0.078150602,3.074772455,-0.000380063),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9400.0,41304.75156132,8398.27742944,9.74006214,-0.612515135,3.014117469,-0.000511575),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',0.0,-14506.92313768,-21613.56043281,10.05018894,2.212943308,1.159970892,3.020600202),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',120.0,7309.62197950,6076.00713664,6800.08705263,1.300543383,5.322579615,-4.788746312),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',240.0,-3882.62933791,11960.00543452,-25088.14383845,-2.146773699,-1.372461491,-2.579382089),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',360.0,-16785.45507465,-734.79159704,-34300.57085853,-1.386528125,-1.907762641,-0.220949641),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',480.0,-23524.16689356,-13629.45124622,-30246.27899200,-0.462846784,-1.586139830,1.269293624),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',600.0,-22890.23597092,-22209.35900155,-16769.91946116,0.704351342,-0.671112594,2.432433851),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',720.0,-11646.39698980,-19855.44222106,3574.00109607,2.626712727,1.815887329,2.960883901),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',840.0,7665.76124241,11159.78946577,345.93813117,-0.584818007,3.193514161,-5.750338922),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',960.0,-6369.35388112,10204.80073022,-27844.52150384,-2.050573276,-1.582940542,-2.076075232),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1080.0,-18345.64763145,-2977.76684430,-34394.90760612,-1.243589864,-1.892050757,0.060372061),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1200.0,-23979.74839255,-15436.44139571,-28616.50540218,-0.294973425,-1.482987916,1.478255628),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1320.0,-21921.97167880,-22852.45147658,-13784.85308485,0.945455629,-0.428940995,2.596964378),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1440.0,-8266.43821031,-17210.74590112,6967.95546070,3.082244069,2.665881872,2.712555075),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1560.0,6286.85464535,13809.56328971,-6321.60663781,-1.615964016,1.383135377,-5.358719132),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1680.0,-8730.87526788,8244.63344365,-30039.92372791,-1.935622871,-1.724162072,-1.631224738),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1800.0,-19735.81883249,-5191.76593007,-34166.14974143,-1.097835530,-1.860148418,0.324401050),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1920.0,-24232.73847703,-17112.08243255,-26742.88893252,-0.119786184,-1.364365317,1.680220468),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2040.0,-20654.45640708,-23184.54386047,-10611.55144716,1.209238113,-0.144169639,2.748054938),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2160.0,-4337.15988957,-13410.46817244,9870.45949215,3.532753095,3.772236461,2.088424247),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2280.0,4074.62263523,14698.07548285,-12248.65327973,-2.053824693,0.203325817,-4.607867718),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2400.0,-10950.23438984,6148.66879447,-31736.65532865,-1.809875605,-1.816179062,-1.233364913),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2520.0,-20952.40702045,-7358.71507895,-33633.06643074,-0.948973031,-1.813594137,0.573893078),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2640.0,-24273.48944134,-18637.15546906,-24633.27702390,0.064161440,-1.228537560,1.875728935),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2760.0,-19057.55468077,-23148.29322082,-7269.38614178,1.500802809,0.195383037,2.879031237),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2880.0,43.69305308,-8145.90299207,11634.57079913,3.780661682,5.105315423,0.714401345),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',0.0,-2715.28237486,-6619.26436889,-0.01341443,-1.008587273,0.422782003,7.385272942),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',120.0,-1816.87920942,-1835.78762132,6661.07926465,2.325140071,6.655669329,2.463394512),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',240.0,1483.17364291,5395.21248786,4448.65907172,2.560540387,4.039025766,-5.736648561),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',360.0,2801.25607157,5455.03931333,-3692.12865695,-0.595095864,-3.951923117,-6.298799125),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',480.0,411.09332812,-1728.99769152,-6935.45548810,-2.935970964,-6.684085058,1.492800886),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',600.0,-2506.52558454,-6628.98655094,-988.07784497,-1.390577189,-0.556164143,7.312736468),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',720.0,-2090.79884266,-2723.22832193,6266.13356576,1.992640665,6.337529519,3.411803080),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',840.0,1091.80560222,4809.88229503,5172.42897894,2.717483546,4.805518977,-5.030019896),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',960.0,2811.14062300,5950.65707171,-2813.23705389,-0.159662742,-3.121215491,-6.775341949),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1080.0,805.72698304,-812.16627907,-7067.58483968,-2.798936020,-6.889265977,0.472770873),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1200.0,-2249.59837532,-6505.84890714,-1956.72365062,-1.731234729,-1.528750230,7.096660885),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1320.0,-2311.57375797,-3560.99112891,5748.16749600,1.626569751,5.890482233,4.293545048),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1440.0,688.16056594,4124.87618964,5794.55994449,2.810973665,5.479585563,-4.224866316),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1560.0,2759.94088230,6329.87271798,-1879.19518331,0.266930672,-2.222670878,-7.119390567),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1680.0,1171.50677137,125.82053748,-7061.96626202,-2.605687852,-6.958489749,-0.556333225),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1800.0,-1951.43708472,-6251.71945820,-2886.95472355,-2.024131483,-2.475214272,6.741537478),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1920.0,-2475.70722288,-4331.90569958,5117.31234924,1.235823539,5.322743371,5.091281211),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2040.0,281.46097847,3353.51057102,6302.87900650,2.840647273,6.047222485,-3.337085992),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2160.0,2650.33118860,6584.33434851,-908.29027134,0.675457235,-1.274044972,-7.323921567),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2280.0,1501.17226597,1066.31132756,-6918.71472952,-2.361891904,-6.889669974,-1.574718619),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2400.0,-1619.73468334,-5871.14051991,-3760.56587071,-2.264093975,-3.376316601,6.254622256),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2520.0,-2581.04202505,-5020.05572531,4385.92329047,0.829668458,4.645048038,5.789262667),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2640.0,-119.22080628,2510.90620488,6687.45615459,2.807575712,6.496549689,-2.384136661),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2760.0,2486.23806726,6708.18210028,80.43349581,1.057274905,-0.294294027,-7.384689123),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2880.0,1788.42334580,1990.50530957,-6640.59337725,-2.074169091,-6.683381288,-2.562777776),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',0.0,21707.46412351,-15318.61752390,0.13551152,1.304029214,1.816904974,3.161919976),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',120.0,18616.75971861,3166.15177043,18833.41523210,-2.076122016,2.838457575,1.586210535),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',240.0,-3006.50596328,18522.20742011,18941.84078154,-3.375452789,1.032680773,-1.559324534),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',360.0,-21607.02086957,15432.59962630,206.62470309,-1.306049851,-1.817011568,-3.163725018),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',480.0,-18453.06134549,-3150.83256134,-18685.83030936,2.106017925,-2.860236337,-1.586151870),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',600.0,3425.11742384,-18514.73232706,-18588.67200557,3.394666340,-1.003072030,1.610061295),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',720.0,21858.23838148,-15101.51661554,387.34517048,1.247973967,1.856017403,3.161439948),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',840.0,18360.69935796,3506.55256762,19024.81678979,-2.122684184,2.830618605,1.537510677),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',960.0,-3412.84765409,18646.85269710,18748.00359987,-3.366815728,0.986039922,-1.607874972),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1080.0,-21758.08331586,15215.44829478,-180.82181406,-1.250144680,-1.856490448,-3.163774870),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1200.0,-18193.41290284,-3493.85876912,-18877.14757717,2.153326942,-2.852221264,-1.536617760),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1320.0,3833.57386848,-18635.77026711,-18388.68722885,3.384748179,-0.955363841,1.658785020),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1440.0,22002.20074562,-14879.72595593,774.32827099,1.191573619,1.894561165,3.159953047),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',0.0,6333.08123128,-1580.82852326,90.69355720,0.714634423,3.224246550,7.083128132),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',120.0,-3990.93845855,3052.98341907,4155.32700629,-5.909006188,-0.876307966,-5.039131404),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',240.0,-603.55232010,-2685.13474569,-5891.70274282,7.572519907,-1.975656726,0.121722605),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',360.0,4788.22345627,782.56169214,4335.14284621,-4.954509026,3.683346464,4.804645839),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',480.0,-6291.84601644,1547.82790772,-453.67116498,-0.308625588,-3.341538574,-7.082659115),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',600.0,4480.74573428,-3028.55200374,-3586.94343641,5.320920857,1.199736275,5.626350481),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',720.0,-446.42460916,2932.28872588,5759.19389757,-7.561000245,1.550975493,-1.374970885),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',840.0,-3713.79581831,-1382.66125130,-5122.45131136,6.090931626,-3.512629733,-3.467571746),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',960.0,6058.32017522,-827.47406722,2104.04678651,-1.798403024,3.787067272,6.641439744),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1080.0,-5631.73659006,2623.70953644,1766.49125084,-3.216401578,-2.309140959,-6.788609120),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1200.0,2776.84991560,-3255.36941953,-4837.19667790,6.748135564,-0.193044825,4.005718698),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1320.0,1148.04430837,2486.07343386,5826.34075913,-7.420162295,2.589456382,0.356350006),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1440.0,-4527.90871828,-723.29199041,-4527.44608319,5.121674217,-3.909895427,-4.500218556),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',0.0,-11665.70902324,24943.61433357,25.80543633,-1.596228621,-1.476127961,1.126059754),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',120.0,-11645.35454950,979.37668356,5517.89500058,3.407743502,-5.183094988,-0.492983277),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',240.0,5619.19252274,19651.44862280,-7261.38496765,-2.013634213,3.106842861,0.284235517),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',360.0,-9708.68629714,26306.14553149,-1204.29478856,-1.824164290,-0.931909596,1.113419052),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',480.0,-14394.03162892,6659.30765074,5593.38345858,1.556522911,-4.681657614,0.296912248),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',600.0,7712.09476270,15565.72627434,-7342.40465571,-1.646800364,4.070313571,-0.109483081),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',720.0,-7558.36739603,27035.11367962,-2385.12054184,-1.999583791,-0.393409283,1.078093515),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',840.0,-15495.61862220,11550.15897828,5053.83178121,0.469277336,-4.029761073,0.679054742),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',960.0,9167.02568222,10363.65204210,-6871.52576042,-0.881621027,5.223361510,-0.740696297),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1080.0,-5275.80272094,27151.78486008,-3494.50687216,-2.129609388,0.150196480,1.021038089),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1200.0,-15601.37656145,15641.29379850,4217.03266850,-0.249183123,-3.405238557,0.888214503),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1320.0,9301.05872300,3883.15265574,-5477.86477017,0.871447821,6.493677331,-1.885545282),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1440.0,-2914.31065828,26665.20392758,-4511.09814335,-2.216261909,0.710067769,0.940691824),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',0.0,42080.71852213,-2646.86387436,0.81851294,0.193105177,3.068688251,0.000438449),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',120.0,37740.00085593,18802.76872802,3.45512584,-1.371035206,2.752105932,0.000336883),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',240.0,23232.82515008,35187.33981802,4.98927428,-2.565776620,1.694193132,0.000163365),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',360.0,2467.44290178,42093.60909959,5.15062987,-3.069341800,0.179976276,-0.000031739),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',480.0,-18962.59052991,37661.66243819,4.04433258,-2.746151982,-1.382675777,-0.000197633),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',600.0,-35285.00095313,23085.44402778,2.08711880,-1.683277908,-2.572893625,-0.000296282),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',720.0,-42103.20138132,2291.06228893,-0.13274964,-0.166974816,-3.070104560,-0.000311007),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',840.0,-37580.31858370,-19120.40485693,-2.02755702,1.394367848,-2.740341612,-0.000248591),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',960.0,-22934.20761876,-35381.23870806,-3.16495932,2.580167539,-1.672360951,-0.000134907),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1080.0,-2109.90332389,-42110.71508198,-3.36507889,3.070935369,-0.153808390,-0.000005855),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1200.0,19282.77774728,-37495.59250598,-2.71861462,2.734400524,1.406220933,0.000103486),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1320.0,35480.60990600,-22779.03375285,-1.52841859,1.661210676,2.587414593,0.000168300),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1440.0,42119.96263499,-1925.77567263,-0.19827433,0.140521206,3.071541613,0.000179561),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',0.0,-6131.82730456,2446.52815528,-253.64211033,-0.144920228,0.995100963,7.658645067),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',5.0,-5799.24256134,2589.14811119,2011.54515100,2.325207364,-0.047125672,7.296234071),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',10.0,-4769.05061967,2420.46580562,4035.30855837,4.464585796,-1.060923209,6.070907874),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',15.0,-3175.45157340,1965.98738086,5582.12569607,6.049639376,-1.935777558,4.148607019),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',20.0,-1210.19024802,1281.54541294,6474.68172772,6.920746273,-2.580517337,1.748783868),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',25.0,896.73799533,447.12357305,6607.22400507,6.983396282,-2.925846168,-0.872655207),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',30.0,2896.99663534,-440.04738594,5954.92675486,6.211488246,-2.926949815,-3.433959806),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',35.0,4545.78970167,-1273.55952872,4580.16512984,4.656984233,-2.568711513,-5.638510954),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',40.0,5627.43299371,-1947.94282469,2634.16714930,2.464141047,-1.873985161,-7.195743032),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',45.0,5984.72318534,-2371.37691609,349.87996209,-0.121276950,-0.911981546,-7.859613894),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',50.0,5548.43325922,-2480.16469245,-1979.24314527,-2.763269534,0.199691915,-7.482796996),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',0.0,423.99295524,-6658.12256149,136.13040356,1.006373613,0.217309983,7.662587892),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',20.0,931.80883587,-1017.17852239,6529.19244527,-0.298847918,7.613891977,1.226399480),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',40.0,-83.44906141,6286.20208453,2223.49837161,-1.113515974,2.530970283,-7.219445568),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',60.0,-958.57681221,3259.26005348,-5722.63732467,-0.101225813,-6.735338321,-3.804851872),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',80.0,-255.25619985,-5132.59762974,-4221.27233118,1.077709303,-4.905938824,5.892521264),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',100.0,867.44295097,-5038.40402933,4256.73810533,0.479447535,5.032326446,5.857126248),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',120.0,559.16882013,3376.30587937,5699.22017391,-0.906749328,6.646149867,-3.852331832),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',140.0,-669.85184205,6196.00229484,-2281.95741770,-0.795804092,-2.752114827,-7.202478520),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',160.0,-784.20708019,-1278.53125553,-6449.19892596,0.636702380,-7.595425203,1.431090802),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',180.0,406.15811659,-6607.03115799,148.33021477,1.009818575,0.231843765,7.692047844),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',200.0,916.34911813,-884.08649248,6491.09810362,-0.302163049,7.669887109,1.084336909),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',220.0,-104.02490970,6304.31821405,1960.08739882,-1.108873823,2.259522809,-7.351147710),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',240.0,-944.61642849,2872.17248379,-5846.94103362,-0.051117686,-6.989747076,-3.413102600),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',260.0,-187.16569888,-5404.86163467,-3731.97057618,1.094696706,-4.412110995,6.326060952),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',280.0,884.59720467,-4465.74516163,4725.83632696,0.380656028,5.691554046,5.303910983),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',300.0,446.40767236,4086.66839620,5093.05596650,-0.982424447,6.072965199,-4.791630682),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',320.0,-752.24467495,5588.35473301,-3275.04092573,-0.661161370,-4.016290740,-6.676898026),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',340.0,-643.72872525,-2585.02528560,-5923.01306608,0.807922142,-7.171597814,3.041115058),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',360.0,584.40295819,-6202.35605817,1781.00536019,0.869250450,2.226927514,7.471676765),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',380.0,779.59211765,1100.73728301,6311.59529480,-0.599552305,7.721032522,-1.275153027),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',400.0,-403.03155588,6399.18000837,-364.12735875,-1.008861924,-0.516636615,-7.799812287),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',420.0,-852.93910071,192.65232023,-6322.47054784,0.396006194,-7.882964919,-0.289331517),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',0.0,-5566.59512819,-3789.75991159,67.60382245,2.873759367,-3.825340523,6.023253926),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',120.0,4474.27915495,-1447.72286142,4619.83927235,4.712595822,5.668306153,-2.701606741),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',240.0,1922.17712474,5113.01138342,-4087.08470203,-6.490769651,-0.522350158,-3.896001154),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',360.0,-6157.93546882,-2094.70798790,-1941.63730960,0.149900661,-5.175192523,5.604262034),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',480.0,2482.64052411,-3268.45944555,5146.38006190,6.501814698,4.402848754,-0.350943511),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',600.0,4036.26455287,4827.43347201,-2507.99063955,-5.184409515,1.772280695,-5.331390168),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',720.0,-5776.81371622,-118.64155319,-3641.22052418,-2.539917207,-5.622701582,4.403125405),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',840.0,67.98699487,-4456.49213473,4863.71794283,7.183809420,2.418917791,2.015642495),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',960.0,5520.62207038,3782.38203554,-596.73193161,-3.027966069,3.754152525,-6.013506363),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1080.0,-4528.05104455,1808.46273329,-4816.99727762,-4.808419763,-5.185789345,2.642104494),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1200.0,-2356.61468078,-4852.51202272,3856.53816184,6.688446735,0.118520958,4.021854210),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1320.0,6149.65800134,2173.59423261,1369.29488732,-0.345832777,5.109857861,-5.842951828),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1440.0,-2629.55011449,3400.98040158,-5344.38217129,-6.368548448,-3.998963509,0.577253064),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',0.0,2328.96975262,-5995.22051338,1719.97297192,2.912073281,-0.983417956,-7.090816210),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',120.0,1020.69234558,2286.56260634,-6191.55565927,-3.746543902,6.467532721,1.827985678),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',240.0,-3226.54349155,3503.70977525,4532.80979343,1.000992116,-5.788042888,5.162585826),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',360.0,2456.10706533,-6071.93855503,1222.89768554,2.679390040,-0.448290811,-7.228792155),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',480.0,787.16457349,2719.91800946,-6043.86662024,-3.759883839,6.277439314,2.397897864),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',600.0,-3110.97648029,3121.73026235,4878.15217035,1.244916056,-6.124880425,4.700576353),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',720.0,2567.56229695,-6112.50383922,713.96374435,2.440245751,0.098109002,-7.319959258),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',840.0,556.05661780,3144.52288201,-5855.34636178,-3.754660143,6.044752775,2.957941672),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',960.0,-2982.47940539,2712.61663711,5192.32330472,1.475566773,-6.427737014,4.202420227),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1080.0,2663.08964352,-6115.48290885,196.40072866,2.196121564,0.652415093,-7.362824152),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1200.0,328.54999674,3557.09490552,-5626.21427211,-3.731193288,5.769341172,3.504058731),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1320.0,-2842.06876757,2278.42343492,5472.33437150,1.691852635,-6.693216335,3.671022712),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1440.0,2742.55398832,-6079.67009123,-326.39012649,1.948497651,1.211072678,-7.356193131);
+-- Verify we loaded all 518 vectors
+SELECT count(*) AS vectors_loaded FROM vallado_vectors;
+ vectors_loaded
+----------------
+ 518
+(1 row)
+
+-- Materialize propagation results (avoid recomputing per query)
+CREATE TEMP TABLE vallado_results AS
+SELECT
+ v.satnum,
+ v.tsince_min,
+ sgp4_propagate_safe(
+ tle_from_lines(v.tle_line1, v.tle_line2),
+ _vallado_jd_plus_min(
+ tle_epoch(tle_from_lines(v.tle_line1, v.tle_line2)),
+ v.tsince_min
+ )
+ ) AS eci,
+ v.ref_x, v.ref_y, v.ref_z,
+ v.ref_vx, v.ref_vy, v.ref_vz
+FROM vallado_vectors v;
+-- Summary: all 518 must propagate; 434 match at tight tolerance.
+-- These numbers are the regression baseline for Bill Gray's sat_code.
+SELECT
+ count(*) AS total,
+ count(*) FILTER (WHERE eci IS NOT NULL) AS propagated,
+ count(*) FILTER (WHERE eci IS NOT NULL
+ AND greatest(abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)) < 1e-4
+ AND greatest(abs(eci_vx(eci) - ref_vx),
+ abs(eci_vy(eci) - ref_vy),
+ abs(eci_vz(eci) - ref_vz)) < 1e-7
+ ) AS tight_pass,
+ round(max(CASE WHEN eci IS NOT NULL THEN greatest(
+ abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)
+ ) END)::numeric, 8) AS worst_pos_km,
+ round(max(CASE WHEN eci IS NOT NULL THEN greatest(
+ abs(eci_vx(eci) - ref_vx),
+ abs(eci_vy(eci) - ref_vy),
+ abs(eci_vz(eci) - ref_vz)
+ ) END)::numeric, 10) AS worst_vel_kms
+FROM vallado_results;
+ total | propagated | tight_pass | worst_pos_km | worst_vel_kms
+-------+------------+------------+---------------+---------------
+ 518 | 518 | 434 | 1694.24999701 | 0.0100228769
+(1 row)
+
+-- Per-satellite breakdown: position vs velocity pass counts.
+-- Satellites with worst_pos > 0.1 km have known implementation differences
+-- vs Vallado's AFSPC mode (see header comments).
+SELECT
+ satnum,
+ count(*) AS vectors,
+ count(*) FILTER (WHERE eci IS NOT NULL
+ AND greatest(abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)) < 1e-4
+ ) AS pos_pass,
+ count(*) FILTER (WHERE eci IS NOT NULL
+ AND greatest(abs(eci_vx(eci) - ref_vx),
+ abs(eci_vy(eci) - ref_vy),
+ abs(eci_vz(eci) - ref_vz)) < 1e-7
+ ) AS vel_pass,
+ count(*) FILTER (WHERE eci IS NULL) AS errors,
+ round(max(CASE WHEN eci IS NOT NULL THEN greatest(
+ abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)
+ ) END)::numeric, 6) AS worst_pos_km
+FROM vallado_results
+GROUP BY satnum
+ORDER BY satnum;
+ satnum | vectors | pos_pass | vel_pass | errors | worst_pos_km
+--------+---------+----------+----------+--------+--------------
+ 00005 | 13 | 13 | 13 | 0 | 0.000000
+ 04632 | 5 | 1 | 1 | 0 | 7.536284
+ 06251 | 25 | 25 | 25 | 0 | 0.000089
+ 08195 | 25 | 25 | 25 | 0 | 0.000056
+ 09880 | 25 | 25 | 25 | 0 | 0.000054
+ 09998 | 14 | 14 | 14 | 0 | 0.000044
+ 11801 | 5 | 5 | 5 | 0 | 0.000000
+ 14128 | 25 | 18 | 18 | 0 | 1.655480
+ 16925 | 13 | 12 | 13 | 0 | 0.000113
+ 20413 | 26 | 5 | 5 | 0 | 1694.249997
+ 21897 | 25 | 25 | 25 | 0 | 0.000058
+ 22312 | 23 | 17 | 17 | 0 | 0.000127
+ 22674 | 25 | 25 | 25 | 0 | 0.000045
+ 23177 | 13 | 13 | 13 | 0 | 0.000094
+ 23333 | 15 | 15 | 15 | 0 | 0.000048
+ 23599 | 37 | 19 | 20 | 0 | 0.960173
+ 24208 | 13 | 13 | 13 | 0 | 0.000039
+ 25954 | 26 | 26 | 26 | 0 | 0.000039
+ 26900 | 4 | 4 | 4 | 0 | 0.000054
+ 26975 | 25 | 25 | 25 | 0 | 0.000077
+ 28057 | 25 | 25 | 22 | 0 | 0.000099
+ 28129 | 13 | 13 | 13 | 0 | 0.000046
+ 28350 | 13 | 12 | 8 | 0 | 0.000102
+ 28623 | 13 | 13 | 13 | 0 | 0.000087
+ 28626 | 13 | 13 | 13 | 0 | 0.000037
+ 28872 | 11 | 8 | 7 | 0 | 0.000134
+ 29141 | 22 | 16 | 13 | 0 | 0.000138
+ 29238 | 13 | 13 | 12 | 0 | 0.000096
+ 88888 | 13 | 13 | 8 | 0 | 0.000090
+(29 rows)
+
+-- Clean up
+DROP FUNCTION _vallado_jd_plus_min(float8, float8);
diff --git a/test/sql/vallado_518.sql b/test/sql/vallado_518.sql
new file mode 100644
index 0000000..1b4a063
--- /dev/null
+++ b/test/sql/vallado_518.sql
@@ -0,0 +1,636 @@
+-- Vallado 518 Test Vectors (AIAA 2006-6753-Rev1, Appendices D & E)
+--
+-- 518 propagation predictions across 29 satellites, covering both
+-- SGP4 (near-earth) and SDP4 (deep-space) models. Reference values
+-- from Vallado, Crawford, Hujsak, and Kelso's definitive SGP4 paper.
+--
+-- The reference vectors use Vallado's "AFSPC (option 'a')" mode with
+-- "perturbed inclination (GSFC)" Lyddane choice. Bill Gray's sat_code
+-- takes a different path through the Lyddane singularity and deep-space
+-- resonance logic, producing small numerical differences for most
+-- satellites and larger divergences for 4 known edge cases:
+--
+-- 20413 (e=0.79, Molniya-like): up to 1694 km at large tsince
+-- 04632 (deep-space, e=0.15): up to 7.5 km
+-- 14128 (deep-space): up to 1.7 km
+-- 23599 (deep-space, GEO): up to 1.0 km
+--
+-- These differences are expected and documented. This test detects
+-- regressions — if any number changes, the vendored SGP4/SDP4 code
+-- was inadvertently modified.
+--
+-- Tolerances for the summary check:
+-- Position: 1e-4 km (0.1 m) — catches marginal velocity-only failures
+-- Velocity: 1e-7 km/s (0.1 mm/s) — tight enough for regression detection
+
+CREATE EXTENSION IF NOT EXISTS pg_orbit;
+
+-- Helper: convert Julian date + minutes-since-epoch to timestamptz.
+-- JD 2440587.5 = 1970-01-01 00:00:00 UTC (Unix epoch).
+CREATE OR REPLACE FUNCTION _vallado_jd_plus_min(jd float8, tsince_min float8)
+RETURNS timestamptz AS $$
+ SELECT to_timestamp((jd + tsince_min / 1440.0 - 2440587.5) * 86400.0)
+$$ LANGUAGE sql IMMUTABLE STRICT;
+
+-- Test vector table
+CREATE TEMP TABLE vallado_vectors (
+ satnum text,
+ tle_line1 text,
+ tle_line2 text,
+ tsince_min float8,
+ ref_x float8, ref_y float8, ref_z float8,
+ ref_vx float8, ref_vy float8, ref_vz float8
+);
+
+INSERT INTO vallado_vectors VALUES
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',0.0,7022.46529266,-1400.08296755,0.03995155,1.893841015,6.405893759,4.534807250),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',360.0,-7154.03120202,-3783.17682504,-3536.19412294,4.741887409,-4.151817765,-2.093935425),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',720.0,-7134.59340119,6531.68641334,3260.27186483,-4.113793027,-2.911922039,-2.557327851),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1080.0,5568.53901181,4492.06992591,3863.87641983,-4.209106476,5.159719888,2.744852980),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1440.0,-938.55923943,-6268.18748831,-4294.02924751,7.536105209,-0.427127707,0.989878080),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',1800.0,-9680.56121728,2802.47771354,124.10688038,-0.905874102,-4.659467970,-3.227347517),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2160.0,190.19796988,7746.96653614,5110.00675412,-6.112325142,1.527008184,-0.139152358),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2520.0,5579.55640116,-3995.61396789,-1518.82108966,4.767927483,5.123185301,4.276837355),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',2880.0,-8650.73082219,-1914.93811525,-3007.03603443,3.067165127,-4.828384068,-2.515322836),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3240.0,-5429.79204164,7574.36493792,3747.39305236,-4.999442110,-1.800561422,-2.229392830),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3600.0,6759.04583722,2001.58198220,2783.55192533,-2.180993947,6.402085603,3.644723952),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',3960.0,-3791.44531559,-5712.95617894,-4533.48630714,6.668817493,-2.516382327,-0.082384354),
+('00005','1 00005U 58002B 00179.78495062 .00000023 00000-0 28098-4 0 4753','2 00005 34.2682 348.7242 1859667 331.7664 19.3264 10.82419157413667',4320.0,-9060.47373569,4658.70952502,813.68673153,-2.232832783,-4.110453490,-3.157345433),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',0.0,2334.11450085,-41920.44035349,-0.03867437,2.826321032,-0.065091664,0.570936053),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5184.0,-29020.02587128,13819.84419063,-5713.33679183,-1.768068390,-3.235371192,-0.395206135),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-5064.0,-32982.56870101,-11125.54996609,-6803.28472771,0.617446996,-3.379240041,0.085954707),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4944.0,-22097.68730513,-31583.13829284,-4836.34329328,2.230597499,-2.166594667,0.426443070),
+('04632','1 04632U 70093B 04031.91070959 -.00000084 00000-0 10000-3 0 9955','2 04632 11.4628 273.1101 1450506 207.6000 143.9350 1.20231981 44145',-4896.0,-15129.94694545,-36907.74526221,-3487.56256701,2.581167187,-1.524204737,0.504805763),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',0.0,3988.31022699,5498.96657235,0.90055879,-3.290032738,2.357652820,6.496623475),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',120.0,-3935.69800083,409.10980837,5471.33577327,-3.374784183,-6.635211043,-1.942056221),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',240.0,-1675.12766915,-5683.30432352,-3286.21510937,5.282496925,1.508674259,-5.354872978),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',360.0,4993.62642836,2890.54969900,-3600.40145627,0.347333429,5.707031557,5.070699638),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',480.0,-1115.07959514,4015.11691491,5326.99727718,-5.524279443,-4.765738774,2.402255961),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',600.0,-4329.10008198,-5176.70287935,409.65313857,2.858408303,-2.933091792,-6.509690397),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',720.0,3692.60030028,-976.24265255,-5623.36447493,3.897257243,6.415554948,1.429112190),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',840.0,2301.83510037,5723.92394553,2814.61514580,-5.110924966,-0.764510559,5.662120145),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',960.0,-4990.91637950,-2303.42547880,3920.86335598,-0.993439372,-5.967458360,-4.759110856),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1080.0,642.27769977,-4332.89821901,-5183.31523910,5.720542579,4.216573838,-2.846576139),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1200.0,4719.78335752,4798.06938996,-943.58851062,-2.294860662,3.492499389,6.408334723),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1320.0,-3299.16993602,1576.83168320,5678.67840638,-4.460347074,-6.202025196,-0.885874586),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1440.0,-2777.14682335,-5663.16031708,-2462.54889123,4.915493146,0.123328992,-5.896495091),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1560.0,4992.31573893,1716.62356770,-4287.86065581,1.640717189,6.071570434,4.338797931),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1680.0,-8.22384755,4662.21521668,4905.66411857,-5.891011274,-3.593173872,3.365100460),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1800.0,-4966.20137963,-4379.59155037,1349.33347502,1.763172581,-3.981456387,-6.343279443),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',1920.0,2954.49390331,-2080.65984650,-5754.75038057,4.895893306,5.858184322,0.375474825),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2040.0,3363.28794321,5559.55841180,1956.05542266,-4.587378863,0.591943403,6.107838605),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2160.0,-4856.66780070,-1107.03450192,4557.21258241,-2.304158557,-6.186437070,-3.956549542),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2280.0,-497.84480071,-4863.46005312,-4700.81211217,5.960065407,2.996683369,-3.767123329),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2400.0,5241.61936096,3910.75960683,-1857.93473952,-1.124834806,4.406213160,6.148161299),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2520.0,-2451.38045953,2610.60463261,5729.79022069,-5.366560525,-5.500855666,0.187958716),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2640.0,-3791.87520638,-5378.82851382,-1575.82737930,4.266273592,-1.199162551,-6.276154080),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2760.0,4730.53958356,524.05006433,-4857.29369725,2.918056288,6.135412849,3.495115636),
+('06251','1 06251U 62025E 06176.82412014 .00008885 00000-0 12808-3 0 3985','2 06251 58.0579 54.0425 0030035 139.1568 221.1854 15.56387291 6774',2880.0,1159.27802897,5056.60175495,4353.49418579,-5.968060341,-2.314790406,4.230722669),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',0.0,2349.89483350,-14785.93811562,0.02119378,2.721488096,-3.256811655,4.498416672),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',120.0,15223.91713658,-17852.95881713,25280.39558224,1.079041732,0.875187372,2.485682813),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',240.0,19752.78050009,-8600.07130962,37522.72921090,0.238105279,1.546110924,0.986410447),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',360.0,19089.29762968,3107.89495018,39958.14661370,-0.410308034,1.640332277,-0.306873818),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',480.0,13829.66070574,13977.39999817,32736.32082508,-1.065096849,1.279983299,-1.760166075),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',600.0,3333.05838525,18395.31728674,12738.25031238,-1.882432221,-0.611623333,-4.039586549),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',720.0,2622.13222207,-15125.15464924,474.51048398,2.688287199,-3.078426664,4.494979530),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',840.0,15320.56770017,-17777.32564586,25539.53198382,1.064346229,0.892184771,2.459822414),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',960.0,19769.70267785,-8458.65104454,37624.20130236,0.229304396,1.550363884,0.966993056),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1080.0,19048.56201523,3260.43223119,39923.39143967,-0.418015536,1.639346953,-0.326094840),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1200.0,13729.19205837,14097.70014810,32547.52799890,-1.074511043,1.270505211,-1.785099927),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1320.0,3148.86165643,18323.19841703,12305.75195578,-1.895271701,-0.678343847,-4.086577951),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1440.0,2890.80638268,-15446.43952300,948.77010176,2.654407490,-2.909344895,4.486437362),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1560.0,15415.98410712,-17699.90714437,25796.19644689,1.049818334,0.908822332,2.434107329),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1680.0,19786.00618538,-8316.74570581,37723.74539119,0.220539813,1.554518900,0.947601047),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1800.0,19007.28688729,3412.85948715,39886.66579255,-0.425733568,1.638276809,-0.345353807),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',1920.0,13627.93015254,14216.95401307,32356.13706868,-1.083991976,1.260802347,-1.810193903),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2040.0,2963.26486560,18243.85063641,11868.25797486,-1.908015447,-0.747870342,-4.134004492),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2160.0,3155.85126036,-15750.70393364,1422.32496953,2.620085624,-2.748990396,4.473527039),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2280.0,15510.15191770,-17620.71002219,26050.43525345,1.035454678,0.925111006,2.408534465),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2400.0,19801.67198812,-8174.33337167,37821.38577439,0.211812700,1.558576937,0.928231880),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2520.0,18965.46529379,3565.19666242,39847.97510998,-0.433459945,1.637120585,-0.364653213),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2640.0,13525.88227400,14335.15978787,32162.13236536,-1.093537945,1.250868256,-1.835451681),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2760.0,2776.30574260,18156.98538451,11425.73046481,-1.920632199,-0.820370733,-4.181839232),
+('08195','1 08195U 75081A 06176.33215444 .00000099 00000-0 11873-3 0 813','2 08195 64.1586 279.0717 6877146 264.7651 20.2257 2.00491383225656',2880.0,3417.20931587,-16038.79510665,1894.74934058,2.585515864,-2.596818146,4.456882556),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',0.0,13020.06750784,-2449.07193500,1.15896030,4.247363935,1.597178501,4.956708611),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',120.0,19190.32482476,9249.01266902,26596.71345328,-0.624960193,1.324550562,2.495697637),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',240.0,11332.67806218,16517.99124008,38569.78482991,-1.400974747,0.710947006,0.923935636),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',360.0,328.74217398,19554.92047380,40558.26246145,-1.593281066,0.126772913,-0.359627307),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',480.0,-10684.90590680,18057.15728839,33158.75253886,-1.383205997,-0.582328999,-1.744412556),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',600.0,-17069.78000550,9944.86797897,13885.91649059,0.044133354,-1.853448464,-3.815303117),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',720.0,13725.09398980,-2180.70877090,863.29684523,3.878478111,1.656846496,4.944867241),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',840.0,19089.63879226,9456.29670247,27026.79562883,-0.656614299,1.309112636,2.449371941),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',960.0,11106.41248373,16627.60874079,38727.35140296,-1.409722680,0.698582526,0.891383535),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1080.0,72.40958621,19575.08054144,40492.12544001,-1.593394604,0.113655142,-0.390556063),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1200.0,-10905.89252576,17965.41205111,32850.07298244,-1.371396120,-0.601706604,-1.782817058),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1320.0,-17044.61207568,9635.48491849,13212.59462953,0.129244030,-1.903551430,-3.884569098),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1440.0,14369.90303735,-1903.85601062,1722.15319853,3.543393116,1.701687176,4.913881358),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1560.0,18983.96210441,9661.12233804,27448.99557732,-0.687189304,1.293808870,2.403630759),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1680.0,10878.79336704,16735.31433954,38879.23434264,-1.418239666,0.686235750,0.858951848),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1800.0,-184.03743100,19593.09371709,40420.40606889,-1.593348925,0.100448697,-0.421571993),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',1920.0,-11125.12138631,17870.19488928,32534.21521208,-1.359116236,-0.621413776,-1.821629856),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2040.0,-17004.43272827,9316.53926351,12526.11883812,0.220330736,-1.955594322,-3.955058575),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2160.0,14960.06492693,-1620.68430805,2574.96359381,3.238634028,1.734723385,4.868880331),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2280.0,18873.46347257,9863.57004586,27863.46574735,-0.716736981,1.278632817,2.358448535),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2400.0,10649.86857581,16841.14172669,39025.48035006,-1.426527152,0.673901057,0.826632332),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2520.0,-440.53459323,19608.95524423,40343.10675451,-1.593138597,0.087147884,-0.452680559),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2640.0,-11342.45028909,17771.44223942,32211.12535721,-1.346344015,-0.641464291,-1.860864234),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2760.0,-16948.06005711,8987.64254880,11826.28284367,0.318007297,-2.009693492,-4.026726648),
+('09880','1 09880U 77021A 06176.56157475 .00000421 00000-0 10000-3 0 9814','2 09880 64.5968 349.3786 7069051 270.0229 16.3320 2.00813614112380',2880.0,15500.53445068,-1332.90981042,3419.72315308,2.960917974,1.758331634,4.813698638),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',0.0,25532.98947267,-27244.26327953,-1.11572421,2.410283885,2.194175683,0.545888526),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1440.0,-11362.18265118,-35117.55867813,-5413.62537994,3.137861261,-1.011678260,0.267510059),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1380.0,309.25349929,-36960.43090143,-4198.48007670,3.292429375,-0.002166046,0.402111628),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1320.0,11949.04009077,-35127.37816804,-2565.89806468,3.119942784,1.012096444,0.497284100),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1260.0,22400.45329336,-29798.63236321,-677.91515122,2.638533344,1.922477736,0.542792913),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1200.0,30640.84752458,-21525.02340201,1277.34808722,1.903464941,2.634294312,0.534540934),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1140.0,35899.56788035,-11152.71158138,3108.72535238,0.997393045,3.079858548,0.474873291),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1080.0,37732.45438600,288.18821054,4643.87587495,0.016652226,3.225184410,0.371669746),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-1020.0,36045.92961699,11706.61816230,5746.32646574,-0.942409065,3.069888941,0.236662980),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-960.0,31076.77273609,22063.44379776,6325.93403705,-1.794027976,2.642072476,0.083556127),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-900.0,23341.26015320,30460.88002531,6342.91707895,-2.469409743,1.990861658,-0.073612096),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-840.0,13568.39733054,36204.45930900,5806.79548733,-2.919354203,1.178920217,-0.221646814),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-780.0,2628.58762420,38840.10855897,4771.91979854,-3.114400514,0.276239109,-0.348926401),
+('09998','1 09998U 74033F 05148.79417928 -.00000112 00000-0 00000+0 0 4480','2 09998 9.4958 313.1750 0270971 327.5225 30.8097 1.16186785 45878',-720.0,-8535.81598158,38171.79073851,3331.00311285,-3.043839958,-0.644462527,-0.445808894),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',0.0,7473.37102491,428.94748312,5828.74846783,5.107155391,6.444680305,-0.186133297),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',360.0,-3305.22148694,32410.84323331,-24697.16974954,-1.301137319,-1.151315600,-0.283335823),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',720.0,14271.29083858,24110.44309009,-4725.76320143,-0.320504528,2.679841539,-2.084054355),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1080.0,-9990.05800009,22717.34212448,-23616.88515553,-1.016674392,-2.290267981,0.728923337),
+('11801','1 11801U 80230.29629788 .01431103 00000-0 14311-1 13','2 11801 46.7916 230.4354 7318036 47.4722 10.4117 2.28537848 13',1440.0,9787.87836256,33753.32249667,-15030.79874625,-1.094251553,0.923589906,-1.522311008),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',0.0,34747.57932696,24502.37114079,-1.32832986,-1.731642662,2.452772615,0.608510081),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',120.0,18263.33439094,38159.96004751,4186.18304085,-2.744396611,1.255583260,0.528558932),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',240.0,-3023.38840703,41783.13186459,7273.03412906,-3.035574793,-0.271656544,0.309645251),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',360.0,-23516.34391907,34424.42065671,8448.49867693,-2.529120477,-1.726186020,0.009582303),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',480.0,-37837.46699511,18028.39727170,7406.25540271,-1.360069525,-2.725794686,-0.292555349),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',600.0,-42243.58460661,-3093.72887774,4422.91711801,0.163110919,-3.009980598,-0.517584362),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',720.0,-35597.57919549,-23407.91145393,282.09554383,1.641405246,-2.506773678,-0.606963478),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',840.0,-19649.19834455,-37606.11623860,-3932.71525948,2.689647056,-1.349150016,-0.537710698),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',960.0,1431.30912160,-41982.04949668,-7120.45467057,3.035263353,0.160882945,-0.327993994),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1080.0,22136.97605384,-35388.19823762,-8447.62393401,2.587624889,1.630097136,-0.032349004),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1200.0,37050.15790219,-19537.23321425,-7564.83463543,1.461844494,2.674654256,0.272202191),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1320.0,42253.81760945,1431.81867593,-4699.87621174,-0.049247334,3.019518960,0.505890058),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1440.0,36366.59147396,22023.54245720,-601.47121821,-1.549681546,2.571788981,0.607057418),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1560.0,20922.12287985,36826.33975981,3654.91125886,-2.644070068,1.447521216,0.548722983),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1680.0,-23.77224182,41945.51688402,6950.29891751,-3.043358385,-0.057417440,0.346112094),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1800.0,-20964.17821076,36039.06206172,8418.91984963,-2.642795221,-1.546099886,0.052725852),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',1920.0,-36401.63863057,20669.75286162,7677.19769359,-1.549488154,-2.627052310,-0.254079652),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2040.0,-42298.30327543,-119.03351118,4922.96388841,-0.052232768,-3.018152669,-0.493827331),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2160.0,-37125.62383511,-20879.63058368,879.86971348,1.456499841,-2.619358421,-0.604081694),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2280.0,-22250.12320553,-36182.74736487,-3393.15365183,2.583161226,-1.536647628,-0.556404555),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2400.0,-1563.06258654,-42035.43179159,-6780.02161760,3.034917506,-0.052702046,-0.363395654),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2520.0,19531.64069587,-36905.65470956,-8395.46892032,2.693682199,1.446079999,-0.075256054),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2640.0,35516.53506142,-22123.71916638,-7815.04516935,1.646882125,2.568416058,0.232985912),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2760.0,42196.03535976,-1547.32646751,-5187.39401981,0.166491841,3.019211549,0.480665780),
+('14128','1 14128U 83058A 06176.02844893 -.00000158 00000-0 10000-3 0 9627','2 14128 11.4384 35.2134 0011562 26.4582 333.5652 0.98870114 46093',2880.0,37802.25393045,19433.57330019,-1198.66634226,-1.359930580,2.677830903,0.602507466),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',0.0,5559.11686836,-11941.04090781,-19.41235206,3.392116762,-1.946985124,4.250755852),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',120.0,12339.83273749,-2771.14447871,18904.57603433,-0.871247614,2.600917693,0.581560002),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',240.0,-3385.00215658,7538.13955729,200.59008616,-2.023512865,-4.261808344,-6.856385787),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',360.0,12805.22442200,-10258.94667177,13780.16486738,0.619279224,1.821510542,2.507365975),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',480.0,5682.46556318,7199.30270473,15437.67134070,-2.474365406,2.087897336,-2.583767460),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',600.0,7628.94243982,-12852.72097492,2902.87208981,2.748131081,-0.740084579,4.125307943),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',720.0,11531.64866625,-858.27542736,19086.85993771,-1.170071901,2.660311986,0.096005705),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',840.0,-3866.98069515,2603.73442786,-4577.36484577,1.157257298,-8.453281164,-4.683959407),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',960.0,13054.77732721,-8707.92757730,15537.63259903,0.229846748,2.119467054,2.063396852),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1080.0,3496.91064652,8712.83919778,12845.81838327,-2.782184997,1.552950644,-3.554436131),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1200.0,9593.07424729,-13023.75963608,6250.46484931,2.072666376,0.278735334,3.778111073),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1320.0,10284.79205084,1487.89914169,18824.37381327,-1.530335053,2.663107730,-0.542205966),
+('16925','1 16925U 86065D 06151.67415771 .02550794 -30915-6 18784-3 0 4486','2 16925 62.0906 295.0239 5596327 245.1593 47.9690 4.88511875148616',1440.0,-984.62035146,-5187.03480813,-5745.59594144,4.340271916,-7.266811354,1.777668888),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',0.0,25123.29290741,-13225.49966286,3249.40351869,0.488683419,4.797897593,-0.961119693),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1440.0,-151669.05280515,-5645.20454550,-2198.51592118,-0.869182889,-0.870759872,0.156508219),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1560.0,-157497.71657495,-11884.99595074,-1061.44439402,-0.749657961,-0.864016715,0.157766101),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1680.0,-162498.32255577,-18062.99733167,81.00915253,-0.638980378,-0.853687105,0.158098992),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1800.0,-166728.76010920,-24155.99648299,1222.84128677,-0.535600687,-0.840455444,0.157680857),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',1920.0,-169935.81924592,-31767.29787964,2749.01540345,-0.430050431,-0.828904183,0.157812340),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2040.0,-172703.07831815,-37662.95639336,3883.60052579,-0.338004891,-0.810277487,0.156020035),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2160.0,-174823.19337404,-43417.55605219,5003.26312809,-0.250258622,-0.789828672,0.153764903),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2280.0,-176324.63925775,-49018.51958648,6104.85025002,-0.166136613,-0.767706262,0.151092242),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2400.0,-177231.42142458,-54454.12699497,7185.48661607,-0.085067854,-0.744001567,0.148033403),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2520.0,-177563.73583232,-59713.14859144,8242.48472591,-0.006561730,-0.718760309,0.144608676),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2640.0,-177338.48026483,-64784.54644698,9273.27220003,0.069809946,-0.691990238,0.140829236),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2760.0,-176569.65151461,-69657.21976255,10275.33063459,0.144426878,-0.663665876,0.136698419),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',2880.0,-175268.65299073,-74319.77625463,11246.14177160,0.217631370,-0.633731091,0.132212491),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3000.0,-173444.53039609,-78760.31560396,12183.13775212,0.289737325,-0.602099929,0.127361017),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3120.0,-171104.14813653,-82966.21323591,13083.65278381,0.361037779,-0.568655903,0.122126889),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3240.0,-168252.31543803,-86923.89363433,13944.87382716,0.431811396,-0.533249797,0.116486022),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3360.0,-164891.86832887,-90618.58225954,14763.78794247,0.502328269,-0.495695896,0.110406725),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3480.0,-161023.71139825,-94034.02398835,15537.12375729,0.572855321,-0.455766412,0.103848688),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3600.0,-156646.82136726,-97152.15370791,16261.28409305,0.643661538,-0.413183688,0.096761524),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3720.0,-151758.21285737,-99952.70098346,16932.26607548,0.715023254,-0.367609561,0.089082727),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3840.0,-146352.86521283,-102412.70506284,17545.56394158,0.787229695,-0.318630913,0.080734873),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',3960.0,-140423.60777444,-104505.90799734,18096.04807097,0.860588979,-0.265739987,0.071621768),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4080.0,-133960.95961851,-106201.98091318,18577.81121953,0.935434758,-0.208307307,0.061623110),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4200.0,-126952.91860010,-107465.51906186,18983.96903112,1.012133628,-0.145543878,0.050587007),
+('20413','1 20413U 83020D 05363.79166667 .00000000 00000-0 00000+0 0 7041','2 20413 12.3514 187.4253 7864447 196.3027 356.5478 0.24690082 7978',4320.0,-119384.69396454,-108254.71115372,19306.39581892,1.091093313,-0.076447479,0.038319282),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',0.0,-14464.72135182,-4699.19517587,0.06681686,-3.249312013,-3.281032707,4.007046940),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',120.0,-19410.46286123,-19143.03318969,23114.05522619,0.508602237,-1.156882269,2.379923455),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',240.0,-12686.06129708,-23853.75335645,35529.81733588,1.231633829,-0.221718202,1.118440291),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',360.0,-2775.46649359,-22839.64574119,39494.64689967,1.468963405,0.489481769,-0.023972788),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',480.0,7679.87883570,-16780.50760106,34686.21815555,1.364171080,1.211183897,-1.385151371),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',600.0,14552.40023028,-4819.50121461,17154.70672449,0.109201591,2.176124494,-3.854856805),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',720.0,-15302.38845375,-5556.43440300,1095.95088753,-2.838224312,-3.134231137,3.992596326),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',840.0,-19289.20066748,-19427.04851118,23759.45685636,0.552495087,-1.112499437,2.325112654),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',960.0,-12376.21976437,-23893.38020018,35831.33691892,1.246701529,-0.194294048,1.074867282),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1080.0,-2400.55677665,-22698.62264640,39482.75964390,1.472582922,0.513555654,-0.069306561),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1200.0,8031.66819252,-16455.77592085,34298.94391742,1.351357426,1.239633234,-1.448195324),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1320.0,14559.48780372,-4238.43773813,16079.23154704,-0.026409655,2.218938770,-4.012628896),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1440.0,-16036.04980660,-6372.51406468,2183.44834232,-2.485113443,-2.994994355,3.955891272),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1560.0,-19156.71583814,-19698.89059957,24389.29473934,0.594278133,-1.069418599,2.271152044),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1680.0,-12062.72925552,-23925.82362911,36120.66680667,1.261238798,-0.167201856,1.031478939),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1800.0,-2024.96136966,-22551.56626703,39458.50085787,1.475816889,0.537615764,-0.114887472),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',1920.0,8379.80916204,-16123.95878459,33894.75123231,1.337468254,1.268432783,-1.512473301),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2040.0,14527.86748873,-3646.33817120,14960.74306518,-0.180035839,2.261273515,-4.179355590),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2160.0,-16680.12147335,-7149.80800425,3257.64227208,-2.178897351,-2.863927095,3.904876943),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2280.0,-19013.58793448,-19958.93766022,25003.81778666,0.634100431,-1.027559823,2.218002685),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2400.0,-11745.76155818,-23951.19438627,36397.87676581,1.275261813,-0.140425132,0.988259441),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2520.0,-1648.81945070,-22398.50594576,39421.83273890,1.478660174,0.561671519,-0.160733093),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2640.0,8723.97652795,-15784.99406275,33473.35215527,1.322433593,1.297602497,-1.578055493),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2760.0,14452.25571587,-3043.42332645,13796.84870805,-0.355190169,2.302485443,-4.355767077),
+('21897','1 21897U 92011A 06176.02341244 -.00001273 00000-0 -13525-3 0 3044','2 21897 62.1749 198.0096 7421690 253.0462 20.1561 2.01269994104880',2880.0,-17246.31075678,-7890.72601508,4315.39410307,-1.910968458,-2.740945672,3.844722726),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',0.0,1442.10132912,6510.23625449,8.83145885,-3.475714837,0.997262768,6.835860345),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',54.2028672,306.10478453,-5816.45655525,-2979.55846068,3.950663855,3.415332543,-5.879974329),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',74.2028672,3282.82085464,2077.46972905,-5189.17988770,0.097342701,7.375135692,2.900196702),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',94.2028672,530.82729176,6426.20790003,1712.37076793,-3.837120395,-1.252430637,6.561602577),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',114.2028672,-3191.69170212,170.27219912,5956.29807775,-1.394956872,-7.438073471,-0.557553115),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',134.2028672,-1818.99222465,-6322.45146616,681.95247154,3.349795173,-1.530140265,-6.831522765),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',154.2028672,2515.66448634,-2158.83091224,-5552.13320544,2.571979660,7.311930509,-1.639865620),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',174.2028672,2414.52833210,5749.10150922,-1998.59693165,-2.681032960,3.527589301,6.452951429),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',194.2028672,-1877.98944331,3862.27848302,5112.48435863,-3.261489804,-6.026859137,3.433254768),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',214.2028672,-3117.36584395,-4419.74773864,3840.85960912,1.545479182,-5.475416581,-5.207913748),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',234.2028672,815.32034678,-5231.67692249,-3760.04690354,3.870864200,4.455588552,-5.211082191),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',254.2028672,3269.54341810,3029.00081083,-4704.67969713,-0.526711345,6.812157950,3.929825087),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',274.2028672,-10.18099756,6026.23341453,2643.50518407,-3.953623254,-2.616070012,6.145637500),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',294.2028672,-3320.58819584,-1248.42679945,5563.06017927,-0.637046974,-7.417786044,-2.076120187),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',314.2028672,-1025.48974616,-6366.98945782,-911.23559153,3.811771909,0.438071490,-6.829260617),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',334.2028672,3003.75996128,-413.85708003,-5706.15591435,1.674350083,7.694169068,0.316915204),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',354.2028672,1731.42816980,6258.27676925,-409.32527982,-3.400497806,1.447945424,6.904010052),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',374.2028672,-2582.52111460,2024.19020680,5647.55650268,-2.530348121,-7.221719393,1.438141553),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',394.2028672,-2440.56848578,-5702.77311877,1934.81094689,2.731792947,-3.350576075,-6.527773339),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',414.2028672,1951.22934391,-3423.59443045,-5121.67808201,3.249039133,6.465974362,-3.069806659),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',434.2028672,2886.50939356,4888.68626216,-3096.29885989,-1.973162139,4.877039020,5.832414910),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',454.2028672,-1276.55532182,4553.26898463,4406.19787375,-3.715146421,-5.320176914,4.418210777),
+('22312','1 22312U 93002D 06094.46235912 .99999999 81888-5 49949-3 0 3953','2 22312 62.1486 77.4698 0308723 267.9229 88.7392 15.95744531 98783',474.2028672,-3181.54698042,-3831.29976506,4096.80242787,1.114159970,-6.104773578,-4.829967400),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',0.0,14712.22023280,-1443.81061850,0.83497888,4.418965470,1.629592098,4.115531802),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',120.0,25418.88807860,9342.60307989,23611.46690798,0.051284086,1.213127306,2.429004159),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',240.0,21619.59550749,16125.24978864,36396.79365831,-0.963604380,0.685454965,1.177181937),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',360.0,12721.50543331,19258.96193362,40898.47648359,-1.457448565,0.179955469,0.071502601),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',480.0,1272.80760054,18458.41971897,37044.74742696,-1.674863386,-0.436454983,-1.201040990),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',600.0,-10058.43188619,11906.60764454,21739.62097733,-1.245829683,-1.543789125,-3.324449221),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',720.0,10924.40116466,-2571.92414170,-2956.34856294,6.071727751,1.349579102,3.898430260),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',840.0,25332.14851525,8398.91099924,21783.90654357,0.222320754,1.272214306,2.580527192),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',960.0,22317.71926039,15574.82086129,35495.77144092,-0.892750056,0.737383381,1.291738834),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1080.0,13795.68675885,19088.83051008,40803.69584385,-1.420277669,0.235599456,0.185517056),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1200.0,2515.17145049,18746.63776282,37864.58088636,-1.668016053,-0.360431458,-1.052854596),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1320.0,-9084.48602106,12982.62608646,24045.63900249,-1.378032363,-1.373184736,-3.013963835),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1440.0,5647.00909495,-3293.90518693,-5425.85235063,8.507977176,0.414560797,2.543322806),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1560.0,25111.63372210,7412.55109488,19844.25781729,0.416496290,1.332106006,2.739301737),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1680.0,22961.47461641,14985.74459578,34511.09257381,-0.816711048,0.789391108,1.407901804),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1800.0,14841.15301459,18876.91439870,40626.25901619,-1.380403341,0.290228810,0.298258120),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',1920.0,3750.70174081,18978.57939698,38578.11783220,-1.656939412,-0.287930881,-0.910825599),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2040.0,-8027.30219489,13939.54436955,26136.49045637,-1.474476061,-1.222693624,-2.737178731),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2160.0,-1296.95657092,-2813.69369768,-5871.09587258,9.881929371,-1.978467207,-1.922261005),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2280.0,24738.60364819,6383.41644019,17787.27631900,0.639556952,1.392554379,2.906206324),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2400.0,23546.85388669,14358.15602832,33441.67679479,-0.734895006,0.841564851,1.526009909),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2520.0,15855.87696303,18624.05633582,40367.13420574,-1.337753546,0.343969522,0.410018472),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2640.0,4976.44933591,19156.75504042,39189.68603184,-1.642084365,-0.218525096,-0.774148204),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2760.0,-6909.20746210,14790.44707042,28034.46732222,-1.545152610,-1.088119523,-2.487447214),
+('22674','1 22674U 93035D 06176.55909107 .00002121 00000-0 29868-3 0 6569','2 22674 63.5035 354.4452 7541712 253.3264 18.7754 1.96679808 93877',2880.0,-7331.65006707,-604.17323419,-2723.51014575,6.168997265,-3.634011554,-5.963531682),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',0.0,-8801.60046706,-0.03357557,-0.44522743,-3.835279101,-7.662552175,0.944561323),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',120.0,-1684.34352858,-31555.95196340,3888.99944319,2.023055719,-2.151306405,0.265065778),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',240.0,12325.51410155,-38982.15046244,4802.88832275,1.763224157,-0.102514446,0.012397139),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',360.0,22773.66831936,-34348.02176606,4228.77407391,1.067616787,1.352427865,-0.166956367),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',480.0,26194.40441089,-19482.94203672,2393.84774063,-0.313732186,2.808771328,-0.346204118),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',600.0,8893.50573448,5763.38890561,-713.69884164,-7.037399220,3.022613131,-0.370272416),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',720.0,-6028.75686537,-25648.99913786,3164.37107274,1.883159288,-3.177051976,0.390793162),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',840.0,8313.57299056,-38146.45710922,4697.80777535,1.905002133,-0.625883074,0.076098187),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',960.0,20181.29108622,-36842.60674073,4529.12568218,1.326244476,0.921916487,-0.114527455),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1080.0,26302.61794569,-25173.39539436,3084.65309986,0.245398835,2.329974347,-0.287495880),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1200.0,19365.07045602,-2700.00490122,317.42727417,-3.009733018,3.902496058,-0.478928582),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1320.0,-9667.81878780,-16930.19112642,2095.87469034,1.279288285,-4.736005905,0.582878255),
+('23177','1 23177U 94040C 06175.45752052 .00000386 00000-0 76590-3 0 95','2 23177 7.0496 179.8238 7258491 296.0482 8.3061 2.25906668 97438',1440.0,4021.31438583,-36066.09209609,4442.91587411,2.007322354,-1.227461376,0.149383897),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',0.0,-9301.24542292,3326.10200382,2318.36441127,-8.729303005,-0.828225037,-0.122314827),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',120.0,-44672.91239680,-6213.11996581,-1738.80131727,-3.719475070,-1.336673022,-0.621888261),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',240.0,-67053.08885388,-14994.69685946,-5897.99072793,-2.860576613,-1.183771565,-0.568473909),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',360.0,-85227.84253168,-22897.08484471,-9722.59184564,-2.426469823,-1.078592475,-0.525341431),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',480.0,-100986.00419136,-30171.19698695,-13283.77044765,-2.147108978,-1.000530827,-0.491587582),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',600.0,-115093.00686387,-36962.56316477,-16634.15682929,-1.945446188,-0.938947736,-0.464199202),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',720.0,-127965.80064891,-43363.32967165,-19809.90480432,-1.789652016,-0.888278463,-0.441254468),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',840.0,-139863.28332207,-49436.45704153,-22836.80438139,-1.663762568,-0.845315913,-0.421548627),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',960.0,-150960.22978259,-55227.45413896,-25734.01408879,-1.558730986,-0.808061065,-0.404293846),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1080.0,-161381.71414630,-60770.64040903,-28516.26290017,-1.468977174,-0.775190459,-0.388951810),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1200.0,-171221.18736947,-66092.76474442,-31195.19847387,-1.390837596,-0.745785633,-0.375140398),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1320.0,-180550.82888746,-71215.23290630,-33780.24938270,-1.321788672,-0.719184752,-0.362579495),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1440.0,-189427.87533074,-76155.54943344,-36279.19882816,-1.260024473,-0.694896053,-0.351058133),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1560.0,-197898.69401409,-80928.29015181,-38698.57972447,-1.204211888,-0.672544709,-0.340413731),
+('23333','1 23333U 94071A 94305.49999999 -.00172956 26967-3 10000-3 0 15','2 23333 28.7490 2.3720 9728298 30.4360 1.3500 0.07309491 70',1600.0,-200638.82986236,-82484.14969882,-39488.34331447,-1.186748462,-0.665472422,-0.337037582),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',0.0,9892.63794341,35.76144969,-1.08228838,3.556643237,6.456009375,0.783610890),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',20.0,11931.95642997,7340.74973750,886.46365987,0.308329116,5.532328972,0.672887281),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',40.0,11321.71039205,13222.84749156,1602.40119049,-1.151973982,4.285810871,0.521919425),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',60.0,9438.29395675,17688.05450261,2146.59293402,-1.907904054,3.179955046,0.387692479),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',80.0,6872.08634639,20910.11016811,2539.79945034,-2.323995367,2.207398462,0.269506121),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',100.0,3933.37509798,23024.07662542,2798.25966746,-2.542860616,1.327134966,0.162450076),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',120.0,816.64091546,24118.98675475,2932.69459428,-2.626838010,0.504502763,0.062344306),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',140.0,-2334.41705804,24246.86096326,2949.36448841,-2.602259646,-0.288058266,-0.034145135),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',160.0,-5394.31798039,23429.42716149,2850.86832586,-2.474434068,-1.074055982,-0.129868366),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',180.0,-8233.35130237,21661.24480883,2636.51456118,-2.230845533,-1.875742344,-0.227528603),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',200.0,-10693.96497348,18909.88168891,2302.33707548,-1.835912433,-2.716169865,-0.329931880),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',220.0,-12553.89669904,15114.63990716,1840.93573231,-1.212478879,-3.619036996,-0.439970633),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',240.0,-13450.20591864,10190.57904289,1241.95958736,-0.189082511,-4.596701971,-0.559173899),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',260.0,-12686.60437121,4079.31106161,498.27078614,1.664498211,-5.559889865,-0.676747779),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',280.0,-8672.55867753,-2827.56823315,-342.59644716,5.515079852,-5.551222962,-0.676360044),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',300.0,1153.31498060,-6411.98692060,-779.87288941,9.689818102,1.388598425,0.167868798),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',320.0,9542.79201056,-533.71253081,-65.73165428,3.926947087,6.459583539,0.785686755),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',340.0,11868.80960100,6861.59590848,833.72780602,0.452957852,5.632811328,0.685262323),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',360.0,11376.23941678,12858.97121366,1563.40660172,-1.087665695,4.374693347,0.532207051),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',380.0,9547.70300782,17421.48570758,2118.56907515,-1.876540262,3.253891728,0.395810243),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',400.0,7008.51470263,20725.47471227,2520.56064289,-2.308703599,2.270724438,0.276138613),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',420.0,4083.18551180,22910.88306802,2786.35642660,-2.536610941,1.383768875,0.168165414),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',440.0,970.13107533,24071.19896282,2927.30875440,-2.626673095,0.557274717,0.067549303),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',460.0,-2183.75499348,24261.30188126,2950.09189560,-2.607082241,-0.236785937,-0.029112844),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',480.0,-5252.49066783,23505.58108388,2857.68628654,-2.484465059,-1.022158411,-0.124702643),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',500.0,-8107.41437587,21801.13395060,2649.76852683,-2.247669530,-1.821071275,-0.221914939),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',520.0,-10594.01813094,19118.22269010,2322.77197767,-1.863224062,-2.656353699,-0.323512642),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',540.0,-12496.70758499,15399.13096351,1869.75958053,-1.258272118,-3.551534022,-0.432332913),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',560.0,-13467.50382653,10561.43040038,1280.84842178,-0.272050695,-4.520503543,-0.550014833),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',580.0,-12848.00717497,4541.72432009,548.59976478,1.493938056,-5.489644146,-0.667479244),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',600.0,-9152.79920397,-2343.88902799,-287.93741332,5.127695273,-5.650584983,-0.686013644),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',620.0,280.12478642,-6500.11368508,-790.36236302,9.779642904,0.581430120,0.074124421),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',640.0,9166.21406115,-1093.48756223,-129.53833135,4.316926785,6.438465969,0.785095966),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',660.0,11794.74563870,6381.74484842,780.82775971,0.604642523,5.731705440,0.697571522),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',680.0,11424.80363789,12493.80833338,1524.27683836,-1.021148661,4.463489406,0.542537702),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',700.0,9652.78920084,17153.46470428,2090.43413681,-1.844382696,3.327595388,0.403924198),
+('23599','1 23599U 95029B 06171.76535463 .00085586 12891-6 12956-2 0 2905','2 23599 6.9327 0.2849 5782022 274.4436 25.2425 4.47796565123555',720.0,7141.24742526,20538.97115158,2501.18059966,-2.293079623,2.333598993,0.282727441),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',0.0,7534.10987189,41266.39266843,-0.10801028,-3.027168008,0.558848996,0.207982755),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',120.0,-14289.19940414,39469.05530051,1428.62838591,-2.893205245,-1.045447840,0.179634249),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',240.0,-32222.92014955,26916.25425799,2468.59996594,-1.973007929,-2.359335071,0.102539376),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',360.0,-41413.95109398,7055.51656639,2838.90906671,-0.521665080,-3.029172207,-0.002066843),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',480.0,-39402.72251896,-14716.42475223,2441.32678358,1.066928187,-2.878714619,-0.105865729),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',600.0,-26751.08889828,-32515.13982431,1384.38865570,2.366228869,-1.951032799,-0.181018498),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',720.0,-6874.77975542,-41530.38329422,-46.60245459,3.027415087,-0.494671177,-0.207337260),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',840.0,14859.52039042,-39302.58907247,-1465.02482524,2.869609883,1.100123969,-0.177514425),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',960.0,32553.14863770,-26398.88401807,-2485.45866002,1.930064459,2.401574539,-0.099250520),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1080.0,41365.67576837,-6298.09965811,-2828.05254033,0.459741276,3.051680214,0.006431872),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1200.0,38858.83295070,15523.39314924,-2396.86850752,-1.140211488,2.867567143,0.110637217),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1320.0,25701.46068162,33089.42617648,-1308.68556638,-2.428713821,1.897381431,0.184605907),
+('24208','1 24208U 96044A 06177.04061740 -.00000094 00000-0 10000-3 0 1600','2 24208 3.8536 80.0121 0026640 311.0977 48.3000 1.00778054 36119',1440.0,5501.08137100,41590.27784405,138.32522930,-3.050691874,0.409203052,0.207958133),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1440.0,8118.18519221,-41368.40537378,4.11046687,3.017696741,0.591994297,0.000933016),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1320.0,27766.34015328,-31724.97000557,9.93297846,2.314236153,2.024903193,0.000660861),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1200.0,39932.57237973,-13532.60040454,13.12958252,0.987382819,2.911942843,0.000213298),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-1080.0,41341.01365441,8305.71681955,12.84988501,-0.605098224,3.014378268,-0.000291034),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-960.0,31614.99210558,27907.29155353,9.16618797,-2.034243523,2.305014102,-0.000718418),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-840.0,13375.75227587,39994.27017651,3.05416854,-2.915424366,0.975119874,-0.000955576),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-720.0,-8464.89963309,41312.93549892,-3.86622919,-3.011600615,-0.617275050,-0.000939664),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-600.0,-28026.23406158,31507.89995661,-9.76047869,-2.296840160,-2.043607595,-0.000674889),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-480.0,-40040.01314363,13218.00579413,-13.06594832,-0.963328772,-2.919827983,-0.000231414),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-360.0,-41268.43291976,-8632.06859693,-12.90661266,0.630042315,-3.009677376,0.000273163),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-240.0,-31377.85317015,-28156.13970334,-9.32605530,2.054021717,-2.288554158,0.000704959),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',-120.0,-13031.41552688,-40092.33381029,-3.27636660,2.924657466,-0.950541167,0.000949381),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',0.0,8827.15660472,-41223.00971237,3.63482963,3.007087319,0.643701323,0.000941663),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',120.0,28306.85426674,-31243.80147394,9.57216891,2.279137743,2.064316875,0.000684127),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',240.0,40159.05128805,-12845.39151157,12.96086316,0.937265422,2.928448287,0.000245505),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',360.0,41192.55903455,9013.79606759,12.90495666,-0.656727442,3.003543458,-0.000257479),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',480.0,31131.69755798,28445.55681731,9.42419238,-2.073484842,2.269770851,-0.000691233),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',600.0,12687.81846530,40217.83324639,3.44726249,-2.931721827,0.924962230,-0.000940766),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',720.0,-9172.23500245,41161.63475527,-3.43575757,-3.000571486,-0.668847508,-0.000940101),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',840.0,-28562.51093192,31022.45987587,-9.39562161,-2.261449202,-2.082713897,-0.000689669),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',960.0,-40260.77504549,12529.11484344,-12.84915105,-0.913097031,-2.935933528,-0.000256181),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1080.0,-41114.14376538,-9338.87194483,-12.87952404,0.681588815,-2.998432565,0.000245006),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1200.0,-30890.01512240,-28690.40750792,-9.48037212,2.092989805,-2.252978152,0.000680459),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1320.0,-12341.46194020,-40310.06316386,-3.55833201,2.940537098,-0.900219523,0.000934170),
+('25954','1 25954U 99060A 04039.68057285 -.00000108 00000-0 00000-0 0 6847','2 25954 0.0004 243.8136 0001765 15.5294 22.7134 1.00271289 15615',1440.0,9533.27750818,-41065.52390214,3.30756482,2.995596171,0.695200236,0.000938525),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',0.0,-42014.83795787,3702.34357772,-26.67500257,-0.269775247,-3.061854393,0.000336726),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9300.0,40968.68133298,-9905.99156086,11.84946837,0.722756848,2.989645389,-0.000161261),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9360.0,42135.66858481,1072.99195618,10.83481752,-0.078150602,3.074772455,-0.000380063),
+('26900','1 26900U 01039A 06106.74503247 .00000045 00000-0 10000-3 0 8290','2 26900 0.0164 266.5378 0003319 86.1794 182.2590 1.00273847 16981',9400.0,41304.75156132,8398.27742944,9.74006214,-0.612515135,3.014117469,-0.000511575),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',0.0,-14506.92313768,-21613.56043281,10.05018894,2.212943308,1.159970892,3.020600202),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',120.0,7309.62197950,6076.00713664,6800.08705263,1.300543383,5.322579615,-4.788746312),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',240.0,-3882.62933791,11960.00543452,-25088.14383845,-2.146773699,-1.372461491,-2.579382089),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',360.0,-16785.45507465,-734.79159704,-34300.57085853,-1.386528125,-1.907762641,-0.220949641),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',480.0,-23524.16689356,-13629.45124622,-30246.27899200,-0.462846784,-1.586139830,1.269293624),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',600.0,-22890.23597092,-22209.35900155,-16769.91946116,0.704351342,-0.671112594,2.432433851),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',720.0,-11646.39698980,-19855.44222106,3574.00109607,2.626712727,1.815887329,2.960883901),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',840.0,7665.76124241,11159.78946577,345.93813117,-0.584818007,3.193514161,-5.750338922),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',960.0,-6369.35388112,10204.80073022,-27844.52150384,-2.050573276,-1.582940542,-2.076075232),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1080.0,-18345.64763145,-2977.76684430,-34394.90760612,-1.243589864,-1.892050757,0.060372061),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1200.0,-23979.74839255,-15436.44139571,-28616.50540218,-0.294973425,-1.482987916,1.478255628),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1320.0,-21921.97167880,-22852.45147658,-13784.85308485,0.945455629,-0.428940995,2.596964378),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1440.0,-8266.43821031,-17210.74590112,6967.95546070,3.082244069,2.665881872,2.712555075),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1560.0,6286.85464535,13809.56328971,-6321.60663781,-1.615964016,1.383135377,-5.358719132),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1680.0,-8730.87526788,8244.63344365,-30039.92372791,-1.935622871,-1.724162072,-1.631224738),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1800.0,-19735.81883249,-5191.76593007,-34166.14974143,-1.097835530,-1.860148418,0.324401050),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',1920.0,-24232.73847703,-17112.08243255,-26742.88893252,-0.119786184,-1.364365317,1.680220468),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2040.0,-20654.45640708,-23184.54386047,-10611.55144716,1.209238113,-0.144169639,2.748054938),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2160.0,-4337.15988957,-13410.46817244,9870.45949215,3.532753095,3.772236461,2.088424247),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2280.0,4074.62263523,14698.07548285,-12248.65327973,-2.053824693,0.203325817,-4.607867718),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2400.0,-10950.23438984,6148.66879447,-31736.65532865,-1.809875605,-1.816179062,-1.233364913),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2520.0,-20952.40702045,-7358.71507895,-33633.06643074,-0.948973031,-1.813594137,0.573893078),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2640.0,-24273.48944134,-18637.15546906,-24633.27702390,0.064161440,-1.228537560,1.875728935),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2760.0,-19057.55468077,-23148.29322082,-7269.38614178,1.500802809,0.195383037,2.879031237),
+('26975','1 26975U 78066F 06174.85818871 .00000620 00000-0 10000-3 0 6809','2 26975 68.4714 236.1303 5602877 123.7484 302.5767 2.05657553 67521',2880.0,43.69305308,-8145.90299207,11634.57079913,3.780661682,5.105315423,0.714401345),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',0.0,-2715.28237486,-6619.26436889,-0.01341443,-1.008587273,0.422782003,7.385272942),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',120.0,-1816.87920942,-1835.78762132,6661.07926465,2.325140071,6.655669329,2.463394512),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',240.0,1483.17364291,5395.21248786,4448.65907172,2.560540387,4.039025766,-5.736648561),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',360.0,2801.25607157,5455.03931333,-3692.12865695,-0.595095864,-3.951923117,-6.298799125),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',480.0,411.09332812,-1728.99769152,-6935.45548810,-2.935970964,-6.684085058,1.492800886),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',600.0,-2506.52558454,-6628.98655094,-988.07784497,-1.390577189,-0.556164143,7.312736468),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',720.0,-2090.79884266,-2723.22832193,6266.13356576,1.992640665,6.337529519,3.411803080),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',840.0,1091.80560222,4809.88229503,5172.42897894,2.717483546,4.805518977,-5.030019896),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',960.0,2811.14062300,5950.65707171,-2813.23705389,-0.159662742,-3.121215491,-6.775341949),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1080.0,805.72698304,-812.16627907,-7067.58483968,-2.798936020,-6.889265977,0.472770873),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1200.0,-2249.59837532,-6505.84890714,-1956.72365062,-1.731234729,-1.528750230,7.096660885),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1320.0,-2311.57375797,-3560.99112891,5748.16749600,1.626569751,5.890482233,4.293545048),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1440.0,688.16056594,4124.87618964,5794.55994449,2.810973665,5.479585563,-4.224866316),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1560.0,2759.94088230,6329.87271798,-1879.19518331,0.266930672,-2.222670878,-7.119390567),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1680.0,1171.50677137,125.82053748,-7061.96626202,-2.605687852,-6.958489749,-0.556333225),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1800.0,-1951.43708472,-6251.71945820,-2886.95472355,-2.024131483,-2.475214272,6.741537478),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',1920.0,-2475.70722288,-4331.90569958,5117.31234924,1.235823539,5.322743371,5.091281211),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2040.0,281.46097847,3353.51057102,6302.87900650,2.840647273,6.047222485,-3.337085992),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2160.0,2650.33118860,6584.33434851,-908.29027134,0.675457235,-1.274044972,-7.323921567),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2280.0,1501.17226597,1066.31132756,-6918.71472952,-2.361891904,-6.889669974,-1.574718619),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2400.0,-1619.73468334,-5871.14051991,-3760.56587071,-2.264093975,-3.376316601,6.254622256),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2520.0,-2581.04202505,-5020.05572531,4385.92329047,0.829668458,4.645048038,5.789262667),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2640.0,-119.22080628,2510.90620488,6687.45615459,2.807575712,6.496549689,-2.384136661),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2760.0,2486.23806726,6708.18210028,80.43349581,1.057274905,-0.294294027,-7.384689123),
+('28057','1 28057U 03049A 06177.78615833 .00000060 00000-0 35940-4 0 1836','2 28057 98.4283 247.6961 0000884 88.1964 271.9322 14.35478080140550',2880.0,1788.42334580,1990.50530957,-6640.59337725,-2.074169091,-6.683381288,-2.562777776),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',0.0,21707.46412351,-15318.61752390,0.13551152,1.304029214,1.816904974,3.161919976),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',120.0,18616.75971861,3166.15177043,18833.41523210,-2.076122016,2.838457575,1.586210535),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',240.0,-3006.50596328,18522.20742011,18941.84078154,-3.375452789,1.032680773,-1.559324534),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',360.0,-21607.02086957,15432.59962630,206.62470309,-1.306049851,-1.817011568,-3.163725018),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',480.0,-18453.06134549,-3150.83256134,-18685.83030936,2.106017925,-2.860236337,-1.586151870),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',600.0,3425.11742384,-18514.73232706,-18588.67200557,3.394666340,-1.003072030,1.610061295),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',720.0,21858.23838148,-15101.51661554,387.34517048,1.247973967,1.856017403,3.161439948),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',840.0,18360.69935796,3506.55256762,19024.81678979,-2.122684184,2.830618605,1.537510677),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',960.0,-3412.84765409,18646.85269710,18748.00359987,-3.366815728,0.986039922,-1.607874972),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1080.0,-21758.08331586,15215.44829478,-180.82181406,-1.250144680,-1.856490448,-3.163774870),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1200.0,-18193.41290284,-3493.85876912,-18877.14757717,2.153326942,-2.852221264,-1.536617760),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1320.0,3833.57386848,-18635.77026711,-18388.68722885,3.384748179,-0.955363841,1.658785020),
+('28129','1 28129U 03058A 06175.57071136 -.00000104 00000-0 10000-3 0 459','2 28129 54.7298 324.8098 0048506 266.2640 93.1663 2.00562768 18443',1440.0,22002.20074562,-14879.72595593,774.32827099,1.191573619,1.894561165,3.159953047),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',0.0,6333.08123128,-1580.82852326,90.69355720,0.714634423,3.224246550,7.083128132),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',120.0,-3990.93845855,3052.98341907,4155.32700629,-5.909006188,-0.876307966,-5.039131404),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',240.0,-603.55232010,-2685.13474569,-5891.70274282,7.572519907,-1.975656726,0.121722605),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',360.0,4788.22345627,782.56169214,4335.14284621,-4.954509026,3.683346464,4.804645839),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',480.0,-6291.84601644,1547.82790772,-453.67116498,-0.308625588,-3.341538574,-7.082659115),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',600.0,4480.74573428,-3028.55200374,-3586.94343641,5.320920857,1.199736275,5.626350481),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',720.0,-446.42460916,2932.28872588,5759.19389757,-7.561000245,1.550975493,-1.374970885),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',840.0,-3713.79581831,-1382.66125130,-5122.45131136,6.090931626,-3.512629733,-3.467571746),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',960.0,6058.32017522,-827.47406722,2104.04678651,-1.798403024,3.787067272,6.641439744),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1080.0,-5631.73659006,2623.70953644,1766.49125084,-3.216401578,-2.309140959,-6.788609120),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1200.0,2776.84991560,-3255.36941953,-4837.19667790,6.748135564,-0.193044825,4.005718698),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1320.0,1148.04430837,2486.07343386,5826.34075913,-7.420162295,2.589456382,0.356350006),
+('28350','1 28350U 04020A 06167.21788666 .16154492 76267-5 18678-3 0 8894','2 28350 64.9977 345.6130 0024870 260.7578 99.9590 16.47856722116490',1440.0,-4527.90871828,-723.29199041,-4527.44608319,5.121674217,-3.909895427,-4.500218556),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',0.0,-11665.70902324,24943.61433357,25.80543633,-1.596228621,-1.476127961,1.126059754),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',120.0,-11645.35454950,979.37668356,5517.89500058,3.407743502,-5.183094988,-0.492983277),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',240.0,5619.19252274,19651.44862280,-7261.38496765,-2.013634213,3.106842861,0.284235517),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',360.0,-9708.68629714,26306.14553149,-1204.29478856,-1.824164290,-0.931909596,1.113419052),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',480.0,-14394.03162892,6659.30765074,5593.38345858,1.556522911,-4.681657614,0.296912248),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',600.0,7712.09476270,15565.72627434,-7342.40465571,-1.646800364,4.070313571,-0.109483081),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',720.0,-7558.36739603,27035.11367962,-2385.12054184,-1.999583791,-0.393409283,1.078093515),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',840.0,-15495.61862220,11550.15897828,5053.83178121,0.469277336,-4.029761073,0.679054742),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',960.0,9167.02568222,10363.65204210,-6871.52576042,-0.881621027,5.223361510,-0.740696297),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1080.0,-5275.80272094,27151.78486008,-3494.50687216,-2.129609388,0.150196480,1.021038089),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1200.0,-15601.37656145,15641.29379850,4217.03266850,-0.249183123,-3.405238557,0.888214503),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1320.0,9301.05872300,3883.15265574,-5477.86477017,0.871447821,6.493677331,-1.885545282),
+('28623','1 28623U 05006B 06177.81079184 .00637644 69054-6 96390-3 0 6000','2 28623 28.5200 114.9834 6249053 170.2550 212.8965 3.79477162 12753',1440.0,-2914.31065828,26665.20392758,-4511.09814335,-2.216261909,0.710067769,0.940691824),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',0.0,42080.71852213,-2646.86387436,0.81851294,0.193105177,3.068688251,0.000438449),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',120.0,37740.00085593,18802.76872802,3.45512584,-1.371035206,2.752105932,0.000336883),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',240.0,23232.82515008,35187.33981802,4.98927428,-2.565776620,1.694193132,0.000163365),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',360.0,2467.44290178,42093.60909959,5.15062987,-3.069341800,0.179976276,-0.000031739),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',480.0,-18962.59052991,37661.66243819,4.04433258,-2.746151982,-1.382675777,-0.000197633),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',600.0,-35285.00095313,23085.44402778,2.08711880,-1.683277908,-2.572893625,-0.000296282),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',720.0,-42103.20138132,2291.06228893,-0.13274964,-0.166974816,-3.070104560,-0.000311007),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',840.0,-37580.31858370,-19120.40485693,-2.02755702,1.394367848,-2.740341612,-0.000248591),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',960.0,-22934.20761876,-35381.23870806,-3.16495932,2.580167539,-1.672360951,-0.000134907),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1080.0,-2109.90332389,-42110.71508198,-3.36507889,3.070935369,-0.153808390,-0.000005855),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1200.0,19282.77774728,-37495.59250598,-2.71861462,2.734400524,1.406220933,0.000103486),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1320.0,35480.60990600,-22779.03375285,-1.52841859,1.661210676,2.587414593,0.000168300),
+('28626','1 28626U 05008A 06176.46683397 -.00000205 00000-0 10000-3 0 2190','2 28626 0.0019 286.9433 0000335 13.7918 55.6504 1.00270176 4891',1440.0,42119.96263499,-1925.77567263,-0.19827433,0.140521206,3.071541613,0.000179561),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',0.0,-6131.82730456,2446.52815528,-253.64211033,-0.144920228,0.995100963,7.658645067),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',5.0,-5799.24256134,2589.14811119,2011.54515100,2.325207364,-0.047125672,7.296234071),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',10.0,-4769.05061967,2420.46580562,4035.30855837,4.464585796,-1.060923209,6.070907874),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',15.0,-3175.45157340,1965.98738086,5582.12569607,6.049639376,-1.935777558,4.148607019),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',20.0,-1210.19024802,1281.54541294,6474.68172772,6.920746273,-2.580517337,1.748783868),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',25.0,896.73799533,447.12357305,6607.22400507,6.983396282,-2.925846168,-0.872655207),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',30.0,2896.99663534,-440.04738594,5954.92675486,6.211488246,-2.926949815,-3.433959806),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',35.0,4545.78970167,-1273.55952872,4580.16512984,4.656984233,-2.568711513,-5.638510954),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',40.0,5627.43299371,-1947.94282469,2634.16714930,2.464141047,-1.873985161,-7.195743032),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',45.0,5984.72318534,-2371.37691609,349.87996209,-0.121276950,-0.911981546,-7.859613894),
+('28872','1 28872U 05037B 05333.02012661 .25992681 00000-0 24476-3 0 1534','2 28872 96.4736 157.9986 0303955 244.0492 110.6523 16.46015938 10708',50.0,5548.43325922,-2480.16469245,-1979.24314527,-2.763269534,0.199691915,-7.482796996),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',0.0,423.99295524,-6658.12256149,136.13040356,1.006373613,0.217309983,7.662587892),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',20.0,931.80883587,-1017.17852239,6529.19244527,-0.298847918,7.613891977,1.226399480),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',40.0,-83.44906141,6286.20208453,2223.49837161,-1.113515974,2.530970283,-7.219445568),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',60.0,-958.57681221,3259.26005348,-5722.63732467,-0.101225813,-6.735338321,-3.804851872),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',80.0,-255.25619985,-5132.59762974,-4221.27233118,1.077709303,-4.905938824,5.892521264),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',100.0,867.44295097,-5038.40402933,4256.73810533,0.479447535,5.032326446,5.857126248),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',120.0,559.16882013,3376.30587937,5699.22017391,-0.906749328,6.646149867,-3.852331832),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',140.0,-669.85184205,6196.00229484,-2281.95741770,-0.795804092,-2.752114827,-7.202478520),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',160.0,-784.20708019,-1278.53125553,-6449.19892596,0.636702380,-7.595425203,1.431090802),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',180.0,406.15811659,-6607.03115799,148.33021477,1.009818575,0.231843765,7.692047844),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',200.0,916.34911813,-884.08649248,6491.09810362,-0.302163049,7.669887109,1.084336909),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',220.0,-104.02490970,6304.31821405,1960.08739882,-1.108873823,2.259522809,-7.351147710),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',240.0,-944.61642849,2872.17248379,-5846.94103362,-0.051117686,-6.989747076,-3.413102600),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',260.0,-187.16569888,-5404.86163467,-3731.97057618,1.094696706,-4.412110995,6.326060952),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',280.0,884.59720467,-4465.74516163,4725.83632696,0.380656028,5.691554046,5.303910983),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',300.0,446.40767236,4086.66839620,5093.05596650,-0.982424447,6.072965199,-4.791630682),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',320.0,-752.24467495,5588.35473301,-3275.04092573,-0.661161370,-4.016290740,-6.676898026),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',340.0,-643.72872525,-2585.02528560,-5923.01306608,0.807922142,-7.171597814,3.041115058),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',360.0,584.40295819,-6202.35605817,1781.00536019,0.869250450,2.226927514,7.471676765),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',380.0,779.59211765,1100.73728301,6311.59529480,-0.599552305,7.721032522,-1.275153027),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',400.0,-403.03155588,6399.18000837,-364.12735875,-1.008861924,-0.516636615,-7.799812287),
+('29141','1 29141U 85108AA 06170.26783845 .99999999 00000-0 13519-0 0 718','2 29141 82.4288 273.4882 0015848 277.2124 83.9133 15.93343074 6828',420.0,-852.93910071,192.65232023,-6322.47054784,0.396006194,-7.882964919,-0.289331517),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',0.0,-5566.59512819,-3789.75991159,67.60382245,2.873759367,-3.825340523,6.023253926),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',120.0,4474.27915495,-1447.72286142,4619.83927235,4.712595822,5.668306153,-2.701606741),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',240.0,1922.17712474,5113.01138342,-4087.08470203,-6.490769651,-0.522350158,-3.896001154),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',360.0,-6157.93546882,-2094.70798790,-1941.63730960,0.149900661,-5.175192523,5.604262034),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',480.0,2482.64052411,-3268.45944555,5146.38006190,6.501814698,4.402848754,-0.350943511),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',600.0,4036.26455287,4827.43347201,-2507.99063955,-5.184409515,1.772280695,-5.331390168),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',720.0,-5776.81371622,-118.64155319,-3641.22052418,-2.539917207,-5.622701582,4.403125405),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',840.0,67.98699487,-4456.49213473,4863.71794283,7.183809420,2.418917791,2.015642495),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',960.0,5520.62207038,3782.38203554,-596.73193161,-3.027966069,3.754152525,-6.013506363),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1080.0,-4528.05104455,1808.46273329,-4816.99727762,-4.808419763,-5.185789345,2.642104494),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1200.0,-2356.61468078,-4852.51202272,3856.53816184,6.688446735,0.118520958,4.021854210),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1320.0,6149.65800134,2173.59423261,1369.29488732,-0.345832777,5.109857861,-5.842951828),
+('29238','1 29238U 06022G 06177.28732010 .00766286 10823-4 13334-2 0 101','2 29238 51.5595 213.7903 0202579 95.2503 267.9010 15.73823839 1061',1440.0,-2629.55011449,3400.98040158,-5344.38217129,-6.368548448,-3.998963509,0.577253064),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',0.0,2328.96975262,-5995.22051338,1719.97297192,2.912073281,-0.983417956,-7.090816210),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',120.0,1020.69234558,2286.56260634,-6191.55565927,-3.746543902,6.467532721,1.827985678),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',240.0,-3226.54349155,3503.70977525,4532.80979343,1.000992116,-5.788042888,5.162585826),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',360.0,2456.10706533,-6071.93855503,1222.89768554,2.679390040,-0.448290811,-7.228792155),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',480.0,787.16457349,2719.91800946,-6043.86662024,-3.759883839,6.277439314,2.397897864),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',600.0,-3110.97648029,3121.73026235,4878.15217035,1.244916056,-6.124880425,4.700576353),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',720.0,2567.56229695,-6112.50383922,713.96374435,2.440245751,0.098109002,-7.319959258),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',840.0,556.05661780,3144.52288201,-5855.34636178,-3.754660143,6.044752775,2.957941672),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',960.0,-2982.47940539,2712.61663711,5192.32330472,1.475566773,-6.427737014,4.202420227),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1080.0,2663.08964352,-6115.48290885,196.40072866,2.196121564,0.652415093,-7.362824152),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1200.0,328.54999674,3557.09490552,-5626.21427211,-3.731193288,5.769341172,3.504058731),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1320.0,-2842.06876757,2278.42343492,5472.33437150,1.691852635,-6.693216335,3.671022712),
+('88888','1 88888U 80275.98708465 .00073094 13844-3 66816-4 0 87','2 88888 72.8435 115.9689 0086731 52.6988 110.5714 16.05824518 1058',1440.0,2742.55398832,-6079.67009123,-326.39012649,1.948497651,1.211072678,-7.356193131);
+
+-- Verify we loaded all 518 vectors
+SELECT count(*) AS vectors_loaded FROM vallado_vectors;
+
+-- Materialize propagation results (avoid recomputing per query)
+CREATE TEMP TABLE vallado_results AS
+SELECT
+ v.satnum,
+ v.tsince_min,
+ sgp4_propagate_safe(
+ tle_from_lines(v.tle_line1, v.tle_line2),
+ _vallado_jd_plus_min(
+ tle_epoch(tle_from_lines(v.tle_line1, v.tle_line2)),
+ v.tsince_min
+ )
+ ) AS eci,
+ v.ref_x, v.ref_y, v.ref_z,
+ v.ref_vx, v.ref_vy, v.ref_vz
+FROM vallado_vectors v;
+
+-- Summary: all 518 must propagate; 434 match at tight tolerance.
+-- These numbers are the regression baseline for Bill Gray's sat_code.
+SELECT
+ count(*) AS total,
+ count(*) FILTER (WHERE eci IS NOT NULL) AS propagated,
+ count(*) FILTER (WHERE eci IS NOT NULL
+ AND greatest(abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)) < 1e-4
+ AND greatest(abs(eci_vx(eci) - ref_vx),
+ abs(eci_vy(eci) - ref_vy),
+ abs(eci_vz(eci) - ref_vz)) < 1e-7
+ ) AS tight_pass,
+ round(max(CASE WHEN eci IS NOT NULL THEN greatest(
+ abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)
+ ) END)::numeric, 8) AS worst_pos_km,
+ round(max(CASE WHEN eci IS NOT NULL THEN greatest(
+ abs(eci_vx(eci) - ref_vx),
+ abs(eci_vy(eci) - ref_vy),
+ abs(eci_vz(eci) - ref_vz)
+ ) END)::numeric, 10) AS worst_vel_kms
+FROM vallado_results;
+
+-- Per-satellite breakdown: position vs velocity pass counts.
+-- Satellites with worst_pos > 0.1 km have known implementation differences
+-- vs Vallado's AFSPC mode (see header comments).
+SELECT
+ satnum,
+ count(*) AS vectors,
+ count(*) FILTER (WHERE eci IS NOT NULL
+ AND greatest(abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)) < 1e-4
+ ) AS pos_pass,
+ count(*) FILTER (WHERE eci IS NOT NULL
+ AND greatest(abs(eci_vx(eci) - ref_vx),
+ abs(eci_vy(eci) - ref_vy),
+ abs(eci_vz(eci) - ref_vz)) < 1e-7
+ ) AS vel_pass,
+ count(*) FILTER (WHERE eci IS NULL) AS errors,
+ round(max(CASE WHEN eci IS NOT NULL THEN greatest(
+ abs(eci_x(eci) - ref_x),
+ abs(eci_y(eci) - ref_y),
+ abs(eci_z(eci) - ref_z)
+ ) END)::numeric, 6) AS worst_pos_km
+FROM vallado_results
+GROUP BY satnum
+ORDER BY satnum;
+
+-- Clean up
+DROP FUNCTION _vallado_jd_plus_min(float8, float8);