"""This file was generated by xsdata, v26.1, on 2026-02-18 00:40:52

Generator: DataclassGenerator
See: https://xsdata.readthedocs.io/
"""

from __future__ import annotations

from dataclasses import dataclass, field
from enum import Enum

__NAMESPACE__ = "urn:ccsds:recommendation:navigation:schema:ndmxml"


class AccUnits(Enum):
    KM_S_2 = "km/s**2"


class AngleKeywordType(Enum):
    X_ANGLE = "X_ANGLE"
    Y_ANGLE = "Y_ANGLE"
    Z_ANGLE = "Z_ANGLE"


class AngleRateKeywordType(Enum):
    X_RATE = "X_RATE"
    Y_RATE = "Y_RATE"
    Z_RATE = "Z_RATE"


class AngleRateUnits(Enum):
    DEG_S = "deg/s"


class AngleUnits(Enum):
    DEG = "deg"


class AreaUnits(Enum):
    M_2 = "m**2"


class BallisticCoeffUnitsType(Enum):
    KG_M_2 = "kg/m**2"


class ControlledType(Enum):
    YES = "YES"
    YES_1 = "yes"
    NO = "NO"
    NO_1 = "no"
    UNKNOWN = "UNKNOWN"
    UNKNOWN_1 = "unknown"


class DayIntervalUnits(Enum):
    D = "d"


class DisintegrationType(Enum):
    NONE = "NONE"
    MASS_LOSS = "MASS-LOSS"
    BREAK_UP = "BREAK-UP"
    MASS_LOSS_BREAK_UP = "MASS-LOSS + BREAK-UP"


class FrequencyUnits(Enum):
    HZ = "Hz"


class GmUnits(Enum):
    KM_3_S_2 = "km**3/s**2"
    KM_3_S_2_1 = "KM**3/S**2"


class ImpactUncertaintyType(Enum):
    NONE = "NONE"
    ANALYTICAL = "ANALYTICAL"
    STOCHASTIC = "STOCHASTIC"
    EMPIRICAL = "EMPIRICAL"


class Km2Units(Enum):
    KM_2 = "km**2"


class Km2S2Units(Enum):
    KM_2_S_2 = "km**2/s**2"


class Km2SUnits(Enum):
    KM_2_S = "km**2/s"


class LatLonUnits(Enum):
    DEG = "deg"


class LengthUnits(Enum):
    M = "m"


class MassUnits(Enum):
    KG = "kg"


class Ms2Units(Enum):
    M_S_2 = "m/s**2"


@dataclass(kw_only=True)
class NdmHeader:
    class Meta:
        name = "ndmHeader"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    creation_date: str = field(
        metadata={
            "name": "CREATION_DATE",
            "type": "Element",
            "namespace": "",
            "required": True,
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        }
    )
    originator: str = field(
        metadata={
            "name": "ORIGINATOR",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )


class ObjectDescriptionType(Enum):
    PAYLOAD = "PAYLOAD"
    PAYLOAD_1 = "payload"
    ROCKET_BODY = "ROCKET BODY"
    ROCKET_BODY_1 = "rocket body"
    UPPER_STAGE = "UPPER STAGE"
    UPPER_STAGE_1 = "upper stage"
    DEBRIS = "DEBRIS"
    DEBRIS_1 = "debris"
    UNKNOWN = "UNKNOWN"
    UNKNOWN_1 = "unknown"
    OTHER = "OTHER"
    OTHER_1 = "other"


@dataclass(kw_only=True)
class OemCovarianceMatrixAbstractType:
    class Meta:
        name = "oemCovarianceMatrixAbstractType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    epoch: str = field(
        metadata={
            "name": "EPOCH",
            "type": "Element",
            "namespace": "",
            "required": True,
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        }
    )
    cov_ref_frame: None | str = field(
        default=None,
        metadata={
            "name": "COV_REF_FRAME",
            "type": "Element",
            "namespace": "",
        },
    )


@dataclass(kw_only=True)
class OpmCovarianceMatrixAbstractType:
    class Meta:
        name = "opmCovarianceMatrixAbstractType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    cov_ref_frame: None | str = field(
        default=None,
        metadata={
            "name": "COV_REF_FRAME",
            "type": "Element",
            "namespace": "",
        },
    )


class PercentageUnits(Enum):
    PERCENT_SIGN = "%"


class PositionCovarianceUnits(Enum):
    KM_2 = "km**2"


class PositionUnits(Enum):
    KM = "km"


class PositionVelocityCovarianceUnits(Enum):
    KM_2_S = "km**2/s"


class QuaternionDotUnits(Enum):
    VALUE_1_S = "1/s"


@dataclass(kw_only=True)
class QuaternionType:
    class Meta:
        name = "quaternionType"

    qc: float = field(
        metadata={
            "name": "QC",
            "type": "Element",
            "namespace": "",
            "required": True,
            "min_inclusive": -1.0,
            "max_inclusive": 1.0,
        }
    )
    q1: float = field(
        metadata={
            "name": "Q1",
            "type": "Element",
            "namespace": "",
            "required": True,
            "min_inclusive": -1.0,
            "max_inclusive": 1.0,
        }
    )
    q2: float = field(
        metadata={
            "name": "Q2",
            "type": "Element",
            "namespace": "",
            "required": True,
            "min_inclusive": -1.0,
            "max_inclusive": 1.0,
        }
    )
    q3: float = field(
        metadata={
            "name": "Q3",
            "type": "Element",
            "namespace": "",
            "required": True,
            "min_inclusive": -1.0,
            "max_inclusive": 1.0,
        }
    )


class ReentryUncertaintyMethodType(Enum):
    NONE = "NONE"
    ANALYTICAL = "ANALYTICAL"
    STOCHASTIC = "STOCHASTIC"
    EMPIRICAL = "EMPIRICAL"


class RotDirectionType(Enum):
    A2_B = "A2B"
    B2_A = "B2A"


class RotseqType(Enum):
    VALUE_121 = "121"
    VALUE_123 = "123"
    VALUE_131 = "131"
    VALUE_132 = "132"
    VALUE_212 = "212"
    VALUE_213 = "213"
    VALUE_231 = "231"
    VALUE_232 = "232"
    VALUE_312 = "312"
    VALUE_313 = "313"
    VALUE_321 = "321"
    VALUE_323 = "323"


class TimeSystemType(Enum):
    GMST = "GMST"
    GMST_1 = "gmst"
    GPS = "GPS"
    GPS_1 = "gps"
    SCLK = "SCLK"
    SCLK_1 = "sclk"
    TAI = "TAI"
    TAI_1 = "tai"
    TCB = "TCB"
    TCB_1 = "tcb"
    TDB = "TDB"
    TDB_1 = "tdb"
    TOD = "TOD"
    TOD_1 = "tod"
    TT = "TT"
    TT_1 = "tt"
    UT1 = "UT1"
    UT1_1 = "ut1"
    UTC = "UTC"
    UTC_1 = "utc"


class TimeUnits(Enum):
    S = "s"


@dataclass(kw_only=True)
class UserDefinedParameterType:
    class Meta:
        name = "userDefinedParameterType"

    value: str = field(
        default="",
        metadata={
            "required": True,
        },
    )
    parameter: str = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


class VelocityCovarianceUnits(Enum):
    KM_2_S_2 = "km**2/s**2"


class VelocityUnits(Enum):
    KM_S = "km/s"


class YesNoType(Enum):
    YES = "YES"
    YES_1 = "yes"
    NO = "NO"
    NO_1 = "no"


@dataclass(kw_only=True)
class AccType:
    class Meta:
        name = "accType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | AccUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class AltType:
    class Meta:
        name = "altType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": -430.5,
            "max_inclusive": 8848.0,
        }
    )
    units: None | LengthUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class AngleRateType:
    class Meta:
        name = "angleRateType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | AngleRateUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class AngleType:
    class Meta:
        name = "angleType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": -180.0,
            "max_exclusive": 360.0,
        }
    )
    units: None | AngleUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class AreaType:
    class Meta:
        name = "areaType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": 0.0,
        }
    )
    units: None | AreaUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class BallisticCoeffType:
    class Meta:
        name = "ballisticCoeffType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": 0.0,
        }
    )
    units: None | BallisticCoeffUnitsType = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class DayIntervalType:
    class Meta:
        name = "dayIntervalType"

    value: float = field(
        metadata={
            "required": True,
            "min_exclusive": 0.0,
        }
    )
    units: DayIntervalUnits = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class DeltamassType:
    class Meta:
        name = "deltamassType"

    value: float = field(
        metadata={
            "required": True,
            "max_exclusive": 0.0,
        }
    )
    units: None | MassUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class DistanceType:
    class Meta:
        name = "distanceType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | PositionUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class DurationType:
    class Meta:
        name = "durationType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": 0.0,
        }
    )
    units: None | TimeUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class FrequencyType:
    class Meta:
        name = "frequencyType"

    value: float = field(
        metadata={
            "required": True,
            "min_exclusive": 0.0,
        }
    )
    units: None | FrequencyUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class GmType:
    class Meta:
        name = "gmType"

    value: float = field(
        metadata={
            "required": True,
            "min_exclusive": 0.0,
        }
    )
    units: None | GmUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class InclinationType:
    class Meta:
        name = "inclinationType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": 0.0,
            "max_exclusive": 360.0,
            "max_inclusive": 180.0,
        }
    )
    units: None | AngleUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class Km2Type:
    class Meta:
        name = "km2Type"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | Km2Units = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class Km2S2Type:
    class Meta:
        name = "km2s2Type"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | Km2S2Units = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class Km2SType:
    class Meta:
        name = "km2sType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | Km2SUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class LatType:
    class Meta:
        name = "latType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": -90.0,
            "max_inclusive": 90.0,
        }
    )
    units: LatLonUnits = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class LengthType:
    class Meta:
        name = "lengthType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: LengthUnits = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class LonType:
    class Meta:
        name = "lonType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": -180.0,
            "max_inclusive": 180.0,
        }
    )
    units: LatLonUnits = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class MassType:
    class Meta:
        name = "massType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": 0.0,
        }
    )
    units: None | MassUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class Ms2Type:
    class Meta:
        name = "ms2Type"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: Ms2Units = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class PercentageType:
    class Meta:
        name = "percentageType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": 0.0,
            "max_inclusive": 100.0,
        }
    )
    units: PercentageUnits = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class PositionCovarianceType:
    class Meta:
        name = "positionCovarianceType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | PositionCovarianceUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class PositionType:
    class Meta:
        name = "positionType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | PositionUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class PositionVelocityCovarianceType:
    class Meta:
        name = "positionVelocityCovarianceType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | PositionVelocityCovarianceUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class QuaternionDotType:
    class Meta:
        name = "quaternionDotType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | QuaternionDotUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class RotationAngleComponentType:
    class Meta:
        name = "rotationAngleComponentType"

    value: float = field(
        metadata={
            "required": True,
            "min_inclusive": -180.0,
            "max_exclusive": 360.0,
        }
    )
    angle: AngleKeywordType = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )
    units: None | AngleUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class RotationAngleComponentTypeold:
    class Meta:
        name = "rotationAngleComponentTypeold"

    units: None | AngleUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )
    angle: AngleKeywordType = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )
    value: float = field(
        metadata={
            "type": "Attribute",
            "required": True,
            "min_inclusive": -180.0,
            "max_exclusive": 360.0,
        }
    )


@dataclass(kw_only=True)
class RotationRateComponentType:
    class Meta:
        name = "rotationRateComponentType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    rate: AngleRateKeywordType = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )
    units: None | AngleRateUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class RotationRateComponentTypeOld:
    class Meta:
        name = "rotationRateComponentTypeOLD"

    units: None | AngleRateUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )
    rate: AngleRateKeywordType = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )
    value: float = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class UserDefinedType:
    class Meta:
        name = "userDefinedType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
            "sequence": 1,
        },
    )
    user_defined: list[UserDefinedParameterType] = field(
        default_factory=list,
        metadata={
            "name": "USER_DEFINED",
            "type": "Element",
            "namespace": "",
            "sequence": 1,
        },
    )


@dataclass(kw_only=True)
class VelocityCovarianceType:
    class Meta:
        name = "velocityCovarianceType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | VelocityCovarianceUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class VelocityType:
    class Meta:
        name = "velocityType"

    value: float = field(
        metadata={
            "required": True,
        }
    )
    units: None | VelocityUnits = field(
        default=None,
        metadata={
            "type": "Attribute",
        },
    )


@dataclass(kw_only=True)
class AtmosphericReentryParametersType:
    class Meta:
        name = "atmosphericReentryParametersType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    orbit_lifetime: DayIntervalType = field(
        metadata={
            "name": "ORBIT_LIFETIME",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    reentry_altitude: PositionType = field(
        metadata={
            "name": "REENTRY_ALTITUDE",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    orbit_lifetime_window_start: None | DayIntervalType = field(
        default=None,
        metadata={
            "name": "ORBIT_LIFETIME_WINDOW_START",
            "type": "Element",
            "namespace": "",
        },
    )
    orbit_lifetime_window_end: None | DayIntervalType = field(
        default=None,
        metadata={
            "name": "ORBIT_LIFETIME_WINDOW_END",
            "type": "Element",
            "namespace": "",
        },
    )
    nominal_reentry_epoch: None | str = field(
        default=None,
        metadata={
            "name": "NOMINAL_REENTRY_EPOCH",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    reentry_window_start: None | str = field(
        default=None,
        metadata={
            "name": "REENTRY_WINDOW_START",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    reentry_window_end: None | str = field(
        default=None,
        metadata={
            "name": "REENTRY_WINDOW_END",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    orbit_lifetime_confidence_level: None | PercentageType = field(
        default=None,
        metadata={
            "name": "ORBIT_LIFETIME_CONFIDENCE_LEVEL",
            "type": "Element",
            "namespace": "",
        },
    )


@dataclass(kw_only=True)
class GroundImpactParametersType:
    class Meta:
        name = "groundImpactParametersType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    probability_of_impact: None | float = field(
        default=None,
        metadata={
            "name": "PROBABILITY_OF_IMPACT",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
            "max_inclusive": 1.0,
        },
    )
    probability_of_burn_up: None | float = field(
        default=None,
        metadata={
            "name": "PROBABILITY_OF_BURN_UP",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
            "max_inclusive": 1.0,
        },
    )
    probability_of_break_up: None | float = field(
        default=None,
        metadata={
            "name": "PROBABILITY_OF_BREAK_UP",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
            "max_inclusive": 1.0,
        },
    )
    probability_of_land_impact: None | float = field(
        default=None,
        metadata={
            "name": "PROBABILITY_OF_LAND_IMPACT",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
            "max_inclusive": 1.0,
        },
    )
    probability_of_casualty: None | float = field(
        default=None,
        metadata={
            "name": "PROBABILITY_OF_CASUALTY",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
            "max_inclusive": 1.0,
        },
    )
    nominal_impact_epoch: None | str = field(
        default=None,
        metadata={
            "name": "NOMINAL_IMPACT_EPOCH",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    impact_window_start: None | str = field(
        default=None,
        metadata={
            "name": "IMPACT_WINDOW_START",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    impact_window_end: None | str = field(
        default=None,
        metadata={
            "name": "IMPACT_WINDOW_END",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    impact_ref_frame: None | str = field(
        default=None,
        metadata={
            "name": "IMPACT_REF_FRAME",
            "type": "Element",
            "namespace": "",
        },
    )
    nominal_impact_lon: None | LonType = field(
        default=None,
        metadata={
            "name": "NOMINAL_IMPACT_LON",
            "type": "Element",
            "namespace": "",
        },
    )
    nominal_impact_lat: None | LatType = field(
        default=None,
        metadata={
            "name": "NOMINAL_IMPACT_LAT",
            "type": "Element",
            "namespace": "",
        },
    )
    nominal_impact_alt: None | AltType = field(
        default=None,
        metadata={
            "name": "NOMINAL_IMPACT_ALT",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_1_confidence: None | PercentageType = field(
        default=None,
        metadata={
            "name": "IMPACT_1_CONFIDENCE",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_1_start_lon: None | LonType = field(
        default=None,
        metadata={
            "name": "IMPACT_1_START_LON",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_1_start_lat: None | LatType = field(
        default=None,
        metadata={
            "name": "IMPACT_1_START_LAT",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_1_stop_lon: None | LonType = field(
        default=None,
        metadata={
            "name": "IMPACT_1_STOP_LON",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_1_stop_lat: None | LatType = field(
        default=None,
        metadata={
            "name": "IMPACT_1_STOP_LAT",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_1_cross_track: None | DistanceType = field(
        default=None,
        metadata={
            "name": "IMPACT_1_CROSS_TRACK",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_2_confidence: None | PercentageType = field(
        default=None,
        metadata={
            "name": "IMPACT_2_CONFIDENCE",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_2_start_lon: None | LonType = field(
        default=None,
        metadata={
            "name": "IMPACT_2_START_LON",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_2_start_lat: None | LatType = field(
        default=None,
        metadata={
            "name": "IMPACT_2_START_LAT",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_2_stop_lon: None | LonType = field(
        default=None,
        metadata={
            "name": "IMPACT_2_STOP_LON",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_2_stop_lat: None | LatType = field(
        default=None,
        metadata={
            "name": "IMPACT_2_STOP_LAT",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_2_cross_track: None | DistanceType = field(
        default=None,
        metadata={
            "name": "IMPACT_2_CROSS_TRACK",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_3_confidence: None | PercentageType = field(
        default=None,
        metadata={
            "name": "IMPACT_3_CONFIDENCE",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_3_start_lon: None | LonType = field(
        default=None,
        metadata={
            "name": "IMPACT_3_START_LON",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_3_start_lat: None | LatType = field(
        default=None,
        metadata={
            "name": "IMPACT_3_START_LAT",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_3_stop_lon: None | LonType = field(
        default=None,
        metadata={
            "name": "IMPACT_3_STOP_LON",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_3_stop_lat: None | LatType = field(
        default=None,
        metadata={
            "name": "IMPACT_3_STOP_LAT",
            "type": "Element",
            "namespace": "",
        },
    )
    impact_3_cross_track: None | DistanceType = field(
        default=None,
        metadata={
            "name": "IMPACT_3_CROSS_TRACK",
            "type": "Element",
            "namespace": "",
        },
    )


@dataclass(kw_only=True)
class OdParametersType:
    class Meta:
        name = "odParametersType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    time_lastob_start: None | str = field(
        default=None,
        metadata={
            "name": "TIME_LASTOB_START",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    time_lastob_end: None | str = field(
        default=None,
        metadata={
            "name": "TIME_LASTOB_END",
            "type": "Element",
            "namespace": "",
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        },
    )
    recommended_od_span: None | DayIntervalType = field(
        default=None,
        metadata={
            "name": "RECOMMENDED_OD_SPAN",
            "type": "Element",
            "namespace": "",
        },
    )
    actual_od_span: None | DayIntervalType = field(
        default=None,
        metadata={
            "name": "ACTUAL_OD_SPAN",
            "type": "Element",
            "namespace": "",
        },
    )
    obs_available: None | int = field(
        default=None,
        metadata={
            "name": "OBS_AVAILABLE",
            "type": "Element",
            "namespace": "",
        },
    )
    obs_used: None | int = field(
        default=None,
        metadata={
            "name": "OBS_USED",
            "type": "Element",
            "namespace": "",
        },
    )
    tracks_available: None | int = field(
        default=None,
        metadata={
            "name": "TRACKS_AVAILABLE",
            "type": "Element",
            "namespace": "",
        },
    )
    tracks_used: None | int = field(
        default=None,
        metadata={
            "name": "TRACKS_USED",
            "type": "Element",
            "namespace": "",
        },
    )
    residuals_accepted: None | PercentageType = field(
        default=None,
        metadata={
            "name": "RESIDUALS_ACCEPTED",
            "type": "Element",
            "namespace": "",
        },
    )
    weighted_rms: None | float = field(
        default=None,
        metadata={
            "name": "WEIGHTED_RMS",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
        },
    )


@dataclass(kw_only=True)
class OemCovarianceMatrixType(OemCovarianceMatrixAbstractType):
    class Meta:
        name = "oemCovarianceMatrixType"

    cx_x: PositionCovarianceType = field(
        metadata={
            "name": "CX_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_x: PositionCovarianceType = field(
        metadata={
            "name": "CY_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_y: PositionCovarianceType = field(
        metadata={
            "name": "CY_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_x: PositionCovarianceType = field(
        metadata={
            "name": "CZ_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_y: PositionCovarianceType = field(
        metadata={
            "name": "CZ_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_z: PositionCovarianceType = field(
        metadata={
            "name": "CZ_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_x: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_y: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_z: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_x_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_x: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_y: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_z: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_x_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_y_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_Y_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_x: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_y: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_z: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_x_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_y_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Y_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_z_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Z_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class OpmCovarianceMatrixType(OpmCovarianceMatrixAbstractType):
    class Meta:
        name = "opmCovarianceMatrixType"

    cx_x: PositionCovarianceType = field(
        metadata={
            "name": "CX_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_x: PositionCovarianceType = field(
        metadata={
            "name": "CY_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_y: PositionCovarianceType = field(
        metadata={
            "name": "CY_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_x: PositionCovarianceType = field(
        metadata={
            "name": "CZ_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_y: PositionCovarianceType = field(
        metadata={
            "name": "CZ_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_z: PositionCovarianceType = field(
        metadata={
            "name": "CZ_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_x: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_y: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_z: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cx_dot_x_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CX_DOT_X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_x: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_y: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_z: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_x_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cy_dot_y_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CY_DOT_Y_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_x: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_y: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_z: PositionVelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_x_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_y_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Y_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    cz_dot_z_dot: VelocityCovarianceType = field(
        metadata={
            "name": "CZ_DOT_Z_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class QuaternionRateType:
    class Meta:
        name = "quaternionRateType"

    qc_dot: QuaternionDotType = field(
        metadata={
            "name": "QC_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    q1_dot: QuaternionDotType = field(
        metadata={
            "name": "Q1_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    q2_dot: QuaternionDotType = field(
        metadata={
            "name": "Q2_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    q3_dot: QuaternionDotType = field(
        metadata={
            "name": "Q3_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class RdmPositionType(PositionType):
    class Meta:
        name = "rdmPositionType"

    units: PositionUnits = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class RdmSpacecraftParametersType:
    class Meta:
        name = "rdmSpacecraftParametersType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    wet_mass: None | MassType = field(
        default=None,
        metadata={
            "name": "WET_MASS",
            "type": "Element",
            "namespace": "",
        },
    )
    dry_mass: None | MassType = field(
        default=None,
        metadata={
            "name": "DRY_MASS",
            "type": "Element",
            "namespace": "",
        },
    )
    hazardous_substances: None | str = field(
        default=None,
        metadata={
            "name": "HAZARDOUS_SUBSTANCES",
            "type": "Element",
            "namespace": "",
        },
    )
    solar_rad_area: None | AreaType = field(
        default=None,
        metadata={
            "name": "SOLAR_RAD_AREA",
            "type": "Element",
            "namespace": "",
        },
    )
    solar_rad_coeff: None | float = field(
        default=None,
        metadata={
            "name": "SOLAR_RAD_COEFF",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
        },
    )
    drag_area: None | AreaType = field(
        default=None,
        metadata={
            "name": "DRAG_AREA",
            "type": "Element",
            "namespace": "",
        },
    )
    drag_coeff: None | float = field(
        default=None,
        metadata={
            "name": "DRAG_COEFF",
            "type": "Element",
            "namespace": "",
            "min_inclusive": 0.0,
        },
    )
    rcs: None | AreaType = field(
        default=None,
        metadata={
            "name": "RCS",
            "type": "Element",
            "namespace": "",
        },
    )
    ballistic_coeff: None | BallisticCoeffType = field(
        default=None,
        metadata={
            "name": "BALLISTIC_COEFF",
            "type": "Element",
            "namespace": "",
        },
    )
    thrust_acceleration: None | Ms2Type = field(
        default=None,
        metadata={
            "name": "THRUST_ACCELERATION",
            "type": "Element",
            "namespace": "",
        },
    )


@dataclass(kw_only=True)
class RdmVelocityType(VelocityType):
    class Meta:
        name = "rdmVelocityType"

    units: VelocityUnits = field(
        metadata={
            "type": "Attribute",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class RotationAngleType:
    class Meta:
        name = "rotationAngleType"

    rotation1: RotationAngleComponentType = field(
        metadata={
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    rotation2: RotationAngleComponentType = field(
        metadata={
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    rotation3: RotationAngleComponentType = field(
        metadata={
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class RotationRateType:
    class Meta:
        name = "rotationRateType"

    rotation1: RotationRateComponentType = field(
        metadata={
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    rotation2: RotationRateComponentType = field(
        metadata={
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    rotation3: RotationRateComponentType = field(
        metadata={
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )


@dataclass(kw_only=True)
class SpacecraftParametersType:
    class Meta:
        name = "spacecraftParametersType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    mass: MassType = field(
        metadata={
            "name": "MASS",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    solar_rad_area: AreaType = field(
        metadata={
            "name": "SOLAR_RAD_AREA",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    solar_rad_coeff: float = field(
        metadata={
            "name": "SOLAR_RAD_COEFF",
            "type": "Element",
            "namespace": "",
            "required": True,
            "min_inclusive": 0.0,
        }
    )
    drag_area: AreaType = field(
        metadata={
            "name": "DRAG_AREA",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    drag_coeff: float = field(
        metadata={
            "name": "DRAG_COEFF",
            "type": "Element",
            "namespace": "",
            "required": True,
            "min_inclusive": 0.0,
        }
    )


@dataclass(kw_only=True)
class StateVectorAccType:
    class Meta:
        name = "stateVectorAccType"

    epoch: str = field(
        metadata={
            "name": "EPOCH",
            "type": "Element",
            "namespace": "",
            "required": True,
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        }
    )
    x: PositionType = field(
        metadata={
            "name": "X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    y: PositionType = field(
        metadata={
            "name": "Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    z: PositionType = field(
        metadata={
            "name": "Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    x_dot: VelocityType = field(
        metadata={
            "name": "X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    y_dot: VelocityType = field(
        metadata={
            "name": "Y_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    z_dot: VelocityType = field(
        metadata={
            "name": "Z_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    x_ddot: None | AccType = field(
        default=None,
        metadata={
            "name": "X_DDOT",
            "type": "Element",
            "namespace": "",
        },
    )
    y_ddot: None | AccType = field(
        default=None,
        metadata={
            "name": "Y_DDOT",
            "type": "Element",
            "namespace": "",
        },
    )
    z_ddot: None | AccType = field(
        default=None,
        metadata={
            "name": "Z_DDOT",
            "type": "Element",
            "namespace": "",
        },
    )


@dataclass(kw_only=True)
class StateVectorType:
    class Meta:
        name = "stateVectorType"

    comment: list[str] = field(
        default_factory=list,
        metadata={
            "name": "COMMENT",
            "type": "Element",
            "namespace": "",
        },
    )
    epoch: str = field(
        metadata={
            "name": "EPOCH",
            "type": "Element",
            "namespace": "",
            "required": True,
            "pattern": r"\-?\d{4}\d*-((\d{2}\-\d{2})|\d{3})T\d{2}:\d{2}:\d{2}(\.\d*)?(Z|[+|\-]\d{2}:\d{2})?|[+|\-]?\d*(\.\d*)?",
        }
    )
    x: PositionType = field(
        metadata={
            "name": "X",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    y: PositionType = field(
        metadata={
            "name": "Y",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    z: PositionType = field(
        metadata={
            "name": "Z",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    x_dot: VelocityType = field(
        metadata={
            "name": "X_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    y_dot: VelocityType = field(
        metadata={
            "name": "Y_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
    z_dot: VelocityType = field(
        metadata={
            "name": "Z_DOT",
            "type": "Element",
            "namespace": "",
            "required": True,
        }
    )
