Locks, closures, HVAC and lighting258 — Window Covering

Matter Cluster 258 — Window Covering

Matter Cluster 258 (0x0102) Window Covering: attributes, commands, events, data types, shadow paths and bridge payload examples.

Matter Cluster 258 — Window Covering Cluster

Matter Cluster 258, also written as 0x0102, is the Window Covering Cluster. The window covering cluster provides an interface for controlling and adjusting automatic window coverings such as drapery motors, automatic shades, curtains and blinds.

Cluster Identity

FieldValue
Cluster ID decimal258
Cluster ID hex0x0102
Cluster nameWindow Covering
Cluster revision (Matter 1.6.1)8
Roleapplication
ScopeEndpoint
PICS codeWNCV
Typical endpoint1

Revision history

RevisionChange
1Mandatory global ClusterRevision attribute added; CCB 1994 1995 1996 1997 2086 2094 2095 2096 2097
2CCB 2328
3CCB 2477 2555 2845 3028
4All Hubs changes with FeatureMap & OperationalStatus attribute
5New data model format and notation. Created plus clarified PositionAware and AbsolutePosition features. General cleanup of functionality.
6Marked AbsolutePosition feature and associated elements provisional.
7Removed ABS feature and all associated elements from the cluster.
8Removed P quality.

Shadow Path Format

Cluster 258 values in the device shadow use this format:

endpoint_id / 258 / attribute_id

Example:

{
  "1/258/0": 0
}
PartMeaning
1Endpoint ID
258Window Covering cluster
0Type attribute

Cluster 258 Features

The FeatureMap attribute (1/258/65532) is a bitmap. Each bit set means the device implements that feature and the attributes and commands that depend on it.

BitCodeFeatureConformanceMeaning
0LFLiftOLift control and behavior for lifting/sliding window coverings
1TLTiltOTilt control and behavior for tilting window coverings
2PA_LFPositionAwareLift[LF]Position aware lift control is supported.
4PA_TLPositionAwareTilt[TL]Position aware tilt control is supported.

Example: FeatureMap = 0 means no optional feature is enabled; 23 means every feature listed above is enabled.


Data Types

EndProductTypeEnum

ValueNameConformanceMeaning
0RollerShadeMSimple Roller Shade
1RomanShadeMRoman Shade
2BalloonShadeMBalloon Shade
3WovenWoodMWoven Wood
4PleatedShadeMPleated Shade
5CellularShadeMCellular Shade
6LayeredShadeMLayered Shade
7LayeredShade2DMLayered Shade 2D
8SheerShadeMSheer Shade
9TiltOnlyInteriorBlindMTilt Only Interior Blind
10InteriorBlindMInterior Blind
11VerticalBlindStripCurtainMVertical Blind, Strip Curtain
12InteriorVenetianBlindMInterior Venetian Blind
13ExteriorVenetianBlindMExterior Venetian Blind
14LateralLeftCurtainMLateral Left Curtain
15LateralRightCurtainMLateral Right Curtain
16CentralCurtainMCentral Curtain
17RollerShutterMRoller Shutter
18ExteriorVerticalScreenMExterior Vertical Screen
19AwningTerracePatioMAwning Terrace (Patio)
20AwningVerticalScreenMAwning Vertical Screen
21TiltOnlyPergolaMTilt Only Pergola
22SwingingShutterMSwinging Shutter
23SlidingShutterMSliding Shutter
255UnknownMUnknown

TypeEnum

ValueNameConformanceMeaning
0RollerShadeMRollerShade
1RollerShade2MotorMRollerShade - 2 Motor
2RollerShadeExteriorMRollerShade - Exterior
3RollerShadeExterior2MotorMRollerShade - Exterior - 2 Motor
4DraperyMDrapery (curtain)
5AwningMAwning
6ShutterMShutter
7TiltBlindTiltOnlyMTilt Blind - Tilt Only
8TiltBlindLiftAndTiltMTilt Blind - Lift & Tilt
9ProjectorScreenMProjector Screen
255UnknownMUnknown

ConfigStatusBitmap (bitmap)

BitNameConformanceMeaning
0OperationalMDevice is operational.
1OnlineReservedD—
2LiftMovementReversedLFThe lift movement is reversed.
3LiftPositionAwarePA_LFSupports the PositionAwareLift feature (PA_LF).
4TiltPositionAwarePA_TLSupports the PositionAwareTilt feature (PA_TL).
5LiftEncoderControlledPA_LFUses an encoder for lift.
6TiltEncoderControlledPA_TLUses an encoder for tilt.

ModeBitmap (bitmap)

BitNameConformanceMeaning
0MotorDirectionReversedMReverse the lift direction.
1CalibrationModeMPerform a calibration.
2MaintenanceModeMFreeze all motions for maintenance.
3LedFeedbackMControl the LEDs feedback.

OperationalStatusBitmap (bitmap)

The OperationalStatusBitmap is using several internal operational state fields (composed of 2 bits) following this definition: - 00b = Currently not moving - 01b = Currently opening (e.g. moving from closed to open). - 10b = Currently closing (e.g. moving from open to closed). - 11b = Reserved

BitNameConformanceMeaning
—GlobalMGlobal operational state.
—LiftLFLift operational state.
—TiltTLTilt operational state.

SafetyStatusBitmap (bitmap)

BitNameConformanceMeaning
0RemoteLockoutMMovement commands are ignored (locked out). e.g. not granted authorization, outside some time/date range.
1TamperDetectionMTampering detected on sensors or any other safety equipment. Ex: a device has been forcedly moved without its actuator(s).
2FailedCommunicationMCommunication failure to sensors or other safety equipment.
3PositionFailureMDevice has failed to reach the desired position. e.g. with position aware device, time expired before TargetPosition is reached.
4ThermalProtectionMMotor(s) and/or electric circuit thermal protection activated.
5ObstacleDetectedMAn obstacle is preventing actuator movement.
6PowerMDevice has power related issue or limitation e.g. device is running w/ the help of a backup battery or power might not be fully available at the moment.
7StopInputMLocal safety sensor (not a direct obstacle) is preventing movements (e.g. Safety EU Standard EN60335).
8MotorJammedMMechanical problem related to the motor(s) detected.
9HardwareFailureMPCB, fuse and other electrics problems.
10ManualOperationMActuator is manually operated and is preventing actuator movement (e.g. actuator is disengaged/decoupled).
11ProtectionMProtection is activated.

Cluster 258 Attributes

Cluster 258 defines 14 attributes plus the global attributes. Conformance: M mandatory, O optional, a feature code means "mandatory when that feature is present", square brackets mean "optional when …".

IDHexAttributeTypeConformanceAccessQualitiesDefault
00x0000TypeTypeEnumMR (read: view)—0
50x0005NumberOfActuationsLiftuint16[LF]R (read: view)persisted0
60x0006NumberOfActuationsTiltuint16[TL]R (read: view)persisted0
70x0007ConfigStatusConfigStatusBitmapMR (read: view)persisteddesc
80x0008CurrentPositionLiftPercentagepercent[LF & PA_LF]R (read: view)nullable, persistednull
90x0009CurrentPositionTiltPercentagepercent[TL & PA_TL]R (read: view)nullable, persistednull
100x000AOperationalStatusOperationalStatusBitmapMR (read: view)—0
110x000BTargetPositionLiftPercent100thspercent100thsLF & PA_LFR (read: view)nullablenull
120x000CTargetPositionTiltPercent100thspercent100thsTL & PA_TLR (read: view)nullablenull
130x000DEndProductTypeEndProductTypeEnumMR (read: view)—0
140x000ECurrentPositionLiftPercent100thspercent100thsLF & PA_LFR (read: view)nullable, persistednull
150x000FCurrentPositionTiltPercent100thspercent100thsTL & PA_TLR (read: view)nullable, persistednull
230x0017ModeModeBitmapMR/W (read: view, write: manage)persisted0
260x001ASafetyStatusSafetyStatusBitmapOR (read: view)—0

Global attributes

IDHexAttributeMeaning
655280xFFF8GeneratedCommandListResponse command IDs this server generates.
655290xFFF9AcceptedCommandListCommand IDs this server accepts.
655310xFFFBAttributeListAttribute IDs implemented.
655320xFFFCFeatureMapImplemented optional features (see above).
655330xFFFDClusterRevisionCluster revision implemented; 8 for a Matter 1.6.1 device.

Attribute Details

Attribute 0 / 0x0000 — Type

Path example:

1/258/0

This attribute identifies the type of window covering. If the window covering supports the LF feature and not the TL feature, the following types is used as the constraint for this attribute: If the window covering supports the TL feature and not the LF feature, the following types is used as the constraint for this attribute: If the window covering supports both the LF and TL features, the following types are allowed to be used:

PropertyValue
TypeTypeEnum
ConformanceM
AccessR (read: view)
Constraintdesc
Default0

Values (TypeEnum):

ValueNameMeaning
0RollerShadeRollerShade
1RollerShade2MotorRollerShade - 2 Motor
2RollerShadeExteriorRollerShade - Exterior
3RollerShadeExterior2MotorRollerShade - Exterior - 2 Motor
4DraperyDrapery (curtain)
5AwningAwning
6ShutterShutter
7TiltBlindTiltOnlyTilt Blind - Tilt Only
8TiltBlindLiftAndTiltTilt Blind - Lift & Tilt
9ProjectorScreenProjector Screen
255UnknownUnknown

Example:

{
  "1/258/0": 0
}

Attribute 5 / 0x0005 — NumberOfActuationsLift

Path example:

1/258/5

Indicates the total number of lift/slide actuations applied to the window covering since the device was installed.

PropertyValue
Typeuint16
Conformance[LF]
AccessR (read: view)
Qualitiespersisted
Default0

Example:

{
  "1/258/5": 1
}

Attribute 6 / 0x0006 — NumberOfActuationsTilt

Path example:

1/258/6

Indicates the total number of tilt actuations applied to the window covering since the device was installed.

PropertyValue
Typeuint16
Conformance[TL]
AccessR (read: view)
Qualitiespersisted
Default0

Example:

{
  "1/258/6": 1
}

Attribute 7 / 0x0007 — ConfigStatus

Path example:

1/258/7

This attribute specifies the configuration and status information of the window covering. To change settings, devices must write to the Mode attribute. The behavior causing the setting or clearing of each bit is vendor specific.

PropertyValue
TypeConfigStatusBitmap
ConformanceM
AccessR (read: view)
Qualitiespersisted
Constraintdesc
Defaultdesc

Bits (ConfigStatusBitmap):

BitNameMeaning
0OperationalDevice is operational.
1OnlineReserved—
2LiftMovementReversedThe lift movement is reversed.
3LiftPositionAwareSupports the PositionAwareLift feature (PA_LF).
4TiltPositionAwareSupports the PositionAwareTilt feature (PA_TL).
5LiftEncoderControlledUses an encoder for lift.
6TiltEncoderControlledUses an encoder for tilt.

Example:

{
  "1/258/7": 0
}

Attribute 8 / 0x0008 — CurrentPositionLiftPercentage

Path example:

1/258/8

Indicates the actual position as a percentage from 0% to 100% with 1% default step. This attribute is equal to CurrentPositionLiftPercent100ths attribute divided by 100.

PropertyValue
Typepercent
Conformance[LF & PA_LF]
AccessR (read: view)
Qualitiesnullable, persisted
Defaultnull

Example:

{
  "1/258/8": 1
}

Attribute 9 / 0x0009 — CurrentPositionTiltPercentage

Path example:

1/258/9

Indicates the actual position as a percentage from 0% to 100% with 1% default step. This attribute is equal to CurrentPositionTiltPercent100ths attribute divided by 100.

PropertyValue
Typepercent
Conformance[TL & PA_TL]
AccessR (read: view)
Qualitiesnullable, persisted
Defaultnull

Example:

{
  "1/258/9": 1
}

Attribute 10 / 0x000A — OperationalStatus

Path example:

1/258/10

Indicates the currently ongoing operations and applies to all type of devices.

PropertyValue
TypeOperationalStatusBitmap
ConformanceM
AccessR (read: view)
Constraintmax 63
Default0

Bits (OperationalStatusBitmap):

BitNameMeaning
—GlobalGlobal operational state.
—LiftLift operational state.
—TiltTilt operational state.

Example:

{
  "1/258/10": 0
}

Attribute 11 / 0x000B — TargetPositionLiftPercent100ths

Path example:

1/258/11

Indicates the position where the window covering lift will go or is moving to as a percentage (Unit 0.01%).

PropertyValue
Typepercent100ths
ConformanceLF & PA_LF
AccessR (read: view)
Qualitiesnullable
Defaultnull

Example:

{
  "1/258/11": 1
}

Attribute 12 / 0x000C — TargetPositionTiltPercent100ths

Path example:

1/258/12

Indicates the position where the window covering tilt will go or is moving to as a percentage (Unit 0.01%).

PropertyValue
Typepercent100ths
ConformanceTL & PA_TL
AccessR (read: view)
Qualitiesnullable
Defaultnull

Example:

{
  "1/258/12": 1
}

Attribute 13 / 0x000D — EndProductType

Path example:

1/258/13

This attribute should provide more detail about the product type than can be determined from the main category indicated by the Type attribute. If the window covering supports the LF feature and not the TL feature, the following types is used as the constraint for this attribute: If the window covering supports the TL feature and not the LF feature, the following types is used as the constraint for this attribute: If the window covering supports both the LF and TL features, the following types are allowed to be used: The table below helps to match the EndProductType attribute with the Type attribute.

PropertyValue
TypeEndProductTypeEnum
ConformanceM
AccessR (read: view)
Constraintdesc
Default0

Values (EndProductTypeEnum):

ValueNameMeaning
0RollerShadeSimple Roller Shade
1RomanShadeRoman Shade
2BalloonShadeBalloon Shade
3WovenWoodWoven Wood
4PleatedShadePleated Shade
5CellularShadeCellular Shade
6LayeredShadeLayered Shade
7LayeredShade2DLayered Shade 2D
8SheerShadeSheer Shade
9TiltOnlyInteriorBlindTilt Only Interior Blind
10InteriorBlindInterior Blind
11VerticalBlindStripCurtainVertical Blind, Strip Curtain
12InteriorVenetianBlindInterior Venetian Blind
13ExteriorVenetianBlindExterior Venetian Blind
14LateralLeftCurtainLateral Left Curtain
15LateralRightCurtainLateral Right Curtain
16CentralCurtainCentral Curtain
17RollerShutterRoller Shutter
18ExteriorVerticalScreenExterior Vertical Screen
19AwningTerracePatioAwning Terrace (Patio)
20AwningVerticalScreenAwning Vertical Screen
21TiltOnlyPergolaTilt Only Pergola
22SwingingShutterSwinging Shutter
23SlidingShutterSliding Shutter
255UnknownUnknown

Example:

{
  "1/258/13": 0
}

Attribute 14 / 0x000E — CurrentPositionLiftPercent100ths

Path example:

1/258/14

Indicates the actual position as a percentage with a minimal step of 0.01%. E.g Max 10000 equals 100.00%.

PropertyValue
Typepercent100ths
ConformanceLF & PA_LF
AccessR (read: view)
Qualitiesnullable, persisted
Constraintmax 10000
Defaultnull

Example:

{
  "1/258/14": 1
}

Attribute 15 / 0x000F — CurrentPositionTiltPercent100ths

Path example:

1/258/15

Indicates the actual position as a percentage with a minimal step of 0.01%. E.g Max 10000 equals 100.00%.

PropertyValue
Typepercent100ths
ConformanceTL & PA_TL
AccessR (read: view)
Qualitiesnullable, persisted
Constraintmax 10000
Defaultnull

Example:

{
  "1/258/15": 1
}

Attribute 23 / 0x0017 — Mode

Path example:

1/258/23

The Mode attribute allows configuration of the window covering, such as: reversing the motor direction, placing the window covering into calibration mode, placing the motor into maintenance mode, disabling the network, and disabling status LEDs. In the case a device does not support or implement a specific mode, e.g. the device has a specific installation method and reversal is not relevant or the device does not include a maintenance mode, any write interaction to the Mode attribute, with an unsupported mode bit or any out of bounds bits set, must be ignored and a response containing the status of CONSTRAINT_ERROR will be returned.

PropertyValue
TypeModeBitmap
ConformanceM
AccessR/W (read: view, write: manage)
Qualitiespersisted
Constraintmax 15
Default0

Bits (ModeBitmap):

BitNameMeaning
0MotorDirectionReversedReverse the lift direction.
1CalibrationModePerform a calibration.
2MaintenanceModeFreeze all motions for maintenance.
3LedFeedbackControl the LEDs feedback.

Example:

{
  "1/258/23": 0
}

Attribute 26 / 0x001A — SafetyStatus

Path example:

1/258/26

The SafetyStatus attribute reflects the state of the safety sensors and the common issues preventing movements. By default for nominal operation all flags are cleared (0). A device might support none, one or several bit flags from this attribute (all optional).

PropertyValue
TypeSafetyStatusBitmap
ConformanceO
AccessR (read: view)
Constraintdesc
Default0

Bits (SafetyStatusBitmap):

BitNameMeaning
0RemoteLockoutMovement commands are ignored (locked out). e.g. not granted authorization, outside some time/date range.
1TamperDetectionTampering detected on sensors or any other safety equipment. Ex: a device has been forcedly moved without its actuator(s).
2FailedCommunicationCommunication failure to sensors or other safety equipment.
3PositionFailureDevice has failed to reach the desired position. e.g. with position aware device, time expired before TargetPosition is reached.
4ThermalProtectionMotor(s) and/or electric circuit thermal protection activated.
5ObstacleDetectedAn obstacle is preventing actuator movement.
6PowerDevice has power related issue or limitation e.g. device is running w/ the help of a backup battery or power might not be fully available at the moment.
7StopInputLocal safety sensor (not a direct obstacle) is preventing movements (e.g. Safety EU Standard EN60335).
8MotorJammedMechanical problem related to the motor(s) detected.
9HardwareFailurePCB, fuse and other electrics problems.
10ManualOperationActuator is manually operated and is preventing actuator movement (e.g. actuator is disengaged/decoupled).
11ProtectionProtection is activated.

Example:

{
  "1/258/26": 0
}

Cluster 258 Commands

Cluster 258 has 5 client-to-server commands and 0 responses.

IDHexCommandDirectionConformanceResponseDescription
00x00UpOrOpenclient → serverMstatusOn receipt, the window covering will adjust its position so the physical lift/slide and tilt is at the maximum open/up position.
10x01DownOrCloseclient → serverMstatusOn receipt, the window covering will adjust its position so the physical lift/slide and tilt is at the maximum closed/down position.
20x02StopMotionclient → serverMstatusOn receipt, the window covering will stop any adjusting to the physical tilt and lift/slide that is currently occurring.
50x05GoToLiftPercentageclient → serverLF & PA_LF, [LF]statusThis command is used to set the target lift position of the window covering to the percentage value specified in the command.
80x08GoToTiltPercentageclient → serverTL & PA_TL, [TL]statusThis command is used to set the target tilt position of the window covering to the percentage value specified in the command.

AcceptedCommandList

The AcceptedCommandList attribute lists the command IDs the endpoint actually implements:

endpoint_id / 258 / 65529
{
  "1/258/65529": [
    0,
    1,
    2,
    5,
    8
  ]
}

Before sending a Cluster 258 command, check that the command ID exists in endpoint/258/65529. Optional commands are only present when the matching feature is set in FeatureMap.


Bridge Command Payload Format

The bridge accepts Matter commands in this structure:

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 258,
    "command_name": "UpOrOpen",
    "payload": {},
    "timed_request_timeout_ms": 1000
  }
}

For Cluster 258, always use "cluster_id": 258. Payload keys are the command field names in lowerCamelCase. Octet-string fields are base64-encoded. timed_request_timeout_ms is required for timed commands and ignored otherwise.


Command: UpOrOpen

Purpose

On receipt, the window covering will adjust its position so the physical lift/slide and tilt is at the maximum open/up position. This will happen as fast as possible. The server attributes is updated as follows: if the PositionAware feature is supported: - TargetPositionLiftPercent100ths attribute is set to 0.00%. - TargetPositionTiltPercent100ths attribute is set to 0.00%.

Command Identity

FieldValue
Command ID0
Command hex0x00
Command nameUpOrOpen
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 258,
    "command_name": "UpOrOpen",
    "payload": {}
  }
}

Command: DownOrClose

Purpose

On receipt, the window covering will adjust its position so the physical lift/slide and tilt is at the maximum closed/down position. This will happen as fast as possible. The server attributes supported is updated as follows: if the PositionAware feature is supported: - TargetPositionLiftPercent100ths attribute is set to 100.00%. - TargetPositionTiltPercent100ths attribute is set to 100.00%.

Command Identity

FieldValue
Command ID1
Command hex0x01
Command nameDownOrClose
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 258,
    "command_name": "DownOrClose",
    "payload": {}
  }
}

Command: StopMotion

Purpose

On receipt, the window covering will stop any adjusting to the physical tilt and lift/slide that is currently occurring. The server attributes supported is updated as follows: - TargetPositionLiftPercent100ths attribute will be set to CurrentPositionLiftPercent100ths attribute value. - TargetPositionTiltPercent100ths attribute will be set to CurrentPositionTiltPercent100ths attribute value.

Command Identity

FieldValue
Command ID2
Command hex0x02
Command nameStopMotion
Directionclient → server
ConformanceM
Responsestatus
Access(invoke: operate)

Payload Fields

This command has no payload fields.

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 258,
    "command_name": "StopMotion",
    "payload": {}
  }
}

Command: GoToLiftPercentage

Purpose

This command is used to set the target lift position of the window covering to the percentage value specified in the command. Upon receipt of this command, the server will adjust the window covering to the lift/slide percentage specified in the payload of this command. If the command includes LiftPercent100thsValue, then TargetPositionLiftPercent100ths attribute is set to LiftPercent100thsValue. Otherwise the TargetPositionLiftPercent100ths attribute is set to LiftPercentageValue * 100.

Command Identity

FieldValue
Command ID5
Command hex0x05
Command nameGoToLiftPercentage
Directionclient → server
ConformanceLF & PA_LF, [LF]
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0LiftPercent100thsValueliftPercent100thsValuepercent100thsMdesc—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 258,
    "command_name": "GoToLiftPercentage",
    "payload": {
      "liftPercent100thsValue": 1
    }
  }
}

Command: GoToTiltPercentage

Purpose

This command is used to set the target tilt position of the window covering to the percentage value specified in the command. Upon receipt of this command, the server will adjust the window covering to the tilt percentage specified in the payload of this command. If the command includes TiltPercent100thsValue, then TargetPositionTiltPercent100ths attribute is set to TiltPercent100thsValue. Otherwise the TargetPositionTiltPercent100ths attribute is set to TiltPercentageValue * 100.

Command Identity

FieldValue
Command ID8
Command hex0x08
Command nameGoToTiltPercentage
Directionclient → server
ConformanceTL & PA_TL, [TL]
Responsestatus
Access(invoke: operate)

Payload Fields

IDFieldPayload keyTypeConformanceConstraintMeaning
0TiltPercent100thsValuetiltPercent100thsValuepercent100thsMdesc—

Bridge Command Example

{
  "message_id": "1",
  "command": "device_command",
  "args": {
    "endpoint_id": 1,
    "cluster_id": 258,
    "command_name": "GoToTiltPercentage",
    "payload": {
      "tiltPercent100thsValue": 1
    }
  }
}

Cluster 258 Events

Cluster 258 defines no events.


SmartphoneKey Notes

  • Cluster 258 is not currently exposed by SmartphoneKey devices. This page documents the Matter 1.6.1 specification so that future devices can be interpreted without changes to the backend.
  • Shadow paths follow endpoint/258/attribute; attribute values that the device reports as unreadable are written as n/a.
  • Attribute IDs, command IDs and enum values on this page come from the CSA Matter 1.6.1 data model; descriptions are condensed from the specification text.