RDMessagever22.txt 86.1 KB
Newer Older
RDMessage {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) retainedData(3) rdHeader(0) version22(22)}

DEFINITIONS IMPLICIT TAGS ::=

BEGIN

-- =============================
-- Object Identifier definitions
-- =============================

retainedDataDomainId OBJECT IDENTIFIER ::= {itu-t(0) identified-organization(4) etsi(0) securityDomain(2) retainedData(3)}

rdHeaderId OBJECT IDENTIFIER ::= {retainedDataDomainId rdHeader(0) version22(22)}

-- ======================================
-- Top level definitions for RDHI wrapper
-- ======================================

RetainedDataMessage ::= SEQUENCE
{
	rdHeaderId				[0] OBJECT IDENTIFIER,
	retainedDataHeader		[1] RetainedDataHeader,
	retainedDataPayload		[2] RetainedDataPayload,
	retainedDataDigest		[3] OCTET STRING OPTIONAL,
		-- The digitally signed hash of the combined fields above (retainedDataHeader and
		-- retainedDataPayload)
-- ==========================================================================
-- Definitions for Retained Data header information, present in every message
-- ==========================================================================

RetainedDataHeader ::= SEQUENCE
{
	requestID		[1] RequestID,
	cSPID			[2] CSPID,
	timeStamp		[3] GeneralizedTime,
	thirdPartyCSPID	[4] CSPID OPTIONAL,
	requestType		[5] RequestType OPTIONAL,
	requestFlag		[6] RequestFlag OPTIONAL
		-- Optional parameter specifying additional information associated with the request.

}

CSPID ::= UTF8String
	-- Unique identifier for the CSP that issued the request

RequestType ::= UTF8String
-- Description or reference of the type of Retained Data request

RequestFlag ::= UTF8String
	-- Configuration information associated with the request

	countryCode					[1] CountryCode,
	authorisedOrganisationID	[2] AuthorisedOrganisationID,
	requestNumber				[3] RequestNumber OPTIONAL,
		-- all messages except GetStatusMessage and StatusMessage have a request number
		-- (see clause 6.1.2)
	...,
	externalIdentifier			[4]	ExternalIdentifier OPTIONAL
		-- Optional identifier for the request, for correlation with warrant management systems.
}

CountryCode ::= UTF8String (SIZE(2))
-- A country code as per ISO 3166-1 [4]

AuthorisedOrganisationID::= UTF8String
-- A unique identifier for an Authorized Organization issuing a Retained Data request

RequestNumber ::= UTF8String
-- Unique within a given country and Authorized Organization

-- =================================================
-- Definitions for Retained Data payload information
-- =================================================

RetainedDataPayload ::= CHOICE
	-- Payload can be a request, response, error or acknowledgement
{
	requestMessage				[1] RequestMessage,
	requestAcknowledgement		[2] RequestAcknowledgement,
	responseMessage				[3] ResponseMessage,
	responseAcknowledgement		[4] ResponseAcknowledgement,
	errorMessage				[5] FurtherInformation,
	cancelMessage				[6] CancelMessage,
	cancelAcknowledgement		[7] CancelAcknowledgement,
	getstatusMessage			[8] GetStatusMessage,
	statusMessage				[9] StatusMessage,
	getResultsMessage			[10] GetResultsMessage,
	...,
	supplementaryRequest		[11] SupplementaryRequest,
	supplementaryResponse		[12] SupplementaryResponse
}

-- ==================================================
-- Definitions of Request message and acknowledgement
-- ==================================================

RequestMessage ::= SEQUENCE
{
	requestPriority				[1] RequestPriority OPTIONAL,
	requestParameters			[2] RequestConstraints OPTIONAL,
		-- Optional only in case a warrant is transmitted independently of a request
	deliveryPointHIB			[3] DeliveryPointHIB OPTIONAL,
		-- pre-arranged set of delivery address(es) of that specific Authorized Organization
	maxHits						[4] INTEGER OPTIONAL,
		-- Maximum number of records to be returned.
		-- On a national basis maximum numbers could be considered
		-- In case of maxHit a responseFailed message is sent and no data is sent
		-- This parameter shall not be used simultaneously with the numberOfRecordsLimit parameter.
	nationalRequestParameters	[5] NationalRequestParameters OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	maxRecordsPerBatch			[6] INTEGER OPTIONAL,
		-- Indicates that multi-part delivery shall be used and each ResponseMessage shall not
		-- contain more records than specified. (see clause 6.3.3.3)
	requestedData				[7] SEQUENCE OF UTF8String OPTIONAL,
		-- only to use in case of selective requests, it contains
		-- the path to the selected parameter in XPATH notation
	numberOfRecordsLimit		[8] INTEGER OPTIONAL
		-- Indicates the upper limit on the number of records to be provided by the CSP.
		-- This parameter shall not be used simultaneously with the maxHits parameter.
		-- (see clause 6.3.3.4)
}

DeliveryPointHIB ::= UTF8String

RequestConstraints ::= SEQUENCE
{
	equals					[1] RetainedDataRecord OPTIONAL,
	notEqualTo				[2] RetainedDataRecord OPTIONAL,
	lessThan				[3] RetainedDataRecord OPTIONAL,
		-- For numerical values
	lessThanOrEqualTo		[4] RetainedDataRecord OPTIONAL,
		-- For numerical values
	greaterThan				[5] RetainedDataRecord OPTIONAL,
		-- For numerical values
	greaterThanOrEqualTo	[6] RetainedDataRecord OPTIONAL,
		-- For numerical values
	startsWith				[7] RetainedDataRecord OPTIONAL,
		-- For strings
	endsWith				[8] RetainedDataRecord OPTIONAL,
		-- For strings
	isAMemberOf				[9] SEQUENCE OF RetainedDataRecord OPTIONAL,
	...
}

RequestPriority ::= OCTET STRING
	-- Priority considerations are a matter for national implementation
	-- This standard makes no statement regarding how such priorities are represented or used

RequestAcknowledgement ::= SEQUENCE
{
	suggestedCompletionTime		[1] GeneralizedTime OPTIONAL,
		-- Indicative time that results will be ready
		-- Purely informational, not binding for either party
	...
}

-- ===================================================
-- Definitions of Response message and acknowledgement
-- ===================================================

{
	responseStatus				[1] ResponseStatus,
	responsePayload				[2] SEQUENCE OF ResponseRecord OPTIONAL,
		-- Clause 6 explains use of this field
		-- A responseUnavailable message shall not have a responsePayload (see clause 5.3.1)
		-- The responseComplete and responseIncomplete message shall have a responsePayload
		-- If there are no responses, the responsePayload is present but has zero entries
	nationalResponsePayload		[3] NationalResponsePayload OPTIONAL,
		-- to be defined on a national basis
		-- only to be used in case the present document cannot fulfil the national requirements
		-- number to identify partial results within parallel multi-part delivery
	numberOfRecordsFound			[5] INTEGER OPTIONAL
		-- Indicates the total number of records found by the CSP when the value set in the 
		-- numberOfRecordsLimit has been reached or exceeded.
		-- (see clause 6.3.3.4)
		-- There will be at least one further response message to come
	responseFailed			[4] FurtherInformation,
		-- See clauses 6.2.2.2 and 6.3.3.2
	...
}

ResponseRecord	::= SEQUENCE
{
	recordNumber				[1] INTEGER,
	recordPayload				[2] RetainedDataRecord,
	additionalInformation		[3] AdditionalInformation OPTIONAL,
	nationalRecordPayload		[4] NationalRecordPayload OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	...
}

AdditionalInformation ::= SEQUENCE
{
	contactInformation		[1] UTF8String OPTIONAL,
		-- Name or address of operator or person who may have further information
	otherInformation		[2] UTF8String OPTIONAL,
	...
}

RetainedDataRecord ::= CHOICE
{
	telephonyRecord		[1] TelephonyRecord,
		-- Details are defined in Annex B
	messageRecord		[2] MessageRecord,
		-- Details are defined in Annex C
	networkAccess		[3] NetworkAccessRecord,
		-- Details are defined in Annex E
	...,
	multimediaRecord	[4] MultimediaRecord
		-- Details are defined in Annex D
		-- Other services will be included (as they are implemented)
	-- Acknowledges a response has been sent
	acknowledgeCompleteResults			[1] NULL,
	acknowledgePartialResults			[2] NULL,
	acknowledgePartialResultsNumber		[3] INTEGER
		-- number to acknowledge a specific resultMessage within parallel multi-part delivery
}

-- ==================================================
-- Definitions of an error message and acknowledgment
-- ==================================================

FurtherInformation ::= SEQUENCE
{
	information					[1] UTF8String,
	contactInformation			[2] UTF8String OPTIONAL,
	...,
	categorisedErrorDescription [3] CategorisedErrorDescription OPTIONAL -- see 6.4
}

CategorisedErrorDescription ::= SEQUENCE
{
	value				[1] INTEGER,
	description			[2] UTF8String OPTIONAL,
	...
}

-- ===================================================
-- Definitions of a cancel message and acknowledgement
-- ===================================================

CancelMessage ::= NULL
	-- Cancels an active request

CancelAcknowledgement ::= NULL
	-- Acknowledges the receipt of a cancel message (no other information required)

-- ===================================================
-- Definitions of status request and response messages
-- ===================================================

GetStatusMessage ::= SEQUENCE
{
	requestNumbers		[1] SEQUENCE OF RequestNumber,
	...
}

StatusMessage ::= SEQUENCE
{
	statusResponse		[1] SEQUENCE OF StatusResponse,
	...
}

StatusResponse ::= SEQUENCE
{
	requestNumber		[1] RequestNumber,
	requestStatus		[2] RequestStatus,
	...
}

RequestStatus ::= CHOICE
{
	ready						[1] NULL,
	incompleteResultsReady		[2] NULL,
	failureResponseReady		[3] NULL,
	notReady					[4] NULL,
	error						[5] FurtherInformation,
	inDelivery					[6] NULL,
	invalidRequestID			[7] NULL,
	...
}

-- ==========================================
-- Definitions of status get results messages
-- ==========================================

GetResultsMessage ::= NULL
	-- No further information required (the RequestID is given in the header)

-- ===================
-- National parameters
-- ===================

NationalRequestParameters ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- Country Code according to ISO 3166-1 [4],
		-- the country to which the parameters inserted after the extension marker apply.
	...
		-- In case a given country wants to use additional national parameters according to its law,
		-- these national parameters should be defined using the ASN.1 syntax and added after the
		-- extension marker (...).
		-- It is recommended that an version indicator is included in the national parameters
		-- definition.
}

NationalResponsePayload ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalRecordPayload ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}
	nationalSupplementaryRequest		[1] NationalSupplementaryRequest,
	nationalSupplementaryResponse		[1] NationalSupplementaryResponse,
	...
}

NationalSupplementaryRequest ::= SEQUENCE
{
	countryCode [1] UTF8String (SIZE (2)),
		-- Country Code according to ISO 3166-1 [4],
		-- the country to which the parameters inserted after the extension marker apply.
	...
		-- In case a given country wants to use additional national parameters according to its law,
		-- these national parameters should be defined using the ASN.1 syntax and added after the
		-- extension marker (...).
		-- It is recommended that a version indicator is included.
}

NationalSupplementaryResponse ::= SEQUENCE
{
	countryCode [1] UTF8String (SIZE (2)),
		-- Country Code according to ISO 3166-1 [4],
		-- the country to which the parameters inserted after the extension marker apply.
	...
		-- In case a given country wants to use additional national parameters according to its law,
		-- these national parameters should be defined using the ASN.1 syntax and added after the
		-- extension marker (...).
		-- It is recommended that a version indicator is included.
}
TimeSpan ::= SEQUENCE
{
	startTime		[1] GeneralizedTime OPTIONAL,
	endTime			[2] GeneralizedTime OPTIONAL,
	...,
	durationTime	[3] INTEGER OPTIONAL
		-- duration in seconds
File ::= SEQUENCE
{
	mediaType	[1] UTF8String,
		-- Media type of the file, e.g. image/jpeg, application/pdf
		-- Media types (formerly known as MIME types) are assigned and listed by the IANA
	content		[2] OCTET STRING,
		-- Content of the file
	...
}

-- ==============================================
-- Definitions for Generic Subscriber Information
-- ==============================================

GenericSubscriberInfo ::= SEQUENCE
{
	organizationInfo	[1] OrganizationInfo OPTIONAL,
	individualInfo		[2] IndividualInfo OPTIONAL,
	...,
	contracts					[3]	SEQUENCE OF ContractInformation OPTIONAL
}

OrganizationInfo ::= SEQUENCE
{
	name					[1] UTF8String OPTIONAL,
		-- name of the organization
	contactDetails			[2] ContactDetails OPTIONAL,
		-- address, and name/phone number of a point of contact
	nationalRegistrationID	[3] UTF8String OPTIONAL,
		-- e.g. social security number
	...,
	registeredAddress		[4] AddressInformation OPTIONAL,
	tradingAddress			[5] AddressInformation OPTIONAL,
	otherAddresses			[6] SEQUENCE OF OtherAddress OPTIONAL,
	groupID					[7] UTF8String OPTIONAL,
		-- identity of organization group
	groupAdministrator		[8] UTF8String OPTIONAL,
		-- identity of organization administrator
	companyType				[9] UTF8String OPTIONAL,
		-- type of company
	vatEnabled				[10] BOOLEAN OPTIONAL,
		-- VAT enabled or not
	vatNumber				[11] UTF8String OPTIONAL,
		-- VAT number
	createIP				[12] IPAddress OPTIONAL,
		-- IP used to create the subscriber account
	createTime				[13] GeneralizedTime OPTIONAL,
		-- time that subscriber account was created
	modifiedDate			[14] GeneralizedTime OPTIONAL
		-- date that subscriber account was modified
}

IndividualInfo ::= SEQUENCE
{
	name					[1] PersonName OPTIONAL,
	contactAddress			[2] ContactDetails OPTIONAL,
	dateOfBirth				[3] GeneralizedTime OPTIONAL,
	gender					[4] ENUMERATED
	{
		male(0),
		female(1),
		...
	} OPTIONAL,
	identificationNumber	[5] UTF8String OPTIONAL,
	authenticationInfo		[6] AuthenticationInfo OPTIONAL,
	...,
	profession				[7] UTF8String OPTIONAL,
	otherAddresses			[8] SEQUENCE OF OtherAddress OPTIONAL,
	createTime				[9] GeneralizedTime OPTIONAL
		-- time that subscriber account was created
ContractInformation ::= SEQUENCE
{
	contractDesignation		[1] UTF8String OPTIONAL,
	contractNumber			[2] UTF8String OPTIONAL,
	otherInformation		[3] UTF8String OPTIONAL,
	timeSpan				[4] TimeSpan OPTIONAL,
	contractDocuments		[5] SEQUENCE OF File OPTIONAL,
	...
}

	salutation				[1] UTF8String OPTIONAL,
	surname					[2] UTF8String OPTIONAL,
		-- the non-chosen or inherited name of an individual, e.g. "Arend"
	surnamePrefix			[3] UTF8String OPTIONAL,
		-- any prefix before the surname, e.g. "von", "van der"
	surnameSuffix			[4] UTF8String OPTIONAL,
		-- any suffix after the surname, e.g. "Jr", "III"
	middleNames				[5] UTF8String OPTIONAL,
		-- that part of the name excluding forename, separable and preceding the surname
	firstname				[6] UTF8String OPTIONAL,
		-- the first name or initials, e.g. "Peter"
	...,
	secondsurname			[7] UTF8String OPTIONAL,
		-- a second surname is used in several countries
	secondsurnamePrefix		[8] UTF8String OPTIONAL,
	secondsurnameSuffix		[9] UTF8String OPTIONAL
	address						[1] AddressInformation OPTIONAL,
	emailAddress				[2] UTF8String OPTIONAL,
	contactNumber				[3] SEQUENCE OF PartyNumber OPTIONAL,
		-- several numbers (work, home, mobile) may be given for a single subscriber
	...,
	additionalEmailAddresses	[4] SEQUENCE OF UTF8String OPTIONAL
		-- several email addresses may be given for a single subscriber
AddressInformation ::= SEQUENCE
	flatNumber				[1] UTF8String OPTIONAL,
	buildingName			[2] UTF8String OPTIONAL,
	buildingNumber			[3] UTF8String OPTIONAL,
	streetName				[4] UTF8String OPTIONAL,
	poBox					[5] UTF8String OPTIONAL,
	postalCode				[6] UTF8String OPTIONAL,
		-- Postal code. Example: 2289AC
	region					[7] UTF8String OPTIONAL,
	province				[8] UTF8String OPTIONAL,
	language				[9] UTF8String OPTIONAL,
	city					[10] UTF8String OPTIONAL,
	country					[11] CountryCode OPTIONAL,
		-- Country code as defined in ISO 3166-1 [4]
	validity				[12] TimeSpan OPTIONAL,
		-- time from which the address was registered
	...,
	relatedOrganizationInfo	[13] OrganizationInfo OPTIONAL,
	relatedPersonName		[14] PersonName OPTIONAL,
	otherInformation		[15] UTF8String OPTIONAL
		-- additional information in cases of divergent addresses
OtherAddress ::= SEQUENCE
{
	address			[1] AddressInformation OPTIONAL,
	addressType		[2] UTF8String OPTIONAL,
		-- Description of the type of address that has been given in the address field
	addressComments	[3] UTF8String OPTIONAL,
		-- Any extra information to aid the understanding of the address given
	...
}

	authenticationType	[1] UTF8String OPTIONAL,

	authenticationNumber	[2] UTF8String OPTIONAL,

	issuingCountry		[3] UTF8String (SIZE (2)) OPTIONAL,
	issuingOrganization	[4] UTF8String OPTIONAL,
	nationality		[5] UTF8String OPTIONAL,
	authenticationDocument	[6]	SEQUENCE OF File OPTIONAL

	billingMethod			[1] BillingMethod OPTIONAL,
	bankAccount			[2] BankAccount OPTIONAL,
	billingAddress			[3] ContactDetails OPTIONAL,
	...,
	billingIdentifier		[4] BillingIdentifier OPTIONAL
}

BankAccount ::= SEQUENCE
{
	iBAN								[1] IBAN OPTIONAL,
	bIC									[2] BIC OPTIONAL,
	accountHolder						[3] UTF8String OPTIONAL,
	nationalAccountNumber				[4] UTF8String OPTIONAL,
		-- To be used in case that the account holding bank has no IBAN
	nationalBankNumber					[5] UTF8String OPTIONAL,
		-- To be used in case that the account holding bank has neither IBAN nor BIC
	bankName							[6] UTF8String OPTIONAL,
	...,
	sepaRefNumber						[7] UTF8String OPTIONAL
		-- To be used for referenceNumber of a SEPA direct debit mandate
	-- International Banking Account Number
	-- format as per ISO 13616-1:2007 [28]

	-- Business Identifier Code
	-- format as per ISO 9362:2009 [29]

BillingMethod ::= ENUMERATED
{
	debit(0),
	transfer(1),
	prepaid(2),
	...
}
	telephonySubscriber		[1] TelephonySubscriber,
	telephonyBillingDetails		[2] TelephonyBillingDetails,
	telephonyServiceUsage		[3] TelephonyServiceUsage,
	telephonyDevice			[4] TelephonyDevice,
	telephonyNetworkElement		[5] TelephonyNetworkElement,
	...
}

-- ==============================
-- Definitions of Subscriber Data
-- ==============================

TelephonySubscriber ::= SEQUENCE
{
	subscriberID					[1] TelephonySubscriberId OPTIONAL,
		-- unique identifier for this subscriber, e.g. account number
	genericSubscriberInfo			[2] GenericSubscriberInfo OPTIONAL,
		-- generic personal information about this subscriber
	telephonySubscriberInfo			[3] TelephonySubscriberInfo OPTIONAL,
		-- service-specific information about this subscriber
	subscribedTelephonyServices		[4] SEQUENCE OF SubscribedTelephonyServices OPTIONAL,
		-- a subscriber (or account) may have more than one service listed against them
	...,
	nationalTelephonySubscriberInfo	[5] NationalTelephonySubscriberInfo OPTIONAL
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
}

NationalTelephonySubscriberInfo ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

TelephonySubscriberId ::= UTF8String
	-- unique identifier for this subscriber, e.g. account number

TelephonySubscriberInfo ::= NULL
	-- Reserved

PartyNumberInfo ::= SEQUENCE
{
	partyNumber							[1] PartyNumber OPTIONAL,
		-- referenced partyNumber for the additional information in this type
	timeSpan							[2] TimeSpan OPTIONAL,
		-- start and end date if applicable in which the number was active
	disableReason						[3] UTF8String OPTIONAL,
		-- reason of temporarily disable procedure - if applicable
	...
}

ICCIDInfo ::= SEQUENCE
{
	iCCID								[1] UTF8String OPTIONAL,
	timeSpan							[2] TimeSpan OPTIONAL,
		-- activation- and deactivation-date if applicable in which the ICCID was active
	...,
	pUK								[3] UTF8String OPTIONAL,
		-- PUK code associated with the ICCID
	pUK2								[4] UTF8String OPTIONAL,
		-- PUK2 code associated with the ICCID
	iMSI								[5] IMSI OPTIONAL,
	sUPI								[6] SUPI OPTIONAL,
	gPSI								[7] GPSI OPTIONAL
LoginInfo ::= SEQUENCE
{
	login								[1] UTF8String OPTIONAL,
		-- login used for authentication, usually a username or email address
	password							[2] UTF8String OPTIONAL,
	serviceName							[3] UTF8String OPTIONAL,
		-- short description of the kind of service the login / password is used for
	needsAdditionalAuthentication		[4] BOOLEAN OPTIONAL,
		-- true if additional authentication methods are required, like security questions or
		-- e-tokens
	timeSpan							[5] TimeSpan OPTIONAL,
		-- timespan when the login / password was valid
	...
}

SubscribedTelephonyServices ::= SEQUENCE
{
	serviceID							[1] UTF8String OPTIONAL,
		-- Unique identifier for this service within the operator
	providerID							[2] UTF8String OPTIONAL,
		-- Unique identifier for the service provider
		-- Start and end data, if applicable, of the subscription
	registeredNumbers						[4] SEQUENCE OF PartyNumber OPTIONAL,
		-- The set of telephone numbers registered for this service
	registeredICCID							[5] UTF8String OPTIONAL,
	serviceType							[6] TelephonyServiceType OPTIONAL,
	installationAddress						[7] AddressInformation OPTIONAL,
		-- installation address, if different from the registered address
	connectionDate							[8] GeneralizedTime OPTIONAL,
		-- Date the subscriber was actually connected
		-- (May differ from the start of subscription)
	carrierPreselect						[10] BOOLEAN OPTIONAL,
	lineStatus							[11] UTF8String OPTIONAL,
		-- CSP-specific description of current line status, e.g. "Active", "Ceased", etc.
	allocatedDeviceIDs						[12] SEQUENCE OF TelephonyDeviceID OPTIONAL,
	pUKCode								[13] UTF8String OPTIONAL,
	pUK2Code							[14] UTF8String OPTIONAL,
	iMEI								[15] SEQUENCE OF IMEI OPTIONAL,
	nationalTelephonySubscriptionInfo				[16] NationalTelephonySubscriptionInfo OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	paymentDetails							[17] PaymentDetails OPTIONAL,
	subscriptionType						[18] SubscriptionType OPTIONAL,
		-- Describes the nature of the subscription
	deliveryAddress							[19] AddressInformation OPTIONAL,
	resellerAddress							[20] AddressInformation OPTIONAL,
	otherAddresses							[21] SEQUENCE OF OtherAddress OPTIONAL,
	registeredNumbersInfo						[22] SEQUENCE OF PartyNumberInfo OPTIONAL,
		-- information about timespan of the active number and deactivation events
	registeredICCIDs						[23] SEQUENCE OF ICCIDInfo OPTIONAL,
		-- in cases of MultiSIM card contracts
	loginInfos							[24] SEQUENCE OF LoginInfo OPTIONAL,
		-- e.g. login information according a VMS/UMS account
	paymentTransactions						[25] SEQUENCE OF BillingRecords OPTIONAL
SubscriptionType  ::= ENUMERATED
{
	unknown(0),
	postpay(1),
	prepay(2),
	other(3),
	...
	-- Describes the nature of the subscription

NationalTelephonySubscriptionInfo ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	subscriberID						[1] TelephonySubscriberId OPTIONAL,
	serviceID							[2] UTF8String OPTIONAL,
	billingAddress						[3] ContactDetails OPTIONAL,
	billingIdentifier					[4] BillingIdentifier OPTIONAL,
	billingRecords						[5] SEQUENCE OF BillingRecords OPTIONAL,
	nationalTelephonyBillingDetails		[6] NationalTelephonyBillingDetails OPTIONAL
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
}

NationalTelephonyBillingDetails ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

BillingIdentifier ::= OCTET STRING
	-- Used to correlate billing information
	-- useful if the bill-payer is not the subscriber, e.g. company mobiles

BillingRecords ::= SEQUENCE
{
	time								[1] GeneralizedTime OPTIONAL,
	place								[2] UTF8String OPTIONAL,
	amount								[3] REAL OPTIONAL,
	currency							[4] UTF8String (SIZE(3)) OPTIONAL,
	nationalTelephonyBillingRecords					[6] NationalTelephonyBillingRecords OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	transactionID							[7] UTF8String OPTIONAL,
		-- Unique reference for this transaction/billing record
		-- Details to be defined on a national basis
	transactionStatus						[8] UTF8String OPTIONAL,
		-- Status of the transaction (i.e. "declined", "succeeded", etc.)
		-- Details to be defined on a national bases
	copyOfBill							[9] SEQUENCE OF File OPTIONAL
NationalTelephonyBillingRecords ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

TelephonyServiceType ::= ENUMERATED
{
	private(0),
	privatePABX(1),
	publicPayphone(2),
	...
}

-- =================================
-- Definitions of Service Usage Data
-- =================================

TelephonyServiceUsage ::= SEQUENCE
{
	partyInformation				[1] SEQUENCE OF TelephonyPartyInformation OPTIONAL,
		-- This parameter provides the concerned party (Originating, Terminating or
		-- forwarded party), the identity(ies) of the party and all the information
		-- provided by the party
	communicationTime				[2] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	eventInformation				[3] SEQUENCE OF TelephonyEventInformation OPTIONAL,
		-- A list of events that occurred during this service usage
		-- Q.850 cause code for call termination
	communicationType				[5] TelephonyCommunicationType OPTIONAL,
	bearerService					[6] TelephonyBearerService OPTIONAL,
	smsInformation					[7] SmsInformation OPTIONAL,
	ringDuration					[8] INTEGER OPTIONAL,
	...,
	mmsInformation					[9] MmsInformation OPTIONAL,
	nationalTelephonyServiceUsage	[10] NationalTelephonyServiceUsage OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	operatorSpecificCallDetails		[11] UTF8String OPTIONAL
		-- CSP specific value which indicates the nature of a call
		-- (e.g. "CallIndicator: GPR, CallActionCode: 2")
}

NationalTelephonyServiceUsage ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	partyRole							[1] TelephonyPartyRole OPTIONAL,
	partyNumber							[2] PartyNumber OPTIONAL,
	subscriberID						[3] TelephonySubscriberId OPTIONAL,
	deviceID							[4] TelephonyDeviceID OPTIONAL,
	locations							[5] SEQUENCE OF TelephonyLocation OPTIONAL,
		-- List of cell locations used by this party during the service usage
	communicationTime					[6] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	iMSI								[8] IMSI OPTIONAL,
	natureOfAddress						[9] UTF8String OPTIONAL,
		-- Nature of address indicator, e.g. "National", "International"
	forwardedTransferredNumber			[10] PartyNumber OPTIONAL,
	terminatingTransferredNumber		[11] PartyNumber OPTIONAL,
	...,
	emailAddress						[12] UTF8String  OPTIONAL,
		-- used for MMS that supports also the use of E-Mail addresses (RFC 5322 [24])
	iMEI								[13] IMEI OPTIONAL,
	detailedLocation					[14] TelephonyNetworkElement OPTIONAL,
		-- In the case detailed location information per call and party is available
		-- (e.g. the geoCoordinates for this partyNumber)
	nationalTelephonyPartyInformation	[15] NationalTelephonyPartyInformation OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	partyType							[16] TelephonyPartyType OPTIONAL,
	dialledDigits						[17] UTF8String OPTIONAL
}

NationalTelephonyPartyInformation ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
TelephonyPartyType ::= CHOICE
{
	voicemail		[1] NULL,
	smsServer		[2] NULL,
	other			[3] UTF8String,
	...
}

TelephonyCommunicationType ::= ENUMERATED
{
	telephonyFixedCS(0),
	telephonyWirelessCS(1),
	sMS(2),
TelephonyBearerService ::= ENUMERATED
{
	speech(0),
	data(1),
	fax(2),
	...
}

SmsInformation ::= SEQUENCE
{
	smsEvent		[1] ENUMERATED
	{
		shortMessage(1),
		shortPartMessage(2),
		compositeMessage(3),
		notificationMessage(4),
		...
	} OPTIONAL,
	smsType			[2] ENUMERATED
	{
		deliverSCtoMS(1),
		deliverReportMStoSC(2),
		statusReportSCtoMS(3),
		commandMStoSC(4),
		submitMStoSC(5),
		submitReportSCtoMS(6),
		reservedMTIValue(7),
		...
	} OPTIONAL,
	smsStatus		[3] ENUMERATED
	{
		delivered(0),
		expired(1),
		deleted(2),
		replaced(3),
		submitted(4),
		incomplete-submission(5),
		incomplete-delivery(6),
		undeliverable(7),
		passed-on(8),
		...
	} OPTIONAL,
	smsCmRefNr		[4] OCTET STRING (SIZE(1..2)) OPTIONAL,
		-- format as per 3GPP TS 23.040 [16]
	smsNumOfSM		[5] INTEGER (0..65535) OPTIONAL,
	smsNotifyInd	[6] BOOLEAN OPTIONAL,
	smsProtocolId	[7] OCTET STRING (SIZE(1)) OPTIONAL,
		-- format as per 3GPP TS 23.040 [16]
MmsInformation	::= SEQUENCE
{
	mmsEvent		[1] ENUMERATED
	{
		message(1),
		notificationMessage(2),
		deliveryReportMessage(3),
		readReplyMessage(4),
		...
	} OPTIONAL,
		-- type of message exchanged
	mmsStatus		[2] ENUMERATED
	{
		delivered(0),
		expired(1),
		deleted(2),
		replaced(3),
		submitted(4),
		undeliverable(5),
		passed-on(6),
		delivery-rejection(7),
		delivery-forward(8),
		delivery-copy(9),
		submission-rejection(10),
		submission-failure(11),
		...,
		delivered-application(12)
		-- optional flag indicating MMS was retrieved using
		-- something other than mobile deivce e.g. web browser
	} OPTIONAL,
	mmsNotifInd		[3] BOOLEAN OPTIONAL,
		-- indication that a delivery notification has been generated
	mmsMsgMod		[4] ENUMERATED
	{
		none(1),
		modified(2),
		stripped(3),
		...
	} OPTIONAL,
		-- message modification indication for MMS
	...
}

TelephonyEventInformation ::= SEQUENCE
{
	time		[1] GeneralizedTime OPTIONAL,
		-- time when the event occurred
	type		[2] TelephonyEventType OPTIONAL,
	party		[3] TelephonyPartyRole OPTIONAL,
		-- party to which the event is related
	location	[4] TelephonyLocation OPTIONAL,
	...
}

TelephonyEventType ::= CHOICE
{
	basicEventType				[1] BasicEventType,
	callConferenceEventType		[2] CallConferenceEventType,
	callForwardingEventType		[3] CallForwardingEventType,
	messagingEventType			[4] MessagingEventType,
	prepayServiceEventType		[5] PrepayServiceEventType,
	...,
	nationalTelephonyEventType	[6] NationalTelephonyEventType
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
}

NationalTelephonyEventType ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

BasicEventType ::= ENUMERATED
{
	handover(1),
	hold(2),
	retrieve(3),
	suspend(4),
	ect(6),
	mpty(7),
	mptyHold(8),
	mptyRetrieve(9),
	mptySplit(10),
	uus1(11),
	uus2(12),
	uus3(13),
	serviceSpeech(14),
	serviceFax(15),
	tpyInvoke(16),
	tpyPrivateComm(17),
	serviceActivation(18),
	...,
	callAttempt(23),
	callStart(24),
	callEnd(25),
	cliWithheld(26)
}

CallForwardingEventType ::= ENUMERATED
{
	cfuActivation(1),
	cfuModification(2),
	cfuDe-activation(3),
	cfcNoReplyActivation(4),
	cfcNoReplyModification(5),
	cfcNoReplyDe-activation(6),
	cfcBusyActivation(7),
	cfcBusyModification(8),
	cfcBusyDe-activation(9),
	cfcOutOfRangeActivation(10),
	cfcOutOfRangeModification(11),
	cfcOutOfRangeDe-activation(12),
	cfcUnavailableActivation(13),
	cfcUnavailableModification(14),
	cfcUnavailableDe-activation(15),
	cfuFaxActivation(16),
	cfuFaxModification(17),
	cfuFaxDe-activation(18),
	...
}

CallConferenceEventType ::= ENUMERATED
{
	confBeginSeizure(1),
	confAdd(2),
	confSplit(3),
	confIsolate(4),
	confReattach(5),
	confDrop(6),
	confBeginActive(7),
	...
}

MessagingEventType ::= ENUMERATED
{
	mSOriginatingSMSinMSC(1),
	mSTerminatingSMSinMSC(2),
	shortMessageDelivery(3),
	mMMessage(4),
	mMNotification(5),
	mMDeliveryReport(6),
	mMReadReply(7),
	...
}

PrepayServiceEventType ::= ENUMERATED
{
	serviceActivation(1),
	...
}

TelephonyLocation ::= SEQUENCE
{
	telephonyNetworkID			[1] TelephonyNetworkID OPTIONAL,
		-- ID of the network element location (e.g. Cell ID)
		-- Time span that this location was valid for
	nationalTelephonyLocation	[3] NationalTelephonyLocation OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	detailedLocation			[4] TelephonyNetworkElement OPTIONAL
		-- The extended information for this network element as it was at the time of the
}

NationalTelephonyLocation ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

TelephonyPartyRole ::= ENUMERATED
{
	originating-Party(0),
	terminating-Party(1),
	forwarded-to-Party(2),
	redirecting(4),
	connected(5),
	userProvidedCalling(6),
	roaming(7),
	translated(8),
	singlePersonalNumber(9),
	smsOriginator(10),
	smsRecipient(11),
	smsOriginatorTrn(12),
	smsRecipientTrn(13),
	...,
	mmsOriginator(14),
	mmsRecipient(15),
	mmsOriginatorTrn(16),
	mmsRecipientTrn(17)
}

-- =======================
-- Device Data definitions
-- =======================

TelephonyDevice ::= SEQUENCE
{
		-- Type of identifier for telephony device
	{
		unknown(0),
		imei(1),
		macAddress(2),
		...
	} OPTIONAL,
	telephonyDeviceID			[2] TelephonyDeviceID OPTIONAL,
		-- Unique identifier for this telephony device according to type of identifier
	subscriberID				[3] TelephonySubscriberId OPTIONAL,
		-- Identifier for a known user of this equipment.
		-- Usage of this parameter is subject to national legislation.
	nationalTelephonyDevice		[4] NationalTelephonyDevice OPTIONAL
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
}

NationalTelephonyDevice ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
	-- A unique identifier for the telephony device. For example, the IMEI number
	-- of a mobile handset

-- ========================
-- Network Data definitions
-- ========================

TelephonyNetworkElement ::= SEQUENCE
{
	telephonyNetworkID					[1] TelephonyNetworkID OPTIONAL,
	cellInformation						[2] Location OPTIONAL,
		-- The Location information id
	validity							[3] TimeSpan OPTIONAL,
	nationalTelephonyNetworkElement		[4] NationalTelephonyNetworkElement OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	transmitterDetails					[5] TransmitterDetails OPTIONAL
}

NationalTelephonyNetworkElement ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

TelephonyNetworkID ::= OCTET STRING
	-- Unique identifier for this network element: e.g. a Cell ID

TransmitterDetails ::= SEQUENCE
{
	alternativeID					[1] UTF8String OPTIONAL,
	-- For use by CSPs with an alternative naming scheme for cells
	beamWidth						[2] INTEGER OPTIONAL,
	-- beam width in degrees
	-- note that the beam bearing is given in the gsmLocation Azimuth field
	radiatedPower					[3] INTEGER OPTIONAL,
	-- Effective radiated power in watts.
	antennaHeight					[4] INTEGER OPTIONAL,
	-- Height of antenna from ground in metres
	range							[5] INTEGER OPTIONAL,
	-- Indication of range or radius of cell or sector coverage, in metres
	-- Precise definition is to be decided on a national basis (e.g. distance
	-- at which some fixed percentage of calls are connected)
	frequency						[6] INTEGER OPTIONAL,
	-- transmitter frequency in kHz
	technology						[7] TransmitterTechnology OPTIONAL,
	nationalTransmitterDetails		[8] NationalTransmitterDetails OPTIONAL,
	...
}

TransmitterTechnology	::= ENUMERATED
{
	gen2G(0),		-- This corresponds to GERAN in 3GPP TS 29.274 [32]
	gen3G(1),		-- This corresponds to UTRAN in 3GPP TS 29.274 [32]
	...,
	eUTRAN(2),
	wLAN(3),
	hSPAEvolution(4),
	gAN(5),
	vIRTUAL(6)
	-- Note that the labels are taken from 3GPP TS 29.274 [32] v12.3.0 clause 8.17, though the
	-- enumeration values (0 to 6) are not.
}

NationalTransmitterDetails	::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

-- ====================
-- Location information
-- ====================

Location ::= SEQUENCE
{
	e164-Number					[1] OCTET STRING (SIZE (1..25)) OPTIONAL,
		-- Coded in the same format as the ISUP location number (parameter field)
		-- of the ISUP (see ETSI EN 300 356 [7])
	globalCellID					[2] OCTET STRING (SIZE (5..7)) OPTIONAL,
		-- See MAP format (see ETSI TS 100 974 [8])
	rAI						[3] OCTET STRING (SIZE (6)) OPTIONAL,
		-- The Routeing Area Identifier (RAI) in the current SGSN is coded in accordance with
		-- ETSI TS 124 008 [9] without the Routing Area Identification IEI (only the
	gsmLocation					[4] GSMLocation OPTIONAL,
	umtsLocation					[5] UMTSLocation OPTIONAL,
	sAI						[6] OCTET STRING (SIZE (7)) OPTIONAL,
		-- format:	PLMN-ID	3 octets (no. 1-3)
		--			LAC		2 octets (no. 4-5)
		--			SAC		2 octets (no. 6-7)
		--			(according to ETSI TS 125 413 [31])
	oldRAI						[7] OCTET STRING (SIZE (6)) OPTIONAL,
		-- the "Routeing Area Identifier" in the old SGSN is coded in accordance with
		-- ETSI TS 124 008 [9] without the Routing Area Identification IEI
		-- (only the last 6 octets are used)
		-- This parameter is duplicated from ETSI TS 133 108 [11]
	postalLocation					[8] AddressInformation OPTIONAL,
	extendedLocation				[9] ExtendedLocation OPTIONAL,
	userLocationInformation				[10] OCTET STRING (SIZE(1..35)) OPTIONAL,
		-- coded according to ETSI TS 129 274 [32]; the type IE is not included
	tAI						[11] OCTET STRING (SIZE (6)) OPTIONAL,
	eCGI						[12] OCTET STRING (SIZE (8)) OPTIONAL,
	maritimeTransport				[13] MaritimeTransport OPTIONAL,
		-- Information about the mobile cells embarked on ships using 
	airTransport					[14] AirTransport OPTIONAL,
		-- Information about the mobile cells embarked on aircraft using 
	bSSID						[15] OCTET STRING (SIZE (6)) OPTIONAL,
		-- 48-bit (6 octet) MAC address of the WLAN access point derived from the BSSID
	nCGI						[16] NCGI OPTIONAL,
		-- format as specified in 3GPP TS 38.413 [42].
	n3gaLocation					[17] OCTET STRING (SIZE (4)) OPTIONAL,
		-- The use of this parameter is not recommended, as it is not aligned
		-- with the format specified in ETSI TS 129 571 [43]
		-- The parameter n3gppaLocation should be used instead.
	trackingAreaIdentifier			[18] OCTET STRING (SIZE (5..6)) OPTIONAL,
		-- where: MCC+MNC = 3 octets, TAC (4G)   = 2 octets or
		-- TAC (5G) = 3 octets and without length indicator
	locationInformationSource	[19] UTF8String OPTIONAL,
	n3gppaLocation				[20] N3gppaLocation OPTIONAL
		-- format as specified in ETSI TS 129 571 [43]
}

NCGI ::= SEQUENCE
{
    pLMNID                      [1] PLMNID,
    nRCellID                    [2] NRCellID
N3gppaLocation  ::= SEQUENCE
{
	n3gppTai	[1]		OCTET STRING (SIZE (5..6))	OPTIONAL,
	n3IwfId		[2]		OCTET STRING (SIZE (5))		OPTIONAL,
		-- Composed of the PLMN-ID (3 octets) and the N3IWF ID (2 
		-- octets) according to ETSI TS 138 413 clause 9.3.1.57.
	ueIpv4Addr 	[3]		IPAddress					OPTIONAL,
	ueIpv6Addr 	[4]		IPAddress					OPTIONAL,
	portNumber	[5]		INTEGER						OPTIONAL,
	...
}

NRCellID ::= BIT STRING (SIZE(36))
-- TS 38.413 [23], clause 9.3.1.7

	{
		latitude	[1] UTF8String (SIZE(7..10)) OPTIONAL,
			-- format: XDDMMSS.SS
		longitude	[2] UTF8String (SIZE(8..11)) OPTIONAL,
			-- format: XDDDMMSS.SS
		mapDatum	[3] MapDatum OPTIONAL,
		azimuth		[4] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
		-- format: XDDMMSS.SS (on latitudes) or XDDDMMSS.SS (on longitudes)
		--		X			: N(orth), S(outh), E(ast), W(est)
		--		DD or DDD	: degrees (numeric characters)
		--		MM			: minutes (numeric characters)
		--		SS.SS		: seconds, the second part (.SS) is optional
		--		latitude (short form)		N502312
		--		longitude (long form)		E1122312.18
	utmCoordinates		[2] SEQUENCE
	{
		utm-Zone	[1] UTF8String (SIZE(3)) OPTIONAL,
		utm-East	[2] UTF8String (SIZE(6)) OPTIONAL,
		utm-North	[3] UTF8String (SIZE(7)) OPTIONAL,
			-- Universal Transverse Mercator
			-- example	utm-Zone	32U
			--			utm-East	439955
			--			utm-North	5540736
		mapDatum	[4] MapDatum OPTIONAL,
		azimuth		[5] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
	utmRefCoordinates	[3] SEQUENCE
	{
		utm-GridZone				[1] UTF8String (SIZE(2)) OPTIONAL,
			-- numerals from 1 to 60
		utm-GridBand				[2] UTF8String (SIZE(1)) OPTIONAL,
			-- character between C and X
		squareID					[3] UTF8String (SIZE(2)) OPTIONAL,
			-- characters from A to Z
		numericalLocationEasting	[4] UTF8String (SIZE(5)) OPTIONAL,
		numericalLocationNorthing	[5] UTF8String (SIZE(5)) OPTIONAL,
			-- Universal Transverse Mercator Reference = Military Grid Reference System (MGRS)
			-- example	utm-GridZone				32
			--			utm-GridBand				U
			--			squareID					PU
			--			numericalLocationEasting	9129
			--			mumericalLocationNorthing	4045
			-- In both panels, utm-GridBand and squareID the 'I' and 'O' characters are not used
			-- because of their similarity to the digits one and zero.
		mapDatum					[6] MapDatum OPTIONAL,
		azimuth						[7] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	},
	wGS84Coordinates	[4] OCTET STRING,
		-- format is as defined in 3GPP TS 03.32 [12]
	{
		latitudeDec		[1] UTF8String (SIZE(3..12)) OPTIONAL,
			-- format: XDD.nnnnnnnn
		longitudeDec	[2] UTF8String (SIZE(4..13)) OPTIONAL,
			-- format: XDDD.nnnnnnnn
		mapDatum		[3] MapDatum OPTIONAL,
		azimuth			[4] INTEGER (0..359) OPTIONAL,
			-- The azimuth is the bearing, relative to true north
		...
	}
		-- format: XDD.nnnnnnnn (on latitudes) or XDDD.nnnnnnnn (on longitudes)
		--		X			: N(orth), S(outh), E(ast), W(est)
		--		DD or DDD	: degrees (numeric characters)
		--		nnnnnnnn	: post decimal positions (numeric characters)
		--		latitude		N50.38666667
		--		longitude		E112.38671670
}

MapDatum ::= ENUMERATED
{
	wGS84(1),
		-- World Geodetic System 1984
	wGS72(2),
	eD50(3),
		-- European Datum 50
	rD(4),
		-- Rijks Driehoek (Netherlands)
	potsdamDatum(5),
	datumAustria(6),
	eTRS89(7),
		-- European Terrestrial Reference System 1989
	nAD27(8),
		-- North American Datum 1927
	oSGB36(9),
		-- Ordnance Survey of Great Britain
	oSNI52(10),
		-- Ordnance Survey of Northern Ireland
	tM65(11),
	iTM(12),
		-- Irish Transverse Mercator
	cH1903Plus(14)
		-- New Swiss reference system
UMTSLocation ::= CHOICE
{
	point					[1] GA-Point,
	pointWithUnCertainty	[2] GA-PointWithUnCertainty,
	polygon					[3] GA-Polygon,
	...
}

GeographicalCoordinates ::= SEQUENCE
{
	latitudeSign	[1] ENUMERATED
	{
	} OPTIONAL,
	latitude		[2] INTEGER (0..8388607) OPTIONAL,
	longitude		[3] INTEGER (-8388608..8388607) OPTIONAL,
	...,
	mapDatum		[4] MapDatum OPTIONAL,
	azimuth			[5] INTEGER (0..359) OPTIONAL
		-- The azimuth is the bearing, relative to true north
}

GA-Point ::= SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	...
}

GA-PointWithUnCertainty ::=SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	uncertaintyCode				[2] INTEGER (0..127)
}

maxNrOfPoints					INTEGER ::= 15

GA-Polygon ::= SEQUENCE (SIZE (1..maxNrOfPoints)) OF GA-Polygon-Elements

GA-Polygon-Elements ::= SEQUENCE
{
	geographicalCoordinates		[1] GeographicalCoordinates,
	...
}

ExtendedLocation ::= CHOICE
{
	spot			[1] Spot,
	circle			[2] Circle,
	region			[3] Region,
	route			[4] Route,
	...
}

Spot ::= CHOICE
{
	gsmLocation			[1] GSMLocation,
	postalLocation		[2] AddressInformation,
	...
}

Circle ::= SEQUENCE
{
	centre				[1] Spot,
	radius				[2] HorizontalExtent,
	...
}

Region ::= SEQUENCE
{
	cornerMarks			[1] SEQUENCE OF Spot,
	...
}

Route ::= SEQUENCE
{
	routeMarks			[1] SEQUENCE OF Spot,
	width				[2] HorizontalExtent OPTIONAL,
	...
}

MaritimeTransport ::= SEQUENCE
{
	shipName			[1] UTF8String OPTIONAL,
		-- Registered ship name
	imoNumber			[2] IA5String (SIZE(10)) OPTIONAL,
		-- International Maritime Organization (IMO) ship number:
		-- IMO prefix with 7-digit number, e.g. IMO7812345
	...
}

AirTransport ::= SEQUENCE
{
	iATAAirlineCode			[1] IA5String (SIZE(2)) OPTIONAL,
		-- Two-character designation code assigned to the airline
		-- by the International Air Transport Association (IATA)
	iCAOOperatorCode		[2] IA5String (SIZE(3)) OPTIONAL,
		-- Three-letter designation code assigned to the aircraft operator agency
		-- by the International Civil Aviation Organization (ICAO).
		-- The iCAOOperatorCode should be used only when the aircraft operator does not have
		-- an assigned IATA airline code.
	aircraftRegistration	[3] UTF8String OPTIONAL,
		-- Aircraft identification as in the aircraft's certificate of registration
		-- e.g. G-IABC, N99999, F-OAAA
	flightNumber			[4] IA5String OPTIONAL,
		-- Flight number assigned by the airline operating the aircraft
	...
}


-- ===================
-- General definitions
-- ===================

PartyNumber ::= UTF8String
	-- E.164 address of the party in international format
	msgSubscriber			[1] MsgSubscriber,
	msgServiceUsage			[2] MsgServiceUsage,
	...,
	msgBillingDetails		[3] MsgBillingDetails
}

-- ======================================
-- Definitions of Message Subscriber Data
-- ======================================

MsgSubscriber ::= SEQUENCE
	-- Generic information on a service subscriber, supplemented with information specific to
	-- asynchronous message services
{
	validity		[1] TimeSpan OPTIONAL,
	subscriberID		[2] MsgSubscriberID OPTIONAL,
	msgStores		[3] SEQUENCE OF MsgStore OPTIONAL,
		-- message stores allocated to this subscriber
	subscriber		[4] GenericSubscriberInfo OPTIONAL,
	paymentDetails		[5] PaymentDetails OPTIONAL
MsgSubscriberID ::= OCTET STRING
	-- Unique identifier for this subscriber, e.g. account number

MsgStore ::= SEQUENCE
	-- Location into which messages are temporarily stored. All asynchronous message services by
	-- definition require some message store. E.g. in the case of e-mail this will be a mailbox
{
	validity			[1] TimeSpan OPTIONAL,
	msgStoreID			[2] MsgStoreID OPTIONAL,
	aliases				[3] SEQUENCE OF MsgAddress OPTIONAL,
		-- The complete list of all addresses that get delivered into this message store.
	providerID			[4] MsgProviderID OPTIONAL,
	...,
	msgForwardingAddresses		[5] SEQUENCE OF MsgAddress OPTIONAL,
	msgStoreSubscriberRelatedIDs	[6] SEQUENCE OF ContactDetails OPTIONAL
	-- Unique identifier of the message store. Since not all IDs will necessarily be human
	-- readable, a generic byte string is used
	-- Messaging address, an address to which messages can be sent. In the case of Internet e-mail
	-- this will be an RFC822-style address
	-- NOTE - as of v1.2.1, this field has changed from OCTET STRING to UTF8String
	-- Unique identifier for a service provider, e.g. company name
	-- NOTE - as of v1.2.1, this field has changed from OCTET STRING to UTF8String

-- ====================================
-- Definitions of Message Service Usage
-- ====================================

MsgServiceUsage ::= CHOICE
	-- Choice of different types of activities
	-- Manipulation of stored address books is outside the scope
{
	msgTransmission		[1] MsgTransmission,
	msgStoreOperation	[2] MsgStoreOperation,
	...
}

MsgTransmission ::= SEQUENCE
	-- Sending of an outgoing message, or reception of an incoming message
{
	dateTime				[1] GeneralizedTime OPTIONAL,
	subscriberID			[2] MsgSubscriberID OPTIONAL,
	senderAddress			[3] MsgAddress OPTIONAL,
	recipients				[4] SEQUENCE OF MsgAddress OPTIONAL,
	msgStores				[5] SEQUENCE OF MsgStoreID OPTIONAL,
		-- List of all local msgStores that received a copy of the message
		-- For transit messages this field is not used
	deliveryStatus			[6] ENUMERATED
	{
		unknown(0),
		succeeded(1),
			-- Delivery might still fail at a subsequent mail server
		failed(2),
			-- E.g. when mailbox quota exceeded (mailbox full)
		retried(3),
			-- Deferred and retried at a later time
		...
	} OPTIONAL,
	clientID				[8] IPAddress OPTIONAL,
	serverID				[9] IPAddress OPTIONAL,
	...,
	messageID				[10] MessageID OPTIONAL,
	sourceServerName		[11] UTF8String OPTIONAL,
	destinationServerName	[12] UTF8String OPTIONAL
}

MsgStoreOperation ::= SEQUENCE
	-- Manipulation of a message store.
{
	dateTime		[1] GeneralizedTime OPTIONAL,
	subscriberID	[2] MsgSubscriberID OPTIONAL,
	msgStore		[3] MsgStoreID OPTIONAL,
	operation		[4] ENUMERATED
	{
		connect(0),
			-- Successful authorization for access to msgStore
		disconnect(1),
		retrieveMsg(2),
			-- Viewing msg using a webmail client is also considered retrieval
		partialretrieveMsg(3),
			-- E.g. the TOP command in POP3
		deleteMsg(4),
		addMsg(5),
			-- E.g. the APPEND command in IMAP
	} OPTIONAL,
	senderAddress	[5] MsgAddress OPTIONAL,
		-- For Internet email, use the From address in the mail headers
	recipients		[6] SEQUENCE OF MsgAddress OPTIONAL,
		-- For Internet email, use the To, CC, and BCC addresses in the mail headers
	protocol		[7] ENUMERATED
	{
		pop(0),
		imap(1),
	} OPTIONAL,
	clientID		[8] IPAddress OPTIONAL,
	serverID		[9] IPAddress OPTIONAL,
	...,
	messageID		[10] MessageID OPTIONAL
MessageID ::= UTF8String
	-- Unique identifier for this message, e.g RFC 822 header

-- ==============================
-- Definitions of Billing Data
-- ==============================

MsgBillingDetails ::= SEQUENCE
{
	subscriberID				[1] MsgSubscriberID OPTIONAL,
	serviceID				[2] UTF8String OPTIONAL,
	billingAddress				[3] ContactDetails OPTIONAL,
	billingIdentifier			[4] MsgBillingIdentifier OPTIONAL,
	billingRecords				[5] SEQUENCE OF MsgBillingRecords OPTIONAL,
	nationalMsgBillingDetails		[6] NationalMsgBillingDetails OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	...,
	copyOfBill				[7] SEQUENCE OF File OPTIONAL
NationalMsgBillingDetails ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

MsgBillingIdentifier ::= OCTET STRING
	-- Used to correlate billing information
	-- useful if the bill-payer is not the subscriber, e.g. company mobiles

MsgBillingRecords ::= SEQUENCE
{
	time						[1] GeneralizedTime OPTIONAL,
	place						[2] UTF8String OPTIONAL,
	amount						[3] REAL OPTIONAL,
	currency					[4] UTF8String (SIZE(3)) OPTIONAL,
		-- as per ISO 4217 [5]
	method						[5] UTF8String OPTIONAL,
	nationalMsgBillingRecords	[6] NationalMsgBillingRecords OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	...,
	msgTransactionID			[7] UTF8String OPTIONAL,
		-- Unique reference for this transaction/billing record
		-- Details to be defined on a national basis
	mgsTransactionStatus		[8] UTF8String OPTIONAL
		-- Status of the transaction (i.e. "declined", "succeeded" etc.)
		-- Details to be defined on a national bases
}

NationalMsgBillingRecords ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}
MultimediaRecord ::= CHOICE
{
	multimediaSubscriber		[1] MultimediaSubscriber,
	multimediaBillingDetails	[2] MultimediaBillingDetails,
	multimediaServiceUsage		[3] MultimediaServiceUsage,
	...,
	multimediaDevice		[4] MultimediaDevice
}

-- ==============================
-- Definitions of Subscriber Data
-- ==============================

MultimediaSubscriber ::= SEQUENCE
{
	subscriberID						[1] MultimediaSubscriberID OPTIONAL,
		-- unique identifier for this subscriber, e.g. account number
	genericSubscriberInfo				[2] GenericSubscriberInfo OPTIONAL,
		-- generic personal information about this subscriber
	multimediaSubscriberInfo			[3] MultimediaSubscriberInfo OPTIONAL,
		-- service-specific information about this subscriber
	subscribedMultimediaServices		[4] SEQUENCE OF SubscribedMultimediaServices OPTIONAL,
		-- a subscriber (or account) may have more than one service listed against them
	multimediaServiceRegistrationInfo	[5] MultimediaServiceRegistrationInfo OPTIONAL
}

MultimediaSubscriberInfo ::= SEQUENCE
{
	nationalMultimediaSubscriberInfo	[1] NationalMultimediaSubscriberInfo OPTIONAL,
	...
}

MultimediaSubscriberID ::= UTF8String
	-- unique identifier for this subscriber, e.g. account number

MultimediaServiceRegistrationInfo ::= SEQUENCE
{
	emailAddress				[1] UTF8String OPTIONAL,
	-- subscriber email address in RFC2822 format
	languageAtRegistration		[2] UTF8String OPTIONAL,
	-- subscriber language as in ISO 639
	accountCreationTime			[3] GeneralizedTime OPTIONAL, -- start time of account
	accountCreationIP			[4] IPAddress OPTIONAL, -- subscriber IP at creation
	accountCreationCountry		[5] UTF8String (SIZE (2)) OPTIONAL,
	-- subscriber country as specified in ISO 3166-1
	clientPlatformType			[6] UTF8String OPTIONAL, -- subscriber platform
	clientVersion				[7] UTF8String OPTIONAL, -- subscriber platform version
	...
}

SubscribedMultimediaServices ::= SEQUENCE
{
	serviceID					[1] UTF8String OPTIONAL,
		-- Unique identifier for this service within the operator
	providerID					[2] UTF8String OPTIONAL,
		-- Unique identifier for the service provider
	timeSpan					[3] TimeSpan OPTIONAL,
		-- Start and end data, if applicable, of the subscription
	registeredIdentifiers				[4] SEQUENCE OF PartyIdentity OPTIONAL,
		-- The set of identifiers registered for this service
	registeredICCID					[5] UTF8String OPTIONAL,
	serviceType					[6] MultimediaServiceType OPTIONAL,
	installationAddress				[7] AddressInformation OPTIONAL,
		-- installation address, if different from the registered address
	connectionDate					[8] GeneralizedTime OPTIONAL,
		-- Date the subscriber was actually connected
		-- (May differ from the start of subscription)
	iMSI						[9] IMSI OPTIONAL,
	carrierPreselect				[10] BOOLEAN OPTIONAL,
	lineStatus					[11] UTF8String OPTIONAL,
		-- CSP-specific description of current line status,
		-- e.g. "Active", "Ceased", etc.
	nationalMultimediaServices			[12] NationalMultimediaServices OPTIONAL,
	paymentDetails					[13] PaymentDetails OPTIONAL,
	subscriptionType				[14] SubscriptionType OPTIONAL,
		-- Describes the nature of the subscription
	deliveryAddress					[15] AddressInformation OPTIONAL,
	resellerAddress					[16] AddressInformation OPTIONAL,
	otherAddresses					[17] SEQUENCE OF OtherAddress OPTIONAL,
	multimediaServiceType				[18] UTF8String OPTIONAL,
		-- Service name used by the service provider which may be proprietary
	orderTime					[19] GeneralizedTime OPTIONAL,
		-- Time when the subscribed service was ordered by the user
	iMEIs						[20] SEQUENCE OF IMEI OPTIONAL,
	registeredICCIDs				[21] SEQUENCE OF ICCIDInfo OPTIONAL,
	privateUserIdentities				[22] SEQUENCE OF IMPI OPTIONAL,
	allocatedDeviceIDs				[23] SEQUENCE OF MultimediaDeviceID OPTIONAL,
	paymentTransactions			[24] SEQUENCE OF MultimediaBillingRecords OPTIONAL,
	sUPI						[25] SUPI OPTIONAL,
	gPSI						[26] GPSI OPTIONAL
}

MultimediaServiceType ::= ENUMERATED
{
	private(0),
	privatePABX(1),
	publicPayphone(2),
	geographicalfixed(3),
	geographicalindependent(4),
	...
}

IMPI ::= UTF8String
	-- Private User Identity of the IP Multimedia Subsystem subscription

-- =================================
-- Definitions of Service Usage Data
-- =================================

MultimediaServiceUsage ::= SEQUENCE
{
	partyInformation				[1] SEQUENCE OF MultimediaPartyInformation OPTIONAL,
		-- This parameter provides the concerned party (Originating, Terminating or
		-- forwarded party), the identity(ies) of the party and all the information
		-- provided by the party
	communicationTime				[2] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	reasonCause					[3] INTEGER OPTIONAL,
		-- cause code for call termination e.g. SIP Reason code
	communicationType				[4] MultimediaCommunicationType OPTIONAL,
	bearerService					[5] MultimediaBearerService OPTIONAL,
	qualityOfService				[6] QualityOfService OPTIONAL,
	ringDuration					[7] INTEGER OPTIONAL,
	callID						[8] MultimediaCallID OPTIONAL,
	originalCallID					[9] MultimediaCallID OPTIONAL,
		bNotReached(1),
		bAlert(2),
		bAnswered(3),
		...
	} OPTIONAL,
	answerTime					[11] GeneralizedTime OPTIONAL,
	contentType					[12] SEQUENCE OF UTF8String OPTIONAL,
	mediaComponents					[13] SEQUENCE OF MediaComponent OPTIONAL,
	imsInformation					[14] ImsInformation OPTIONAL,
	nationalMultimediaServiceUsage			[15] NationalMultimediaServiceUsage OPTIONAL,
	serviceID					[16] UTF8String OPTIONAL,
	providerID					[17] UTF8String OPTIONAL,
	cdrNumber					[18] UTF8String OPTIONAL, -- as per CSP defined format
	clientIP					[19] IPAddress OPTIONAL,
	relayIP						[20] IPAddress OPTIONAL,
	vmLength					[21] INTEGER OPTIONAL, -- number of seconds
	reason						[22] UTF8String OPTIONAL,
	smsInformation					[23] SmsInformation OPTIONAL,
	mmsInformation					[24] MmsInformation OPTIONAL
	partyRole						[1] MultimediaPartyRole OPTIONAL,
	partyIdentity						[2] PartyIdentity OPTIONAL,
	subscriberID						[3] MultimediaSubscriberID OPTIONAL,
	communicationTime					[4] TimeSpan OPTIONAL,
		-- Time and duration of the communication
	natureOfAddress						[7] UTF8String OPTIONAL,
		-- Nature of address indicator, e.g. "National", "International"
	uRI							[8] UTF8String OPTIONAL,
	partyNumber						[9] PartyNumber OPTIONAL,
	naAssignedAddress					[10] NAAssignedAddress OPTIONAL,
	forwardedTransferredIdentifier				[11] PartyIdentity OPTIONAL,
	terminatingTransferredIdentifier			[12] PartyIdentity OPTIONAL,
	nationalMultimediaPartyInformation			[13] NationalMultimediaPartyInformation OPTIONAL,
	userAgent						[14] UTF8String OPTIONAL,
		-- e.g. SIP User-Agent field (see RFC 3261 [26])
	octetsUploaded						[15] INTEGER OPTIONAL,
	octetsDownloaded					[16] INTEGER OPTIONAL,
	accessNetworkInformation				[17] SEQUENCE OF AccessNetworkInfo OPTIONAL,
	privateUserIdentity					[18] IMPI OPTIONAL,
	iMEI							[19] IMEI OPTIONAL
}

MultimediaCallID	::=	UTF8String

MultimediaCommunicationType	::=	ENUMERATED
{
	multimediaFixed(0),
	multimediaWireless(1),
	multimediaNetworkIndependent(2),
	...,
	telephonyFixed(3),
	telephonyWireless(4),
	sMS(5),
	mMS(6)
}

MultimediaPartyRole	::=	ENUMERATED
{
	calling(0),
	called(1),
	calledAssertedIdentity(2),
	calledApplicationServer(3),
	originalCalled(4),
	redirecting(5),
	multimediaNetworkIndependent(6),
	directory(7),
	broadcastReceiver(8),
	broadcastSender(9),
	originalCalling(10),
	forwarded-to-Party(11),
	connected(12),
	userProvidedCalling(13),
	roaming(14),
	translated(15),
	singlePersonalNumber(16),
	smsOriginator(17),
	smsRecipient(18),
	smsOriginatorTrn(19),
	smsRecipientTrn(20),
	mmsOriginator(21),
	mmsRecipient(22),
	mmsOriginatorTrn(23),
	mmsRecipientTrn(24)
}

MultimediaBearerService	::=	ENUMERATED
{
	speech(0),
	data(1),
	fax(2),
	video(3),
	emergencyCall(4),
	...
}

ImsInformation	::=	SEQUENCE
{
	service				[1] ENUMERATED
	{
		session(1),
		message(2),
		refer(3),
		...
	} OPTIONAL,
	roleOfNode			[2] ENUMERATED
	{
		originating(1),
		terminating(2),
		proxy(3),
		b2bua(4),
		...
	} OPTIONAL,
	serviceInfo			[4] SEQUENCE OF ImsServiceInfo OPTIONAL,
	...
}

ImsServiceInfo ::= SEQUENCE
{
	serviceData		[1] OCTET STRING OPTIONAL,
	serviceType		[2] INTEGER OPTIONAL,
}

MediaComponent ::= SEQUENCE
{
	time								[1] GeneralizedTime OPTIONAL,
	mediaName							[2] UTF8String OPTIONAL,
	mediaDescription					[3] UTF8String OPTIONAL,
	mediaInitiator						[4] PartyIdentity OPTIONAL,
	accessCorrelationID					[5] OCTET STRING OPTIONAL,
	nationalMultimediaMediaComponent	[6] NationalMultimediaMediaComponent OPTIONAL,
	...
}

AccessNetworkInfo ::= CHOICE
{
	paniHeaderInfo		[1] PaniHeaderInfo,
	...
}

PaniHeaderInfo	::= SEQUENCE
{
	accessType 		[1] OCTET STRING OPTIONAL,
    -- ASCII string '3GPP-E-UTRAN-TDD', ' IEEE-802.11'... : see ETSI TS 124 229 [xx] clause 7.2A.4 
    accessClass  		[2] OCTET STRING OPTIONAL,
    -- ASCII string '3GPP-UTRAN', '3GPP-E-UTRAN',... : see ETSI TS 124 229 [xx] clause 7.2A.4
    networkProvided	[3] NULL OPTIONAL,
    -- present if provided by the network
    paniLocation		[4] Location OPTIONAL,
	-- Cell-ID and location information if available
	paniTime			[5] GeneralizedTime OPTIONAL,
	-- indicates the time when the location was reported at the start of the session, 
	-- or during or at the end of the session if the location is retained for the event
    ...,
	paniHeaderContent    [6] OCTET STRING OPTIONAL
		-- Complete content of the P-Access-Network-Info header field
-- ==============================
-- Definitions of Billing Data
-- ==============================

MultimediaBillingDetails ::= SEQUENCE
{
	subscriberID						[1] MultimediaSubscriberID OPTIONAL,
	serviceID						[2] UTF8String OPTIONAL,
	billingAddress						[3] ContactDetails OPTIONAL,
	billingIdentifier					[4] MultimediaBillingIdentifier OPTIONAL,
	billingRecords						[5] SEQUENCE OF MultimediaBillingRecords OPTIONAL,
	nationalMultimediaBillingDetails			[6] NationalMultimediaBillingDetails OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	multimediaBillingAddress				[7] MultimediaBillingAddress OPTIONAL,
	copyOfBill						[8] SEQUENCE OF File OPTIONAL
MultimediaBillingAddress ::= SEQUENCE
{
	addressSuppliedTime			[1] GeneralizedTime OPTIONAL,
	name						[2] PersonName OPTIONAL,
	address						[3] AddressInformation  OPTIONAL,
	...
}

NationalMultimediaBillingDetails ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

MultimediaBillingIdentifier ::= OCTET STRING
	-- Used to correlate billing information
	-- useful if the bill-payer is not the subscriber, e.g. company mobiles

MultimediaBillingRecords ::= SEQUENCE
{
	time								[1] GeneralizedTime OPTIONAL,
	place								[2] UTF8String OPTIONAL,
	amount								[3] REAL OPTIONAL,
	currency							[4] UTF8String (SIZE(3)) OPTIONAL,
		-- as per ISO 4217 [5]
	method								[5] UTF8String OPTIONAL,
	nationalMultimediaBillingRecords	[6] NationalMultimediaBillingRecords OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	multimediaTransactionID				[7] UTF8String OPTIONAL,
		-- Unique reference for this transaction/billing record
		-- Details to be defined on a national basis
	multimediaTransactionStatus			[8] UTF8String OPTIONAL
		-- Status of the transaction (i.e. "declined", "succeeded", etc.)
		-- Details to be defined on a national bases
}

NationalMultimediaBillingRecords ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

-- ===================
-- General definitions
-- ===================

PartyIdentity ::= UTF8String
	-- E.164 address of the party in international format, or
	-- SIP URI or TEL URI representing E.164

QualityOfService ::= UTF8String
	-- Free text description of the invoked quality of service

NationalMultimediaSubscriberInfo ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaServices ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaServiceUsage ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaPartyInformation ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

NationalMultimediaMediaComponent ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}
-- =======================
-- Device Data definitions
-- =======================

MultimediaDevice ::= SEQUENCE
{
	deviceIDType					[1] ENUMERATED
		-- Type of identifier for telephony device
	{
		unknown(0),
		imei(1),
		macAddress(2),
		...
	} OPTIONAL,
	multimediaDeviceID				[2] MultimediaDeviceID OPTIONAL,
		-- Unique identifier for this device according to type of identifier
	subscriberID					[3] MultimediaSubscriberID OPTIONAL,
		-- Identifier for a known user of this equipment.
		-- Usage of this parameter is subject to national legislation.
	nationalMultimediaDevice		[4] NationalMultimediaDevice OPTIONAL,
		-- To be defined on a national basis
		-- Only to be used in case the present document cannot fulfil the national requirements
	...
}

NationalMultimediaDevice ::= SEQUENCE
{
	countryCode		[1] UTF8String (SIZE (2)),
		-- see comment in NationalRequestParameters
	...
}

MultimediaDeviceID ::= OCTET STRING
	-- A unique identifier for the multimedia device. For example, the IMEI number
	-- of a mobile handset

NetworkAccessRecord::= CHOICE
{
	naSubscriber		[1] NASubscriber,
	naServiceUsage		[2] NAServiceUsage,
	naDevice			[3] NADevice,
	naNetworkElement	[4] NANwElement,
	naBillingDetails	[5] NABillingDetails,
	...
}

-- =============================================
-- Definitions of Network Access Subscriber Data
-- =============================================

NAProviderID ::= UTF8String

NAAuthID ::= UTF8String

NaSubscriberID ::= UTF8String

NASubscriber ::= SEQUENCE
	-- Generic information on a service subscriber, supplemented with information specific to
	-- network access services.
{
	validity			[1] TimeSpan OPTIONAL,
	subscriberID		[2] NaSubscriberID OPTIONAL,
		-- Unique identifier for this subscriber, e.g. account number
	naSubscriptions		[3] SEQUENCE OF NAServiceSubscription OPTIONAL,
		-- List of all known services subscribed to by this user
	allocatedDeviceIDs	[4] SEQUENCE OF NADeviceId OPTIONAL,
		-- List of all known devices allocated to this user.
	subscriber			[5] GenericSubscriberInfo OPTIONAL,
		-- Name, address and other generic subscriber information
	...,
	allocatedDevices	[6] SEQUENCE OF NADevice OPTIONAL
		-- If present, contains device details for all elements from allocatedDeviceIDs
}

NAServiceSubscription ::= SEQUENCE
	-- Description of the subscription to a Network Access service
{
	validity				[1] TimeSpan OPTIONAL,
	naServiceID				[2] UTF8String OPTIONAL,
		-- Identifier for the service, e.g. account plan name.
	naProviderID				[3] NAProviderID OPTIONAL,
		-- Unique identifier for the provider of the service, e.g. company name
	naAuthID				[4] NAAuthID OPTIONAL,
		-- Unique identifier for this subscription, e.g. logon name
	options					[5] UTF8String OPTIONAL,
		-- Human readable text with restrictions or options to the subscription
	installationAddress			[6] AddressInformation OPTIONAL,
	fixIpAddress				[7] IPAddress OPTIONAL,
	allocatedDeviceIDs			[9] SEQUENCE OF NADeviceId OPTIONAL,
	naServiceStatus				[10] UTF8String OPTIONAL,
		-- CSP-specific description of current service status, e.g. "Active", "Ceased", etc.
	registeredICCID				[11] UTF8String OPTIONAL,
	nationalNASubscription			[12] NationalNASubscription OPTIONAL,
	paymentDetails				[13] PaymentDetails OPTIONAL,
	additionalIPAddresses			[14] SEQUENCE OF IPAddressSetOrRangeOrMask OPTIONAL,
	subscriptionType			[15] SubscriptionType OPTIONAL,
		-- Describes the nature of the subscription
	deliveryAddress				[16] AddressInformation OPTIONAL,
	resellerAddress				[17] AddressInformation OPTIONAL,
	otherAddresses				[18] SEQUENCE OF OtherAddress OPTIONAL,
	allocatedDevices			[19] SEQUENCE OF NADevice OPTIONAL,
		-- If present, contains device details for all elements from allocatedDeviceIDs
	mSISDNs					[20] SEQUENCE OF PartyNumber OPTIONAL,
	registeredICCIDs			[21] SEQUENCE OF ICCIDInfo OPTIONAL,
	paymentTransactions			[22] SEQUENCE OF BillingRecords OPTIONAL,
	sUPI					[23] SUPI OPTIONAL,
	gPSI					[24] GPSI OPTIONAL
NationalNASubscription ::= SEQUENCE
	-- Description of the subscription to a Network Access service
{
	countryCode				[1] UTF8String (SIZE(2)),
		-- see comment in NationalRequestParameters
	...
}

-- ===========================================
-- Definitions of Network Access Service Usage
-- ===========================================

NAServiceUsage ::= SEQUENCE
{
	naAccessTime					[1] GeneralizedTime OPTIONAL,
		-- Time of connection to the NAS
	naAuthID					[2] NAAuthID OPTIONAL,
		-- Username used to obtain network access
	nwAccessType					[3] NwAccessType OPTIONAL,
		-- Type of network access attempted. If not undefined(0), this should be one of the types
		-- supported by the NAS (identified below by naNwElementID)
	{
		unknown(0),
		succeeded(1),
			-- Authentication OK and access granted
		failed(2),
			-- Authentication failure (wrong credentials or time out)
		rejected(3),
			-- Rejected by the CSP (e.g. usage limits exceeded)
		...
	} OPTIONAL,
	interval					[5] TimeSpan OPTIONAL,
		-- Start time and end time (duration) of network access.
	naDeviceId					[6] NADeviceId OPTIONAL,
		-- Device used to access the service
	naNwElementID					[7] NANwElementID OPTIONAL,
		-- Network element (NAS) onto which the naDevice is connected
	naAssignedAddress				[8] SEQUENCE OF NAAssignedAddress OPTIONAL,
		-- IP address assigned by the network access service. May be fixed or dynamic
	location					[9] Location OPTIONAL,
		-- Location of the access (for e.g. GPRS handsets)
	dialUpInformation				[10] DialUpInformation OPTIONAL,
	gprsInformation					[11] GprsInformation OPTIONAL,
	octetsDownloaded				[12] INTEGER OPTIONAL,
	octetsUploaded					[13] INTEGER OPTIONAL,
	endReason					[14] NAEndReason OPTIONAL,
	subscriberID					[15] NaSubscriberID OPTIONAL,
		-- Identifier for a known user of this network access
	ePSInformation					[16] EPSInformation OPTIONAL,
	wifiInformation					[17] WifiInformation OPTIONAL,
	addressTranslationRecords			[18] SEQUENCE OF AddressTranslationRecord OPTIONAL,
		-- contains extended information about the NAT or PAT operations carried out within this
		-- service usage session
	naDevice					[19] NADevice OPTIONAL,
		-- If present, contains the device details for the device referenced in naDeviceID
	additionalLocations				[20] SEQUENCE OF TimedLocation OPTIONAL,
		-- List of additional locations and optional access time during the network access service
		-- usage
	sNSSAI						[21] OCTET STRING (SIZE(4)) OPTIONAL,
	notifyUri					[22] OCTET STRING (SIZE(3..8)) OPTIONAL,
	fiveGSInformation				[23] FIVEGSInformation OPTIONAL
TimedLocation	::= SEQUENCE
{
	location			[1]	Location,
	naAccessTime		[2] GeneralizedTime OPTIONAL,
	...
}
	bSSID								[1] OCTET STRING (SIZE (6)) OPTIONAL,
		-- The Basic Service Set Identification for the connection.
		-- This is also the MAC address of the access point (the present document assumes
		-- that records are for infrastructure mode, not ad-hoc mode).
		-- The MAC address of the user is given in the naDeviceID in the structure (one level up)
	sSID								[2] UTF8String OPTIONAL,
		-- The human-readable Service Set Identifier
		-- It should be noted that this is typically only available on the air interface and so
		-- is not likely to be logged by CSPs (though may be recorded at a more local level).
		-- Therefore requesting organizations should not expect this to be populated typically.
		-- It is not guaranteed to be unique.
	username							[3] UTF8String OPTIONAL,
	locationOfAccessPoint				[4] Location OPTIONAL,
	-- Location of the Access Point as lat/long, grid reference or postal address.
	-- Requesting organizations should be aware that Access Points can be moved, sometimes
	-- without the knowledge of the CSP
	authenticationType					[5] AuthenticationType OPTIONAL,
	additionalAuthenticationInformation	[6] AdditionalAuthenticationInformation OPTIONAL,
	accessPointIPAddress				[7] IPAddress  OPTIONAL,
	accessPointAdditionalDescriptions	[8] SEQUENCE OF UTF8String OPTIONAL,
			-- Informal description of location, category or type of access point,
			-- or a name of the network to which the access point belongs.
	accessPointAdditionalProviders		[9] SEQUENCE OF UTF8String OPTIONAL
			-- For WiFi, there may be other parties involved in hosting or owning the
			-- Access Points, e.g. access point provider or partner providers
}

AuthenticationType ::= ENUMERATED
{
	authenticationBySMS(1),
		-- Used if authentication arranged through a code sent to mobile
		-- additionalAuthenticationInformation shall contain the phone number
	authenticationByCookie(2),
		-- If authentication was granted on the basis of a cookie left from a previous visit to a
		-- site.
		-- No other mandatory addtionalAuthenticationInformation
		-- If authentication was granted because the MAC address of the UE was recognised due
		-- to a previous visit.
		-- additionalAuthenticationInformation shall contain the MAC Address unless it is already
		-- populated as NADeviceID in this record.
	authenticationByEAPSIM(4),
		-- If authenticated by EAP SIM see TS 33.234 [36]
		-- additionalAuthenticationInformation shall contain the IMSI
		-- Other varieties of EAP could be added here later, together with any extra information
		-- they could provide.
	authenticationByUsernameAndPassword(5),
		-- additionalAuthenticationInformation should contain username and password if appropriate
	authenticationByPaymentOrVoucher(6),
		-- additionalAuthenticationInformation should contain Voucher or Payment details
		-- if appropriate.
	...
}

AdditionalAuthenticationInformation ::= SEQUENCE
{
	phoneNumber			[1] PartyNumber OPTIONAL,
		-- e.g. number to which an SMS was sent
	mACAddress			[2] OCTET STRING (SIZE (6)) OPTIONAL,
	iMSI				[3] IMSI OPTIONAL,
	username			[4] UTF8String OPTIONAL,
			-- Names supplied are unlikely to be verified
	password			[5] UTF8String OPTIONAL,
			-- Only to be populated if it is both appropriate and available
	paymentReference	[6] UTF8String OPTIONAL,
		-- For example, the number of a voucher that was used in authentication
	...
}

AddressTranslationRecord ::= SEQUENCE
{
	validity							[1] TimeSpan OPTIONAL,
		-- time at which the address translation started and/or ended
	privateIPAddress					[2] IPAddress OPTIONAL,
	privatePort							[3] INTEGER OPTIONAL,
		-- the private port of the host
	publicIPAddress						[4] IPAddress OPTIONAL,
		-- the translated IP of the host, i.e. the address known by the remote host
	publicPort							[5] AddressTranslationPortAssignment OPTIONAL,
		-- the translated port(s) of the host, i.e. the port(s) known by the remote host, if
		-- applicable
	destinationIPAddress				[6] IPAddress OPTIONAL,
		-- the IP address of the remote host
	destinationPort						[7] INTEGER OPTIONAL,
		-- the port of the remote host
	connectionType						[8] ENUMERATED
	{
		...
	} OPTIONAL,
	...
}

AddressTranslationPortAssignment ::= CHOICE
{
	singlePort						[1] INTEGER,
		-- only one port is assigned to the host, that port number is specified here
	portRange						[2] SEQUENCE OF PortRange,
		-- if a range of translated ports is assigned to the host, specify it here
	...
}

PortRange ::= SEQUENCE
{
	-- The range given is inclusive of both ends
	lowerBound		[1] INTEGER OPTIONAL,
	upperBound		[2] INTEGER OPTIONAL,
	...
}

NAEndReason ::= ENUMERATED
{
	unknownReason(0),
	timeout(1),
	userDisconnect(2),
		-- e.g. user logs off
	networkDisconnect(3),
		-- e.g. user's time/credits have been used up
}

NwAccessType ::= ENUMERATED
{
	undefined(0),
	dialUp(1),
		-- DialUp access
	xDSL(2),
		-- DSL access
	cableModem(3),
		-- Cable access
	lAN(4),
		-- LAN access
		-- Wireless LAN access (e.g. hotspot)
	wimax(6),
	mobilePacketData(7),
		-- Network access over GSM/3GPP GPRS, UMTS, etc.
	diallingNumber		[1] PartyNumber OPTIONAL,
		-- Telephone number used for dial-up access
	dialledNumber		[2] PartyNumber OPTIONAL,
	callback			[3] PartyNumber OPTIONAL,
		-- Call back number used for dial-up access
	...
}

GprsInformation ::= SEQUENCE
{
	iMSI					[1] IMSI OPTIONAL,
	mSISDN					[2] PartyNumber OPTIONAL,
	sgsnAddress				[3] SEQUENCE OF IPAddress OPTIONAL,
	ggsnAddress				[4] IPAddress OPTIONAL,
	pDP-address-allocated	[5] IPAddress OPTIONAL,
	aPN						[6] UTF8String OPTIONAL,
	pDP-type				[7] OCTET STRING (SIZE(2)) OPTIONAL,
		-- format as per TS 101 671 [6]
	gPRSEvent				[8] GPRSEvent OPTIONAL
		-- format as per 3GPP TS 33.108 [11]
	-- Tag [9] was used in the past and shall not be reused.
{
	pDPContextActivation(1),
	pDPContextDeactivation(4),
	gPRSAttach(5),
	gPRSDetach(6),
	locationInfoUpdate(10),
		-- sMS ommited from 3GPP TS 33.108 [11]
	pDPContextModification(11),
	servingSystem(12),
	iMSIUnauthenticatedFlag	[2] IMSIUnauthenticatedFlag OPTIONAL,
	mSISDN						[3] PartyNumber OPTIONAL,
	iMEISV						[4] IMEI OPTIONAL,
	s-GWAddress					[5] IPAddress OPTIONAL,
	p-GWAddress					[6] IPAddress OPTIONAL,
	p-GWPLMNIdentifier				[7] P-GWPLMN-ID OPTIONAL,
	aPNNetworkID					[8] AccessPointNameNI OPTIONAL,
	pDP-PDNType					[9] OCTET STRING (SIZE (1))OPTIONAL,
		-- PDN/PDP Type number as defined in ETSI TS 129 274 [32] clause 8.34
	pDP-PDNAddress					[10] IPAddress OPTIONAL,
		-- IP address allocated to the PDP context / PDN connection
		-- i.e. IPv4 address when PDP/PDN Type is IPv4 or IPv6 prefix
		-- when PDP/PDN Type is IPv6 or IPv4v6.
	pDP-PDNAddressExtension				[11] IPAddress OPTIONAL,
		-- IPv4 address of the served IMSI when PDP/PDN type is IPv4v6
	dynamicAddressFlag				[12] DynamicAddressFlag OPTIONAL,
	dynamicAddressFlagExt				[13] DynamicAddressFlagExt OPTIONAL,
	rATType						[14] INTEGER (0..255) OPTIONAL,
		-- RAT Type coding according to ETSI TS 129 274 [32] clause 8.17
		-- NOTE - as of v1.23.1 of the present document, this field has changed to optional
	ePSEvent					[15] EPSEvent OPTIONAL,
IMSIUnauthenticatedFlag ::= BOOLEAN
	-- TRUE if unauthenticated IMSI vs. FALSE for authenticated IMSI

P-GWPLMN-ID ::= OCTET STRING (SIZE (3))
	-- This is a copy from the Tracking Area Identity (TAI) IE
	-- specified in TS 29.274 [32] clause 8.21.4:
	--	Bits   8  7  6  5  4  3  2  1
	--		1st OCTET MCC digit 2	MCC digit 1
	--		2nd OCTET MNC digit 3	MCC digit 3
	--		3rd OCTET MNC digit 2	MNC digit 1

AccessPointNameNI ::= IA5String (SIZE(1..63))
	-- Network Identifier part of APN in dot representation.
	-- For example, if the complete APN is "apn1a.apn1b.apn1c.mnc022.mcc111.gprs"
	-- NI is "apn1a.apn1b.apn1c"
	-- TRUE if the PDP/PDN address is dynamic.
	-- FALSE if IPv4 address is static when PDN type is IPv6 or IPv4v6
	-- TRUE if IPv4 PDP/PDN address is dynamic, which is allocated during IP CAN bearer activation,
	-- initial attach and UE requested PDN connectivity with PDP/PDN type IPv4v6.
	-- FALSE if IPv4 address is static.
EPSEvent ::= ENUMERATED
	-- The list of "EPSEvent" below is partly taken from 3GPP TS 33.108 [11] EpsHI2Operations
	-- from the "EPSEvent ::=ENUMERATED" module
	e-UTRANAttach(16),
	e-UTRANDetach(17),
	bearerActivation(18),
	bearerModification(20),
	bearerDeactivation(21),
	trackingAreaUpdate(25),
	servingEvolvedPacketSystem(26),
FIVEGSInformation ::= SEQUENCE
{
	sUPI									[1] SUPI OPTIONAL,
	dNN										[2] UTF8String OPTIONAL,
	gPSI									[3] GPSI OPTIONAL,
	pEI										[4] PEI OPTIONAL,
	pDUSessionID							[6] INTEGER (0..255) OPTIONAL,
	sNSSAI									[7] OCTET STRING (SIZE(4)) OPTIONAL,
	pDUIpv4Address							[8] IPAddress OPTIONAL,
	pDUIpv6Address							[9] IPAddress OPTIONAL,
	pDUAddressPrefixLength					[10] INTEGER (0..128) OPTIONAL,
	rFSPIndex								[11] INTEGER (1..255) OPTIONAL,
	applicationId							[12] UTF8String OPTIONAL,
	applicationServiceProviderIdentity		[13] UTF8String OPTIONAL,
	serviceId								[14] INTEGER OPTIONAL,
	chargingId								[15] UTF8String OPTIONAL,
	pDUType									[16] PDUSessionType OPTIONAL,
	sSCMode									[17] SSCMode OPTIONAL,
	vPLMNId									[18] PLMNID OPTIONAL,
	hPLMNId									[19] PLMNID OPTIONAL,
	chargingCharacteristics					[20] UTF8String OPTIONAL,
	chargingCharacteristicsSelectionMode	[21] UTF8String OPTIONAL,
	pDUSessionStartTime						[22] GeneralizedTime OPTIONAL,
	pDUSessionStopTime						[23] GeneralizedTime OPTIONAL,
	lowPriorityIndicator					[24] BOOLEAN OPTIONAL,
	dataOffStatus							[25] BOOLEAN OPTIONAL,
	diagnostics								[26] INTEGER OPTIONAL,
	uETimeZone								[27] UTF8String OPTIONAL,
	uPFAddress								[28] IPAddress OPTIONAL,
	aMFAddress								[29] IPAddress OPTIONAL,
	uDMAddress								[30] IPAddress OPTIONAL,
	sMFAddress								[31] IPAddress OPTIONAL,
	uPFId									[32] UUID OPTIONAL, 
	aMFIdentifier							[33] AMFID OPTIONAL,
	uDMIdentifier							[34] UUID OPTIONAL,
	sMFIdentifier							[35] UUID OPTIONAL,
	uPFPDNAddress							[36] IPAddress OPTIONAL,
	uPFPDNAddressExtension					[37] IPAddress OPTIONAL,
	dynamicAddressFlag						[38] BOOLEAN OPTIONAL,
	dynamicAddressFlagExt					[39] BOOLEAN OPTIONAL,
	rAT5Type								[40] RAT5Type OPTIONAL,
	flowQosInfo								[41] OCTET STRING OPTIONAL,
	serviceID								[42] INTEGER OPTIONAL

}

PDUSessionType ::= ENUMERATED
{
    iPv4(1),
    iPv6(2),
    iPv4v6(3),
    unstructured(4),
    ethernet(5)
}

-- ====================================
-- Definitions of Network Access Device
-- ====================================

NADeviceId ::= UTF8String

NADevice ::= SEQUENCE
{
	naDeviceId		[1] NADeviceId OPTIONAL,
	description		[2] UTF8String OPTIONAL,
		-- Human readable description of device
	location		[3] Location OPTIONAL,
	macAddress		[4] OCTET STRING (SIZE (6)) OPTIONAL,
		-- MAC or ethernet address
	dslID			[5] UTF8String OPTIONAL,
	imei			[6] IMEI OPTIONAL,
	...,
	subscriberID	[7] NaSubscriberID OPTIONAL
SUPI ::= CHOICE
{
    iMSI        [1] IMSI,
    nAI         [2] NAI,
	...
}

GPSI ::= CHOICE
{
    mSISDN      [1] PartyNumber,
    nAI         [2] NAI,
	...
}

PEI ::= CHOICE
{
    iMEI        [1] IMEI,
    iMEISV      [2] IMEISV
}

IMEI ::= OCTET STRING (SIZE(8))
	-- format as per 3GPP TS 09.02 [8]
	-- NOTE: When comparing IMEIs, an IMEI can be considered "equal to" the requested IMEI even
	-- if the checksum or software version digits are different or not present.
IMSI ::= OCTET STRING (SIZE(3..8))
	-- format as per 3GPP TS 09.02 [8]
-- ======================================
-- Definitions of Message Network element
-- ======================================

NANwElementID ::= UTF8String

NANwElement ::= SEQUENCE
	-- In this context, the network element is more commonly referred to as NAS
{
	validity				[1] TimeSpan OPTIONAL,
		-- Period for which this interval is valid
	naNwElementID			[2] NANwElementID OPTIONAL,
		-- Unique ID of this NAS (Network Access Server)
	naProviderID			[3] NAProviderID OPTIONAL,
		-- Unique identifier of the provider managing this NAS.
	supportedAccessTypes	[4] SEQUENCE OF NwAccessType OPTIONAL,
	location				[5] Location OPTIONAL,
	...
}

IPAddress ::= CHOICE
{
	iPv4BinaryAddress	[1] OCTET STRING (SIZE(4)),
	iPv6BinaryAddress	[2] OCTET STRING (SIZE(16)),
	iPTextAddress		[3] IA5String (SIZE(7..45)),
	addressSetOrRangeOrMask		[1] IPAddressSetOrRangeOrMask OPTIONAL,
	portNumber					[2] INTEGER OPTIONAL,
		-- populated with the outbound port number
		internal(1),
		external(2),
		...
	} OPTIONAL,
	assignedTime				[4] TimeSpan OPTIONAL,
	...,
	destinationAddress			[5] IPAddress OPTIONAL,
		-- used in cases where a single external IP/port pair is translated to multiple internal
		-- IP/port pairs, with the destination IP/port used to multiplex them
	destinationPort				[6] INTEGER OPTIONAL
		-- used in cases where a single external IP/port pair is translated to multiple internal
		-- IP/port pairs, with the destination IP/port used to multiplex them
	set		[0] SEQUENCE OF IPAddress,
	range	[1] IPRange,
	mask	[2] IPMask
	-- Things like 172.16.10.0/26
{
	prefix			[0] IPAddress,
	subnetlength	[1] INTEGER (1..128)
}

IPMask ::= SEQUENCE
	-- Things like 172.16.10.0/255.255.255.240
{
	base	[0] IPAddress,
	mask	[1] IPAddress
{
	subscriberID		[1] NaSubscriberID OPTIONAL,
	serviceID		[2] UTF8String OPTIONAL,
	billingAddress		[3] ContactDetails OPTIONAL,
	billingIdentifier	[4] BillingIdentifier OPTIONAL,
	billingRecords		[5] SEQUENCE OF BillingRecords OPTIONAL,
	...,
	naTransactionID		[6] UTF8String OPTIONAL,
		-- Unique reference for this transaction/billing record
		-- Details to be defined on a national basis
	naTransactionStatus	[7] UTF8String OPTIONAL
		-- Status of the transaction (i.e. "declined", "succeeded", etc.)
		-- Details to be defined on a national basis
SSCMode ::= ENUMERATED
{
    sSCMode1(1),
    sSCMode2(2),
    sSCMode3MultiPDUSession(3),
    sSCMode3Multihome(4),
	...
}

PLMNID ::= OCTET STRING (SIZE(3))

UUID ::= OCTET STRING (SIZE(16))

RAT5Type ::= ENUMERATED
{
    nr(1),
    eutra(2),
    wlan(3),
    virtual(4),
	...
}

AMFID ::= SEQUENCE
{
    aMFRegionID [1] AMFRegionID,
    aMFSetID    [2] AMFSetID,
    aMFPointer  [3] AMFPointer
}

AMFRegionID ::= INTEGER (0..255)