/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "S1AP-Containers"
 * 	found in "./asn1c/S1AP-Containers.asn"
 * 	`asn1c -fcompound-names -fno-include-deps -gen-PER -findirect-choice -pdu=S1AP-PDU`
 */

#ifndef	_ProtocolExtensionField_H_
#define	_ProtocolExtensionField_H_


#include <asn_application.h>

/* Including external dependencies */
#include "ProtocolExtensionID.h"
#include "Criticality.h"
#include <ANY.h>
#include <asn_ioc.h>
#include <OPEN_TYPE.h>
#include <constr_CHOICE.h>
#include <constr_SEQUENCE.h>
#include "COUNTValueExtended.h"
#include "Presence.h"
#include "ReceiveStatusOfULPDCPSDUsExtended.h"
#include "COUNTvaluePDCP-SNlength18.h"
#include "ReceiveStatusOfULPDCPSDUsPDCP-SNlength18.h"
#include "Packet-LossRate.h"
#include "ExtendedBitRate.h"
#include "NRrestrictioninEPSasSecondaryRAT.h"
#include "UnlicensedSpectrumRestriction.h"
#include "CNTypeRestrictions.h"
#include "NRrestrictionin5GS.h"
#include "PLMNidentity.h"
#include "M3Configuration.h"
#include "M4Configuration.h"
#include "M5Configuration.h"
#include "MDT-Location-Info.h"
#include "M6Configuration.h"
#include "M7Configuration.h"
#include "BluetoothMeasurementConfiguration.h"
#include "WLANMeasurementConfiguration.h"
#include "Time-UE-StayedInCell-EnhancedGranularity.h"
#include "Cause.h"
#include "MDTPLMNList.h"
#include "ProSeUEtoNetworkRelaying.h"
#include "RequestTypeAdditionalInfo.h"
#include "TimeSynchronisationInfo.h"
#include "MutingPatternInformation.h"
#include "X2TNLConfigurationInfo.h"
#include "SynchronisationInformation.h"
#include "MobilityInformation.h"
#include "UE-HistoryInformationFromTheUE.h"
#include "IMSvoiceEPSfallbackfrom5G.h"
#include "RAT-Type.h"
#include "MutingAvailabilityIndication.h"
#include "MDT-Configuration.h"
#include "UEAppLayerMeasConfig.h"
#include "ServiceType.h"
#include "PSCellInformation.h"
#include "ENBX2ExtTLAs.h"
#include "ENBIndirectX2TransportLayerAddresses.h"
#include "Data-Forwarding-Not-Possible.h"
#include "BearerType.h"
#include "Correlation-ID.h"
#include "TransportInformation.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum Additional_GUTI_ExtIEs__extensionValue_PR {
	Additional_GUTI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Additional_GUTI_ExtIEs__extensionValue_PR;
typedef enum AllocationAndRetentionPriority_ExtIEs__extensionValue_PR {
	AllocationAndRetentionPriority_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} AllocationAndRetentionPriority_ExtIEs__extensionValue_PR;
typedef enum InformationForCECapableUEs_ExtIEs__extensionValue_PR {
	InformationForCECapableUEs_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} InformationForCECapableUEs_ExtIEs__extensionValue_PR;
typedef enum AssistanceDataForPaging_ExtIEs__extensionValue_PR {
	AssistanceDataForPaging_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} AssistanceDataForPaging_ExtIEs__extensionValue_PR;
typedef enum AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR {
	AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR;
typedef enum Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR {
	Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTValueExtended,
	Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTValueExtended_1,
	Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsExtended,
	Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTvaluePDCP_SNlength18,
	Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_COUNTvaluePDCP_SNlength18_1,
	Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR_ReceiveStatusOfULPDCPSDUsPDCP_SNlength18
} Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR;
typedef enum BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR {
	BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR;
typedef enum CancelledCellinEAI_Item_ExtIEs__extensionValue_PR {
	CancelledCellinEAI_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CancelledCellinEAI_Item_ExtIEs__extensionValue_PR;
typedef enum CancelledCellinTAI_Item_ExtIEs__extensionValue_PR {
	CancelledCellinTAI_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CancelledCellinTAI_Item_ExtIEs__extensionValue_PR;
typedef enum CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR {
	CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR;
typedef enum CellID_Broadcast_Item_ExtIEs__extensionValue_PR {
	CellID_Broadcast_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellID_Broadcast_Item_ExtIEs__extensionValue_PR;
typedef enum CellID_Cancelled_Item_ExtIEs__extensionValue_PR {
	CellID_Cancelled_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellID_Cancelled_Item_ExtIEs__extensionValue_PR;
typedef enum CellBasedMDT_ExtIEs__extensionValue_PR {
	CellBasedMDT_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellBasedMDT_ExtIEs__extensionValue_PR;
typedef enum CellBasedQMC_ExtIEs__extensionValue_PR {
	CellBasedQMC_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellBasedQMC_ExtIEs__extensionValue_PR;
typedef enum Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR {
	Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR;
typedef enum CellType_ExtIEs__extensionValue_PR {
	CellType_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CellType_ExtIEs__extensionValue_PR;
typedef enum CGI_ExtIEs__extensionValue_PR {
	CGI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CGI_ExtIEs__extensionValue_PR;
typedef enum CNTypeRestrictions_Item_ExtIEs__extensionValue_PR {
	CNTypeRestrictions_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CNTypeRestrictions_Item_ExtIEs__extensionValue_PR;
typedef enum ConnectedengNBItem_ExtIEs__extensionValue_PR {
	ConnectedengNBItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ConnectedengNBItem_ExtIEs__extensionValue_PR;
typedef enum CSG_IdList_Item_ExtIEs__extensionValue_PR {
	CSG_IdList_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CSG_IdList_Item_ExtIEs__extensionValue_PR;
typedef enum COUNTvalue_ExtIEs__extensionValue_PR {
	COUNTvalue_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} COUNTvalue_ExtIEs__extensionValue_PR;
typedef enum COUNTValueExtended_ExtIEs__extensionValue_PR {
	COUNTValueExtended_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} COUNTValueExtended_ExtIEs__extensionValue_PR;
typedef enum COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR {
	COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR;
typedef enum CriticalityDiagnostics_ExtIEs__extensionValue_PR {
	CriticalityDiagnostics_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CriticalityDiagnostics_ExtIEs__extensionValue_PR;
typedef enum CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR {
	CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR;
typedef enum ServedDCNsItem_ExtIEs__extensionValue_PR {
	ServedDCNsItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ServedDCNsItem_ExtIEs__extensionValue_PR;
typedef enum DL_CP_SecurityInformation_ExtIEs__extensionValue_PR {
	DL_CP_SecurityInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} DL_CP_SecurityInformation_ExtIEs__extensionValue_PR;
typedef enum EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR {
	EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR;
typedef enum EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR {
	EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR;
typedef enum CompletedCellinEAI_Item_ExtIEs__extensionValue_PR {
	CompletedCellinEAI_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CompletedCellinEAI_Item_ExtIEs__extensionValue_PR;
typedef enum GERAN_Cell_ID_ExtIEs__extensionValue_PR {
	GERAN_Cell_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} GERAN_Cell_ID_ExtIEs__extensionValue_PR;
typedef enum GlobalENB_ID_ExtIEs__extensionValue_PR {
	GlobalENB_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} GlobalENB_ID_ExtIEs__extensionValue_PR;
typedef enum Global_en_gNB_ID_ExtIEs__extensionValue_PR {
	Global_en_gNB_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Global_en_gNB_ID_ExtIEs__extensionValue_PR;
typedef enum ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR {
	ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR;
typedef enum EN_DCSONConfigurationTransfer_ExtIEs__extensionValue_PR {
	EN_DCSONConfigurationTransfer_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EN_DCSONConfigurationTransfer_ExtIEs__extensionValue_PR;
typedef enum EN_DCTransferTypeRequest_ExtIEs__extensionValue_PR {
	EN_DCTransferTypeRequest_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EN_DCTransferTypeRequest_ExtIEs__extensionValue_PR;
typedef enum EN_DCTransferTypeReply_ExtIEs__extensionValue_PR {
	EN_DCTransferTypeReply_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EN_DCTransferTypeReply_ExtIEs__extensionValue_PR;
typedef enum EN_DCSONeNBIdentification_ExtIEs__extensionValue_PR {
	EN_DCSONeNBIdentification_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EN_DCSONeNBIdentification_ExtIEs__extensionValue_PR;
typedef enum EN_DCSONengNBIdentification_ExtIEs__extensionValue_PR {
	EN_DCSONengNBIdentification_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EN_DCSONengNBIdentification_ExtIEs__extensionValue_PR;
typedef enum E_RABInformationListItem_ExtIEs__extensionValue_PR {
	E_RABInformationListItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABInformationListItem_ExtIEs__extensionValue_PR;
typedef enum E_RABItem_ExtIEs__extensionValue_PR {
	E_RABItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABItem_ExtIEs__extensionValue_PR;
typedef enum E_RABQoSParameters_ExtIEs__extensionValue_PR {
	E_RABQoSParameters_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	E_RABQoSParameters_ExtIEs__extensionValue_PR_Packet_LossRate,
	E_RABQoSParameters_ExtIEs__extensionValue_PR_Packet_LossRate_1
} E_RABQoSParameters_ExtIEs__extensionValue_PR;
typedef enum E_RABUsageReportItem_ExtIEs__extensionValue_PR {
	E_RABUsageReportItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABUsageReportItem_ExtIEs__extensionValue_PR;
typedef enum EUTRAN_CGI_ExtIEs__extensionValue_PR {
	EUTRAN_CGI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} EUTRAN_CGI_ExtIEs__extensionValue_PR;
typedef enum ExpectedUEBehaviour_ExtIEs__extensionValue_PR {
	ExpectedUEBehaviour_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ExpectedUEBehaviour_ExtIEs__extensionValue_PR;
typedef enum ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR {
	ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR;
typedef enum FiveGSTAI_ExtIEs__extensionValue_PR {
	FiveGSTAI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} FiveGSTAI_ExtIEs__extensionValue_PR;
typedef enum ForbiddenTAs_Item_ExtIEs__extensionValue_PR {
	ForbiddenTAs_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ForbiddenTAs_Item_ExtIEs__extensionValue_PR;
typedef enum ForbiddenLAs_Item_ExtIEs__extensionValue_PR {
	ForbiddenLAs_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ForbiddenLAs_Item_ExtIEs__extensionValue_PR;
typedef enum GBR_QosInformation_ExtIEs__extensionValue_PR {
	GBR_QosInformation_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	GBR_QosInformation_ExtIEs__extensionValue_PR_ExtendedBitRate,
	GBR_QosInformation_ExtIEs__extensionValue_PR_ExtendedBitRate_1,
	GBR_QosInformation_ExtIEs__extensionValue_PR_ExtendedBitRate_2,
	GBR_QosInformation_ExtIEs__extensionValue_PR_ExtendedBitRate_3
} GBR_QosInformation_ExtIEs__extensionValue_PR;
typedef enum GUMMEI_ExtIEs__extensionValue_PR {
	GUMMEI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} GUMMEI_ExtIEs__extensionValue_PR;
typedef enum HandoverRestrictionList_ExtIEs__extensionValue_PR {
	HandoverRestrictionList_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	HandoverRestrictionList_ExtIEs__extensionValue_PR_NRrestrictioninEPSasSecondaryRAT,
	HandoverRestrictionList_ExtIEs__extensionValue_PR_UnlicensedSpectrumRestriction,
	HandoverRestrictionList_ExtIEs__extensionValue_PR_CNTypeRestrictions,
	HandoverRestrictionList_ExtIEs__extensionValue_PR_NRrestrictionin5GS,
	HandoverRestrictionList_ExtIEs__extensionValue_PR_PLMNidentity
} HandoverRestrictionList_ExtIEs__extensionValue_PR;
typedef enum ImmediateMDT_ExtIEs__extensionValue_PR {
	ImmediateMDT_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	ImmediateMDT_ExtIEs__extensionValue_PR_M3Configuration,
	ImmediateMDT_ExtIEs__extensionValue_PR_M4Configuration,
	ImmediateMDT_ExtIEs__extensionValue_PR_M5Configuration,
	ImmediateMDT_ExtIEs__extensionValue_PR_MDT_Location_Info,
	ImmediateMDT_ExtIEs__extensionValue_PR_M6Configuration,
	ImmediateMDT_ExtIEs__extensionValue_PR_M7Configuration,
	ImmediateMDT_ExtIEs__extensionValue_PR_BluetoothMeasurementConfiguration,
	ImmediateMDT_ExtIEs__extensionValue_PR_WLANMeasurementConfiguration
} ImmediateMDT_ExtIEs__extensionValue_PR;
typedef enum InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR {
	InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR;
typedef enum LAI_ExtIEs__extensionValue_PR {
	LAI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} LAI_ExtIEs__extensionValue_PR;
typedef enum LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR {
	LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Time_UE_StayedInCell_EnhancedGranularity,
	LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR_Cause
} LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR;
typedef enum ListeningSubframePattern_ExtIEs__extensionValue_PR {
	ListeningSubframePattern_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ListeningSubframePattern_ExtIEs__extensionValue_PR;
typedef enum LoggedMDT_ExtIEs__extensionValue_PR {
	LoggedMDT_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	LoggedMDT_ExtIEs__extensionValue_PR_BluetoothMeasurementConfiguration,
	LoggedMDT_ExtIEs__extensionValue_PR_WLANMeasurementConfiguration
} LoggedMDT_ExtIEs__extensionValue_PR;
typedef enum LoggedMBSFNMDT_ExtIEs__extensionValue_PR {
	LoggedMBSFNMDT_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} LoggedMBSFNMDT_ExtIEs__extensionValue_PR;
typedef enum M3Configuration_ExtIEs__extensionValue_PR {
	M3Configuration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} M3Configuration_ExtIEs__extensionValue_PR;
typedef enum M4Configuration_ExtIEs__extensionValue_PR {
	M4Configuration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} M4Configuration_ExtIEs__extensionValue_PR;
typedef enum M5Configuration_ExtIEs__extensionValue_PR {
	M5Configuration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} M5Configuration_ExtIEs__extensionValue_PR;
typedef enum M6Configuration_ExtIEs__extensionValue_PR {
	M6Configuration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} M6Configuration_ExtIEs__extensionValue_PR;
typedef enum M7Configuration_ExtIEs__extensionValue_PR {
	M7Configuration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} M7Configuration_ExtIEs__extensionValue_PR;
typedef enum MDT_Configuration_ExtIEs__extensionValue_PR {
	MDT_Configuration_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	MDT_Configuration_ExtIEs__extensionValue_PR_MDTPLMNList
} MDT_Configuration_ExtIEs__extensionValue_PR;
typedef enum MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR {
	MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR;
typedef enum MutingPatternInformation_ExtIEs__extensionValue_PR {
	MutingPatternInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} MutingPatternInformation_ExtIEs__extensionValue_PR;
typedef enum NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR {
	NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR;
typedef enum NR_CGI_ExtIEs__extensionValue_PR {
	NR_CGI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NR_CGI_ExtIEs__extensionValue_PR;
typedef enum NRUESecurityCapabilities_ExtIEs__extensionValue_PR {
	NRUESecurityCapabilities_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NRUESecurityCapabilities_ExtIEs__extensionValue_PR;
typedef enum PagingAttemptInformation_ExtIEs__extensionValue_PR {
	PagingAttemptInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} PagingAttemptInformation_ExtIEs__extensionValue_PR;
typedef enum Paging_eDRXInformation_ExtIEs__extensionValue_PR {
	Paging_eDRXInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Paging_eDRXInformation_ExtIEs__extensionValue_PR;
typedef enum M1PeriodicReporting_ExtIEs__extensionValue_PR {
	M1PeriodicReporting_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} M1PeriodicReporting_ExtIEs__extensionValue_PR;
typedef enum PLMNAreaBasedQMC_ExtIEs__extensionValue_PR {
	PLMNAreaBasedQMC_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} PLMNAreaBasedQMC_ExtIEs__extensionValue_PR;
typedef enum ProSeAuthorized_ExtIEs__extensionValue_PR {
	ProSeAuthorized_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	ProSeAuthorized_ExtIEs__extensionValue_PR_ProSeUEtoNetworkRelaying
} ProSeAuthorized_ExtIEs__extensionValue_PR;
typedef enum PSCellInformation_ExtIEs__extensionValue_PR {
	PSCellInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} PSCellInformation_ExtIEs__extensionValue_PR;
typedef enum RecommendedCellsForPaging_ExtIEs__extensionValue_PR {
	RecommendedCellsForPaging_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} RecommendedCellsForPaging_ExtIEs__extensionValue_PR;
typedef enum RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR {
	RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR;
typedef enum RecommendedENBsForPaging_ExtIEs__extensionValue_PR {
	RecommendedENBsForPaging_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} RecommendedENBsForPaging_ExtIEs__extensionValue_PR;
typedef enum RecommendedENBItem_ExtIEs__extensionValue_PR {
	RecommendedENBItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} RecommendedENBItem_ExtIEs__extensionValue_PR;
typedef enum RequestType_ExtIEs__extensionValue_PR {
	RequestType_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	RequestType_ExtIEs__extensionValue_PR_RequestTypeAdditionalInfo
} RequestType_ExtIEs__extensionValue_PR;
typedef enum RIMTransfer_ExtIEs__extensionValue_PR {
	RIMTransfer_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} RIMTransfer_ExtIEs__extensionValue_PR;
typedef enum RLFReportInformation_ExtIEs__extensionValue_PR {
	RLFReportInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} RLFReportInformation_ExtIEs__extensionValue_PR;
typedef enum SecurityContext_ExtIEs__extensionValue_PR {
	SecurityContext_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SecurityContext_ExtIEs__extensionValue_PR;
typedef enum SecondaryRATDataUsageReportItem_ExtIEs__extensionValue_PR {
	SecondaryRATDataUsageReportItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SecondaryRATDataUsageReportItem_ExtIEs__extensionValue_PR;
typedef enum SONInformationReply_ExtIEs__extensionValue_PR {
	SONInformationReply_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	SONInformationReply_ExtIEs__extensionValue_PR_TimeSynchronisationInfo,
	SONInformationReply_ExtIEs__extensionValue_PR_MutingPatternInformation
} SONInformationReply_ExtIEs__extensionValue_PR;
typedef enum SONConfigurationTransfer_ExtIEs__extensionValue_PR {
	SONConfigurationTransfer_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	SONConfigurationTransfer_ExtIEs__extensionValue_PR_X2TNLConfigurationInfo,
	SONConfigurationTransfer_ExtIEs__extensionValue_PR_SynchronisationInformation
} SONConfigurationTransfer_ExtIEs__extensionValue_PR;
typedef enum SynchronisationInformation_ExtIEs__extensionValue_PR {
	SynchronisationInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SynchronisationInformation_ExtIEs__extensionValue_PR;
typedef enum SourceeNB_ID_ExtIEs__extensionValue_PR {
	SourceeNB_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} SourceeNB_ID_ExtIEs__extensionValue_PR;
typedef enum SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR {
	SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR_MobilityInformation,
	SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR_UE_HistoryInformationFromTheUE,
	SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR_IMSvoiceEPSfallbackfrom5G
} SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR;
typedef enum ServedGUMMEIsItem_ExtIEs__extensionValue_PR {
	ServedGUMMEIsItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ServedGUMMEIsItem_ExtIEs__extensionValue_PR;
typedef enum Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR {
	Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR;
typedef enum ScheduledCommunicationTime_ExtIEs__extensionValue_PR {
	ScheduledCommunicationTime_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ScheduledCommunicationTime_ExtIEs__extensionValue_PR;
typedef enum SupportedTAs_Item_ExtIEs__extensionValue_PR {
	SupportedTAs_Item_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	SupportedTAs_Item_ExtIEs__extensionValue_PR_RAT_Type
} SupportedTAs_Item_ExtIEs__extensionValue_PR;
typedef enum TimeSynchronisationInfo_ExtIEs__extensionValue_PR {
	TimeSynchronisationInfo_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	TimeSynchronisationInfo_ExtIEs__extensionValue_PR_MutingAvailabilityIndication
} TimeSynchronisationInfo_ExtIEs__extensionValue_PR;
typedef enum S_TMSI_ExtIEs__extensionValue_PR {
	S_TMSI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} S_TMSI_ExtIEs__extensionValue_PR;
typedef enum TAIBasedMDT_ExtIEs__extensionValue_PR {
	TAIBasedMDT_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TAIBasedMDT_ExtIEs__extensionValue_PR;
typedef enum TAI_ExtIEs__extensionValue_PR {
	TAI_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TAI_ExtIEs__extensionValue_PR;
typedef enum TAI_Broadcast_Item_ExtIEs__extensionValue_PR {
	TAI_Broadcast_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TAI_Broadcast_Item_ExtIEs__extensionValue_PR;
typedef enum TAI_Cancelled_Item_ExtIEs__extensionValue_PR {
	TAI_Cancelled_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TAI_Cancelled_Item_ExtIEs__extensionValue_PR;
typedef enum TABasedMDT_ExtIEs__extensionValue_PR {
	TABasedMDT_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TABasedMDT_ExtIEs__extensionValue_PR;
typedef enum TABasedQMC_ExtIEs__extensionValue_PR {
	TABasedQMC_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TABasedQMC_ExtIEs__extensionValue_PR;
typedef enum TAIBasedQMC_ExtIEs__extensionValue_PR {
	TAIBasedQMC_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TAIBasedQMC_ExtIEs__extensionValue_PR;
typedef enum CompletedCellinTAI_Item_ExtIEs__extensionValue_PR {
	CompletedCellinTAI_Item_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CompletedCellinTAI_Item_ExtIEs__extensionValue_PR;
typedef enum TargeteNB_ID_ExtIEs__extensionValue_PR {
	TargeteNB_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TargeteNB_ID_ExtIEs__extensionValue_PR;
typedef enum TargetRNC_ID_ExtIEs__extensionValue_PR {
	TargetRNC_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TargetRNC_ID_ExtIEs__extensionValue_PR;
typedef enum TargetNgRanNode_ID_ExtIEs__extensionValue_PR {
	TargetNgRanNode_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TargetNgRanNode_ID_ExtIEs__extensionValue_PR;
typedef enum GNB_ExtIEs__extensionValue_PR {
	GNB_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} GNB_ExtIEs__extensionValue_PR;
typedef enum Global_GNB_ID_ExtIEs__extensionValue_PR {
	Global_GNB_ID_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Global_GNB_ID_ExtIEs__extensionValue_PR;
typedef enum NG_eNB_ExtIEs__extensionValue_PR {
	NG_eNB_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} NG_eNB_ExtIEs__extensionValue_PR;
typedef enum TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR {
	TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR;
typedef enum M1ThresholdEventA2_ExtIEs__extensionValue_PR {
	M1ThresholdEventA2_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} M1ThresholdEventA2_ExtIEs__extensionValue_PR;
typedef enum TraceActivation_ExtIEs__extensionValue_PR {
	TraceActivation_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	TraceActivation_ExtIEs__extensionValue_PR_MDT_Configuration,
	TraceActivation_ExtIEs__extensionValue_PR_UEAppLayerMeasConfig
} TraceActivation_ExtIEs__extensionValue_PR;
typedef enum Tunnel_Information_ExtIEs__extensionValue_PR {
	Tunnel_Information_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} Tunnel_Information_ExtIEs__extensionValue_PR;
typedef enum UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR {
	UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR_ExtendedBitRate,
	UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR_ExtendedBitRate_1
} UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR;
typedef enum UEAppLayerMeasConfig_ExtIEs__extensionValue_PR {
	UEAppLayerMeasConfig_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	UEAppLayerMeasConfig_ExtIEs__extensionValue_PR_ServiceType
} UEAppLayerMeasConfig_ExtIEs__extensionValue_PR;
typedef enum UE_S1AP_ID_pair_ExtIEs__extensionValue_PR {
	UE_S1AP_ID_pair_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UE_S1AP_ID_pair_ExtIEs__extensionValue_PR;
typedef enum UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR {
	UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR;
typedef enum UESecurityCapabilities_ExtIEs__extensionValue_PR {
	UESecurityCapabilities_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UESecurityCapabilities_ExtIEs__extensionValue_PR;
typedef enum UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR {
	UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR;
typedef enum UL_CP_SecurityInformation_ExtIEs__extensionValue_PR {
	UL_CP_SecurityInformation_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} UL_CP_SecurityInformation_ExtIEs__extensionValue_PR;
typedef enum UserLocationInformation_ExtIEs__extensionValue_PR {
	UserLocationInformation_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	UserLocationInformation_ExtIEs__extensionValue_PR_PSCellInformation
} UserLocationInformation_ExtIEs__extensionValue_PR;
typedef enum V2XServicesAuthorized_ExtIEs__extensionValue_PR {
	V2XServicesAuthorized_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} V2XServicesAuthorized_ExtIEs__extensionValue_PR;
typedef enum WLANMeasurementConfiguration_ExtIEs__extensionValue_PR {
	WLANMeasurementConfiguration_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} WLANMeasurementConfiguration_ExtIEs__extensionValue_PR;
typedef enum X2TNLConfigurationInfo_ExtIEs__extensionValue_PR {
	X2TNLConfigurationInfo_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	X2TNLConfigurationInfo_ExtIEs__extensionValue_PR_ENBX2ExtTLAs,
	X2TNLConfigurationInfo_ExtIEs__extensionValue_PR_ENBIndirectX2TransportLayerAddresses
} X2TNLConfigurationInfo_ExtIEs__extensionValue_PR;
typedef enum ENBX2ExtTLA_ExtIEs__extensionValue_PR {
	ENBX2ExtTLA_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} ENBX2ExtTLA_ExtIEs__extensionValue_PR;
typedef enum E_RABDataForwardingItem_ExtIEs__extensionValue_PR {
	E_RABDataForwardingItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABDataForwardingItem_ExtIEs__extensionValue_PR;
typedef enum E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR {
	E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR_Data_Forwarding_Not_Possible,
	E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR_BearerType
} E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR;
typedef enum E_RABAdmittedItem_ExtIEs__extensionValue_PR {
	E_RABAdmittedItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABAdmittedItem_ExtIEs__extensionValue_PR;
typedef enum E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR {
	E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR;
typedef enum E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR {
	E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR;
typedef enum E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR {
	E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR;
typedef enum E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR {
	E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR_Correlation_ID,
	E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR_Correlation_ID_1,
	E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR_BearerType
} E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR;
typedef enum E_RABSetupItemBearerSUResExtIEs__extensionValue_PR {
	E_RABSetupItemBearerSUResExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABSetupItemBearerSUResExtIEs__extensionValue_PR;
typedef enum E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR {
	E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR_TransportInformation
} E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR;
typedef enum E_RABModifyItemBearerModResExtIEs__extensionValue_PR {
	E_RABModifyItemBearerModResExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABModifyItemBearerModResExtIEs__extensionValue_PR;
typedef enum E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR {
	E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR;
typedef enum E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR {
	E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR_NOTHING,	/* No components present */
	E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR_Correlation_ID,
	E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR_Correlation_ID_1,
	E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR_BearerType
} E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR;
typedef enum E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR {
	E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR;
typedef enum TAIItemExtIEs__extensionValue_PR {
	TAIItemExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} TAIItemExtIEs__extensionValue_PR;
typedef enum E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR {
	E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR;
typedef enum E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR {
	E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR;
typedef enum CSGMembershipInfo_ExtIEs__extensionValue_PR {
	CSGMembershipInfo_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} CSGMembershipInfo_ExtIEs__extensionValue_PR;
typedef enum E_RABModifyItemBearerModConfExtIEs__extensionValue_PR {
	E_RABModifyItemBearerModConfExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABModifyItemBearerModConfExtIEs__extensionValue_PR;
typedef enum E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR {
	E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR;
typedef enum E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR {
	E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR_NOTHING	/* No components present */
	
} E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR;

/* ProtocolExtensionField */
typedef struct Additional_GUTI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Additional_GUTI_ExtIEs__extensionValue {
		Additional_GUTI_ExtIEs__extensionValue_PR present;
		union Additional_GUTI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Additional_GUTI_ExtIEs_t;
typedef struct AllocationAndRetentionPriority_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct AllocationAndRetentionPriority_ExtIEs__extensionValue {
		AllocationAndRetentionPriority_ExtIEs__extensionValue_PR present;
		union AllocationAndRetentionPriority_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} AllocationAndRetentionPriority_ExtIEs_t;
typedef struct InformationForCECapableUEs_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct InformationForCECapableUEs_ExtIEs__extensionValue {
		InformationForCECapableUEs_ExtIEs__extensionValue_PR present;
		union InformationForCECapableUEs_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} InformationForCECapableUEs_ExtIEs_t;
typedef struct AssistanceDataForPaging_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct AssistanceDataForPaging_ExtIEs__extensionValue {
		AssistanceDataForPaging_ExtIEs__extensionValue_PR present;
		union AssistanceDataForPaging_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} AssistanceDataForPaging_ExtIEs_t;
typedef struct AssistanceDataForRecommendedCells_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct AssistanceDataForRecommendedCells_ExtIEs__extensionValue {
		AssistanceDataForRecommendedCells_ExtIEs__extensionValue_PR present;
		union AssistanceDataForRecommendedCells_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} AssistanceDataForRecommendedCells_ExtIEs_t;
typedef struct Bearers_SubjectToStatusTransfer_ItemExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue {
		Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_PR present;
		union Bearers_SubjectToStatusTransfer_ItemExtIEs__extensionValue_u {
			COUNTValueExtended_t	 COUNTValueExtended;
			COUNTValueExtended_t	 COUNTValueExtended_1;
			ReceiveStatusOfULPDCPSDUsExtended_t	 ReceiveStatusOfULPDCPSDUsExtended;
			COUNTvaluePDCP_SNlength18_t	 COUNTvaluePDCP_SNlength18;
			COUNTvaluePDCP_SNlength18_t	 COUNTvaluePDCP_SNlength18_1;
			ReceiveStatusOfULPDCPSDUsPDCP_SNlength18_t	 ReceiveStatusOfULPDCPSDUsPDCP_SNlength18;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Bearers_SubjectToStatusTransfer_ItemExtIEs_t;
typedef struct BluetoothMeasurementConfiguration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct BluetoothMeasurementConfiguration_ExtIEs__extensionValue {
		BluetoothMeasurementConfiguration_ExtIEs__extensionValue_PR present;
		union BluetoothMeasurementConfiguration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} BluetoothMeasurementConfiguration_ExtIEs_t;
typedef struct CancelledCellinEAI_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CancelledCellinEAI_Item_ExtIEs__extensionValue {
		CancelledCellinEAI_Item_ExtIEs__extensionValue_PR present;
		union CancelledCellinEAI_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CancelledCellinEAI_Item_ExtIEs_t;
typedef struct CancelledCellinTAI_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CancelledCellinTAI_Item_ExtIEs__extensionValue {
		CancelledCellinTAI_Item_ExtIEs__extensionValue_PR present;
		union CancelledCellinTAI_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CancelledCellinTAI_Item_ExtIEs_t;
typedef struct CellIdentifierAndCELevelForCECapableUEs_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue {
		CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_PR present;
		union CellIdentifierAndCELevelForCECapableUEs_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellIdentifierAndCELevelForCECapableUEs_ExtIEs_t;
typedef struct CellID_Broadcast_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CellID_Broadcast_Item_ExtIEs__extensionValue {
		CellID_Broadcast_Item_ExtIEs__extensionValue_PR present;
		union CellID_Broadcast_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellID_Broadcast_Item_ExtIEs_t;
typedef struct CellID_Cancelled_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CellID_Cancelled_Item_ExtIEs__extensionValue {
		CellID_Cancelled_Item_ExtIEs__extensionValue_PR present;
		union CellID_Cancelled_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellID_Cancelled_Item_ExtIEs_t;
typedef struct CellBasedMDT_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CellBasedMDT_ExtIEs__extensionValue {
		CellBasedMDT_ExtIEs__extensionValue_PR present;
		union CellBasedMDT_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellBasedMDT_ExtIEs_t;
typedef struct CellBasedQMC_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CellBasedQMC_ExtIEs__extensionValue {
		CellBasedQMC_ExtIEs__extensionValue_PR present;
		union CellBasedQMC_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellBasedQMC_ExtIEs_t;
typedef struct Cdma2000OneXSRVCCInfo_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue {
		Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_PR present;
		union Cdma2000OneXSRVCCInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Cdma2000OneXSRVCCInfo_ExtIEs_t;
typedef struct CellType_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CellType_ExtIEs__extensionValue {
		CellType_ExtIEs__extensionValue_PR present;
		union CellType_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellType_ExtIEs_t;
typedef struct CGI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CGI_ExtIEs__extensionValue {
		CGI_ExtIEs__extensionValue_PR present;
		union CGI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CGI_ExtIEs_t;
typedef struct CNTypeRestrictions_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CNTypeRestrictions_Item_ExtIEs__extensionValue {
		CNTypeRestrictions_Item_ExtIEs__extensionValue_PR present;
		union CNTypeRestrictions_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CNTypeRestrictions_Item_ExtIEs_t;
typedef struct ConnectedengNBItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ConnectedengNBItem_ExtIEs__extensionValue {
		ConnectedengNBItem_ExtIEs__extensionValue_PR present;
		union ConnectedengNBItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ConnectedengNBItem_ExtIEs_t;
typedef struct CSG_IdList_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CSG_IdList_Item_ExtIEs__extensionValue {
		CSG_IdList_Item_ExtIEs__extensionValue_PR present;
		union CSG_IdList_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CSG_IdList_Item_ExtIEs_t;
typedef struct COUNTvalue_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct COUNTvalue_ExtIEs__extensionValue {
		COUNTvalue_ExtIEs__extensionValue_PR present;
		union COUNTvalue_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} COUNTvalue_ExtIEs_t;
typedef struct COUNTValueExtended_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct COUNTValueExtended_ExtIEs__extensionValue {
		COUNTValueExtended_ExtIEs__extensionValue_PR present;
		union COUNTValueExtended_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} COUNTValueExtended_ExtIEs_t;
typedef struct COUNTvaluePDCP_SNlength18_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue {
		COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_PR present;
		union COUNTvaluePDCP_SNlength18_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} COUNTvaluePDCP_SNlength18_ExtIEs_t;
typedef struct CriticalityDiagnostics_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CriticalityDiagnostics_ExtIEs__extensionValue {
		CriticalityDiagnostics_ExtIEs__extensionValue_PR present;
		union CriticalityDiagnostics_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CriticalityDiagnostics_ExtIEs_t;
typedef struct CriticalityDiagnostics_IE_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue {
		CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_PR present;
		union CriticalityDiagnostics_IE_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CriticalityDiagnostics_IE_Item_ExtIEs_t;
typedef struct ServedDCNsItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ServedDCNsItem_ExtIEs__extensionValue {
		ServedDCNsItem_ExtIEs__extensionValue_PR present;
		union ServedDCNsItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedDCNsItem_ExtIEs_t;
typedef struct DL_CP_SecurityInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct DL_CP_SecurityInformation_ExtIEs__extensionValue {
		DL_CP_SecurityInformation_ExtIEs__extensionValue_PR present;
		union DL_CP_SecurityInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} DL_CP_SecurityInformation_ExtIEs_t;
typedef struct EmergencyAreaID_Broadcast_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue {
		EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_PR present;
		union EmergencyAreaID_Broadcast_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EmergencyAreaID_Broadcast_Item_ExtIEs_t;
typedef struct EmergencyAreaID_Cancelled_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue {
		EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_PR present;
		union EmergencyAreaID_Cancelled_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EmergencyAreaID_Cancelled_Item_ExtIEs_t;
typedef struct CompletedCellinEAI_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CompletedCellinEAI_Item_ExtIEs__extensionValue {
		CompletedCellinEAI_Item_ExtIEs__extensionValue_PR present;
		union CompletedCellinEAI_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CompletedCellinEAI_Item_ExtIEs_t;
typedef struct GERAN_Cell_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct GERAN_Cell_ID_ExtIEs__extensionValue {
		GERAN_Cell_ID_ExtIEs__extensionValue_PR present;
		union GERAN_Cell_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GERAN_Cell_ID_ExtIEs_t;
typedef struct GlobalENB_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct GlobalENB_ID_ExtIEs__extensionValue {
		GlobalENB_ID_ExtIEs__extensionValue_PR present;
		union GlobalENB_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GlobalENB_ID_ExtIEs_t;
typedef struct Global_en_gNB_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Global_en_gNB_ID_ExtIEs__extensionValue {
		Global_en_gNB_ID_ExtIEs__extensionValue_PR present;
		union Global_en_gNB_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Global_en_gNB_ID_ExtIEs_t;
typedef struct ENB_StatusTransfer_TransparentContainer_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue {
		ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_PR present;
		union ENB_StatusTransfer_TransparentContainer_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENB_StatusTransfer_TransparentContainer_ExtIEs_t;
typedef struct EN_DCSONConfigurationTransfer_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EN_DCSONConfigurationTransfer_ExtIEs__extensionValue {
		EN_DCSONConfigurationTransfer_ExtIEs__extensionValue_PR present;
		union EN_DCSONConfigurationTransfer_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EN_DCSONConfigurationTransfer_ExtIEs_t;
typedef struct EN_DCTransferTypeRequest_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EN_DCTransferTypeRequest_ExtIEs__extensionValue {
		EN_DCTransferTypeRequest_ExtIEs__extensionValue_PR present;
		union EN_DCTransferTypeRequest_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EN_DCTransferTypeRequest_ExtIEs_t;
typedef struct EN_DCTransferTypeReply_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EN_DCTransferTypeReply_ExtIEs__extensionValue {
		EN_DCTransferTypeReply_ExtIEs__extensionValue_PR present;
		union EN_DCTransferTypeReply_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EN_DCTransferTypeReply_ExtIEs_t;
typedef struct EN_DCSONeNBIdentification_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EN_DCSONeNBIdentification_ExtIEs__extensionValue {
		EN_DCSONeNBIdentification_ExtIEs__extensionValue_PR present;
		union EN_DCSONeNBIdentification_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EN_DCSONeNBIdentification_ExtIEs_t;
typedef struct EN_DCSONengNBIdentification_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EN_DCSONengNBIdentification_ExtIEs__extensionValue {
		EN_DCSONengNBIdentification_ExtIEs__extensionValue_PR present;
		union EN_DCSONengNBIdentification_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EN_DCSONengNBIdentification_ExtIEs_t;
typedef struct E_RABInformationListItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABInformationListItem_ExtIEs__extensionValue {
		E_RABInformationListItem_ExtIEs__extensionValue_PR present;
		union E_RABInformationListItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABInformationListItem_ExtIEs_t;
typedef struct E_RABItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABItem_ExtIEs__extensionValue {
		E_RABItem_ExtIEs__extensionValue_PR present;
		union E_RABItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABItem_ExtIEs_t;
typedef struct E_RABQoSParameters_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABQoSParameters_ExtIEs__extensionValue {
		E_RABQoSParameters_ExtIEs__extensionValue_PR present;
		union E_RABQoSParameters_ExtIEs__extensionValue_u {
			Packet_LossRate_t	 Packet_LossRate;
			Packet_LossRate_t	 Packet_LossRate_1;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABQoSParameters_ExtIEs_t;
typedef struct E_RABUsageReportItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABUsageReportItem_ExtIEs__extensionValue {
		E_RABUsageReportItem_ExtIEs__extensionValue_PR present;
		union E_RABUsageReportItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABUsageReportItem_ExtIEs_t;
typedef struct EUTRAN_CGI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct EUTRAN_CGI_ExtIEs__extensionValue {
		EUTRAN_CGI_ExtIEs__extensionValue_PR present;
		union EUTRAN_CGI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} EUTRAN_CGI_ExtIEs_t;
typedef struct ExpectedUEBehaviour_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ExpectedUEBehaviour_ExtIEs__extensionValue {
		ExpectedUEBehaviour_ExtIEs__extensionValue_PR present;
		union ExpectedUEBehaviour_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ExpectedUEBehaviour_ExtIEs_t;
typedef struct ExpectedUEActivityBehaviour_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ExpectedUEActivityBehaviour_ExtIEs__extensionValue {
		ExpectedUEActivityBehaviour_ExtIEs__extensionValue_PR present;
		union ExpectedUEActivityBehaviour_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ExpectedUEActivityBehaviour_ExtIEs_t;
typedef struct FiveGSTAI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct FiveGSTAI_ExtIEs__extensionValue {
		FiveGSTAI_ExtIEs__extensionValue_PR present;
		union FiveGSTAI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} FiveGSTAI_ExtIEs_t;
typedef struct ForbiddenTAs_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ForbiddenTAs_Item_ExtIEs__extensionValue {
		ForbiddenTAs_Item_ExtIEs__extensionValue_PR present;
		union ForbiddenTAs_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ForbiddenTAs_Item_ExtIEs_t;
typedef struct ForbiddenLAs_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ForbiddenLAs_Item_ExtIEs__extensionValue {
		ForbiddenLAs_Item_ExtIEs__extensionValue_PR present;
		union ForbiddenLAs_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ForbiddenLAs_Item_ExtIEs_t;
typedef struct GBR_QosInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct GBR_QosInformation_ExtIEs__extensionValue {
		GBR_QosInformation_ExtIEs__extensionValue_PR present;
		union GBR_QosInformation_ExtIEs__extensionValue_u {
			ExtendedBitRate_t	 ExtendedBitRate;
			ExtendedBitRate_t	 ExtendedBitRate_1;
			ExtendedBitRate_t	 ExtendedBitRate_2;
			ExtendedBitRate_t	 ExtendedBitRate_3;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GBR_QosInformation_ExtIEs_t;
typedef struct GUMMEI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct GUMMEI_ExtIEs__extensionValue {
		GUMMEI_ExtIEs__extensionValue_PR present;
		union GUMMEI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GUMMEI_ExtIEs_t;
typedef struct HandoverRestrictionList_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct HandoverRestrictionList_ExtIEs__extensionValue {
		HandoverRestrictionList_ExtIEs__extensionValue_PR present;
		union HandoverRestrictionList_ExtIEs__extensionValue_u {
			NRrestrictioninEPSasSecondaryRAT_t	 NRrestrictioninEPSasSecondaryRAT;
			UnlicensedSpectrumRestriction_t	 UnlicensedSpectrumRestriction;
			CNTypeRestrictions_t	 CNTypeRestrictions;
			NRrestrictionin5GS_t	 NRrestrictionin5GS;
			PLMNidentity_t	 PLMNidentity;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} HandoverRestrictionList_ExtIEs_t;
typedef struct ImmediateMDT_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ImmediateMDT_ExtIEs__extensionValue {
		ImmediateMDT_ExtIEs__extensionValue_PR present;
		union ImmediateMDT_ExtIEs__extensionValue_u {
			M3Configuration_t	 M3Configuration;
			M4Configuration_t	 M4Configuration;
			M5Configuration_t	 M5Configuration;
			MDT_Location_Info_t	 MDT_Location_Info;
			M6Configuration_t	 M6Configuration;
			M7Configuration_t	 M7Configuration;
			BluetoothMeasurementConfiguration_t	 BluetoothMeasurementConfiguration;
			WLANMeasurementConfiguration_t	 WLANMeasurementConfiguration;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ImmediateMDT_ExtIEs_t;
typedef struct InformationOnRecommendedCellsAndENBsForPaging_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue {
		InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_PR present;
		union InformationOnRecommendedCellsAndENBsForPaging_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_t;
typedef struct LAI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct LAI_ExtIEs__extensionValue {
		LAI_ExtIEs__extensionValue_PR present;
		union LAI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LAI_ExtIEs_t;
typedef struct LastVisitedEUTRANCellInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct LastVisitedEUTRANCellInformation_ExtIEs__extensionValue {
		LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_PR present;
		union LastVisitedEUTRANCellInformation_ExtIEs__extensionValue_u {
			Time_UE_StayedInCell_EnhancedGranularity_t	 Time_UE_StayedInCell_EnhancedGranularity;
			Cause_t	 Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LastVisitedEUTRANCellInformation_ExtIEs_t;
typedef struct ListeningSubframePattern_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ListeningSubframePattern_ExtIEs__extensionValue {
		ListeningSubframePattern_ExtIEs__extensionValue_PR present;
		union ListeningSubframePattern_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ListeningSubframePattern_ExtIEs_t;
typedef struct LoggedMDT_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct LoggedMDT_ExtIEs__extensionValue {
		LoggedMDT_ExtIEs__extensionValue_PR present;
		union LoggedMDT_ExtIEs__extensionValue_u {
			BluetoothMeasurementConfiguration_t	 BluetoothMeasurementConfiguration;
			WLANMeasurementConfiguration_t	 WLANMeasurementConfiguration;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LoggedMDT_ExtIEs_t;
typedef struct LoggedMBSFNMDT_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct LoggedMBSFNMDT_ExtIEs__extensionValue {
		LoggedMBSFNMDT_ExtIEs__extensionValue_PR present;
		union LoggedMBSFNMDT_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LoggedMBSFNMDT_ExtIEs_t;
typedef struct M3Configuration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct M3Configuration_ExtIEs__extensionValue {
		M3Configuration_ExtIEs__extensionValue_PR present;
		union M3Configuration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} M3Configuration_ExtIEs_t;
typedef struct M4Configuration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct M4Configuration_ExtIEs__extensionValue {
		M4Configuration_ExtIEs__extensionValue_PR present;
		union M4Configuration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} M4Configuration_ExtIEs_t;
typedef struct M5Configuration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct M5Configuration_ExtIEs__extensionValue {
		M5Configuration_ExtIEs__extensionValue_PR present;
		union M5Configuration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} M5Configuration_ExtIEs_t;
typedef struct M6Configuration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct M6Configuration_ExtIEs__extensionValue {
		M6Configuration_ExtIEs__extensionValue_PR present;
		union M6Configuration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} M6Configuration_ExtIEs_t;
typedef struct M7Configuration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct M7Configuration_ExtIEs__extensionValue {
		M7Configuration_ExtIEs__extensionValue_PR present;
		union M7Configuration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} M7Configuration_ExtIEs_t;
typedef struct MDT_Configuration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct MDT_Configuration_ExtIEs__extensionValue {
		MDT_Configuration_ExtIEs__extensionValue_PR present;
		union MDT_Configuration_ExtIEs__extensionValue_u {
			MDTPLMNList_t	 MDTPLMNList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MDT_Configuration_ExtIEs_t;
typedef struct MBSFN_ResultToLogInfo_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct MBSFN_ResultToLogInfo_ExtIEs__extensionValue {
		MBSFN_ResultToLogInfo_ExtIEs__extensionValue_PR present;
		union MBSFN_ResultToLogInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MBSFN_ResultToLogInfo_ExtIEs_t;
typedef struct MutingPatternInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct MutingPatternInformation_ExtIEs__extensionValue {
		MutingPatternInformation_ExtIEs__extensionValue_PR present;
		union MutingPatternInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MutingPatternInformation_ExtIEs_t;
typedef struct NB_IoT_Paging_eDRXInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue {
		NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_PR present;
		union NB_IoT_Paging_eDRXInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NB_IoT_Paging_eDRXInformation_ExtIEs_t;
typedef struct NR_CGI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct NR_CGI_ExtIEs__extensionValue {
		NR_CGI_ExtIEs__extensionValue_PR present;
		union NR_CGI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NR_CGI_ExtIEs_t;
typedef struct NRUESecurityCapabilities_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct NRUESecurityCapabilities_ExtIEs__extensionValue {
		NRUESecurityCapabilities_ExtIEs__extensionValue_PR present;
		union NRUESecurityCapabilities_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NRUESecurityCapabilities_ExtIEs_t;
typedef struct PagingAttemptInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct PagingAttemptInformation_ExtIEs__extensionValue {
		PagingAttemptInformation_ExtIEs__extensionValue_PR present;
		union PagingAttemptInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PagingAttemptInformation_ExtIEs_t;
typedef struct Paging_eDRXInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Paging_eDRXInformation_ExtIEs__extensionValue {
		Paging_eDRXInformation_ExtIEs__extensionValue_PR present;
		union Paging_eDRXInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Paging_eDRXInformation_ExtIEs_t;
typedef struct M1PeriodicReporting_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct M1PeriodicReporting_ExtIEs__extensionValue {
		M1PeriodicReporting_ExtIEs__extensionValue_PR present;
		union M1PeriodicReporting_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} M1PeriodicReporting_ExtIEs_t;
typedef struct PLMNAreaBasedQMC_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct PLMNAreaBasedQMC_ExtIEs__extensionValue {
		PLMNAreaBasedQMC_ExtIEs__extensionValue_PR present;
		union PLMNAreaBasedQMC_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PLMNAreaBasedQMC_ExtIEs_t;
typedef struct ProSeAuthorized_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ProSeAuthorized_ExtIEs__extensionValue {
		ProSeAuthorized_ExtIEs__extensionValue_PR present;
		union ProSeAuthorized_ExtIEs__extensionValue_u {
			ProSeUEtoNetworkRelaying_t	 ProSeUEtoNetworkRelaying;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ProSeAuthorized_ExtIEs_t;
typedef struct PSCellInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct PSCellInformation_ExtIEs__extensionValue {
		PSCellInformation_ExtIEs__extensionValue_PR present;
		union PSCellInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} PSCellInformation_ExtIEs_t;
typedef struct RecommendedCellsForPaging_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct RecommendedCellsForPaging_ExtIEs__extensionValue {
		RecommendedCellsForPaging_ExtIEs__extensionValue_PR present;
		union RecommendedCellsForPaging_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RecommendedCellsForPaging_ExtIEs_t;
typedef struct RecommendedCellsForPagingItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct RecommendedCellsForPagingItem_ExtIEs__extensionValue {
		RecommendedCellsForPagingItem_ExtIEs__extensionValue_PR present;
		union RecommendedCellsForPagingItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RecommendedCellsForPagingItem_ExtIEs_t;
typedef struct RecommendedENBsForPaging_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct RecommendedENBsForPaging_ExtIEs__extensionValue {
		RecommendedENBsForPaging_ExtIEs__extensionValue_PR present;
		union RecommendedENBsForPaging_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RecommendedENBsForPaging_ExtIEs_t;
typedef struct RecommendedENBItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct RecommendedENBItem_ExtIEs__extensionValue {
		RecommendedENBItem_ExtIEs__extensionValue_PR present;
		union RecommendedENBItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RecommendedENBItem_ExtIEs_t;
typedef struct RequestType_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct RequestType_ExtIEs__extensionValue {
		RequestType_ExtIEs__extensionValue_PR present;
		union RequestType_ExtIEs__extensionValue_u {
			RequestTypeAdditionalInfo_t	 RequestTypeAdditionalInfo;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RequestType_ExtIEs_t;
typedef struct RIMTransfer_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct RIMTransfer_ExtIEs__extensionValue {
		RIMTransfer_ExtIEs__extensionValue_PR present;
		union RIMTransfer_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RIMTransfer_ExtIEs_t;
typedef struct RLFReportInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct RLFReportInformation_ExtIEs__extensionValue {
		RLFReportInformation_ExtIEs__extensionValue_PR present;
		union RLFReportInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RLFReportInformation_ExtIEs_t;
typedef struct SecurityContext_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SecurityContext_ExtIEs__extensionValue {
		SecurityContext_ExtIEs__extensionValue_PR present;
		union SecurityContext_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SecurityContext_ExtIEs_t;
typedef struct SecondaryRATDataUsageReportItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SecondaryRATDataUsageReportItem_ExtIEs__extensionValue {
		SecondaryRATDataUsageReportItem_ExtIEs__extensionValue_PR present;
		union SecondaryRATDataUsageReportItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SecondaryRATDataUsageReportItem_ExtIEs_t;
typedef struct SONInformationReply_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SONInformationReply_ExtIEs__extensionValue {
		SONInformationReply_ExtIEs__extensionValue_PR present;
		union SONInformationReply_ExtIEs__extensionValue_u {
			TimeSynchronisationInfo_t	 TimeSynchronisationInfo;
			MutingPatternInformation_t	 MutingPatternInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SONInformationReply_ExtIEs_t;
typedef struct SONConfigurationTransfer_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SONConfigurationTransfer_ExtIEs__extensionValue {
		SONConfigurationTransfer_ExtIEs__extensionValue_PR present;
		union SONConfigurationTransfer_ExtIEs__extensionValue_u {
			X2TNLConfigurationInfo_t	 X2TNLConfigurationInfo;
			SynchronisationInformation_t	 SynchronisationInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SONConfigurationTransfer_ExtIEs_t;
typedef struct SynchronisationInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SynchronisationInformation_ExtIEs__extensionValue {
		SynchronisationInformation_ExtIEs__extensionValue_PR present;
		union SynchronisationInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SynchronisationInformation_ExtIEs_t;
typedef struct SourceeNB_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SourceeNB_ID_ExtIEs__extensionValue {
		SourceeNB_ID_ExtIEs__extensionValue_PR present;
		union SourceeNB_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SourceeNB_ID_ExtIEs_t;
typedef struct SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue {
		SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_PR present;
		union SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs__extensionValue_u {
			MobilityInformation_t	 MobilityInformation;
			UE_HistoryInformationFromTheUE_t	 UE_HistoryInformationFromTheUE;
			IMSvoiceEPSfallbackfrom5G_t	 IMSvoiceEPSfallbackfrom5G;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_t;
typedef struct ServedGUMMEIsItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ServedGUMMEIsItem_ExtIEs__extensionValue {
		ServedGUMMEIsItem_ExtIEs__extensionValue_PR present;
		union ServedGUMMEIsItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ServedGUMMEIsItem_ExtIEs_t;
typedef struct Subscription_Based_UE_DifferentiationInfo_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue {
		Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_PR present;
		union Subscription_Based_UE_DifferentiationInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Subscription_Based_UE_DifferentiationInfo_ExtIEs_t;
typedef struct ScheduledCommunicationTime_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ScheduledCommunicationTime_ExtIEs__extensionValue {
		ScheduledCommunicationTime_ExtIEs__extensionValue_PR present;
		union ScheduledCommunicationTime_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ScheduledCommunicationTime_ExtIEs_t;
typedef struct SupportedTAs_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct SupportedTAs_Item_ExtIEs__extensionValue {
		SupportedTAs_Item_ExtIEs__extensionValue_PR present;
		union SupportedTAs_Item_ExtIEs__extensionValue_u {
			RAT_Type_t	 RAT_Type;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SupportedTAs_Item_ExtIEs_t;
typedef struct TimeSynchronisationInfo_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TimeSynchronisationInfo_ExtIEs__extensionValue {
		TimeSynchronisationInfo_ExtIEs__extensionValue_PR present;
		union TimeSynchronisationInfo_ExtIEs__extensionValue_u {
			MutingAvailabilityIndication_t	 MutingAvailabilityIndication;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TimeSynchronisationInfo_ExtIEs_t;
typedef struct S_TMSI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct S_TMSI_ExtIEs__extensionValue {
		S_TMSI_ExtIEs__extensionValue_PR present;
		union S_TMSI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} S_TMSI_ExtIEs_t;
typedef struct TAIBasedMDT_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TAIBasedMDT_ExtIEs__extensionValue {
		TAIBasedMDT_ExtIEs__extensionValue_PR present;
		union TAIBasedMDT_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TAIBasedMDT_ExtIEs_t;
typedef struct TAI_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TAI_ExtIEs__extensionValue {
		TAI_ExtIEs__extensionValue_PR present;
		union TAI_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TAI_ExtIEs_t;
typedef struct TAI_Broadcast_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TAI_Broadcast_Item_ExtIEs__extensionValue {
		TAI_Broadcast_Item_ExtIEs__extensionValue_PR present;
		union TAI_Broadcast_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TAI_Broadcast_Item_ExtIEs_t;
typedef struct TAI_Cancelled_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TAI_Cancelled_Item_ExtIEs__extensionValue {
		TAI_Cancelled_Item_ExtIEs__extensionValue_PR present;
		union TAI_Cancelled_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TAI_Cancelled_Item_ExtIEs_t;
typedef struct TABasedMDT_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TABasedMDT_ExtIEs__extensionValue {
		TABasedMDT_ExtIEs__extensionValue_PR present;
		union TABasedMDT_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TABasedMDT_ExtIEs_t;
typedef struct TABasedQMC_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TABasedQMC_ExtIEs__extensionValue {
		TABasedQMC_ExtIEs__extensionValue_PR present;
		union TABasedQMC_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TABasedQMC_ExtIEs_t;
typedef struct TAIBasedQMC_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TAIBasedQMC_ExtIEs__extensionValue {
		TAIBasedQMC_ExtIEs__extensionValue_PR present;
		union TAIBasedQMC_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TAIBasedQMC_ExtIEs_t;
typedef struct CompletedCellinTAI_Item_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CompletedCellinTAI_Item_ExtIEs__extensionValue {
		CompletedCellinTAI_Item_ExtIEs__extensionValue_PR present;
		union CompletedCellinTAI_Item_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CompletedCellinTAI_Item_ExtIEs_t;
typedef struct TargeteNB_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TargeteNB_ID_ExtIEs__extensionValue {
		TargeteNB_ID_ExtIEs__extensionValue_PR present;
		union TargeteNB_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TargeteNB_ID_ExtIEs_t;
typedef struct TargetRNC_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TargetRNC_ID_ExtIEs__extensionValue {
		TargetRNC_ID_ExtIEs__extensionValue_PR present;
		union TargetRNC_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TargetRNC_ID_ExtIEs_t;
typedef struct TargetNgRanNode_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TargetNgRanNode_ID_ExtIEs__extensionValue {
		TargetNgRanNode_ID_ExtIEs__extensionValue_PR present;
		union TargetNgRanNode_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TargetNgRanNode_ID_ExtIEs_t;
typedef struct GNB_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct GNB_ExtIEs__extensionValue {
		GNB_ExtIEs__extensionValue_PR present;
		union GNB_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GNB_ExtIEs_t;
typedef struct Global_GNB_ID_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Global_GNB_ID_ExtIEs__extensionValue {
		Global_GNB_ID_ExtIEs__extensionValue_PR present;
		union Global_GNB_ID_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Global_GNB_ID_ExtIEs_t;
typedef struct NG_eNB_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct NG_eNB_ExtIEs__extensionValue {
		NG_eNB_ExtIEs__extensionValue_PR present;
		union NG_eNB_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} NG_eNB_ExtIEs_t;
typedef struct TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue {
		TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_PR present;
		union TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_t;
typedef struct M1ThresholdEventA2_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct M1ThresholdEventA2_ExtIEs__extensionValue {
		M1ThresholdEventA2_ExtIEs__extensionValue_PR present;
		union M1ThresholdEventA2_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} M1ThresholdEventA2_ExtIEs_t;
typedef struct TraceActivation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TraceActivation_ExtIEs__extensionValue {
		TraceActivation_ExtIEs__extensionValue_PR present;
		union TraceActivation_ExtIEs__extensionValue_u {
			MDT_Configuration_t	 MDT_Configuration;
			UEAppLayerMeasConfig_t	 UEAppLayerMeasConfig;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TraceActivation_ExtIEs_t;
typedef struct Tunnel_Information_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct Tunnel_Information_ExtIEs__extensionValue {
		Tunnel_Information_ExtIEs__extensionValue_PR present;
		union Tunnel_Information_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} Tunnel_Information_ExtIEs_t;
typedef struct UEAggregate_MaximumBitrates_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UEAggregate_MaximumBitrates_ExtIEs__extensionValue {
		UEAggregate_MaximumBitrates_ExtIEs__extensionValue_PR present;
		union UEAggregate_MaximumBitrates_ExtIEs__extensionValue_u {
			ExtendedBitRate_t	 ExtendedBitRate;
			ExtendedBitRate_t	 ExtendedBitRate_1;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEAggregate_MaximumBitrates_ExtIEs_t;
typedef struct UEAppLayerMeasConfig_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UEAppLayerMeasConfig_ExtIEs__extensionValue {
		UEAppLayerMeasConfig_ExtIEs__extensionValue_PR present;
		union UEAppLayerMeasConfig_ExtIEs__extensionValue_u {
			ServiceType_t	 ServiceType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UEAppLayerMeasConfig_ExtIEs_t;
typedef struct UE_S1AP_ID_pair_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UE_S1AP_ID_pair_ExtIEs__extensionValue {
		UE_S1AP_ID_pair_ExtIEs__extensionValue_PR present;
		union UE_S1AP_ID_pair_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UE_S1AP_ID_pair_ExtIEs_t;
typedef struct UE_associatedLogicalS1_ConnectionItemExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue {
		UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_PR present;
		union UE_associatedLogicalS1_ConnectionItemExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UE_associatedLogicalS1_ConnectionItemExtIEs_t;
typedef struct UESecurityCapabilities_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UESecurityCapabilities_ExtIEs__extensionValue {
		UESecurityCapabilities_ExtIEs__extensionValue_PR present;
		union UESecurityCapabilities_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UESecurityCapabilities_ExtIEs_t;
typedef struct UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue {
		UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_PR present;
		union UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_t;
typedef struct UL_CP_SecurityInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UL_CP_SecurityInformation_ExtIEs__extensionValue {
		UL_CP_SecurityInformation_ExtIEs__extensionValue_PR present;
		union UL_CP_SecurityInformation_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UL_CP_SecurityInformation_ExtIEs_t;
typedef struct UserLocationInformation_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct UserLocationInformation_ExtIEs__extensionValue {
		UserLocationInformation_ExtIEs__extensionValue_PR present;
		union UserLocationInformation_ExtIEs__extensionValue_u {
			PSCellInformation_t	 PSCellInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} UserLocationInformation_ExtIEs_t;
typedef struct V2XServicesAuthorized_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct V2XServicesAuthorized_ExtIEs__extensionValue {
		V2XServicesAuthorized_ExtIEs__extensionValue_PR present;
		union V2XServicesAuthorized_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} V2XServicesAuthorized_ExtIEs_t;
typedef struct WLANMeasurementConfiguration_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct WLANMeasurementConfiguration_ExtIEs__extensionValue {
		WLANMeasurementConfiguration_ExtIEs__extensionValue_PR present;
		union WLANMeasurementConfiguration_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} WLANMeasurementConfiguration_ExtIEs_t;
typedef struct X2TNLConfigurationInfo_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct X2TNLConfigurationInfo_ExtIEs__extensionValue {
		X2TNLConfigurationInfo_ExtIEs__extensionValue_PR present;
		union X2TNLConfigurationInfo_ExtIEs__extensionValue_u {
			ENBX2ExtTLAs_t	 ENBX2ExtTLAs;
			ENBIndirectX2TransportLayerAddresses_t	 ENBIndirectX2TransportLayerAddresses;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} X2TNLConfigurationInfo_ExtIEs_t;
typedef struct ENBX2ExtTLA_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct ENBX2ExtTLA_ExtIEs__extensionValue {
		ENBX2ExtTLA_ExtIEs__extensionValue_PR present;
		union ENBX2ExtTLA_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBX2ExtTLA_ExtIEs_t;
typedef struct E_RABDataForwardingItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABDataForwardingItem_ExtIEs__extensionValue {
		E_RABDataForwardingItem_ExtIEs__extensionValue_PR present;
		union E_RABDataForwardingItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABDataForwardingItem_ExtIEs_t;
typedef struct E_RABToBeSetupItemHOReq_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSetupItemHOReq_ExtIEs__extensionValue {
		E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_PR present;
		union E_RABToBeSetupItemHOReq_ExtIEs__extensionValue_u {
			Data_Forwarding_Not_Possible_t	 Data_Forwarding_Not_Possible;
			BearerType_t	 BearerType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSetupItemHOReq_ExtIEs_t;
typedef struct E_RABAdmittedItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABAdmittedItem_ExtIEs__extensionValue {
		E_RABAdmittedItem_ExtIEs__extensionValue_PR present;
		union E_RABAdmittedItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABAdmittedItem_ExtIEs_t;
typedef struct E_RABFailedToSetupItemHOReqAckExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue {
		E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_PR present;
		union E_RABFailedToSetupItemHOReqAckExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABFailedToSetupItemHOReqAckExtIEs_t;
typedef struct E_RABToBeSwitchedDLItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSwitchedDLItem_ExtIEs__extensionValue {
		E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_PR present;
		union E_RABToBeSwitchedDLItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSwitchedDLItem_ExtIEs_t;
typedef struct E_RABToBeSwitchedULItem_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSwitchedULItem_ExtIEs__extensionValue {
		E_RABToBeSwitchedULItem_ExtIEs__extensionValue_PR present;
		union E_RABToBeSwitchedULItem_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSwitchedULItem_ExtIEs_t;
typedef struct E_RABToBeSetupItemBearerSUReqExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue {
		E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_PR present;
		union E_RABToBeSetupItemBearerSUReqExtIEs__extensionValue_u {
			Correlation_ID_t	 Correlation_ID;
			Correlation_ID_t	 Correlation_ID_1;
			BearerType_t	 BearerType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSetupItemBearerSUReqExtIEs_t;
typedef struct E_RABSetupItemBearerSUResExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABSetupItemBearerSUResExtIEs__extensionValue {
		E_RABSetupItemBearerSUResExtIEs__extensionValue_PR present;
		union E_RABSetupItemBearerSUResExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABSetupItemBearerSUResExtIEs_t;
typedef struct E_RABToBeModifyItemBearerModReqExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeModifyItemBearerModReqExtIEs__extensionValue {
		E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_PR present;
		union E_RABToBeModifyItemBearerModReqExtIEs__extensionValue_u {
			TransportInformation_t	 TransportInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeModifyItemBearerModReqExtIEs_t;
typedef struct E_RABModifyItemBearerModResExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModifyItemBearerModResExtIEs__extensionValue {
		E_RABModifyItemBearerModResExtIEs__extensionValue_PR present;
		union E_RABModifyItemBearerModResExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModifyItemBearerModResExtIEs_t;
typedef struct E_RABReleaseItemBearerRelCompExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABReleaseItemBearerRelCompExtIEs__extensionValue {
		E_RABReleaseItemBearerRelCompExtIEs__extensionValue_PR present;
		union E_RABReleaseItemBearerRelCompExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABReleaseItemBearerRelCompExtIEs_t;
typedef struct E_RABToBeSetupItemCtxtSUReqExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue {
		E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_PR present;
		union E_RABToBeSetupItemCtxtSUReqExtIEs__extensionValue_u {
			Correlation_ID_t	 Correlation_ID;
			Correlation_ID_t	 Correlation_ID_1;
			BearerType_t	 BearerType;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeSetupItemCtxtSUReqExtIEs_t;
typedef struct E_RABSetupItemCtxtSUResExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABSetupItemCtxtSUResExtIEs__extensionValue {
		E_RABSetupItemCtxtSUResExtIEs__extensionValue_PR present;
		union E_RABSetupItemCtxtSUResExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABSetupItemCtxtSUResExtIEs_t;
typedef struct TAIItemExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct TAIItemExtIEs__extensionValue {
		TAIItemExtIEs__extensionValue_PR present;
		union TAIItemExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} TAIItemExtIEs_t;
typedef struct E_RABToBeModifiedItemBearerModInd_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue {
		E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR present;
		union E_RABToBeModifiedItemBearerModInd_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABToBeModifiedItemBearerModInd_ExtIEs_t;
typedef struct E_RABNotToBeModifiedItemBearerModInd_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue {
		E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_PR present;
		union E_RABNotToBeModifiedItemBearerModInd_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABNotToBeModifiedItemBearerModInd_ExtIEs_t;
typedef struct CSGMembershipInfo_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct CSGMembershipInfo_ExtIEs__extensionValue {
		CSGMembershipInfo_ExtIEs__extensionValue_PR present;
		union CSGMembershipInfo_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CSGMembershipInfo_ExtIEs_t;
typedef struct E_RABModifyItemBearerModConfExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABModifyItemBearerModConfExtIEs__extensionValue {
		E_RABModifyItemBearerModConfExtIEs__extensionValue_PR present;
		union E_RABModifyItemBearerModConfExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABModifyItemBearerModConfExtIEs_t;
typedef struct E_RABFailedToResumeItemResumeReq_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue {
		E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_PR present;
		union E_RABFailedToResumeItemResumeReq_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABFailedToResumeItemResumeReq_ExtIEs_t;
typedef struct E_RABFailedToResumeItemResumeRes_ExtIEs {
	ProtocolExtensionID_t	 id;
	Criticality_t	 criticality;
	struct E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue {
		E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_PR present;
		union E_RABFailedToResumeItemResumeRes_ExtIEs__extensionValue_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} extensionValue;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} E_RABFailedToResumeItemResumeRes_ExtIEs_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_Additional_GUTI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Additional_GUTI_ExtIEs_specs_1;
extern asn_TYPE_member_t asn_MBR_Additional_GUTI_ExtIEs_1[3];
extern asn_TYPE_descriptor_t asn_DEF_AllocationAndRetentionPriority_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_AllocationAndRetentionPriority_ExtIEs_specs_5;
extern asn_TYPE_member_t asn_MBR_AllocationAndRetentionPriority_ExtIEs_5[3];
extern asn_TYPE_descriptor_t asn_DEF_InformationForCECapableUEs_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_InformationForCECapableUEs_ExtIEs_specs_9;
extern asn_TYPE_member_t asn_MBR_InformationForCECapableUEs_ExtIEs_9[3];
extern asn_TYPE_descriptor_t asn_DEF_AssistanceDataForPaging_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_AssistanceDataForPaging_ExtIEs_specs_13;
extern asn_TYPE_member_t asn_MBR_AssistanceDataForPaging_ExtIEs_13[3];
extern asn_TYPE_descriptor_t asn_DEF_AssistanceDataForRecommendedCells_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_AssistanceDataForRecommendedCells_ExtIEs_specs_17;
extern asn_TYPE_member_t asn_MBR_AssistanceDataForRecommendedCells_ExtIEs_17[3];
extern asn_TYPE_descriptor_t asn_DEF_Bearers_SubjectToStatusTransfer_ItemExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Bearers_SubjectToStatusTransfer_ItemExtIEs_specs_21;
extern asn_TYPE_member_t asn_MBR_Bearers_SubjectToStatusTransfer_ItemExtIEs_21[3];
extern asn_TYPE_descriptor_t asn_DEF_BluetoothMeasurementConfiguration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_BluetoothMeasurementConfiguration_ExtIEs_specs_25;
extern asn_TYPE_member_t asn_MBR_BluetoothMeasurementConfiguration_ExtIEs_25[3];
extern asn_TYPE_descriptor_t asn_DEF_CancelledCellinEAI_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CancelledCellinEAI_Item_ExtIEs_specs_29;
extern asn_TYPE_member_t asn_MBR_CancelledCellinEAI_Item_ExtIEs_29[3];
extern asn_TYPE_descriptor_t asn_DEF_CancelledCellinTAI_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CancelledCellinTAI_Item_ExtIEs_specs_33;
extern asn_TYPE_member_t asn_MBR_CancelledCellinTAI_Item_ExtIEs_33[3];
extern asn_TYPE_descriptor_t asn_DEF_CellIdentifierAndCELevelForCECapableUEs_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_specs_37;
extern asn_TYPE_member_t asn_MBR_CellIdentifierAndCELevelForCECapableUEs_ExtIEs_37[3];
extern asn_TYPE_descriptor_t asn_DEF_CellID_Broadcast_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellID_Broadcast_Item_ExtIEs_specs_41;
extern asn_TYPE_member_t asn_MBR_CellID_Broadcast_Item_ExtIEs_41[3];
extern asn_TYPE_descriptor_t asn_DEF_CellID_Cancelled_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellID_Cancelled_Item_ExtIEs_specs_45;
extern asn_TYPE_member_t asn_MBR_CellID_Cancelled_Item_ExtIEs_45[3];
extern asn_TYPE_descriptor_t asn_DEF_CellBasedMDT_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedMDT_ExtIEs_specs_49;
extern asn_TYPE_member_t asn_MBR_CellBasedMDT_ExtIEs_49[3];
extern asn_TYPE_descriptor_t asn_DEF_CellBasedQMC_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellBasedQMC_ExtIEs_specs_53;
extern asn_TYPE_member_t asn_MBR_CellBasedQMC_ExtIEs_53[3];
extern asn_TYPE_descriptor_t asn_DEF_Cdma2000OneXSRVCCInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Cdma2000OneXSRVCCInfo_ExtIEs_specs_57;
extern asn_TYPE_member_t asn_MBR_Cdma2000OneXSRVCCInfo_ExtIEs_57[3];
extern asn_TYPE_descriptor_t asn_DEF_CellType_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellType_ExtIEs_specs_61;
extern asn_TYPE_member_t asn_MBR_CellType_ExtIEs_61[3];
extern asn_TYPE_descriptor_t asn_DEF_CGI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CGI_ExtIEs_specs_65;
extern asn_TYPE_member_t asn_MBR_CGI_ExtIEs_65[3];
extern asn_TYPE_descriptor_t asn_DEF_CNTypeRestrictions_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CNTypeRestrictions_Item_ExtIEs_specs_69;
extern asn_TYPE_member_t asn_MBR_CNTypeRestrictions_Item_ExtIEs_69[3];
extern asn_TYPE_descriptor_t asn_DEF_ConnectedengNBItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ConnectedengNBItem_ExtIEs_specs_73;
extern asn_TYPE_member_t asn_MBR_ConnectedengNBItem_ExtIEs_73[3];
extern asn_TYPE_descriptor_t asn_DEF_CSG_IdList_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CSG_IdList_Item_ExtIEs_specs_77;
extern asn_TYPE_member_t asn_MBR_CSG_IdList_Item_ExtIEs_77[3];
extern asn_TYPE_descriptor_t asn_DEF_COUNTvalue_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvalue_ExtIEs_specs_81;
extern asn_TYPE_member_t asn_MBR_COUNTvalue_ExtIEs_81[3];
extern asn_TYPE_descriptor_t asn_DEF_COUNTValueExtended_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_COUNTValueExtended_ExtIEs_specs_85;
extern asn_TYPE_member_t asn_MBR_COUNTValueExtended_ExtIEs_85[3];
extern asn_TYPE_descriptor_t asn_DEF_COUNTvaluePDCP_SNlength18_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_COUNTvaluePDCP_SNlength18_ExtIEs_specs_89;
extern asn_TYPE_member_t asn_MBR_COUNTvaluePDCP_SNlength18_ExtIEs_89[3];
extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_ExtIEs_specs_93;
extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_ExtIEs_93[3];
extern asn_TYPE_descriptor_t asn_DEF_CriticalityDiagnostics_IE_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CriticalityDiagnostics_IE_Item_ExtIEs_specs_97;
extern asn_TYPE_member_t asn_MBR_CriticalityDiagnostics_IE_Item_ExtIEs_97[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedDCNsItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedDCNsItem_ExtIEs_specs_101;
extern asn_TYPE_member_t asn_MBR_ServedDCNsItem_ExtIEs_101[3];
extern asn_TYPE_descriptor_t asn_DEF_DL_CP_SecurityInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_DL_CP_SecurityInformation_ExtIEs_specs_105;
extern asn_TYPE_member_t asn_MBR_DL_CP_SecurityInformation_ExtIEs_105[3];
extern asn_TYPE_descriptor_t asn_DEF_EmergencyAreaID_Broadcast_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EmergencyAreaID_Broadcast_Item_ExtIEs_specs_109;
extern asn_TYPE_member_t asn_MBR_EmergencyAreaID_Broadcast_Item_ExtIEs_109[3];
extern asn_TYPE_descriptor_t asn_DEF_EmergencyAreaID_Cancelled_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EmergencyAreaID_Cancelled_Item_ExtIEs_specs_113;
extern asn_TYPE_member_t asn_MBR_EmergencyAreaID_Cancelled_Item_ExtIEs_113[3];
extern asn_TYPE_descriptor_t asn_DEF_CompletedCellinEAI_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CompletedCellinEAI_Item_ExtIEs_specs_117;
extern asn_TYPE_member_t asn_MBR_CompletedCellinEAI_Item_ExtIEs_117[3];
extern asn_TYPE_descriptor_t asn_DEF_GERAN_Cell_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GERAN_Cell_ID_ExtIEs_specs_121;
extern asn_TYPE_member_t asn_MBR_GERAN_Cell_ID_ExtIEs_121[3];
extern asn_TYPE_descriptor_t asn_DEF_GlobalENB_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GlobalENB_ID_ExtIEs_specs_125;
extern asn_TYPE_member_t asn_MBR_GlobalENB_ID_ExtIEs_125[3];
extern asn_TYPE_descriptor_t asn_DEF_Global_en_gNB_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Global_en_gNB_ID_ExtIEs_specs_129;
extern asn_TYPE_member_t asn_MBR_Global_en_gNB_ID_ExtIEs_129[3];
extern asn_TYPE_descriptor_t asn_DEF_ENB_StatusTransfer_TransparentContainer_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENB_StatusTransfer_TransparentContainer_ExtIEs_specs_133;
extern asn_TYPE_member_t asn_MBR_ENB_StatusTransfer_TransparentContainer_ExtIEs_133[3];
extern asn_TYPE_descriptor_t asn_DEF_EN_DCSONConfigurationTransfer_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EN_DCSONConfigurationTransfer_ExtIEs_specs_137;
extern asn_TYPE_member_t asn_MBR_EN_DCSONConfigurationTransfer_ExtIEs_137[3];
extern asn_TYPE_descriptor_t asn_DEF_EN_DCTransferTypeRequest_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EN_DCTransferTypeRequest_ExtIEs_specs_141;
extern asn_TYPE_member_t asn_MBR_EN_DCTransferTypeRequest_ExtIEs_141[3];
extern asn_TYPE_descriptor_t asn_DEF_EN_DCTransferTypeReply_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EN_DCTransferTypeReply_ExtIEs_specs_145;
extern asn_TYPE_member_t asn_MBR_EN_DCTransferTypeReply_ExtIEs_145[3];
extern asn_TYPE_descriptor_t asn_DEF_EN_DCSONeNBIdentification_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EN_DCSONeNBIdentification_ExtIEs_specs_149;
extern asn_TYPE_member_t asn_MBR_EN_DCSONeNBIdentification_ExtIEs_149[3];
extern asn_TYPE_descriptor_t asn_DEF_EN_DCSONengNBIdentification_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EN_DCSONengNBIdentification_ExtIEs_specs_153;
extern asn_TYPE_member_t asn_MBR_EN_DCSONengNBIdentification_ExtIEs_153[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABInformationListItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABInformationListItem_ExtIEs_specs_157;
extern asn_TYPE_member_t asn_MBR_E_RABInformationListItem_ExtIEs_157[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABItem_ExtIEs_specs_161;
extern asn_TYPE_member_t asn_MBR_E_RABItem_ExtIEs_161[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABQoSParameters_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABQoSParameters_ExtIEs_specs_165;
extern asn_TYPE_member_t asn_MBR_E_RABQoSParameters_ExtIEs_165[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReportItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReportItem_ExtIEs_specs_169;
extern asn_TYPE_member_t asn_MBR_E_RABUsageReportItem_ExtIEs_169[3];
extern asn_TYPE_descriptor_t asn_DEF_EUTRAN_CGI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_EUTRAN_CGI_ExtIEs_specs_173;
extern asn_TYPE_member_t asn_MBR_EUTRAN_CGI_ExtIEs_173[3];
extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEBehaviour_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEBehaviour_ExtIEs_specs_177;
extern asn_TYPE_member_t asn_MBR_ExpectedUEBehaviour_ExtIEs_177[3];
extern asn_TYPE_descriptor_t asn_DEF_ExpectedUEActivityBehaviour_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ExpectedUEActivityBehaviour_ExtIEs_specs_181;
extern asn_TYPE_member_t asn_MBR_ExpectedUEActivityBehaviour_ExtIEs_181[3];
extern asn_TYPE_descriptor_t asn_DEF_FiveGSTAI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_FiveGSTAI_ExtIEs_specs_185;
extern asn_TYPE_member_t asn_MBR_FiveGSTAI_ExtIEs_185[3];
extern asn_TYPE_descriptor_t asn_DEF_ForbiddenTAs_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenTAs_Item_ExtIEs_specs_189;
extern asn_TYPE_member_t asn_MBR_ForbiddenTAs_Item_ExtIEs_189[3];
extern asn_TYPE_descriptor_t asn_DEF_ForbiddenLAs_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ForbiddenLAs_Item_ExtIEs_specs_193;
extern asn_TYPE_member_t asn_MBR_ForbiddenLAs_Item_ExtIEs_193[3];
extern asn_TYPE_descriptor_t asn_DEF_GBR_QosInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GBR_QosInformation_ExtIEs_specs_197;
extern asn_TYPE_member_t asn_MBR_GBR_QosInformation_ExtIEs_197[3];
extern asn_TYPE_descriptor_t asn_DEF_GUMMEI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GUMMEI_ExtIEs_specs_201;
extern asn_TYPE_member_t asn_MBR_GUMMEI_ExtIEs_201[3];
extern asn_TYPE_descriptor_t asn_DEF_HandoverRestrictionList_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRestrictionList_ExtIEs_specs_205;
extern asn_TYPE_member_t asn_MBR_HandoverRestrictionList_ExtIEs_205[3];
extern asn_TYPE_descriptor_t asn_DEF_ImmediateMDT_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ImmediateMDT_ExtIEs_specs_209;
extern asn_TYPE_member_t asn_MBR_ImmediateMDT_ExtIEs_209[3];
extern asn_TYPE_descriptor_t asn_DEF_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_specs_213;
extern asn_TYPE_member_t asn_MBR_InformationOnRecommendedCellsAndENBsForPaging_ExtIEs_213[3];
extern asn_TYPE_descriptor_t asn_DEF_LAI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LAI_ExtIEs_specs_217;
extern asn_TYPE_member_t asn_MBR_LAI_ExtIEs_217[3];
extern asn_TYPE_descriptor_t asn_DEF_LastVisitedEUTRANCellInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LastVisitedEUTRANCellInformation_ExtIEs_specs_221;
extern asn_TYPE_member_t asn_MBR_LastVisitedEUTRANCellInformation_ExtIEs_221[3];
extern asn_TYPE_descriptor_t asn_DEF_ListeningSubframePattern_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ListeningSubframePattern_ExtIEs_specs_225;
extern asn_TYPE_member_t asn_MBR_ListeningSubframePattern_ExtIEs_225[3];
extern asn_TYPE_descriptor_t asn_DEF_LoggedMDT_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LoggedMDT_ExtIEs_specs_229;
extern asn_TYPE_member_t asn_MBR_LoggedMDT_ExtIEs_229[3];
extern asn_TYPE_descriptor_t asn_DEF_LoggedMBSFNMDT_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LoggedMBSFNMDT_ExtIEs_specs_233;
extern asn_TYPE_member_t asn_MBR_LoggedMBSFNMDT_ExtIEs_233[3];
extern asn_TYPE_descriptor_t asn_DEF_M3Configuration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_M3Configuration_ExtIEs_specs_237;
extern asn_TYPE_member_t asn_MBR_M3Configuration_ExtIEs_237[3];
extern asn_TYPE_descriptor_t asn_DEF_M4Configuration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_M4Configuration_ExtIEs_specs_241;
extern asn_TYPE_member_t asn_MBR_M4Configuration_ExtIEs_241[3];
extern asn_TYPE_descriptor_t asn_DEF_M5Configuration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_M5Configuration_ExtIEs_specs_245;
extern asn_TYPE_member_t asn_MBR_M5Configuration_ExtIEs_245[3];
extern asn_TYPE_descriptor_t asn_DEF_M6Configuration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_M6Configuration_ExtIEs_specs_249;
extern asn_TYPE_member_t asn_MBR_M6Configuration_ExtIEs_249[3];
extern asn_TYPE_descriptor_t asn_DEF_M7Configuration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_M7Configuration_ExtIEs_specs_253;
extern asn_TYPE_member_t asn_MBR_M7Configuration_ExtIEs_253[3];
extern asn_TYPE_descriptor_t asn_DEF_MDT_Configuration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MDT_Configuration_ExtIEs_specs_257;
extern asn_TYPE_member_t asn_MBR_MDT_Configuration_ExtIEs_257[3];
extern asn_TYPE_descriptor_t asn_DEF_MBSFN_ResultToLogInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MBSFN_ResultToLogInfo_ExtIEs_specs_261;
extern asn_TYPE_member_t asn_MBR_MBSFN_ResultToLogInfo_ExtIEs_261[3];
extern asn_TYPE_descriptor_t asn_DEF_MutingPatternInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MutingPatternInformation_ExtIEs_specs_265;
extern asn_TYPE_member_t asn_MBR_MutingPatternInformation_ExtIEs_265[3];
extern asn_TYPE_descriptor_t asn_DEF_NB_IoT_Paging_eDRXInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NB_IoT_Paging_eDRXInformation_ExtIEs_specs_269;
extern asn_TYPE_member_t asn_MBR_NB_IoT_Paging_eDRXInformation_ExtIEs_269[3];
extern asn_TYPE_descriptor_t asn_DEF_NR_CGI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NR_CGI_ExtIEs_specs_273;
extern asn_TYPE_member_t asn_MBR_NR_CGI_ExtIEs_273[3];
extern asn_TYPE_descriptor_t asn_DEF_NRUESecurityCapabilities_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NRUESecurityCapabilities_ExtIEs_specs_277;
extern asn_TYPE_member_t asn_MBR_NRUESecurityCapabilities_ExtIEs_277[3];
extern asn_TYPE_descriptor_t asn_DEF_PagingAttemptInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PagingAttemptInformation_ExtIEs_specs_281;
extern asn_TYPE_member_t asn_MBR_PagingAttemptInformation_ExtIEs_281[3];
extern asn_TYPE_descriptor_t asn_DEF_Paging_eDRXInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Paging_eDRXInformation_ExtIEs_specs_285;
extern asn_TYPE_member_t asn_MBR_Paging_eDRXInformation_ExtIEs_285[3];
extern asn_TYPE_descriptor_t asn_DEF_M1PeriodicReporting_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_M1PeriodicReporting_ExtIEs_specs_289;
extern asn_TYPE_member_t asn_MBR_M1PeriodicReporting_ExtIEs_289[3];
extern asn_TYPE_descriptor_t asn_DEF_PLMNAreaBasedQMC_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PLMNAreaBasedQMC_ExtIEs_specs_293;
extern asn_TYPE_member_t asn_MBR_PLMNAreaBasedQMC_ExtIEs_293[3];
extern asn_TYPE_descriptor_t asn_DEF_ProSeAuthorized_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ProSeAuthorized_ExtIEs_specs_297;
extern asn_TYPE_member_t asn_MBR_ProSeAuthorized_ExtIEs_297[3];
extern asn_TYPE_descriptor_t asn_DEF_PSCellInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_PSCellInformation_ExtIEs_specs_301;
extern asn_TYPE_member_t asn_MBR_PSCellInformation_ExtIEs_301[3];
extern asn_TYPE_descriptor_t asn_DEF_RecommendedCellsForPaging_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedCellsForPaging_ExtIEs_specs_305;
extern asn_TYPE_member_t asn_MBR_RecommendedCellsForPaging_ExtIEs_305[3];
extern asn_TYPE_descriptor_t asn_DEF_RecommendedCellsForPagingItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedCellsForPagingItem_ExtIEs_specs_309;
extern asn_TYPE_member_t asn_MBR_RecommendedCellsForPagingItem_ExtIEs_309[3];
extern asn_TYPE_descriptor_t asn_DEF_RecommendedENBsForPaging_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedENBsForPaging_ExtIEs_specs_313;
extern asn_TYPE_member_t asn_MBR_RecommendedENBsForPaging_ExtIEs_313[3];
extern asn_TYPE_descriptor_t asn_DEF_RecommendedENBItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedENBItem_ExtIEs_specs_317;
extern asn_TYPE_member_t asn_MBR_RecommendedENBItem_ExtIEs_317[3];
extern asn_TYPE_descriptor_t asn_DEF_RequestType_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RequestType_ExtIEs_specs_321;
extern asn_TYPE_member_t asn_MBR_RequestType_ExtIEs_321[3];
extern asn_TYPE_descriptor_t asn_DEF_RIMTransfer_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RIMTransfer_ExtIEs_specs_325;
extern asn_TYPE_member_t asn_MBR_RIMTransfer_ExtIEs_325[3];
extern asn_TYPE_descriptor_t asn_DEF_RLFReportInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RLFReportInformation_ExtIEs_specs_329;
extern asn_TYPE_member_t asn_MBR_RLFReportInformation_ExtIEs_329[3];
extern asn_TYPE_descriptor_t asn_DEF_SecurityContext_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SecurityContext_ExtIEs_specs_333;
extern asn_TYPE_member_t asn_MBR_SecurityContext_ExtIEs_333[3];
extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReportItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReportItem_ExtIEs_specs_337;
extern asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReportItem_ExtIEs_337[3];
extern asn_TYPE_descriptor_t asn_DEF_SONInformationReply_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SONInformationReply_ExtIEs_specs_341;
extern asn_TYPE_member_t asn_MBR_SONInformationReply_ExtIEs_341[3];
extern asn_TYPE_descriptor_t asn_DEF_SONConfigurationTransfer_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SONConfigurationTransfer_ExtIEs_specs_345;
extern asn_TYPE_member_t asn_MBR_SONConfigurationTransfer_ExtIEs_345[3];
extern asn_TYPE_descriptor_t asn_DEF_SynchronisationInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SynchronisationInformation_ExtIEs_specs_349;
extern asn_TYPE_member_t asn_MBR_SynchronisationInformation_ExtIEs_349[3];
extern asn_TYPE_descriptor_t asn_DEF_SourceeNB_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SourceeNB_ID_ExtIEs_specs_353;
extern asn_TYPE_member_t asn_MBR_SourceeNB_ID_ExtIEs_353[3];
extern asn_TYPE_descriptor_t asn_DEF_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_specs_357;
extern asn_TYPE_member_t asn_MBR_SourceeNB_ToTargeteNB_TransparentContainer_ExtIEs_357[3];
extern asn_TYPE_descriptor_t asn_DEF_ServedGUMMEIsItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ServedGUMMEIsItem_ExtIEs_specs_361;
extern asn_TYPE_member_t asn_MBR_ServedGUMMEIsItem_ExtIEs_361[3];
extern asn_TYPE_descriptor_t asn_DEF_Subscription_Based_UE_DifferentiationInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Subscription_Based_UE_DifferentiationInfo_ExtIEs_specs_365;
extern asn_TYPE_member_t asn_MBR_Subscription_Based_UE_DifferentiationInfo_ExtIEs_365[3];
extern asn_TYPE_descriptor_t asn_DEF_ScheduledCommunicationTime_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ScheduledCommunicationTime_ExtIEs_specs_369;
extern asn_TYPE_member_t asn_MBR_ScheduledCommunicationTime_ExtIEs_369[3];
extern asn_TYPE_descriptor_t asn_DEF_SupportedTAs_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SupportedTAs_Item_ExtIEs_specs_373;
extern asn_TYPE_member_t asn_MBR_SupportedTAs_Item_ExtIEs_373[3];
extern asn_TYPE_descriptor_t asn_DEF_TimeSynchronisationInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TimeSynchronisationInfo_ExtIEs_specs_377;
extern asn_TYPE_member_t asn_MBR_TimeSynchronisationInfo_ExtIEs_377[3];
extern asn_TYPE_descriptor_t asn_DEF_S_TMSI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_S_TMSI_ExtIEs_specs_381;
extern asn_TYPE_member_t asn_MBR_S_TMSI_ExtIEs_381[3];
extern asn_TYPE_descriptor_t asn_DEF_TAIBasedMDT_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedMDT_ExtIEs_specs_385;
extern asn_TYPE_member_t asn_MBR_TAIBasedMDT_ExtIEs_385[3];
extern asn_TYPE_descriptor_t asn_DEF_TAI_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TAI_ExtIEs_specs_389;
extern asn_TYPE_member_t asn_MBR_TAI_ExtIEs_389[3];
extern asn_TYPE_descriptor_t asn_DEF_TAI_Broadcast_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TAI_Broadcast_Item_ExtIEs_specs_393;
extern asn_TYPE_member_t asn_MBR_TAI_Broadcast_Item_ExtIEs_393[3];
extern asn_TYPE_descriptor_t asn_DEF_TAI_Cancelled_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TAI_Cancelled_Item_ExtIEs_specs_397;
extern asn_TYPE_member_t asn_MBR_TAI_Cancelled_Item_ExtIEs_397[3];
extern asn_TYPE_descriptor_t asn_DEF_TABasedMDT_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TABasedMDT_ExtIEs_specs_401;
extern asn_TYPE_member_t asn_MBR_TABasedMDT_ExtIEs_401[3];
extern asn_TYPE_descriptor_t asn_DEF_TABasedQMC_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TABasedQMC_ExtIEs_specs_405;
extern asn_TYPE_member_t asn_MBR_TABasedQMC_ExtIEs_405[3];
extern asn_TYPE_descriptor_t asn_DEF_TAIBasedQMC_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TAIBasedQMC_ExtIEs_specs_409;
extern asn_TYPE_member_t asn_MBR_TAIBasedQMC_ExtIEs_409[3];
extern asn_TYPE_descriptor_t asn_DEF_CompletedCellinTAI_Item_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CompletedCellinTAI_Item_ExtIEs_specs_413;
extern asn_TYPE_member_t asn_MBR_CompletedCellinTAI_Item_ExtIEs_413[3];
extern asn_TYPE_descriptor_t asn_DEF_TargeteNB_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TargeteNB_ID_ExtIEs_specs_417;
extern asn_TYPE_member_t asn_MBR_TargeteNB_ID_ExtIEs_417[3];
extern asn_TYPE_descriptor_t asn_DEF_TargetRNC_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TargetRNC_ID_ExtIEs_specs_421;
extern asn_TYPE_member_t asn_MBR_TargetRNC_ID_ExtIEs_421[3];
extern asn_TYPE_descriptor_t asn_DEF_TargetNgRanNode_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TargetNgRanNode_ID_ExtIEs_specs_425;
extern asn_TYPE_member_t asn_MBR_TargetNgRanNode_ID_ExtIEs_425[3];
extern asn_TYPE_descriptor_t asn_DEF_GNB_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GNB_ExtIEs_specs_429;
extern asn_TYPE_member_t asn_MBR_GNB_ExtIEs_429[3];
extern asn_TYPE_descriptor_t asn_DEF_Global_GNB_ID_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Global_GNB_ID_ExtIEs_specs_433;
extern asn_TYPE_member_t asn_MBR_Global_GNB_ID_ExtIEs_433[3];
extern asn_TYPE_descriptor_t asn_DEF_NG_eNB_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_NG_eNB_ExtIEs_specs_437;
extern asn_TYPE_member_t asn_MBR_NG_eNB_ExtIEs_437[3];
extern asn_TYPE_descriptor_t asn_DEF_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_specs_441;
extern asn_TYPE_member_t asn_MBR_TargeteNB_ToSourceeNB_TransparentContainer_ExtIEs_441[3];
extern asn_TYPE_descriptor_t asn_DEF_M1ThresholdEventA2_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_M1ThresholdEventA2_ExtIEs_specs_445;
extern asn_TYPE_member_t asn_MBR_M1ThresholdEventA2_ExtIEs_445[3];
extern asn_TYPE_descriptor_t asn_DEF_TraceActivation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TraceActivation_ExtIEs_specs_449;
extern asn_TYPE_member_t asn_MBR_TraceActivation_ExtIEs_449[3];
extern asn_TYPE_descriptor_t asn_DEF_Tunnel_Information_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_Tunnel_Information_ExtIEs_specs_453;
extern asn_TYPE_member_t asn_MBR_Tunnel_Information_ExtIEs_453[3];
extern asn_TYPE_descriptor_t asn_DEF_UEAggregate_MaximumBitrates_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEAggregate_MaximumBitrates_ExtIEs_specs_457;
extern asn_TYPE_member_t asn_MBR_UEAggregate_MaximumBitrates_ExtIEs_457[3];
extern asn_TYPE_descriptor_t asn_DEF_UEAppLayerMeasConfig_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UEAppLayerMeasConfig_ExtIEs_specs_461;
extern asn_TYPE_member_t asn_MBR_UEAppLayerMeasConfig_ExtIEs_461[3];
extern asn_TYPE_descriptor_t asn_DEF_UE_S1AP_ID_pair_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UE_S1AP_ID_pair_ExtIEs_specs_465;
extern asn_TYPE_member_t asn_MBR_UE_S1AP_ID_pair_ExtIEs_465[3];
extern asn_TYPE_descriptor_t asn_DEF_UE_associatedLogicalS1_ConnectionItemExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UE_associatedLogicalS1_ConnectionItemExtIEs_specs_469;
extern asn_TYPE_member_t asn_MBR_UE_associatedLogicalS1_ConnectionItemExtIEs_469[3];
extern asn_TYPE_descriptor_t asn_DEF_UESecurityCapabilities_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UESecurityCapabilities_ExtIEs_specs_473;
extern asn_TYPE_member_t asn_MBR_UESecurityCapabilities_ExtIEs_473[3];
extern asn_TYPE_descriptor_t asn_DEF_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_specs_477;
extern asn_TYPE_member_t asn_MBR_UE_Sidelink_Aggregate_MaximumBitrates_ExtIEs_477[3];
extern asn_TYPE_descriptor_t asn_DEF_UL_CP_SecurityInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UL_CP_SecurityInformation_ExtIEs_specs_481;
extern asn_TYPE_member_t asn_MBR_UL_CP_SecurityInformation_ExtIEs_481[3];
extern asn_TYPE_descriptor_t asn_DEF_UserLocationInformation_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_UserLocationInformation_ExtIEs_specs_485;
extern asn_TYPE_member_t asn_MBR_UserLocationInformation_ExtIEs_485[3];
extern asn_TYPE_descriptor_t asn_DEF_V2XServicesAuthorized_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_V2XServicesAuthorized_ExtIEs_specs_489;
extern asn_TYPE_member_t asn_MBR_V2XServicesAuthorized_ExtIEs_489[3];
extern asn_TYPE_descriptor_t asn_DEF_WLANMeasurementConfiguration_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_WLANMeasurementConfiguration_ExtIEs_specs_493;
extern asn_TYPE_member_t asn_MBR_WLANMeasurementConfiguration_ExtIEs_493[3];
extern asn_TYPE_descriptor_t asn_DEF_X2TNLConfigurationInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_X2TNLConfigurationInfo_ExtIEs_specs_497;
extern asn_TYPE_member_t asn_MBR_X2TNLConfigurationInfo_ExtIEs_497[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBX2ExtTLA_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBX2ExtTLA_ExtIEs_specs_501;
extern asn_TYPE_member_t asn_MBR_ENBX2ExtTLA_ExtIEs_501[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABDataForwardingItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABDataForwardingItem_ExtIEs_specs_505;
extern asn_TYPE_member_t asn_MBR_E_RABDataForwardingItem_ExtIEs_505[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemHOReq_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemHOReq_ExtIEs_specs_509;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemHOReq_ExtIEs_509[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABAdmittedItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABAdmittedItem_ExtIEs_specs_513;
extern asn_TYPE_member_t asn_MBR_E_RABAdmittedItem_ExtIEs_513[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedToSetupItemHOReqAckExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedToSetupItemHOReqAckExtIEs_specs_517;
extern asn_TYPE_member_t asn_MBR_E_RABFailedToSetupItemHOReqAckExtIEs_517[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSwitchedDLItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSwitchedDLItem_ExtIEs_specs_521;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSwitchedDLItem_ExtIEs_521[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSwitchedULItem_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSwitchedULItem_ExtIEs_specs_525;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSwitchedULItem_ExtIEs_525[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemBearerSUReqExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemBearerSUReqExtIEs_specs_529;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemBearerSUReqExtIEs_529[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupItemBearerSUResExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupItemBearerSUResExtIEs_specs_533;
extern asn_TYPE_member_t asn_MBR_E_RABSetupItemBearerSUResExtIEs_533[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeModifyItemBearerModReqExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeModifyItemBearerModReqExtIEs_specs_537;
extern asn_TYPE_member_t asn_MBR_E_RABToBeModifyItemBearerModReqExtIEs_537[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyItemBearerModResExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyItemBearerModResExtIEs_specs_541;
extern asn_TYPE_member_t asn_MBR_E_RABModifyItemBearerModResExtIEs_541[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseItemBearerRelCompExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseItemBearerRelCompExtIEs_specs_545;
extern asn_TYPE_member_t asn_MBR_E_RABReleaseItemBearerRelCompExtIEs_545[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemCtxtSUReqExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemCtxtSUReqExtIEs_specs_549;
extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemCtxtSUReqExtIEs_549[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupItemCtxtSUResExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupItemCtxtSUResExtIEs_specs_553;
extern asn_TYPE_member_t asn_MBR_E_RABSetupItemCtxtSUResExtIEs_553[3];
extern asn_TYPE_descriptor_t asn_DEF_TAIItemExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_TAIItemExtIEs_specs_557;
extern asn_TYPE_member_t asn_MBR_TAIItemExtIEs_557[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeModifiedItemBearerModInd_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeModifiedItemBearerModInd_ExtIEs_specs_561;
extern asn_TYPE_member_t asn_MBR_E_RABToBeModifiedItemBearerModInd_ExtIEs_561[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABNotToBeModifiedItemBearerModInd_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_specs_565;
extern asn_TYPE_member_t asn_MBR_E_RABNotToBeModifiedItemBearerModInd_ExtIEs_565[3];
extern asn_TYPE_descriptor_t asn_DEF_CSGMembershipInfo_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CSGMembershipInfo_ExtIEs_specs_569;
extern asn_TYPE_member_t asn_MBR_CSGMembershipInfo_ExtIEs_569[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyItemBearerModConfExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyItemBearerModConfExtIEs_specs_573;
extern asn_TYPE_member_t asn_MBR_E_RABModifyItemBearerModConfExtIEs_573[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedToResumeItemResumeReq_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedToResumeItemResumeReq_ExtIEs_specs_577;
extern asn_TYPE_member_t asn_MBR_E_RABFailedToResumeItemResumeReq_ExtIEs_577[3];
extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedToResumeItemResumeRes_ExtIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedToResumeItemResumeRes_ExtIEs_specs_581;
extern asn_TYPE_member_t asn_MBR_E_RABFailedToResumeItemResumeRes_ExtIEs_581[3];

#ifdef __cplusplus
}
#endif

#endif	/* _ProtocolExtensionField_H_ */
#include <asn_internal.h>
