/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-Containers"
 * 	found in "Spec/e2_and_x2-combined-and-minimized.asn1"
 * 	`asn1c -pdu=auto -fincludes-quoted -fcompound-names -fno-include-deps -gen-PER -no-gen-OER -no-gen-example`
 */

#ifndef	_ProtocolIE_Field_H_
#define	_ProtocolIE_Field_H_


#include "asn_application.h"

/* Including external dependencies */
#include "ProtocolIE-ID.h"
#include "Criticality.h"
#include "ANY.h"
#include "asn_ioc.h"
#include "RICaction-ToBeSetup-Item.h"
#include "Presence.h"
#include "OPEN_TYPE.h"
#include "constr_CHOICE.h"
#include "constr_SEQUENCE.h"
#include "RICaction-Admitted-Item.h"
#include "RICaction-NotAdmitted-Item.h"
#include "RANfunction-Item.h"
#include "RANfunctionID-Item.h"
#include "RANfunctionIDcause-Item.h"
#include "CellInformation-Item.h"
#include "CellToReport-Item.h"
#include "MeasurementInitiationResult-Item.h"
#include "MeasurementFailureCause-Item.h"
#include "CompleteFailureCauseInformation-Item.h"
#include "CellMeasurementResult-Item.h"
#include "RICrequestID.h"
#include "RANfunctionID.h"
#include "RICsubscription.h"
#include "RICaction-Admitted-List.h"
#include "RICaction-NotAdmitted-List.h"
#include "CriticalityDiagnostics.h"
#include "RICcause.h"
#include "RICactionID.h"
#include "RICindicationSN.h"
#include "RICindicationType.h"
#include "RICindicationHeader.h"
#include "RICindicationMessage.h"
#include "RICcallProcessID.h"
#include "RICcontrolHeader.h"
#include "RICcontrolMessage.h"
#include "RICcontrolAckRequest.h"
#include "RICcontrolStatus.h"
#include "RANfunctions-List.h"
#include "RANfunctionsID-List.h"
#include "RANfunctionsIDcause-List.h"
#include "TimeToWait.h"
#include "UE-X2AP-ID.h"
#include "Cause.h"
#include "UE-X2AP-ID-Extension.h"
#include "SgNB-UE-X2AP-ID.h"
#include "GlobalENB-ID.h"
#include "ServedCells.h"
#include "GUGroupIDList.h"
#include "LHN-ID.h"
#include "CellInformation-List.h"
#include "ServedCellsToModify.h"
#include "Old-ECGIs.h"
#include "CoverageModificationList.h"
#include "Measurement-ID.h"
#include "Registration-Request.h"
#include "ReportCharacteristics.h"
#include "CellToReport-List.h"
#include "ReportingPeriodicity.h"
#include "PartialSuccessIndicator.h"
#include "ReportingPeriodicityRSRPMR.h"
#include "ReportingPeriodicityCSIR.h"
#include "MeasurementInitiationResult-List.h"
#include "CompleteFailureCauseInformation-List.h"
#include "CellMeasurementResult-List.h"
#include "ResponseInformationSeNBReconfComp.h"
#include "InitiatingNodeType-EndcX2Setup.h"
#include "ServedEUTRAcellsENDCX2ManagementList.h"
#include "GlobalGNB-ID.h"
#include "ServedNRcellsENDCX2ManagementList.h"
#include "RespondingNodeType-EndcX2Setup.h"
#include "InitiatingNodeType-EndcConfigUpdate.h"
#include "CellAssistanceInformation.h"
#include "ServedEUTRAcellsToModifyListENDCConfUpd.h"
#include "ServedEUTRAcellsToDeleteListENDCConfUpd.h"
#include "ServedNRcellsToModifyENDCConfUpdList.h"
#include "ServedNRcellsToDeleteENDCConfUpdList.h"
#include "RespondingNodeType-EndcConfigUpdate.h"
#include "GNBOverloadInformation.h"

#ifdef __cplusplus
extern "C" {
#endif

/* Dependencies */
typedef enum RICaction_ToBeSetup_ItemIEs__value_PR {
	RICaction_ToBeSetup_ItemIEs__value_PR_NOTHING,	/* No components present */
	RICaction_ToBeSetup_ItemIEs__value_PR_RICaction_ToBeSetup_Item
} RICaction_ToBeSetup_ItemIEs__value_PR;
typedef enum RICaction_Admitted_ItemIEs__value_PR {
	RICaction_Admitted_ItemIEs__value_PR_NOTHING,	/* No components present */
	RICaction_Admitted_ItemIEs__value_PR_RICaction_Admitted_Item
} RICaction_Admitted_ItemIEs__value_PR;
typedef enum RICaction_NotAdmitted_ItemIEs__value_PR {
	RICaction_NotAdmitted_ItemIEs__value_PR_NOTHING,	/* No components present */
	RICaction_NotAdmitted_ItemIEs__value_PR_RICaction_NotAdmitted_Item
} RICaction_NotAdmitted_ItemIEs__value_PR;
typedef enum RANfunction_ItemIEs__value_PR {
	RANfunction_ItemIEs__value_PR_NOTHING,	/* No components present */
	RANfunction_ItemIEs__value_PR_RANfunction_Item
} RANfunction_ItemIEs__value_PR;
typedef enum RANfunctionID_ItemIEs__value_PR {
	RANfunctionID_ItemIEs__value_PR_NOTHING,	/* No components present */
	RANfunctionID_ItemIEs__value_PR_RANfunctionID_Item
} RANfunctionID_ItemIEs__value_PR;
typedef enum RANfunctionIDcause_ItemIEs__value_PR {
	RANfunctionIDcause_ItemIEs__value_PR_NOTHING,	/* No components present */
	RANfunctionIDcause_ItemIEs__value_PR_RANfunctionIDcause_Item
} RANfunctionIDcause_ItemIEs__value_PR;
typedef enum CellInformation_ItemIEs__value_PR {
	CellInformation_ItemIEs__value_PR_NOTHING,	/* No components present */
	CellInformation_ItemIEs__value_PR_CellInformation_Item
} CellInformation_ItemIEs__value_PR;
typedef enum CellToReport_ItemIEs__value_PR {
	CellToReport_ItemIEs__value_PR_NOTHING,	/* No components present */
	CellToReport_ItemIEs__value_PR_CellToReport_Item
} CellToReport_ItemIEs__value_PR;
typedef enum MeasurementInitiationResult_ItemIEs__value_PR {
	MeasurementInitiationResult_ItemIEs__value_PR_NOTHING,	/* No components present */
	MeasurementInitiationResult_ItemIEs__value_PR_MeasurementInitiationResult_Item
} MeasurementInitiationResult_ItemIEs__value_PR;
typedef enum MeasurementFailureCause_ItemIEs__value_PR {
	MeasurementFailureCause_ItemIEs__value_PR_NOTHING,	/* No components present */
	MeasurementFailureCause_ItemIEs__value_PR_MeasurementFailureCause_Item
} MeasurementFailureCause_ItemIEs__value_PR;
typedef enum CompleteFailureCauseInformation_ItemIEs__value_PR {
	CompleteFailureCauseInformation_ItemIEs__value_PR_NOTHING,	/* No components present */
	CompleteFailureCauseInformation_ItemIEs__value_PR_CompleteFailureCauseInformation_Item
} CompleteFailureCauseInformation_ItemIEs__value_PR;
typedef enum CellMeasurementResult_ItemIEs__value_PR {
	CellMeasurementResult_ItemIEs__value_PR_NOTHING,	/* No components present */
	CellMeasurementResult_ItemIEs__value_PR_CellMeasurementResult_Item
} CellMeasurementResult_ItemIEs__value_PR;
typedef enum RICsubscriptionRequest_IEs__value_PR {
	RICsubscriptionRequest_IEs__value_PR_NOTHING,	/* No components present */
	RICsubscriptionRequest_IEs__value_PR_RICrequestID,
	RICsubscriptionRequest_IEs__value_PR_RANfunctionID,
	RICsubscriptionRequest_IEs__value_PR_RICsubscription
} RICsubscriptionRequest_IEs__value_PR;
typedef enum RICsubscriptionResponse_IEs__value_PR {
	RICsubscriptionResponse_IEs__value_PR_NOTHING,	/* No components present */
	RICsubscriptionResponse_IEs__value_PR_RICrequestID,
	RICsubscriptionResponse_IEs__value_PR_RANfunctionID,
	RICsubscriptionResponse_IEs__value_PR_RICaction_Admitted_List,
	RICsubscriptionResponse_IEs__value_PR_RICaction_NotAdmitted_List
} RICsubscriptionResponse_IEs__value_PR;
typedef enum RICsubscriptionFailure_IEs__value_PR {
	RICsubscriptionFailure_IEs__value_PR_NOTHING,	/* No components present */
	RICsubscriptionFailure_IEs__value_PR_RICrequestID,
	RICsubscriptionFailure_IEs__value_PR_RANfunctionID,
	RICsubscriptionFailure_IEs__value_PR_RICaction_NotAdmitted_List,
	RICsubscriptionFailure_IEs__value_PR_CriticalityDiagnostics
} RICsubscriptionFailure_IEs__value_PR;
typedef enum RICsubscriptionDeleteRequest_IEs__value_PR {
	RICsubscriptionDeleteRequest_IEs__value_PR_NOTHING,	/* No components present */
	RICsubscriptionDeleteRequest_IEs__value_PR_RICrequestID,
	RICsubscriptionDeleteRequest_IEs__value_PR_RANfunctionID
} RICsubscriptionDeleteRequest_IEs__value_PR;
typedef enum RICsubscriptionDeleteResponse_IEs__value_PR {
	RICsubscriptionDeleteResponse_IEs__value_PR_NOTHING,	/* No components present */
	RICsubscriptionDeleteResponse_IEs__value_PR_RICrequestID,
	RICsubscriptionDeleteResponse_IEs__value_PR_RANfunctionID
} RICsubscriptionDeleteResponse_IEs__value_PR;
typedef enum RICsubscriptionDeleteFailure_IEs__value_PR {
	RICsubscriptionDeleteFailure_IEs__value_PR_NOTHING,	/* No components present */
	RICsubscriptionDeleteFailure_IEs__value_PR_RICrequestID,
	RICsubscriptionDeleteFailure_IEs__value_PR_RANfunctionID,
	RICsubscriptionDeleteFailure_IEs__value_PR_RICcause,
	RICsubscriptionDeleteFailure_IEs__value_PR_CriticalityDiagnostics
} RICsubscriptionDeleteFailure_IEs__value_PR;
typedef enum RICindication_IEs__value_PR {
	RICindication_IEs__value_PR_NOTHING,	/* No components present */
	RICindication_IEs__value_PR_RICrequestID,
	RICindication_IEs__value_PR_RANfunctionID,
	RICindication_IEs__value_PR_RICactionID,
	RICindication_IEs__value_PR_RICindicationSN,
	RICindication_IEs__value_PR_RICindicationType,
	RICindication_IEs__value_PR_RICindicationHeader,
	RICindication_IEs__value_PR_RICindicationMessage,
	RICindication_IEs__value_PR_RICcallProcessID
} RICindication_IEs__value_PR;
typedef enum RICcontrolRequest_IEs__value_PR {
	RICcontrolRequest_IEs__value_PR_NOTHING,	/* No components present */
	RICcontrolRequest_IEs__value_PR_RICrequestID,
	RICcontrolRequest_IEs__value_PR_RANfunctionID,
	RICcontrolRequest_IEs__value_PR_RICcallProcessID,
	RICcontrolRequest_IEs__value_PR_RICcontrolHeader,
	RICcontrolRequest_IEs__value_PR_RICcontrolMessage,
	RICcontrolRequest_IEs__value_PR_RICcontrolAckRequest
} RICcontrolRequest_IEs__value_PR;
typedef enum RICcontrolAcknowledge_IEs__value_PR {
	RICcontrolAcknowledge_IEs__value_PR_NOTHING,	/* No components present */
	RICcontrolAcknowledge_IEs__value_PR_RICrequestID,
	RICcontrolAcknowledge_IEs__value_PR_RANfunctionID,
	RICcontrolAcknowledge_IEs__value_PR_RICcallProcessID,
	RICcontrolAcknowledge_IEs__value_PR_RICcontrolStatus
} RICcontrolAcknowledge_IEs__value_PR;
typedef enum RICcontrolFailure_IEs__value_PR {
	RICcontrolFailure_IEs__value_PR_NOTHING,	/* No components present */
	RICcontrolFailure_IEs__value_PR_RICrequestID,
	RICcontrolFailure_IEs__value_PR_RANfunctionID,
	RICcontrolFailure_IEs__value_PR_RICcallProcessID,
	RICcontrolFailure_IEs__value_PR_RICcause
} RICcontrolFailure_IEs__value_PR;
typedef enum RICserviceUpdate_IEs__value_PR {
	RICserviceUpdate_IEs__value_PR_NOTHING,	/* No components present */
	RICserviceUpdate_IEs__value_PR_RANfunctions_List,
	RICserviceUpdate_IEs__value_PR_RANfunctionsID_List
} RICserviceUpdate_IEs__value_PR;
typedef enum RICserviceUpdateAcknowledge_IEs__value_PR {
	RICserviceUpdateAcknowledge_IEs__value_PR_NOTHING,	/* No components present */
	RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsID_List,
	RICserviceUpdateAcknowledge_IEs__value_PR_RANfunctionsIDcause_List
} RICserviceUpdateAcknowledge_IEs__value_PR;
typedef enum RICserviceUpdateFailure_IEs__value_PR {
	RICserviceUpdateFailure_IEs__value_PR_NOTHING,	/* No components present */
	RICserviceUpdateFailure_IEs__value_PR_RANfunctionsIDcause_List,
	RICserviceUpdateFailure_IEs__value_PR_TimeToWait,
	RICserviceUpdateFailure_IEs__value_PR_CriticalityDiagnostics
} RICserviceUpdateFailure_IEs__value_PR;
typedef enum RICserviceQuery_IEs__value_PR {
	RICserviceQuery_IEs__value_PR_NOTHING,	/* No components present */
	RICserviceQuery_IEs__value_PR_RANfunctionsID_List
} RICserviceQuery_IEs__value_PR;
typedef enum ErrorIndication_IEs__value_PR {
	ErrorIndication_IEs__value_PR_NOTHING,	/* No components present */
	ErrorIndication_IEs__value_PR_UE_X2AP_ID,
	ErrorIndication_IEs__value_PR_Cause,
	ErrorIndication_IEs__value_PR_CriticalityDiagnostics,
	ErrorIndication_IEs__value_PR_UE_X2AP_ID_Extension,
	ErrorIndication_IEs__value_PR_SgNB_UE_X2AP_ID
} ErrorIndication_IEs__value_PR;
typedef enum ResetRequest_IEs__value_PR {
	ResetRequest_IEs__value_PR_NOTHING,	/* No components present */
	ResetRequest_IEs__value_PR_Cause
} ResetRequest_IEs__value_PR;
typedef enum ResetResponse_IEs__value_PR {
	ResetResponse_IEs__value_PR_NOTHING,	/* No components present */
	ResetResponse_IEs__value_PR_CriticalityDiagnostics
} ResetResponse_IEs__value_PR;
typedef enum X2SetupRequest_IEs__value_PR {
	X2SetupRequest_IEs__value_PR_NOTHING,	/* No components present */
	X2SetupRequest_IEs__value_PR_GlobalENB_ID,
	X2SetupRequest_IEs__value_PR_ServedCells,
	X2SetupRequest_IEs__value_PR_GUGroupIDList,
	X2SetupRequest_IEs__value_PR_LHN_ID
} X2SetupRequest_IEs__value_PR;
typedef enum X2SetupResponse_IEs__value_PR {
	X2SetupResponse_IEs__value_PR_NOTHING,	/* No components present */
	X2SetupResponse_IEs__value_PR_GlobalENB_ID,
	X2SetupResponse_IEs__value_PR_ServedCells,
	X2SetupResponse_IEs__value_PR_GUGroupIDList,
	X2SetupResponse_IEs__value_PR_CriticalityDiagnostics,
	X2SetupResponse_IEs__value_PR_LHN_ID
} X2SetupResponse_IEs__value_PR;
typedef enum X2SetupFailure_IEs__value_PR {
	X2SetupFailure_IEs__value_PR_NOTHING,	/* No components present */
	X2SetupFailure_IEs__value_PR_Cause,
	X2SetupFailure_IEs__value_PR_TimeToWait,
	X2SetupFailure_IEs__value_PR_CriticalityDiagnostics
} X2SetupFailure_IEs__value_PR;
typedef enum LoadInformation_IEs__value_PR {
	LoadInformation_IEs__value_PR_NOTHING,	/* No components present */
	LoadInformation_IEs__value_PR_CellInformation_List
} LoadInformation_IEs__value_PR;
typedef enum ENBConfigurationUpdate_IEs__value_PR {
	ENBConfigurationUpdate_IEs__value_PR_NOTHING,	/* No components present */
	ENBConfigurationUpdate_IEs__value_PR_ServedCells,
	ENBConfigurationUpdate_IEs__value_PR_ServedCellsToModify,
	ENBConfigurationUpdate_IEs__value_PR_Old_ECGIs,
	ENBConfigurationUpdate_IEs__value_PR_GUGroupIDList,
	ENBConfigurationUpdate_IEs__value_PR_CoverageModificationList
} ENBConfigurationUpdate_IEs__value_PR;
typedef enum ENBConfigurationUpdateAcknowledge_IEs__value_PR {
	ENBConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING,	/* No components present */
	ENBConfigurationUpdateAcknowledge_IEs__value_PR_CriticalityDiagnostics
} ENBConfigurationUpdateAcknowledge_IEs__value_PR;
typedef enum ENBConfigurationUpdateFailure_IEs__value_PR {
	ENBConfigurationUpdateFailure_IEs__value_PR_NOTHING,	/* No components present */
	ENBConfigurationUpdateFailure_IEs__value_PR_Cause,
	ENBConfigurationUpdateFailure_IEs__value_PR_TimeToWait,
	ENBConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics
} ENBConfigurationUpdateFailure_IEs__value_PR;
typedef enum ResourceStatusRequest_IEs__value_PR {
	ResourceStatusRequest_IEs__value_PR_NOTHING,	/* No components present */
	ResourceStatusRequest_IEs__value_PR_Measurement_ID,
	ResourceStatusRequest_IEs__value_PR_Registration_Request,
	ResourceStatusRequest_IEs__value_PR_ReportCharacteristics,
	ResourceStatusRequest_IEs__value_PR_CellToReport_List,
	ResourceStatusRequest_IEs__value_PR_ReportingPeriodicity,
	ResourceStatusRequest_IEs__value_PR_PartialSuccessIndicator,
	ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityRSRPMR,
	ResourceStatusRequest_IEs__value_PR_ReportingPeriodicityCSIR
} ResourceStatusRequest_IEs__value_PR;
typedef enum ResourceStatusResponse_IEs__value_PR {
	ResourceStatusResponse_IEs__value_PR_NOTHING,	/* No components present */
	ResourceStatusResponse_IEs__value_PR_Measurement_ID,
	ResourceStatusResponse_IEs__value_PR_CriticalityDiagnostics,
	ResourceStatusResponse_IEs__value_PR_MeasurementInitiationResult_List
} ResourceStatusResponse_IEs__value_PR;
typedef enum ResourceStatusFailure_IEs__value_PR {
	ResourceStatusFailure_IEs__value_PR_NOTHING,	/* No components present */
	ResourceStatusFailure_IEs__value_PR_Measurement_ID,
	ResourceStatusFailure_IEs__value_PR_Cause,
	ResourceStatusFailure_IEs__value_PR_CriticalityDiagnostics,
	ResourceStatusFailure_IEs__value_PR_CompleteFailureCauseInformation_List
} ResourceStatusFailure_IEs__value_PR;
typedef enum ResourceStatusUpdate_IEs__value_PR {
	ResourceStatusUpdate_IEs__value_PR_NOTHING,	/* No components present */
	ResourceStatusUpdate_IEs__value_PR_Measurement_ID,
	ResourceStatusUpdate_IEs__value_PR_CellMeasurementResult_List
} ResourceStatusUpdate_IEs__value_PR;
typedef enum SeNBReconfigurationComplete_IEs__value_PR {
	SeNBReconfigurationComplete_IEs__value_PR_NOTHING,	/* No components present */
	SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID,
	SeNBReconfigurationComplete_IEs__value_PR_ResponseInformationSeNBReconfComp,
	SeNBReconfigurationComplete_IEs__value_PR_UE_X2AP_ID_Extension
} SeNBReconfigurationComplete_IEs__value_PR;
typedef enum ENDCX2SetupRequest_IEs__value_PR {
	ENDCX2SetupRequest_IEs__value_PR_NOTHING,	/* No components present */
	ENDCX2SetupRequest_IEs__value_PR_InitiatingNodeType_EndcX2Setup
} ENDCX2SetupRequest_IEs__value_PR;
typedef enum ENB_ENDCX2SetupReqIEs__value_PR {
	ENB_ENDCX2SetupReqIEs__value_PR_NOTHING,	/* No components present */
	ENB_ENDCX2SetupReqIEs__value_PR_GlobalENB_ID,
	ENB_ENDCX2SetupReqIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList
} ENB_ENDCX2SetupReqIEs__value_PR;
typedef enum En_gNB_ENDCX2SetupReqIEs__value_PR {
	En_gNB_ENDCX2SetupReqIEs__value_PR_NOTHING,	/* No components present */
	En_gNB_ENDCX2SetupReqIEs__value_PR_GlobalGNB_ID,
	En_gNB_ENDCX2SetupReqIEs__value_PR_ServedNRcellsENDCX2ManagementList
} En_gNB_ENDCX2SetupReqIEs__value_PR;
typedef enum ENDCX2SetupResponse_IEs__value_PR {
	ENDCX2SetupResponse_IEs__value_PR_NOTHING,	/* No components present */
	ENDCX2SetupResponse_IEs__value_PR_RespondingNodeType_EndcX2Setup
} ENDCX2SetupResponse_IEs__value_PR;
typedef enum ENB_ENDCX2SetupReqAckIEs__value_PR {
	ENB_ENDCX2SetupReqAckIEs__value_PR_NOTHING,	/* No components present */
	ENB_ENDCX2SetupReqAckIEs__value_PR_GlobalENB_ID,
	ENB_ENDCX2SetupReqAckIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList
} ENB_ENDCX2SetupReqAckIEs__value_PR;
typedef enum En_gNB_ENDCX2SetupReqAckIEs__value_PR {
	En_gNB_ENDCX2SetupReqAckIEs__value_PR_NOTHING,	/* No components present */
	En_gNB_ENDCX2SetupReqAckIEs__value_PR_GlobalGNB_ID,
	En_gNB_ENDCX2SetupReqAckIEs__value_PR_ServedNRcellsENDCX2ManagementList
} En_gNB_ENDCX2SetupReqAckIEs__value_PR;
typedef enum ENDCX2SetupFailure_IEs__value_PR {
	ENDCX2SetupFailure_IEs__value_PR_NOTHING,	/* No components present */
	ENDCX2SetupFailure_IEs__value_PR_Cause,
	ENDCX2SetupFailure_IEs__value_PR_CriticalityDiagnostics,
	ENDCX2SetupFailure_IEs__value_PR_TimeToWait
} ENDCX2SetupFailure_IEs__value_PR;
typedef enum ENDCConfigurationUpdate_IEs__value_PR {
	ENDCConfigurationUpdate_IEs__value_PR_NOTHING,	/* No components present */
	ENDCConfigurationUpdate_IEs__value_PR_InitiatingNodeType_EndcConfigUpdate
} ENDCConfigurationUpdate_IEs__value_PR;
typedef enum ENB_ENDCConfigUpdateIEs__value_PR {
	ENB_ENDCConfigUpdateIEs__value_PR_NOTHING,	/* No components present */
	ENB_ENDCConfigUpdateIEs__value_PR_CellAssistanceInformation,
	ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsENDCX2ManagementList,
	ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsToModifyListENDCConfUpd,
	ENB_ENDCConfigUpdateIEs__value_PR_ServedEUTRAcellsToDeleteListENDCConfUpd
} ENB_ENDCConfigUpdateIEs__value_PR;
typedef enum En_gNB_ENDCConfigUpdateIEs__value_PR {
	En_gNB_ENDCConfigUpdateIEs__value_PR_NOTHING,	/* No components present */
	En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsENDCX2ManagementList,
	En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsToModifyENDCConfUpdList,
	En_gNB_ENDCConfigUpdateIEs__value_PR_ServedNRcellsToDeleteENDCConfUpdList
} En_gNB_ENDCConfigUpdateIEs__value_PR;
typedef enum ENDCConfigurationUpdateAcknowledge_IEs__value_PR {
	ENDCConfigurationUpdateAcknowledge_IEs__value_PR_NOTHING,	/* No components present */
	ENDCConfigurationUpdateAcknowledge_IEs__value_PR_RespondingNodeType_EndcConfigUpdate
} ENDCConfigurationUpdateAcknowledge_IEs__value_PR;
typedef enum ENB_ENDCConfigUpdateAckIEs__value_PR {
	ENB_ENDCConfigUpdateAckIEs__value_PR_NOTHING	/* No components present */
	
} ENB_ENDCConfigUpdateAckIEs__value_PR;
typedef enum En_gNB_ENDCConfigUpdateAckIEs__value_PR {
	En_gNB_ENDCConfigUpdateAckIEs__value_PR_NOTHING,	/* No components present */
	En_gNB_ENDCConfigUpdateAckIEs__value_PR_ServedNRcellsENDCX2ManagementList
} En_gNB_ENDCConfigUpdateAckIEs__value_PR;
typedef enum ENDCConfigurationUpdateFailure_IEs__value_PR {
	ENDCConfigurationUpdateFailure_IEs__value_PR_NOTHING,	/* No components present */
	ENDCConfigurationUpdateFailure_IEs__value_PR_Cause,
	ENDCConfigurationUpdateFailure_IEs__value_PR_CriticalityDiagnostics,
	ENDCConfigurationUpdateFailure_IEs__value_PR_TimeToWait
} ENDCConfigurationUpdateFailure_IEs__value_PR;
typedef enum GNBStatusIndicationIEs__value_PR {
	GNBStatusIndicationIEs__value_PR_NOTHING,	/* No components present */
	GNBStatusIndicationIEs__value_PR_GNBOverloadInformation
} GNBStatusIndicationIEs__value_PR;

/* ProtocolIE-Field */
typedef struct RICaction_ToBeSetup_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICaction_ToBeSetup_ItemIEs__value {
		RICaction_ToBeSetup_ItemIEs__value_PR present;
		union RICaction_ToBeSetup_ItemIEs__value_u {
			RICaction_ToBeSetup_Item_t	 RICaction_ToBeSetup_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICaction_ToBeSetup_ItemIEs_t;
typedef struct RICaction_Admitted_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICaction_Admitted_ItemIEs__value {
		RICaction_Admitted_ItemIEs__value_PR present;
		union RICaction_Admitted_ItemIEs__value_u {
			RICaction_Admitted_Item_t	 RICaction_Admitted_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICaction_Admitted_ItemIEs_t;
typedef struct RICaction_NotAdmitted_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICaction_NotAdmitted_ItemIEs__value {
		RICaction_NotAdmitted_ItemIEs__value_PR present;
		union RICaction_NotAdmitted_ItemIEs__value_u {
			RICaction_NotAdmitted_Item_t	 RICaction_NotAdmitted_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICaction_NotAdmitted_ItemIEs_t;
typedef struct RANfunction_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RANfunction_ItemIEs__value {
		RANfunction_ItemIEs__value_PR present;
		union RANfunction_ItemIEs__value_u {
			RANfunction_Item_t	 RANfunction_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANfunction_ItemIEs_t;
typedef struct RANfunctionID_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RANfunctionID_ItemIEs__value {
		RANfunctionID_ItemIEs__value_PR present;
		union RANfunctionID_ItemIEs__value_u {
			RANfunctionID_Item_t	 RANfunctionID_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANfunctionID_ItemIEs_t;
typedef struct RANfunctionIDcause_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RANfunctionIDcause_ItemIEs__value {
		RANfunctionIDcause_ItemIEs__value_PR present;
		union RANfunctionIDcause_ItemIEs__value_u {
			RANfunctionIDcause_Item_t	 RANfunctionIDcause_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RANfunctionIDcause_ItemIEs_t;
typedef struct CellInformation_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellInformation_ItemIEs__value {
		CellInformation_ItemIEs__value_PR present;
		union CellInformation_ItemIEs__value_u {
			CellInformation_Item_t	 CellInformation_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellInformation_ItemIEs_t;
typedef struct CellToReport_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellToReport_ItemIEs__value {
		CellToReport_ItemIEs__value_PR present;
		union CellToReport_ItemIEs__value_u {
			CellToReport_Item_t	 CellToReport_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellToReport_ItemIEs_t;
typedef struct MeasurementInitiationResult_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MeasurementInitiationResult_ItemIEs__value {
		MeasurementInitiationResult_ItemIEs__value_PR present;
		union MeasurementInitiationResult_ItemIEs__value_u {
			MeasurementInitiationResult_Item_t	 MeasurementInitiationResult_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MeasurementInitiationResult_ItemIEs_t;
typedef struct MeasurementFailureCause_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct MeasurementFailureCause_ItemIEs__value {
		MeasurementFailureCause_ItemIEs__value_PR present;
		union MeasurementFailureCause_ItemIEs__value_u {
			MeasurementFailureCause_Item_t	 MeasurementFailureCause_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} MeasurementFailureCause_ItemIEs_t;
typedef struct CompleteFailureCauseInformation_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CompleteFailureCauseInformation_ItemIEs__value {
		CompleteFailureCauseInformation_ItemIEs__value_PR present;
		union CompleteFailureCauseInformation_ItemIEs__value_u {
			CompleteFailureCauseInformation_Item_t	 CompleteFailureCauseInformation_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CompleteFailureCauseInformation_ItemIEs_t;
typedef struct CellMeasurementResult_ItemIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct CellMeasurementResult_ItemIEs__value {
		CellMeasurementResult_ItemIEs__value_PR present;
		union CellMeasurementResult_ItemIEs__value_u {
			CellMeasurementResult_Item_t	 CellMeasurementResult_Item;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} CellMeasurementResult_ItemIEs_t;
typedef struct RICsubscriptionRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICsubscriptionRequest_IEs__value {
		RICsubscriptionRequest_IEs__value_PR present;
		union RICsubscriptionRequest_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICsubscription_t	 RICsubscription;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICsubscriptionRequest_IEs_t;
typedef struct RICsubscriptionResponse_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICsubscriptionResponse_IEs__value {
		RICsubscriptionResponse_IEs__value_PR present;
		union RICsubscriptionResponse_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICaction_Admitted_List_t	 RICaction_Admitted_List;
			RICaction_NotAdmitted_List_t	 RICaction_NotAdmitted_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICsubscriptionResponse_IEs_t;
typedef struct RICsubscriptionFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICsubscriptionFailure_IEs__value {
		RICsubscriptionFailure_IEs__value_PR present;
		union RICsubscriptionFailure_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICaction_NotAdmitted_List_t	 RICaction_NotAdmitted_List;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICsubscriptionFailure_IEs_t;
typedef struct RICsubscriptionDeleteRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICsubscriptionDeleteRequest_IEs__value {
		RICsubscriptionDeleteRequest_IEs__value_PR present;
		union RICsubscriptionDeleteRequest_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICsubscriptionDeleteRequest_IEs_t;
typedef struct RICsubscriptionDeleteResponse_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICsubscriptionDeleteResponse_IEs__value {
		RICsubscriptionDeleteResponse_IEs__value_PR present;
		union RICsubscriptionDeleteResponse_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICsubscriptionDeleteResponse_IEs_t;
typedef struct RICsubscriptionDeleteFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICsubscriptionDeleteFailure_IEs__value {
		RICsubscriptionDeleteFailure_IEs__value_PR present;
		union RICsubscriptionDeleteFailure_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICcause_t	 RICcause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICsubscriptionDeleteFailure_IEs_t;
typedef struct RICindication_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICindication_IEs__value {
		RICindication_IEs__value_PR present;
		union RICindication_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICactionID_t	 RICactionID;
			RICindicationSN_t	 RICindicationSN;
			RICindicationType_t	 RICindicationType;
			RICindicationHeader_t	 RICindicationHeader;
			RICindicationMessage_t	 RICindicationMessage;
			RICcallProcessID_t	 RICcallProcessID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICindication_IEs_t;
typedef struct RICcontrolRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICcontrolRequest_IEs__value {
		RICcontrolRequest_IEs__value_PR present;
		union RICcontrolRequest_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICcallProcessID_t	 RICcallProcessID;
			RICcontrolHeader_t	 RICcontrolHeader;
			RICcontrolMessage_t	 RICcontrolMessage;
			RICcontrolAckRequest_t	 RICcontrolAckRequest;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICcontrolRequest_IEs_t;
typedef struct RICcontrolAcknowledge_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICcontrolAcknowledge_IEs__value {
		RICcontrolAcknowledge_IEs__value_PR present;
		union RICcontrolAcknowledge_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICcallProcessID_t	 RICcallProcessID;
			RICcontrolStatus_t	 RICcontrolStatus;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICcontrolAcknowledge_IEs_t;
typedef struct RICcontrolFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICcontrolFailure_IEs__value {
		RICcontrolFailure_IEs__value_PR present;
		union RICcontrolFailure_IEs__value_u {
			RICrequestID_t	 RICrequestID;
			RANfunctionID_t	 RANfunctionID;
			RICcallProcessID_t	 RICcallProcessID;
			RICcause_t	 RICcause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICcontrolFailure_IEs_t;
typedef struct RICserviceUpdate_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICserviceUpdate_IEs__value {
		RICserviceUpdate_IEs__value_PR present;
		union RICserviceUpdate_IEs__value_u {
			RANfunctions_List_t	 RANfunctions_List;
			RANfunctionsID_List_t	 RANfunctionsID_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICserviceUpdate_IEs_t;
typedef struct RICserviceUpdateAcknowledge_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICserviceUpdateAcknowledge_IEs__value {
		RICserviceUpdateAcknowledge_IEs__value_PR present;
		union RICserviceUpdateAcknowledge_IEs__value_u {
			RANfunctionsID_List_t	 RANfunctionsID_List;
			RANfunctionsIDcause_List_t	 RANfunctionsIDcause_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICserviceUpdateAcknowledge_IEs_t;
typedef struct RICserviceUpdateFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICserviceUpdateFailure_IEs__value {
		RICserviceUpdateFailure_IEs__value_PR present;
		union RICserviceUpdateFailure_IEs__value_u {
			RANfunctionsIDcause_List_t	 RANfunctionsIDcause_List;
			TimeToWait_t	 TimeToWait;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICserviceUpdateFailure_IEs_t;
typedef struct RICserviceQuery_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct RICserviceQuery_IEs__value {
		RICserviceQuery_IEs__value_PR present;
		union RICserviceQuery_IEs__value_u {
			RANfunctionsID_List_t	 RANfunctionsID_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} RICserviceQuery_IEs_t;
typedef struct ErrorIndication_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ErrorIndication_IEs__value {
		ErrorIndication_IEs__value_PR present;
		union ErrorIndication_IEs__value_u {
			UE_X2AP_ID_t	 UE_X2AP_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			UE_X2AP_ID_Extension_t	 UE_X2AP_ID_Extension;
			SgNB_UE_X2AP_ID_t	 SgNB_UE_X2AP_ID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ErrorIndication_IEs_t;
typedef struct ResetRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResetRequest_IEs__value {
		ResetRequest_IEs__value_PR present;
		union ResetRequest_IEs__value_u {
			Cause_t	 Cause;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResetRequest_IEs_t;
typedef struct ResetResponse_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResetResponse_IEs__value {
		ResetResponse_IEs__value_PR present;
		union ResetResponse_IEs__value_u {
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResetResponse_IEs_t;
typedef struct X2SetupRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct X2SetupRequest_IEs__value {
		X2SetupRequest_IEs__value_PR present;
		union X2SetupRequest_IEs__value_u {
			GlobalENB_ID_t	 GlobalENB_ID;
			ServedCells_t	 ServedCells;
			GUGroupIDList_t	 GUGroupIDList;
			LHN_ID_t	 LHN_ID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} X2SetupRequest_IEs_t;
typedef struct X2SetupResponse_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct X2SetupResponse_IEs__value {
		X2SetupResponse_IEs__value_PR present;
		union X2SetupResponse_IEs__value_u {
			GlobalENB_ID_t	 GlobalENB_ID;
			ServedCells_t	 ServedCells;
			GUGroupIDList_t	 GUGroupIDList;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			LHN_ID_t	 LHN_ID;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} X2SetupResponse_IEs_t;
typedef struct X2SetupFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct X2SetupFailure_IEs__value {
		X2SetupFailure_IEs__value_PR present;
		union X2SetupFailure_IEs__value_u {
			Cause_t	 Cause;
			TimeToWait_t	 TimeToWait;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} X2SetupFailure_IEs_t;
typedef struct LoadInformation_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct LoadInformation_IEs__value {
		LoadInformation_IEs__value_PR present;
		union LoadInformation_IEs__value_u {
			CellInformation_List_t	 CellInformation_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} LoadInformation_IEs_t;
typedef struct ENBConfigurationUpdate_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBConfigurationUpdate_IEs__value {
		ENBConfigurationUpdate_IEs__value_PR present;
		union ENBConfigurationUpdate_IEs__value_u {
			ServedCells_t	 ServedCells;
			ServedCellsToModify_t	 ServedCellsToModify;
			Old_ECGIs_t	 Old_ECGIs;
			GUGroupIDList_t	 GUGroupIDList;
			CoverageModificationList_t	 CoverageModificationList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBConfigurationUpdate_IEs_t;
typedef struct ENBConfigurationUpdateAcknowledge_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBConfigurationUpdateAcknowledge_IEs__value {
		ENBConfigurationUpdateAcknowledge_IEs__value_PR present;
		union ENBConfigurationUpdateAcknowledge_IEs__value_u {
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBConfigurationUpdateAcknowledge_IEs_t;
typedef struct ENBConfigurationUpdateFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENBConfigurationUpdateFailure_IEs__value {
		ENBConfigurationUpdateFailure_IEs__value_PR present;
		union ENBConfigurationUpdateFailure_IEs__value_u {
			Cause_t	 Cause;
			TimeToWait_t	 TimeToWait;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENBConfigurationUpdateFailure_IEs_t;
typedef struct ResourceStatusRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResourceStatusRequest_IEs__value {
		ResourceStatusRequest_IEs__value_PR present;
		union ResourceStatusRequest_IEs__value_u {
			Measurement_ID_t	 Measurement_ID;
			Registration_Request_t	 Registration_Request;
			ReportCharacteristics_t	 ReportCharacteristics;
			CellToReport_List_t	 CellToReport_List;
			ReportingPeriodicity_t	 ReportingPeriodicity;
			PartialSuccessIndicator_t	 PartialSuccessIndicator;
			ReportingPeriodicityRSRPMR_t	 ReportingPeriodicityRSRPMR;
			ReportingPeriodicityCSIR_t	 ReportingPeriodicityCSIR;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResourceStatusRequest_IEs_t;
typedef struct ResourceStatusResponse_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResourceStatusResponse_IEs__value {
		ResourceStatusResponse_IEs__value_PR present;
		union ResourceStatusResponse_IEs__value_u {
			Measurement_ID_t	 Measurement_ID;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			MeasurementInitiationResult_List_t	 MeasurementInitiationResult_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResourceStatusResponse_IEs_t;
typedef struct ResourceStatusFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResourceStatusFailure_IEs__value {
		ResourceStatusFailure_IEs__value_PR present;
		union ResourceStatusFailure_IEs__value_u {
			Measurement_ID_t	 Measurement_ID;
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			CompleteFailureCauseInformation_List_t	 CompleteFailureCauseInformation_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResourceStatusFailure_IEs_t;
typedef struct ResourceStatusUpdate_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ResourceStatusUpdate_IEs__value {
		ResourceStatusUpdate_IEs__value_PR present;
		union ResourceStatusUpdate_IEs__value_u {
			Measurement_ID_t	 Measurement_ID;
			CellMeasurementResult_List_t	 CellMeasurementResult_List;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ResourceStatusUpdate_IEs_t;
typedef struct SeNBReconfigurationComplete_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct SeNBReconfigurationComplete_IEs__value {
		SeNBReconfigurationComplete_IEs__value_PR present;
		union SeNBReconfigurationComplete_IEs__value_u {
			UE_X2AP_ID_t	 UE_X2AP_ID;
			ResponseInformationSeNBReconfComp_t	 ResponseInformationSeNBReconfComp;
			UE_X2AP_ID_Extension_t	 UE_X2AP_ID_Extension;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} SeNBReconfigurationComplete_IEs_t;
typedef struct ENDCX2SetupRequest_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENDCX2SetupRequest_IEs__value {
		ENDCX2SetupRequest_IEs__value_PR present;
		union ENDCX2SetupRequest_IEs__value_u {
			InitiatingNodeType_EndcX2Setup_t	 InitiatingNodeType_EndcX2Setup;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENDCX2SetupRequest_IEs_t;
typedef struct ENB_ENDCX2SetupReqIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENB_ENDCX2SetupReqIEs__value {
		ENB_ENDCX2SetupReqIEs__value_PR present;
		union ENB_ENDCX2SetupReqIEs__value_u {
			GlobalENB_ID_t	 GlobalENB_ID;
			ServedEUTRAcellsENDCX2ManagementList_t	 ServedEUTRAcellsENDCX2ManagementList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENB_ENDCX2SetupReqIEs_t;
typedef struct En_gNB_ENDCX2SetupReqIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct En_gNB_ENDCX2SetupReqIEs__value {
		En_gNB_ENDCX2SetupReqIEs__value_PR present;
		union En_gNB_ENDCX2SetupReqIEs__value_u {
			GlobalGNB_ID_t	 GlobalGNB_ID;
			ServedNRcellsENDCX2ManagementList_t	 ServedNRcellsENDCX2ManagementList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} En_gNB_ENDCX2SetupReqIEs_t;
typedef struct ENDCX2SetupResponse_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENDCX2SetupResponse_IEs__value {
		ENDCX2SetupResponse_IEs__value_PR present;
		union ENDCX2SetupResponse_IEs__value_u {
			RespondingNodeType_EndcX2Setup_t	 RespondingNodeType_EndcX2Setup;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENDCX2SetupResponse_IEs_t;
typedef struct ENB_ENDCX2SetupReqAckIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENB_ENDCX2SetupReqAckIEs__value {
		ENB_ENDCX2SetupReqAckIEs__value_PR present;
		union ENB_ENDCX2SetupReqAckIEs__value_u {
			GlobalENB_ID_t	 GlobalENB_ID;
			ServedEUTRAcellsENDCX2ManagementList_t	 ServedEUTRAcellsENDCX2ManagementList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENB_ENDCX2SetupReqAckIEs_t;
typedef struct En_gNB_ENDCX2SetupReqAckIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct En_gNB_ENDCX2SetupReqAckIEs__value {
		En_gNB_ENDCX2SetupReqAckIEs__value_PR present;
		union En_gNB_ENDCX2SetupReqAckIEs__value_u {
			GlobalGNB_ID_t	 GlobalGNB_ID;
			ServedNRcellsENDCX2ManagementList_t	 ServedNRcellsENDCX2ManagementList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} En_gNB_ENDCX2SetupReqAckIEs_t;
typedef struct ENDCX2SetupFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENDCX2SetupFailure_IEs__value {
		ENDCX2SetupFailure_IEs__value_PR present;
		union ENDCX2SetupFailure_IEs__value_u {
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			TimeToWait_t	 TimeToWait;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENDCX2SetupFailure_IEs_t;
typedef struct ENDCConfigurationUpdate_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENDCConfigurationUpdate_IEs__value {
		ENDCConfigurationUpdate_IEs__value_PR present;
		union ENDCConfigurationUpdate_IEs__value_u {
			InitiatingNodeType_EndcConfigUpdate_t	 InitiatingNodeType_EndcConfigUpdate;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENDCConfigurationUpdate_IEs_t;
typedef struct ENB_ENDCConfigUpdateIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENB_ENDCConfigUpdateIEs__value {
		ENB_ENDCConfigUpdateIEs__value_PR present;
		union ENB_ENDCConfigUpdateIEs__value_u {
			CellAssistanceInformation_t	 CellAssistanceInformation;
			ServedEUTRAcellsENDCX2ManagementList_t	 ServedEUTRAcellsENDCX2ManagementList;
			ServedEUTRAcellsToModifyListENDCConfUpd_t	 ServedEUTRAcellsToModifyListENDCConfUpd;
			ServedEUTRAcellsToDeleteListENDCConfUpd_t	 ServedEUTRAcellsToDeleteListENDCConfUpd;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENB_ENDCConfigUpdateIEs_t;
typedef struct En_gNB_ENDCConfigUpdateIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct En_gNB_ENDCConfigUpdateIEs__value {
		En_gNB_ENDCConfigUpdateIEs__value_PR present;
		union En_gNB_ENDCConfigUpdateIEs__value_u {
			ServedNRcellsENDCX2ManagementList_t	 ServedNRcellsENDCX2ManagementList;
			ServedNRcellsToModifyENDCConfUpdList_t	 ServedNRcellsToModifyENDCConfUpdList;
			ServedNRcellsToDeleteENDCConfUpdList_t	 ServedNRcellsToDeleteENDCConfUpdList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} En_gNB_ENDCConfigUpdateIEs_t;
typedef struct ENDCConfigurationUpdateAcknowledge_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENDCConfigurationUpdateAcknowledge_IEs__value {
		ENDCConfigurationUpdateAcknowledge_IEs__value_PR present;
		union ENDCConfigurationUpdateAcknowledge_IEs__value_u {
			RespondingNodeType_EndcConfigUpdate_t	 RespondingNodeType_EndcConfigUpdate;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENDCConfigurationUpdateAcknowledge_IEs_t;
typedef struct ENB_ENDCConfigUpdateAckIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENB_ENDCConfigUpdateAckIEs__value {
		ENB_ENDCConfigUpdateAckIEs__value_PR present;
		union ENB_ENDCConfigUpdateAckIEs__value_u {
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENB_ENDCConfigUpdateAckIEs_t;
typedef struct En_gNB_ENDCConfigUpdateAckIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct En_gNB_ENDCConfigUpdateAckIEs__value {
		En_gNB_ENDCConfigUpdateAckIEs__value_PR present;
		union En_gNB_ENDCConfigUpdateAckIEs__value_u {
			ServedNRcellsENDCX2ManagementList_t	 ServedNRcellsENDCX2ManagementList;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} En_gNB_ENDCConfigUpdateAckIEs_t;
typedef struct ENDCConfigurationUpdateFailure_IEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct ENDCConfigurationUpdateFailure_IEs__value {
		ENDCConfigurationUpdateFailure_IEs__value_PR present;
		union ENDCConfigurationUpdateFailure_IEs__value_u {
			Cause_t	 Cause;
			CriticalityDiagnostics_t	 CriticalityDiagnostics;
			TimeToWait_t	 TimeToWait;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} ENDCConfigurationUpdateFailure_IEs_t;
typedef struct GNBStatusIndicationIEs {
	ProtocolIE_ID_t	 id;
	Criticality_t	 criticality;
	struct GNBStatusIndicationIEs__value {
		GNBStatusIndicationIEs__value_PR present;
		union GNBStatusIndicationIEs__value_u {
			GNBOverloadInformation_t	 GNBOverloadInformation;
		} choice;
		
		/* Context for parsing across buffer boundaries */
		asn_struct_ctx_t _asn_ctx;
	} value;
	
	/* Context for parsing across buffer boundaries */
	asn_struct_ctx_t _asn_ctx;
} GNBStatusIndicationIEs_t;

/* Implementation */
extern asn_TYPE_descriptor_t asn_DEF_RICaction_ToBeSetup_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_ToBeSetup_ItemIEs_specs_1;
extern asn_TYPE_member_t asn_MBR_RICaction_ToBeSetup_ItemIEs_1[3];
extern asn_TYPE_descriptor_t asn_DEF_RICaction_Admitted_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_Admitted_ItemIEs_specs_5;
extern asn_TYPE_member_t asn_MBR_RICaction_Admitted_ItemIEs_5[3];
extern asn_TYPE_descriptor_t asn_DEF_RICaction_NotAdmitted_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICaction_NotAdmitted_ItemIEs_specs_9;
extern asn_TYPE_member_t asn_MBR_RICaction_NotAdmitted_ItemIEs_9[3];
extern asn_TYPE_descriptor_t asn_DEF_RANfunction_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RANfunction_ItemIEs_specs_13;
extern asn_TYPE_member_t asn_MBR_RANfunction_ItemIEs_13[3];
extern asn_TYPE_descriptor_t asn_DEF_RANfunctionID_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionID_ItemIEs_specs_17;
extern asn_TYPE_member_t asn_MBR_RANfunctionID_ItemIEs_17[3];
extern asn_TYPE_descriptor_t asn_DEF_RANfunctionIDcause_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RANfunctionIDcause_ItemIEs_specs_21;
extern asn_TYPE_member_t asn_MBR_RANfunctionIDcause_ItemIEs_21[3];
extern asn_TYPE_descriptor_t asn_DEF_CellInformation_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellInformation_ItemIEs_specs_25;
extern asn_TYPE_member_t asn_MBR_CellInformation_ItemIEs_25[3];
extern asn_TYPE_descriptor_t asn_DEF_CellToReport_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellToReport_ItemIEs_specs_29;
extern asn_TYPE_member_t asn_MBR_CellToReport_ItemIEs_29[3];
extern asn_TYPE_descriptor_t asn_DEF_MeasurementInitiationResult_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementInitiationResult_ItemIEs_specs_33;
extern asn_TYPE_member_t asn_MBR_MeasurementInitiationResult_ItemIEs_33[3];
extern asn_TYPE_descriptor_t asn_DEF_MeasurementFailureCause_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_MeasurementFailureCause_ItemIEs_specs_37;
extern asn_TYPE_member_t asn_MBR_MeasurementFailureCause_ItemIEs_37[3];
extern asn_TYPE_descriptor_t asn_DEF_CompleteFailureCauseInformation_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CompleteFailureCauseInformation_ItemIEs_specs_41;
extern asn_TYPE_member_t asn_MBR_CompleteFailureCauseInformation_ItemIEs_41[3];
extern asn_TYPE_descriptor_t asn_DEF_CellMeasurementResult_ItemIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_CellMeasurementResult_ItemIEs_specs_45;
extern asn_TYPE_member_t asn_MBR_CellMeasurementResult_ItemIEs_45[3];
extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionRequest_IEs_specs_49;
extern asn_TYPE_member_t asn_MBR_RICsubscriptionRequest_IEs_49[3];
extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionResponse_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionResponse_IEs_specs_53;
extern asn_TYPE_member_t asn_MBR_RICsubscriptionResponse_IEs_53[3];
extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionFailure_IEs_specs_57;
extern asn_TYPE_member_t asn_MBR_RICsubscriptionFailure_IEs_57[3];
extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteRequest_IEs_specs_61;
extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteRequest_IEs_61[3];
extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteResponse_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteResponse_IEs_specs_65;
extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteResponse_IEs_65[3];
extern asn_TYPE_descriptor_t asn_DEF_RICsubscriptionDeleteFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICsubscriptionDeleteFailure_IEs_specs_69;
extern asn_TYPE_member_t asn_MBR_RICsubscriptionDeleteFailure_IEs_69[3];
extern asn_TYPE_descriptor_t asn_DEF_RICindication_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICindication_IEs_specs_73;
extern asn_TYPE_member_t asn_MBR_RICindication_IEs_73[3];
extern asn_TYPE_descriptor_t asn_DEF_RICcontrolRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolRequest_IEs_specs_77;
extern asn_TYPE_member_t asn_MBR_RICcontrolRequest_IEs_77[3];
extern asn_TYPE_descriptor_t asn_DEF_RICcontrolAcknowledge_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolAcknowledge_IEs_specs_81;
extern asn_TYPE_member_t asn_MBR_RICcontrolAcknowledge_IEs_81[3];
extern asn_TYPE_descriptor_t asn_DEF_RICcontrolFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICcontrolFailure_IEs_specs_85;
extern asn_TYPE_member_t asn_MBR_RICcontrolFailure_IEs_85[3];
extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdate_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdate_IEs_specs_89;
extern asn_TYPE_member_t asn_MBR_RICserviceUpdate_IEs_89[3];
extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateAcknowledge_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateAcknowledge_IEs_specs_93;
extern asn_TYPE_member_t asn_MBR_RICserviceUpdateAcknowledge_IEs_93[3];
extern asn_TYPE_descriptor_t asn_DEF_RICserviceUpdateFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceUpdateFailure_IEs_specs_97;
extern asn_TYPE_member_t asn_MBR_RICserviceUpdateFailure_IEs_97[3];
extern asn_TYPE_descriptor_t asn_DEF_RICserviceQuery_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_RICserviceQuery_IEs_specs_101;
extern asn_TYPE_member_t asn_MBR_RICserviceQuery_IEs_101[3];
extern asn_TYPE_descriptor_t asn_DEF_ErrorIndication_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndication_IEs_specs_105;
extern asn_TYPE_member_t asn_MBR_ErrorIndication_IEs_105[3];
extern asn_TYPE_descriptor_t asn_DEF_ResetRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResetRequest_IEs_specs_109;
extern asn_TYPE_member_t asn_MBR_ResetRequest_IEs_109[3];
extern asn_TYPE_descriptor_t asn_DEF_ResetResponse_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResetResponse_IEs_specs_113;
extern asn_TYPE_member_t asn_MBR_ResetResponse_IEs_113[3];
extern asn_TYPE_descriptor_t asn_DEF_X2SetupRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupRequest_IEs_specs_117;
extern asn_TYPE_member_t asn_MBR_X2SetupRequest_IEs_117[3];
extern asn_TYPE_descriptor_t asn_DEF_X2SetupResponse_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupResponse_IEs_specs_121;
extern asn_TYPE_member_t asn_MBR_X2SetupResponse_IEs_121[3];
extern asn_TYPE_descriptor_t asn_DEF_X2SetupFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_X2SetupFailure_IEs_specs_125;
extern asn_TYPE_member_t asn_MBR_X2SetupFailure_IEs_125[3];
extern asn_TYPE_descriptor_t asn_DEF_LoadInformation_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_LoadInformation_IEs_specs_129;
extern asn_TYPE_member_t asn_MBR_LoadInformation_IEs_129[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdate_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdate_IEs_specs_133;
extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdate_IEs_133[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledge_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledge_IEs_specs_137;
extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledge_IEs_137[3];
extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailure_IEs_specs_141;
extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailure_IEs_141[3];
extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusRequest_IEs_specs_145;
extern asn_TYPE_member_t asn_MBR_ResourceStatusRequest_IEs_145[3];
extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusResponse_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusResponse_IEs_specs_149;
extern asn_TYPE_member_t asn_MBR_ResourceStatusResponse_IEs_149[3];
extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusFailure_IEs_specs_153;
extern asn_TYPE_member_t asn_MBR_ResourceStatusFailure_IEs_153[3];
extern asn_TYPE_descriptor_t asn_DEF_ResourceStatusUpdate_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ResourceStatusUpdate_IEs_specs_157;
extern asn_TYPE_member_t asn_MBR_ResourceStatusUpdate_IEs_157[3];
extern asn_TYPE_descriptor_t asn_DEF_SeNBReconfigurationComplete_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_SeNBReconfigurationComplete_IEs_specs_161;
extern asn_TYPE_member_t asn_MBR_SeNBReconfigurationComplete_IEs_161[3];
extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupRequest_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupRequest_IEs_specs_165;
extern asn_TYPE_member_t asn_MBR_ENDCX2SetupRequest_IEs_165[3];
extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqIEs_specs_169;
extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqIEs_169[3];
extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqIEs_specs_173;
extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqIEs_173[3];
extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupResponse_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupResponse_IEs_specs_177;
extern asn_TYPE_member_t asn_MBR_ENDCX2SetupResponse_IEs_177[3];
extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCX2SetupReqAckIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCX2SetupReqAckIEs_specs_181;
extern asn_TYPE_member_t asn_MBR_ENB_ENDCX2SetupReqAckIEs_181[3];
extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCX2SetupReqAckIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCX2SetupReqAckIEs_specs_185;
extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCX2SetupReqAckIEs_185[3];
extern asn_TYPE_descriptor_t asn_DEF_ENDCX2SetupFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENDCX2SetupFailure_IEs_specs_189;
extern asn_TYPE_member_t asn_MBR_ENDCX2SetupFailure_IEs_189[3];
extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdate_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdate_IEs_specs_193;
extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdate_IEs_193[3];
extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateIEs_specs_197;
extern asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateIEs_197[3];
extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateIEs_specs_201;
extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateIEs_201[3];
extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateAcknowledge_IEs_specs_205;
extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateAcknowledge_IEs_205[3];
extern asn_TYPE_descriptor_t asn_DEF_ENB_ENDCConfigUpdateAckIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENB_ENDCConfigUpdateAckIEs_specs_209;
extern asn_TYPE_member_t asn_MBR_ENB_ENDCConfigUpdateAckIEs_209[3];
extern asn_TYPE_descriptor_t asn_DEF_En_gNB_ENDCConfigUpdateAckIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_En_gNB_ENDCConfigUpdateAckIEs_specs_213;
extern asn_TYPE_member_t asn_MBR_En_gNB_ENDCConfigUpdateAckIEs_213[3];
extern asn_TYPE_descriptor_t asn_DEF_ENDCConfigurationUpdateFailure_IEs;
extern asn_SEQUENCE_specifics_t asn_SPC_ENDCConfigurationUpdateFailure_IEs_specs_217;
extern asn_TYPE_member_t asn_MBR_ENDCConfigurationUpdateFailure_IEs_217[3];
extern asn_TYPE_descriptor_t asn_DEF_GNBStatusIndicationIEs;
extern asn_SEQUENCE_specifics_t asn_SPC_GNBStatusIndicationIEs_specs_221;
extern asn_TYPE_member_t asn_MBR_GNBStatusIndicationIEs_221[3];

#ifdef __cplusplus
}
#endif

#endif	/* _ProtocolIE_Field_H_ */
#include "asn_internal.h"
