SMPTE (the Society of Motion Picture and Television Engineers) is an internationally-recognized standards developing organization. Headquartered and incorporated in the United States of America, SMPTE has members in over 80 countries on six continents. SMPTEβs Engineering Documents, including Standards, Recommended Practices, and Engineering Guidelines, are prepared by SMPTEβs Technology Committees. Participation in these Committees is open to all with a bona fide interest in their work. SMPTE cooperates closely with other standards-developing organizations, including ISO, IEC and ITU. SMPTE Engineering Documents are drafted in accordance with the rules given in its Standards Operations Manual.
At the time of publication no notice had been received by SMPTE claiming patent rights essential to the implementation of this Engineering Document. However, attention is drawn to the possibility that some of the elements of this document may be the subject of patent rights. SMPTE shall not be held responsible for identifying any or all such patent rights.
This document was prepared by Technology Committee 27C.
This edition:
MainSoundConfiguration
to support the FSKSync token; andCopyright Β© 2024, Society of Motion Picture and Television Engineers. All rights reserved. No part of this material may be reproduced, by any means whatsoever, without the prior written permission of the Society of Motion Picture and Television Engineers.
This section is entirely informative and does not form an integral part of this Engineering Document.
A number of metadata items not specified in SMPTE ST 429-7 have seen widespread use in D-Cinema. This specification defines a new Asset element (the CompositionMetadataAsset element) to carry additional metadata items in the Composition Playlist while retaining compatibility with deployed equipment.
This specification also provides guidelines on the consistent use of composition metadata to facilitate composition ingest, scheduling and diagnostics.
This specification defines additional D-Cinema composition metadata, and provides guidelines on the use of D-Cinema composition metadata for composition ingest, scheduling and diagnostic.
Normative text is text that describes elements of the design that are indispensable or contains the conformance language keywords: "shall", "should", or "may". Informative text is text that is potentially helpful to the user, but not indispensable, and can be removed, changed, or added editorially without affecting interoperability. Informative text does not contain any conformance keywords.
All text in this document is, by default, normative, except: the Introduction, any section explicitly labeled as "Informative" or individual paragraphs that start with "Note:"
The keywords "shall" and "shall not" indicate requirements strictly to be followed in order to conform to the document and from which no deviation is permitted.
The keywords, "should" and "should not" indicate that, among several possibilities, one is recommended as particularly suitable, without mentioning or excluding others; or that a certain course of action is preferred but not necessarily required; or that (in the negative form) a certain possibility or course of action is deprecated but not prohibited.
The keywords "may" and "need not" indicate courses of action permissible within the limits of the document.
The keyword "reserved" indicates a provision that is not defined at this time, shall not be used, and may be defined in the future. The keyword "forbidden" indicates "reserved" and in addition indicates that the provision will never be defined in the future.
A conformant implementation according to this document is one that includes all mandatory provisions ("shall") and, if implemented, all recommended provisions ("should") as described. A conformant implementation need not implement optional provisions ("may") and need not implement them as described.
Unless otherwise specified, the order of precedence of the types of normative information in this document shall be as follows: Normative prose shall be the authoritative definition; Tables shall be next; then formal languages; then figures; and then any other language forms.
The following documents are referred to in the text in such a way that some or all of their content constitutes requirements of this document. For dated references, only the edition cited applies. For undated references, the latest edition of the referenced document (including any amendments) applies.
No terms and definitions are listed in this document.
XML elements defined by this specification shall conform to the XML schema definitions (see W3C XML Schema Part 1: Structures) found in this specification.
In the event of a conflict between schema definitions and the prose, the prose shall take precedence.
The XML schema root element shall be as defined in Figure 1.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata"
xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL"
xmlns:meta="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata"
attributeFormDefault="unqualified"
elementFormDefault="qualified">
<xs:import namespace="http://www.smpte-ra.org/schemas/429-7/2006/CPL"/>
<!-- schema definitions found in this document -->
</xs:schema>
In order to avoid duplication between text and schema, the cardinality and default values of elements and attributes are specified in the schema only.
The target namespace specified at 5.1, i.e. the
value of the targetNamespace attribute of the
schema element, shall only be used by
CompositionMetadataAsset instances that conform to this
specification as expressed by the combination of its prose and schema
definitions.
Instances that do not conform to this specification shall use a different namespace and no two distinct schemas shall have the same target namespace.
The CompositionMetadataAsset may be extended by
adding:
xs:any extension point at the top
level of the CompositionMetadataAsset element. This
extension mechanism shall be reserved for future revisions of this
specification, and preserve compatibility with earlier versions of the
specification that use the same target namespace.ExtensionMetadata elements to the
ExtensionMetadataList element (see 5.4.2.15). This mechanism can
be used
for any extension, including vendor-specific, experimental, etc.
The CompositionMetadataAsset element adds, to the
CompositionPlaylist element specified in SMPTE ST 429-7, metadata applicable to the
composition as a
whole.
A CompositionPlaylist element shall contain exactly zero
or one CompositionMetadataAsset element (see Figure 2) in the first
Reel element of the ReelList element. Other
CompositionMetadataAsset elements shall be ignored.
<xs:element name="CompositionMetadataAsset" type="meta:CompositionMetadataAssetType"/>
CompositionMetadataAsset schema
definitionThe value of the IntrinsicDuration element of the
CompositionMetadataAsset instance shall be equal to the
Duration element of the MainPicture or
MainStereoscopicPicture element from the same Reel
element.
The Duration and EntryPoint elements shall
not be present.
The value of the EditRate element of the
CompositionMetadataAsset instance shall be set to the value
of the EditRate of the picture essence referenced by
MainPicture or MainStereoscopicPicture
elements.
<xs:complexType name="CompositionMetadataAssetType">
<xs:complexContent>
<xs:extension base="cpl:GenericAssetType">
<xs:sequence>
<xs:element name="FullContentTitleText" type="cpl:UserText"/>
<xs:element name="ReleaseTerritory" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute
default="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata#scope/release-territory/UNM49"
name="scope" type="xs:anyURI"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="VersionNumber" default="1" minOccurs="0">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="xs:nonNegativeInteger">
<xs:attribute default="final" name="status" type="meta:StatusEnum"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="Chain" type="xs:string" minOccurs="0"/>
<xs:element name="Distributor" type="xs:string" minOccurs="0"/>
<xs:element name="Facility" type="xs:string" minOccurs="0"/>
<xs:element minOccurs="0" name="AlternateContentVersionList">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="1"
name="ContentVersion" type="cpl:ContentVersionType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="Luminance">
<xs:complexType>
<xs:simpleContent>
<xs:extension base="meta:PositiveDecimal">
<xs:attribute name="units" type="meta:LuminanceUnitEnum"
use="required"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
</xs:element>
<xs:element name="MainSoundConfiguration" minOccurs="1" type="xs:string"/>
<xs:element name="MainSoundSampleRate" minOccurs="1" type="cpl:Rational"/>
<xs:element name="MainPictureStoredArea" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Width" type="xs:positiveInteger"/>
<xs:element name="Height" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="MainPictureActiveArea" minOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="Width" type="xs:positiveInteger"/>
<xs:element name="Height" type="xs:positiveInteger"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element minOccurs="0" name="MainSubtitleLanguageList">
<xs:simpleType>
<xs:restriction base="meta:LanguageListType">
<xs:minLength value="1"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
<xs:element minOccurs="0" name="ExtensionMetadataList">
<xs:complexType>
<xs:sequence>
<xs:element name="ExtensionMetadata" maxOccurs="unbounded"
minOccurs="0" type="meta:ExtensionMetadataType"> </xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:any maxOccurs="unbounded" minOccurs="0" namespace="##other"
processContents="lax"/>
</xs:sequence>
</xs:extension>
</xs:complexContent>
</xs:complexType>
CompositionMetadataAssetType schema
definitionThe FullContentTitleText element shall contain the
full human-readable title for the composition, appropriate for the
release territory and without technical or versioning information. It
is strictly meant as a display hint to the user. The optional language
attribute shall indicate the language of the content of the
element.
NOTE 1 ββ The ContentTitleText of the
CompositionPlaylist element has been used in practice to
carry technical and version information in addition to the title
proper of the Composition, impairing the readability of the title and
limiting its length. It is expected that this practice will continue.
The FullContentTitleText element therefore allows the
full, proper title of the Composition to be carried.
NOTE 2 ββ The ContentVersion/LabelText element can
be used to carry the original, non-translated, title of the
Composition.
The ReleaseTerritory element shall contain a
human-readable representation of the intended release territory for
the Composition Playlist. A scope attribute shall determine the
permissible values of the element.
When the default scope value is used or no scope value is present,
the value of the ReleaseTerritory shall be a valid region
subtag found in the Language Subtag Registry specified in IETF RFC 5646. For generic international versions, the
code 001 shall be used.
NOTE ββ As of the publication date of this specification, the set of region subtags in the Language Subtag Registry consists of a subset of the geographical regions specified in ISO 3166-1 and Statistics Division, United Nations. Standard Country or Area Codes for Statistical Use (Series M, No. 49). The Language Subtag Registry is maintained at IANA Language Subtag Registry and is the definitive list of region subtags.
The VersionNumber
element shall indicate the version number of the Composition.
The status attribute shall indicate the status of the
Composition, as specified in Table 1 and Figure 4. It is used to
prevent a non-final version
from accidently being distributed to theatres as the final release.
| Value | Description |
|---|---|
final |
Final composition, including final sound, picture and accessibility features. |
temp |
Temporary composition, e.g. preview or rough-cut version. Picture and/or sound are temporary and unfinished. |
pre |
Pre-release Composition. Picture and sound are final, but not all features of the final version such as accessibility features are present. |
<xs:simpleType name="StatusEnum">
<xs:restriction base="xs:token">
<xs:enumeration value="final"/>
<xs:enumeration value="temp"/>
<xs:enumeration value="pre"/>
</xs:restriction>
</xs:simpleType>
StatusEnum schema definitionThe Chain shall contain a human-readable name of the
specific targeted use for which the Composition Playlist is intended,
if any. Examples of targeted uses includes a specific theatre chain,
trade show, festival screening, etcβ¦
The Distributor shall contain a human-readable
representation of the distributor, e.g. studio, for the Composition
Playlist in the intended release territory.
The Facility element shall contain a human-readable
representation of the organization that created the Composition
Playlist.
AlternateContentVersionList allows additional content
identifiers to be associated with the Composition Playlist, in
addition to the identifier carried in the ContentVersion element of
the CompositionPlaylist element.
ContentVersion elements within the
AlternateContentVersionList element shall be synonyms of
the /CompositionPlaylist/ContentVersion element.
No two ContentVersion elements, including both
Composition Playlist and AlternateContentVersionList
children elements, shall have identical Id elements.
The Luminance element shall indicate the screen
luminance at which the content was authored. The units attribute type
shall indicate the units of measure, as specified at Table 2, Figure 5 and Figure 6.
| Value | Description |
|---|---|
candela-per-square-metre |
SI unit of luminance |
foot-lambert |
3.426 candela per square metre |
<xs:simpleType name="LuminanceUnitEnum">
<xs:restriction base="xs:token">
<xs:enumeration value="foot-lambert"/>
<xs:enumeration value="candela-per-square-metre"/>
</xs:restriction>
</xs:simpleType>
LuminanceUnitEnum schema
definition<xs:simpleType name="PositiveDecimal">
<xs:restriction base="xs:decimal">
<xs:minExclusive value="0"/>
</xs:restriction>
</xs:simpleType>
PositiveDecimal schema
definitionThe MainSoundConfiguration element shall contain a
human-readable representation of the soundfield and channels present
in the Track File referenced by MainSound.
The value of the element should follow the MAINSOUND
rule, expressed using ABNF as specified in IETF RFC 5234:
MAINSOUND = SOUNDFIELD ["/" CHANNEL *("," CHANNEL)]
SOUNDFIELD = TOKEN
CHANNEL = "-" / TOKEN
TOKEN = 1*8(ALPHA / DIGIT)
A CHANNEL value of "-" shall indicate a
channel not intended for reproduction at playback, e.g. silence.
The SOUNDFIELD shall indicate the primary soundfield
carried in the MainSound Track File. If the soundfield is defined in
SMPTE ST 428-12, SOUNDFIELD should be equal
to the symbol specified there.
Each CHANNEL value shall correspond to one audio
channel, in the order it appears in MainSound. If the audio channel is
defined in SMPTE ST 428-12, CHANNEL should
be equal to the symbol specified there.
EXAMPLE ββ <MainSoundConfiguration>51/L,R,C,LFE,Ls,Rs,-,-,-,-,-,-,-,FSKSync,-,-</MainSoundConfiguration>
The MainSoundSampleRate element shall be equal to the
audio sample rate of the Track File referenced by MainSound. It shall
be expressed as a rational number, in units of audio samples per
second.
The MainPictureStoredArea is used to configure the
projector.
The Height and Width elements of the
MainPictureStoredArea element shall be the height and
width in pixels of the picture essence container, also referred to as
stored rectangle, referenced by the MainPicture or
MainStereoscopicPicture element.
NOTE ββ ScreenAspectRatio in SMPTE ST 429-7
stores the ratio of width to height dimensions, and not the absolute value of
the dimensions themselves.
The MainPictureActiveArea is used to configure masking
and the projector.
The Height and Width elements of the
MainPictureActiveArea element shall be the height and
width in pixels of the active area of the picture essence, referenced
by the MainPicture or
MainStereoscopicPicture element.
The active area of the picture essence shall be the rectangular region which is intended to be visible to the audience, i.e. not masked. It shall be centered within the picture essence container. Its height and width in pixels shall be multiples of two, and no larger than the corresponding dimensions of the picture essence container.
Figure 7 illustrates the values
MainPictureStoredArea and
MainPictureActiveArea for a flat picture essence
container with a pillar-boxed 1.33 active area.
<MainPictureStoredArea> <Width>1998</Width> <Height>1080</Height> </MainPictureStoredArea> <MainPictureActiveArea> <Width>1440</Width> <Height>1080</Height> </MainPictureActiveArea>
There shall be a one-to-one correspondence between
MainSubtitleLanguageList elements and languages displayed
by the MainSubtitle asset.
The first item of the MainSubtitleLanguageList element
shall correspond to the primary language, if any.
The value of the Language element of the MainSubtitle
element shall be equal to the first item of the
MainSubtitleLanguageList element.
<xs:simpleType name="LanguageListType">
<xs:restriction>
<xs:simpleType>
<xs:list itemType="xs:language"/>
</xs:simpleType>
</xs:restriction>
</xs:simpleType>
LanguageListType schema
definitionAn ExtensionMetadata element consists of
human-readable name (the Name element) and properties (the
PropertyList element), and opaque extension elements that
use the XML schema xs:any mechanism.
A ExtensionMetadata element should, whenever possible,
include human-readable properties. The opaque extension elements are
intended for information that is not human-readable or benefits from
schema validation. Information in opaque extension elements should
take precedence over human-readable properties. The scope attribute of
the ExtensionMetadata element shall be globally unique
and shall identify the nature of the ExtensionMetadata
element.
An implementation shall ignore any ExtensionMetadata
elements with a scope attribute value it does not recognize.
No two ExtensionMetadata elements in a given
ExtensionMetadataList element shall have the same scope
attribute value.
<xs:complexType name="ExtensionMetadataType">
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element minOccurs="0" name="PropertyList">
<xs:complexType>
<xs:sequence>
<xs:element name="Property" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="Name" type="xs:string"/>
<xs:element name="Value" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:any namespace="##other" maxOccurs="unbounded" minOccurs="0" processContents="lax"/>
</xs:sequence>
<xs:attribute name="scope" type="xs:anyURI" use="required"/>
</xs:complexType>
ExtensionMetadataType schema
definitionThe Name element shall be a human-readable mnemonic
that identifies the nature of the ExtensionMedataType
instance.
The PropertyList element contains a list of
Property elements, each corresponding to a particular
property of the extension metadata.
No two Property elements within a given
PropertyList element shall have the same Name value.
The Name element shall be human-readable and identify the property.
The Value element shall be human-readable and shall be the value of the property.
The information listed in Table 3, as expressed using
the XPath Language, should be made available to users for composition
ingest, scheduling and diagnostic. Missing information should be indicated
using text appropriate for the locale, e.g. "n/a" in an English
locale.
| Information | Element(s) | Notes |
|---|---|---|
| Structure Version | namespace-uri(/CompositionPlaylist) |
Indicates the version of the Composition Playlist structure. |
| Title |
//Reel[1]//CompositionMetadataAsset/FullContentTitleText
|
/CompositionPlaylist/ContentTitleText does not necessarily contain the full title of the Composition. See 5.4.2.2. |
| 2D/3D | //Reel//MainPicture //Reel//MainStereoscopicPicture
|
A 3D composition contains MainStereoscopicPicture elements, and
a 2D composition MainPicture elements.
|
| Content Kind | /CompositionPlaylist/ContentKind |
|
| MainSound Language | //Reel//MainSound[1]/Language |
|
| MainSubtitle Languages |
//Reel[1]//CompositionMetadataAsset/MainSubtitleLanguageList
and //Reel//MainSubtitle/Language
|
See 5.4.2.14 |
| ClosedCaption | //Reel//ClosedCaption |
The presence of ClosedCaption indicates the existence of closed
caption content |
| ClosedCaption Languages | //Reel//ClosedCaption/Language |
There can be multiple closed-caption languages. |
| ClosedSubtitle | //Reel//ClosedSubtitle |
The presence of ClosedSubtitle indicates the existence of
closed subtitle content |
| ClosedSubtitle Languages | //Reel//ClosedSubtitle/Language |
There can be multiple closed-caption languages. |
| MainCaption | //AssetList/MainCaption |
The presence of MainCaption indicates the existence open
caption content |
| MainCaption Language | //Reel//MainCaption[1]/Language |
|
| Maturity Rating | /CompositionPlaylist/RatingList/Rating |
All Rating elements should be made available |
| IssueDate | /CompositionPlaylist/IssueDate |
|
| Main Picture or MainStereoscopicPicture Frame Rate | //Reel//MainPicture[1]/FrameRate or
//Reel//MainStereoscopicPicture[1]/FrameRate
|
|
| FFMC | //Reel//MainMarkers |
The Marker with a Label value of FFMC (see SMPTE ST 429-7) can be used to trigger house lights during the theatrical presentation |
| Release Territory | //Reel[1]//CompositionMetadataAsset/ReleaseTerritory |
|
| Audio channel configuration | //Reel[1]//CompositionMetadataAsset/MainSoundConfiguration |
|
| Luminance | //Reel[1]//CompositionMetadataAsset/Luminance
|
|
| Distributor | //Reel[1]//CompositionMetadataAsset/Distributor
|
|
| Facility | //Reel[1]//CompositionMetadataAsset/Facility |
|
| Stored area |
//Reel[1]//CompositionMetadataAsset/MainPictureStoredArea
|
|
| Active area |
//Reel[1]//CompositionMetadataAsset/MainPictureActiveArea
|
A ratio of the Width to the Height may be made available |
| Version Number | //Reel[1]//CompositionMetadataAsset/VersionNumber
|
|
| Extension Metadata |
//Reel[1]//CompositionMetadataAsset/ExtensionMetadataList/ExtensionMetadata
|
The Name as well as the list of Property/Name and
Property/Value pairs of all ExtensionMetadata elements should be
made available. |
The MainStereoscopicPicture element is specified in SMPTE ST 429-10.
The ClosedSubtitle, ClosedCaption and
MainCaption elements are specified in SMPTE ST 429-12.
The RatingList should contain at least one Rating element appropriate for the release territory.
Common Metadata Ratings specified at Common Metadata Ratings defines ratings that are compatible with SMPTE ST 429-7.
The following should be used to signal that the Composition is not yet rated:
Rating
element, a Label
value equal to the empty string ("") shall indicate that
the Composition is not yet rated by the agency identified by the value
of the Agency
element.RatingList of a
single Rating element with both Agency and
Label element equal to the empty string ("")
shall indicate that the Composition is not yet rated.
This specification defines additional ContentKind values.
When the value of the scope attribute of the ContentKind element is
http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata#scope/content-kind,
the value of the ContentKind element shall be one of the values of Table 4.
| Kind | Description |
|---|---|
| clip | An excerpt from a longer piece of content that may be displayed on its own or with other clips |
| promo | A piece of promotional publicity or advertising |
| stereocard | "Please Put Your 3D Glasses On Now" card |
In addition to the recommendations specified in SMPTE ST 429-7, the FFMC marker should be present whenever applicable to the underlying content.
Composition identifiers specific to one or more distributors, e.g.
catalog number, SKU or product code, may be carried in the Id element of
either the /CompositionPlaylist/ContentVersion or
//Reel[1]//CompositionMetadataAsset/ContentVersion
elements.
The following is a sample CompositionMetadataAsset instance
conforming to this specification. This sample is neither intended to capture
current or future practice, nor exercise all normative language contained in
this specification. For illustration, the sample instance contains two
extension metadata.
<meta:CompositionMetadataAsset xmlns:cpl="http://www.smpte-ra.org/schemas/429-7/2006/CPL"
xmlns="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata"
xmlns:meta="http://www.smpte-ra.org/schemas/429-16/2014/CPL-Metadata">
<cpl:Id>urn:uuid:550e8400-e29b-41d4-a716-446655440000</cpl:Id>
<cpl:EditRate>24 1</cpl:EditRate>
<cpl:IntrinsicDuration>24000</cpl:IntrinsicDuration>
<FullContentTitleText>Hello</FullContentTitleText>
<ReleaseTerritory>001</ReleaseTerritory>
<VersionNumber>1</VersionNumber>
<Chain>Bijou</Chain>
<Distributor>Your Distributor</Distributor>
<Facility>Super Digi Post Facility</Facility>
<AlternateContentVersionList>
<ContentVersion>
<cpl:Id>urn:isan:0123-1230-3210-2310-1</cpl:Id>
<cpl:LabelText>English (Theatrical)</cpl:LabelText>
</ContentVersion>
</AlternateContentVersionList>
<Luminance units="foot-lambert">14</Luminance>
<MainSoundConfiguration>51/R,L,C,LFE,Ls,Rs,HI,VIN</MainSoundConfiguration>
<MainSoundSampleRate>48000 1</MainSoundSampleRate>
<MainPictureStoredArea><Width>2048</Width><Height>1080</Height></MainPictureStoredArea>
<MainPictureActiveArea><Width>2048</Width><Height>856</Height></MainPictureActiveArea>
<MainSubtitleLanguageList>fr-ca es-419</MainSubtitleLanguageList>
<ExtensionMetadataList>
<ExtensionMetadata scope="http://myvendor.noname/spec/2012">
<Name>My Vendor</Name>
<PropertyList>
<Property>
<Name>Version</Name>
<Value>1.0</Value>
</Property>
</PropertyList>
</ExtensionMetadata>
</ExtensionMetadataList>
</meta:CompositionMetadataAsset>
This annex lists non-prose elements of this document.