Information technology — Multimedia service platform technologies — Part 2: MPEG extensible middleware (MXM) API

ISO/IEC 23006-2:2016 specifies a set of Application Programming Interfaces (called for short MXM APIs) so that MPEG-M Applications running on an MPEG-M Device can access the standard multimedia technologies contained in its Middleware as MPEG-M Engines, as specified by ISO/IEC 23006‑1. The MXM APIs belong to two classes: - the MPEG-M Engine APIs, i.e. the collection of the individual MPEG-M Engine APIs providing access to a single MPEG technology (e.g. video coding) or to a group of MPEG technologies where this is convenient; - the MPEG-M Orchestrator API, i.e. the API of the special MPEG-M Engine (called Orchestrator Engine) that is capable of creating chains of MPEG-M Engines to execute high-level application calls such as "Play a video", as opposed to the typically low-level MPEG-M Engine API calls.

Technologies de l'information — Technologies de la plate-forme de services multimédia — Partie 2: Intergiciel MPEG extensible (MXM) API

General Information

Status
Published
Publication Date
04-Dec-2016
Current Stage
9060 - Close of review
Start Date
04-Jun-2027
Ref Project

Relations

Buy Standard

Standard
ISO/IEC 23006-2:2016 - Information technology -- Multimedia service platform technologies
English language
40 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)

INTERNATIONAL ISO/IEC
STANDARD 23006-2
Third edition
2016-12-01
Information technology — Multimedia
service platform technologies —
Part 2:
MPEG extensible middleware (MXM)
API
Technologies de l’information — Technologies de la plate-forme de
services multimédia —
Partie 2: Intergiciel MPEG extensible (MXM) API
Reference number
ISO/IEC 23006-2:2016(E)
©
ISO/IEC 2016

---------------------- Page: 1 ----------------------
ISO/IEC 23006-2:2016(E)

COPYRIGHT PROTECTED DOCUMENT
© ISO/IEC 2016, Published in Switzerland
All rights reserved. Unless otherwise specified, no part of this publication may be reproduced or utilized otherwise in any form
or by any means, electronic or mechanical, including photocopying, or posting on the internet or an intranet, without prior
written permission. Permission can be requested from either ISO at the address below or ISO’s member body in the country of
the requester.
ISO copyright office
Ch. de Blandonnet 8 • CP 401
CH-1214 Vernier, Geneva, Switzerland
Tel. +41 22 749 01 11
Fax +41 22 749 09 47
copyright@iso.org
www.iso.org
ii © ISO/IEC 2016 – All rights reserved

---------------------- Page: 2 ----------------------
ISO/IEC 23006-2:2016(E)

Contents Page
Foreword .v
Introduction .vi
1 Scope . 1
2 Normative references . 1
3 Terms, definitions and abbreviated terms . 1
3.1 Terms and definitions . 1
3.2 Abbreviated terms . 3
4 Namespace conventions . 4
5 Common MXM interfaces and classes . 7
6 MPEG-M Engines . 8
6.1 General . 8
6.2 Technology Engines . 9
6.2.1 Digital Item Engine . 9
6.2.2 MPEG-21 File Format Engine . 9
6.2.3 REL Engine .10
6.2.4 IPMP Engine .11
6.2.5 GreenMetadata Engine .11
6.2.6 Media Framework Engine .12
6.2.7 Metadata Engine .16
6.2.8 Event Reporting Engine .16
6.2.9 Security Engine .17
6.2.10 Search Engine .18
6.2.11 Contract Engine.20
6.2.12 Overlay Engine .20
6.2.13 Sensory Effect Engine .21
6.2.14 Compact Descriptor for Visual Search Technology Engine .22
6.3 Protocol Engines .23
6.3.1 General.23
6.3.2 Base Protocol Engine .23
6.3.3 Authenticate Services APIs .25
6.3.4 Authorize Services APIs .25
6.3.5 Check With Services APIs .25
6.3.6 Create Services APIs .26
6.3.7 Deliver Services APIs . .26
6.3.8 Describe Services APIs . . .26
6.3.9 Identify Services APIs .26
6.3.10 Negotiate Services APIs .27
6.3.11 Package Services APIs .27
6.3.12 Post Services APIs .27
6.3.13 Present Services APIs .27
6.3.14 Process Services APIs .27
6.3.15 Request Services APIs .27
6.3.16 Revoke Services APIs .28
6.3.17 Search Services APIs .28
6.3.18 Store Services APIs.29
6.3.19 Transact Services APIs .29
6.3.20 Verify Services APIs .29
6.4 MXM Orchestrator APIs .30
6.4.1 General.30
6.4.2 DID Engine Orchestrator APIs .30
6.4.3 Identify Content Engine Orchestrator APIs .30
6.4.4 Identify User Engine Orchestrator APIs .30
© ISO/IEC 2016 – All rights reserved iii

---------------------- Page: 3 ----------------------
ISO/IEC 23006-2:2016(E)

6.4.5 MF Orchestrator Engine APIs .30
Annex A (normative) MXM Configuration .31
Bibliography .39
iv © ISO/IEC 2016 – All rights reserved

---------------------- Page: 4 ----------------------
ISO/IEC 23006-2:2016(E)

Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are
members of ISO or IEC participate in the development of International Standards through technical
committees established by the respective organization to deal with particular fields of technical
activity. ISO and IEC technical committees collaborate in fields of mutual interest. Other international
organizations, governmental and non-governmental, in liaison with ISO and IEC, also take part in the
work. In the field of information technology, ISO and IEC have established a joint technical committee,
ISO/IEC JTC 1.
The procedures used to develop this document and those intended for its further maintenance are
described in the ISO/IEC Directives, Part 1. In particular the different approval criteria needed for the
different types of ISO documents should be noted. This document was drafted in accordance with the
editorial rules of the ISO/IEC Directives, Part 2 (see www.iso.org/directives).
Attention is drawn to the possibility that some of the elements of this document may be the subject of
patent rights. ISO shall not be held responsible for identifying any or all such patent rights. Details of
any patent rights identified during the development of the document will be in the Introduction and/or
on the ISO list of patent declarations received (see www.iso.org/patents).
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation on the meaning of ISO specific terms and expressions related to conformity assessment,
as well as information about ISO’s adherence to the World Trade Organization (WTO) principles in the
Technical Barriers to Trade (TBT) see the following URL: www.iso.org/iso/foreword.html.
The committee responsible for this document is ISO/IEC JTC 1, Information technology, SC 29, Coding of
audio, picture, multimedia and hypermedia information.
This third edition cancels and replaces the second edition (ISO/IEC 23006-2:2013), which has been
technically revised.
A list of all parts in the ISO/IEC 23006 series can be found on the ISO website.
© ISO/IEC 2016 – All rights reserved v

---------------------- Page: 5 ----------------------
ISO/IEC 23006-2:2016(E)

Introduction
The ISO/IEC 23006 series is a suite of standards that has been developed for the purpose of enabling the
easy design and implementation of media-handling value chains whose devices interoperate because
they are all based on the same set of technologies, especially MPEG technologies, accessible from the
middleware APIs, elementary services and aggregated services.
The ISO/IEC 23006 series is referred to as MPEG Extensible Middleware (MXM) in its first edition, and
it specifies an architecture (ISO/IEC 23006-1), an API (ISO/IEC 23006-2), a conformance and reference
software (ISO/IEC 23006-3) and a set of protocols which MXM Devices had to adhere (ISO/IEC 23006-
4). It specifies also how to combine elementary services into aggregated services (ISO/IEC 23006-5).
The ISO/IEC 23006 series is subdivided into five parts:
Part 1 — Architecture: specifies the architecture that can be used as a guide to an MPEG-M
implementation;
Part 2 — MPEG Extensible Middleware (MXM) Application Programming Interface (APIs) (this
document): specifies the middleware APIs;
Part 3 — Conformance and Reference Software: specifies conformance criteria and a reference software
implementation with a normative value;
Part 4 — Elementary Services: specifies elementary service protocols between MPEG-M applications;
Part 5 — Service Aggregation: specifies mechanisms enabling the combination of Elementary Services
and other services to build Aggregated Services.
vi © ISO/IEC 2016 – All rights reserved

---------------------- Page: 6 ----------------------
INTERNATIONAL STANDARD ISO/IEC 23006-2:2016(E)
Information technology — Multimedia service platform
technologies —
Part 2:
MPEG extensible middleware (MXM) API
1 Scope
This document specifies a set of Application Programming Interfaces (called for short MXM APIs) so that
MPEG-M Applications running on an MPEG-M Device can access the standard multimedia technologies
contained in its Middleware as MPEG-M Engines, as specified by ISO/IEC 23006-1.
The MXM APIs belong to two classes:
— the MPEG-M Engine APIs, i.e. the collection of the individual MPEG-M Engine APIs providing access
to a single MPEG technology (e.g. video coding) or to a group of MPEG technologies where this is
convenient;
— the MPEG-M Orchestrator API, i.e. the API of the special MPEG-M Engine (called Orchestrator Engine)
that is capable of creating chains of MPEG-M Engines to execute high-level application calls such as
“Play a video”, as opposed to the typically low-level MPEG-M Engine API calls.
2 Normative references
There are no normative references in this document.
3 Terms, definitions and abbreviated terms
3.1 Terms and definitions
For the purposes of this document, the following terms and definitions apply.
ISO and IEC maintain terminological databases for use in standardization at the following addresses:
— IEC Electropedia: available at http://www.electropedia.org/
— ISO Online browsing platform: available at http://www.iso.org/obp
3.1.1
Aggregated Service
service resulting from the combination of Elementary Services (3.1.2)
3.1.2
Elementary Service
basic unit of service (3.1.13)
3.1.3
content
Digital Item and its component elements, namely resources (e.g. media, scripts, executable), identifiers,
descriptions (e.g. metadata) and event (3.1.6) reports
© ISO/IEC 2016 – All rights reserved 1

---------------------- Page: 7 ----------------------
ISO/IEC 23006-2:2016(E)

3.1.4
contract
set of metadata, licenses (3.1.8), promises and signers agreed by users (3.1.15) of a multimedia value
chain (3.1.16), where a promise is a signed collection of statements about, e.g. obligations, prohibitions
and assertions, and a signer is a user whose signature makes the contract valid
3.1.5
device
hardware/software or simply software apparatus that enables a user (3.1.15) to play a role (3.1.12) in
multimedia value chains (3.1.16)
3.1.6
event
performance of a specified set of functions or operations
3.1.7
entity
one of the following elements in the multimedia value chain (3.1.16): content (3.1.3), contract (3.1.4),
device (3.1.5), event (3.1.6), license (3.1.8), service (3.1.13), and user (3.1.15)
3.1.8
license
collection of authorizations, conditions and payment terms granted by a user (3.1.15) to other users
3.1.9
protocol
set of rules and data format used by two devices (3.1.5) to communicate
3.1.10
resource
individually identifiable asset or a sequence of assets
EXAMPLE Video or audio clip, a 3D synthetic scene, an image, a textual asset, a 2D LASeR scene, a web page,
a single program or a full 24-hour programming of a TV broadcast, a script or executable, etc.
3.1.11
right
ability of a user (3.1.15) to perform an operation in the multimedia value chain (3.1.16)
3.1.12
role
ability of a user (3.1.15) to perform a set of operations in the multimedia value chain (3.1.16)
3.1.13
service
operation performed on an entity (3.1.7) by a user (3.1.15) on behalf of other users
3.1.14
service provider
user (3.1.15) offering services (3.1.13) to other users
3.1.15
user
participant in multimedia value chains (3.1.16)
3.1.16
value chain
collection of users (3.1.15), including creators, end users and service providers (3.1.14), that conform to
this document
2 © ISO/IEC 2016 – All rights reserved

---------------------- Page: 8 ----------------------
ISO/IEC 23006-2:2016(E)

3.1.17
MPEG-M Application
application that runs on an MPEG-M device (3.1.18) and makes calls to the MPEG-M Application API and
MPEG-M Engine APIs (3.1.20)
3.1.18
MPEG-M Device
device (3.1.5) equipped with a selected set of MPEG-M Engines (3.1.19)
3.1.19
MPEG-M Engine
collection of specific technologies that are bundled together to provide a specific functionality that is
needed by MPEG-M Applications (3.1.17)
3.1.20
MPEG-M Engine API
API of a single MPEG-M Engine (3.1.19)
3.1.21
MPEG-M orchestrator API
API of the MPEG-M Orchestrator Engine (3.1.22)
3.1.22
MPEG-M Orchestrator Engine
special MPEG-M Engine (3.1.19) capable of creating chains of MPEG-M Engines
Note 1 to entry: It is also to set-up a sequence of connected MPEG-M Engines for the purpose of executing a high-
level application call such as Play.
3.1.23
MPEG-M Technology
technology that is required to implement an MPEG-M functionality
3.2 Abbreviated terms
AIT Advanced IPTV Terminal
AS Aggregated Service
BBL Bitstream Binding Language
BPMN Business Process Model and Notation
CEL Contract Expression Language
DI Digital Item
DIA Digital Item Adaptation
DID Digital Item Declaration
DIDL Digital Item Declaration Language
DII Digital Item Identification
DIS Digital Item Streaming
ER Event Report
ERR Event Report Request
© ISO/IEC 2016 – All rights reserved 3

---------------------- Page: 9 ----------------------
ISO/IEC 23006-2:2016(E)

ES Elementary Service
IPMP Intellectual Property Management and Protection
IPTV Internet Protocol Television
MDS Multimedia Description Schemes
MPEG Moving Picture Experts Group
MPEG-21 Multimedia Framework [see ISO/IEC 21000 (all parts)]
MPEG-A Multimedia Application Format [see ISO/IEC 23000 (all parts)]
MPEG-M Multimedia Service Platform Technologies [see ISO/IEC 23006 (all parts)]
MPEG-V Multimedia Context and Control [see ISO/IEC 23005 (all parts)]
MPQF MPEG Query Format
REL Rights Expression Language
RTP Real Time Protocol
RTSP Real Time Streaming Protocol
SE Sensory Effect
SEM Sensory Effect Metadata
URI Uniform Resource Identifier
URL Uniform Resource Locator
WSDL Web Services Description Language
XML Extensible Markup Language
XSD XML Schema Definition
XSLT Extensible Stylesheet Language Transformations
4 Namespace conventions
For clarity, throughout this document, consistent namespace prefixes are used.
“xml:” and “xmlns:” are normative prefixes defined in W3C XMLNAMES. The prefix “xml:” is by
definition bound to “http://www.w3.org/XML/1998/namespace”. The prefix “xmlns:” is used only
for namespace bindings and is not itself bound to any namespace name.
“xsi:” prefix is not normative. It is a naming convention in this document to refer to an element of the
http://www.w3.org/2001/XMLSchema-instance namespace. All other prefixes used in either the text
or examples of this document are not normative, e.g. “mpegm:”, “dia:”.
In particular, most of the informative examples in this document are provided as XML fragments
without the normally required XML document declaration and, thus, miss a correct namespace binding
context declaration.
Unless specified otherwise, all unqualified descriptions fragments assume the default namespace
“urn:mpeg:mpegM:schema:02-service-NS:2012”.
4 © ISO/IEC 2016 – All rights reserved

---------------------- Page: 10 ----------------------
ISO/IEC 23006-2:2016(E)

In these descriptions fragments the different prefixes are bound to the namespaces as given in Table 1.
The schema locations of the namespaces in Table 1 are only an informative indication as schema
locations may change over time.
Table 1 — Mapping of prefixes to namespaces used in examples and text
Prefix Corresponding namespace Schema location
mpegm urn:mpeg:mpegM:schema:02-service-NS:2011
mpegmb urn:mpeg:mpegM:schema:01-base-NS:2011
dia urn:mpeg:mpeg21:2003:01-DIA-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStand-
ards/MPEG-21_sche-
ma_files/dia-2nd/
UED-2nd.xsd
erl urn:mpeg:mpeg21:2005:01-ERL-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStand-
ards/MPEG-21_sche-
ma_files/er/er.xsd
fru urn:mpeg:mpegB:schema:FragmentRequestUnits:2007 Defined in ISO/
IEC 23001-2:2008
mpeg7 urn:mpeg:mpeg7:schema:2004
mpeg7s urn:mpeg:mpeg7:systems:2001
cel urn:mpeg:mpeg21:cel:contract:2011
bbl urn:mpeg:mpeg21:2007:01-BBL-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStand-
ards/MPEG-21_sche-
ma_files/dis/bbl.xsd
dii urn:mpeg:mpeg21:2002:01-DII-NS
mpqf urn:mpeg:mpqf:schema:2008 Defined in ISO/
IEC 15938-12
mpeg4ipmp urn:mpeg:mpeg4:IPMPSchema:2002 Defined in ISO/
IEC 14496-
13:2004
ipmpdidl urn:mpeg:mpeg21:2004:01-IPMPDIDL-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStand-
ards/MPEG-21_sche-
ma_files/ipmp/ipmp-
didl.xsd
ipmpmsg urn:mpeg:mpegB:schema:IPMP-XML-MESSAGES:2007 Defined in ISO/
IEC 23001-3:2008
ipmpinfo urn:mpeg:mpeg21:2004:01-IPMPINFO-NS http://standards.
iso.org/ittf/Public-
lyAvailableStand-
ards/MPEG-21_sche-
ma_files/ipmp/ipmp-
general.xsd
didl urn:mpeg:mpeg21:2002:02-DIDL-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStand-
ards/MPEG-21_sche-
ma_files/did/didl.xsd
mpegm-didl urn:mpeg:mpegM:schema:06-didl-NS:2012
© ISO/IEC 2016 – All rights reserved 5

---------------------- Page: 11 ----------------------
ISO/IEC 23006-2:2016(E)

Table 1 (continued)
Prefix Corresponding namespace Schema location
didmodel urn:mpeg:mpeg21:2002:02-DIDMODEL-NS
http://standards.iso.
org/ittf/PubliclyAvail-
ableStandards/MPEG-
21_schema_files/did/
didmodel.xsd
didl-msx urn:mpeg:maf:schema:mediastreaming:DIDLextensions Defined in ISO/
IEC 23000-5:2011
dii urn:mpeg:mpeg21:2002:01-DII-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStand-
ards/MPEG-21_sche-
ma_files/dii/dii.xsd
rel-r urn:mpeg:mpeg21:2003:01-REL-R-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStandards/
MPEG-21_schema_
files/rel-r/rel-r.xsd
rel-sx urn:mpeg:mpeg21:2003:01-REL-SX-NS
http://standards.
iso.org/ittf/Public-
lyAvailableStandards/
MPEG-21_schema_
files/rel-r/rel-sx.xsd
xsd
http://www.w3.org/2001/XMLSchema http://www.
w3.org/2001/
XMLSchema.xsd
xsi http://www.w3.org/2001/XMLSchema-instance
dsig
http://www.w3.org/2000/09/xmldsig# http://www.w3.org/
TR/2002/REC-xm-
ldsig-core-20020212/
xmldsig-core-schema.
xsd
xenc
http://www.w3.org/2001/04/xmlenc#
bpmn
http://www.omg.org/spec/BPMN/20100524/MODEL http://www.
omg.org/spec/
BPMN/20100501/
BPMN20.xsd
bpmnext1 urn:mpeg:mpegM:schema:04-bpmn-ext-mfr-NS:2012
ca urn:mpeg:mpegM:service-type:04-content-adapta-
tion-NS:2012
cel urn:mpeg:mpeg21:2010:01-CEL-NS
cidl urn:mpeg:mpeg-v:2010:01-CIDL-NS
dc
http://purl.org/dc/elements/1.1/ http://dublincore.
org/schemas/xmls/
qdc/2008/02/11/
dc.xsd
dcdv urn:mpeg:mpeg-v:2010:01-DCDV-NS
ebucore urn:ebu:metadata-schema:ebuCore_2010
http://www.ebu.
ch/metadata/
schemas/EBU-
Core/20100820/EBU_
CORE_20100820.xsd
esi urn:mpeg:mpegM:service-type:03-extract-sensory-in-
formation-NS:2012
6 © ISO/IEC 2016 – All rights reserved

---------------------- Page: 12 ----------------------
ISO/IEC 23006-2:2016(E)

Table 1 (continued)
Prefix Corresponding namespace Schema location
etsi urn:dvb:metadata:iptv:sdns:2008-1 Defined in ETSI
[29]
TS 102 034
ipmpinfo-msx urn:mpeg:maf:Schema:mediastreaming:IPMPINFOexten- Defined in ISO/
sions:2007 IEC 23000-5:2011
rs urn:mpeg:mpegM:service-type:01-recog-
nize-speech-NS:2012
saml urn:oasis:names:tc:SAML:2.0:assertion
http://docs.oa-
sis-open.org/se-
curity/saml/v2.0/
saml-schema-asser-
tion-2.0.xsd
samlp urn:oasis:names:tc:SAML:2.0:protocol
http://docs.oa-
sis-open.org/se-
curity/saml/v2.0/
saml-schema-proto-
col-2.0.xsd
sedl urn:mpeg:mpeg-v:2010:01-SEDL-NS
sepv urn:mpeg:mpeg-v:2010:01-SEPV-NS
sev urn:mpeg:mpeg-v:2010:01-SEV-NS
sid urn:mpeg:mpegM:schema:05-sid-NS:2012
ss urn:mpeg:mpegM:service-type:02-synthe-
size-speech-NS:2012
tva urn:tva:metadata:2010 Defined in ETSI
[30]
TS 102 822-3-1
wsdl
http://www.w3.org/ns/wsdl http://www.
w3.org/2002/ws/
desc/ns/wsdl20.xsd
Xsl
http://www.w3.org/1999/XSL/Transform http://www.
w3.org/2007/sche-
ma-for-xslt20.xsd
xhtml
http://www.w3.org/1999/xhtml http://www.w3.org/
MarkUp/SCHEMA/
xhtml11.xsd
5 Common MXM interfaces and classes
The MXM APIs are specified in the Java languages, as follows:
a) a high-level description of the interfaces defining the MXM APIs, provided in the current text;
b) an html format specification of the MXM APIs with a normative value provided as an attachment to
[6]
this document, provided in an attachment or on the official MPEG-M website .
The core part of MXM consists of a number of interfaces and classes which are common to all MPEG-M
Engines. These are:
— MXM: the main class that enables MPEG-M Applications to obtain instances of MPEG-M Engines.
It acts as a factory instantiating the MPEG-M Engines listed in a configuration file (so-called
MXM Configuration File). The MXM Configuration File contains the list of MPEG-M Engines that
are required by an MPEG-M Application; hence, each MPEG-M Application needs to have an MXM
Configuration File (the format of the MXM Configuration file is depicted in Annex A);
© ISO/IEC 2016 – All rights reserved 7

---------------------- Page: 13 ----------------------
ISO/IEC 23006-2:2016(E)

— MXMAbstractEngine: the abstract class at the highest level of an MPEG-M Engine. Every MPEG-M
Engines has to extend this abstract class;
— MXMObject: the basic interface for most of the MXM classes. MXMObject is a wrapper of any
objects exchanged by MPEG-M Engines. It defines the version of MXM and it provides a number
of fundamental methods used to extract the actual class name and type of the object wrapped in
the MXMObject. Furthermore, it provides getters and setters for wrapping/unwrapping an object
into/from an MXMObject;
— MXMAdapter: the basic class implementing the MXMObject interface. By means of an MXMAdapter,
it is possible to convert any object into an MXMObject;
— MXMEngineName: the enumeration listing all possible names (types) of MPEG-M Engines, so that
any entity can be unambiguously identified;
— MXMException: the highest level of exception thrown by MXM. All other exceptions in MXM have to
extend this abstract class;
— MXMInvalidConfigurationException: specialized exception informing an MPEG-M Application
that the MXM Configuration File is trying to use non-compliant MXM Configuration Schema
specifications;
— MXMEngineResponse: the enumeration used as a general-purpose return value for a number of
methods;
— MXMCreatorAndParser: the interface that extends the MXMCreator and MXMParser interfaces
which specify a set of common methods to be implemented by all classes employed to create and
parse data manage
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.