diff --git a/src/s1ap/asn1c/asnGenFiles/ProtocolIE-Field.h b/src/s1ap/asn1c/asnGenFiles/ProtocolIE-Field.h
new file mode 100644
index 0000000..a77e4da
--- /dev/null
+++ b/src/s1ap/asn1c/asnGenFiles/ProtocolIE-Field.h
@@ -0,0 +1,3943 @@
+/*
+ * 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`
+ */
+
+#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 "Bearers-SubjectToStatusTransfer-Item.h"
+#include "Presence.h"
+#include <OPEN_TYPE.h>
+#include <constr_CHOICE.h>
+#include <constr_SEQUENCE.h>
+#include "E-RABInformationListItem.h"
+#include "E-RABItem.h"
+#include "E-RABUsageReportItem.h"
+#include "LoggedMBSFNMDT.h"
+#include "RecommendedCellItem.h"
+#include "RecommendedENBItem.h"
+#include "SecondaryRATDataUsageReportItem.h"
+#include "SONInformationReport.h"
+#include "E-RABToBeSetupItemBearerSUReq.h"
+#include "E-RABSetupItemBearerSURes.h"
+#include "E-RABToBeModifiedItemBearerModReq.h"
+#include "E-RABModifyItemBearerModRes.h"
+#include "E-RABReleaseItemBearerRelComp.h"
+#include "E-RABToBeSetupItemCtxtSUReq.h"
+#include "E-RABSetupItemCtxtSURes.h"
+#include "TAIItem.h"
+#include "UE-associatedLogicalS1-ConnectionItem.h"
+#include "E-RABModifyItemBearerModConf.h"
+#include "MME-UE-S1AP-ID.h"
+#include "ENB-UE-S1AP-ID.h"
+#include "HandoverType.h"
+#include "Cause.h"
+#include "TargetID.h"
+#include "Direct-Forwarding-Path-Availability.h"
+#include "SRVCCHOIndication.h"
+#include "Source-ToTarget-TransparentContainer.h"
+#include "MSClassmark2.h"
+#include "MSClassmark3.h"
+#include "CSG-Id.h"
+#include "CellAccessMode.h"
+#include "PS-ServiceNotAvailable.h"
+#include "NASSecurityParametersfromE-UTRAN.h"
+#include "E-RABSubjecttoDataForwardingList.h"
+#include "E-RABList.h"
+#include "Target-ToSource-TransparentContainer.h"
+#include "CriticalityDiagnostics.h"
+#include "UEAggregateMaximumBitrate.h"
+#include "E-RABToBeSetupListHOReq.h"
+#include "UESecurityCapabilities.h"
+#include "HandoverRestrictionList.h"
+#include "TraceActivation.h"
+#include "RequestType.h"
+#include "SRVCCOperationPossible.h"
+#include "SecurityContext.h"
+#include "NASSecurityParameterstoE-UTRAN.h"
+#include "CSGMembershipStatus.h"
+#include "GUMMEI.h"
+#include "ManagementBasedMDTAllowed.h"
+#include "MDTPLMNList.h"
+#include "Masked-IMEISV.h"
+#include "ExpectedUEBehaviour.h"
+#include "ProSeAuthorized.h"
+#include "UEUserPlaneCIoTSupportIndicator.h"
+#include "V2XServicesAuthorized.h"
+#include "UESidelinkAggregateMaximumBitrate.h"
+#include "EnhancedCoverageRestricted.h"
+#include "NRUESecurityCapabilities.h"
+#include "CE-ModeBRestricted.h"
+#include "AerialUEsubscriptionInformation.h"
+#include "PendingDataIndication.h"
+#include "Subscription-Based-UE-DifferentiationInfo.h"
+#include "E-RABAdmittedList.h"
+#include "E-RABFailedtoSetupListHOReqAck.h"
+#include "CE-mode-B-SupportIndicator.h"
+#include "EUTRAN-CGI.h"
+#include "TAI.h"
+#include "TunnelInformation.h"
+#include "LHN-ID.h"
+#include "PSCellInformation.h"
+#include "E-RABToBeSwitchedDLList.h"
+#include "RRC-Establishment-Cause.h"
+#include "E-RABToBeSwitchedULList.h"
+#include "E-RABToBeSetupListBearerSUReq.h"
+#include "E-RABSetupListBearerSURes.h"
+#include "E-RABToBeModifiedListBearerModReq.h"
+#include "SecondaryRATDataUsageRequest.h"
+#include "E-RABModifyListBearerModRes.h"
+#include "SecondaryRATDataUsageReportList.h"
+#include "NAS-PDU.h"
+#include "E-RABReleaseListBearerRelComp.h"
+#include "UserLocationInformation.h"
+#include "E-RABToBeSetupListCtxtSUReq.h"
+#include "SecurityKey.h"
+#include "UERadioCapability.h"
+#include "SubscriberProfileIDforRFP.h"
+#include "CSFallbackIndicator.h"
+#include "LAI.h"
+#include "AdditionalCSFallbackIndicator.h"
+#include "E-RABSetupListCtxtSURes.h"
+#include "UEIdentityIndexValue.h"
+#include "UEPagingID.h"
+#include "PagingDRX.h"
+#include "CNDomain.h"
+#include "TAIList.h"
+#include "CSG-IdList.h"
+#include "PagingPriority.h"
+#include "UERadioCapabilityForPaging.h"
+#include "AssistanceDataForPaging.h"
+#include "Paging-eDRXInformation.h"
+#include "Extended-UEIdentityIndexValue.h"
+#include "NB-IoT-Paging-eDRXInformation.h"
+#include "NB-IoT-UEIdentityIndexValue.h"
+#include "GWContextReleaseIndication.h"
+#include "UE-S1AP-IDs.h"
+#include "InformationOnRecommendedCellsAndENBsForPaging.h"
+#include "CellIdentifierAndCELevelForCECapableUEs.h"
+#include "TimeSinceSecondaryNodeRelease.h"
+#include "SRVCCOperationNotPossible.h"
+#include "VoiceSupportMatchIndicator.h"
+#include "DLNASPDUDeliveryAckRequest.h"
+#include "UECapabilityInfoRequest.h"
+#include "EndIndication.h"
+#include "S-TMSI.h"
+#include "TransportLayerAddress.h"
+#include "RelayNode-Indicator.h"
+#include "GUMMEIType.h"
+#include "MME-Group-ID.h"
+#include "UE-Usage-Type.h"
+#include "DCN-ID.h"
+#include "Coverage-Level.h"
+#include "UE-Application-Layer-Measurement-Capability.h"
+#include "EDT-Session.h"
+#include <OCTET_STRING.h>
+#include "Additional-GUTI.h"
+#include "ResetType.h"
+#include "UE-associatedLogicalS1-ConnectionListResAck.h"
+#include "Global-ENB-ID.h"
+#include "ENBname.h"
+#include "SupportedTAs.h"
+#include "UE-RetentionInformation.h"
+#include "NB-IoT-DefaultPagingDRX.h"
+#include "ConnectedengNBList.h"
+#include "MMEname.h"
+#include "ServedGUMMEIs.h"
+#include "RelativeMMECapacity.h"
+#include "MMERelaySupportIndicator.h"
+#include "ServedDCNs.h"
+#include "TimeToWait.h"
+#include "Cdma2000HOStatus.h"
+#include "Cdma2000RATType.h"
+#include "Cdma2000PDU.h"
+#include "Cdma2000SectorID.h"
+#include "Cdma2000HORequiredIndication.h"
+#include "Cdma2000OneXSRVCCInfo.h"
+#include "Cdma2000OneXRAND.h"
+#include "EUTRANRoundTripDelayEstimationInfo.h"
+#include "LTE-M-Indication.h"
+#include "ENB-StatusTransfer-TransparentContainer.h"
+#include "E-UTRAN-Trace-ID.h"
+#include "PrivacyIndicator.h"
+#include "OverloadResponse.h"
+#include "GUMMEIList.h"
+#include "TrafficLoadReductionIndication.h"
+#include "MessageIdentifier.h"
+#include "SerialNumber.h"
+#include "WarningAreaList.h"
+#include "RepetitionPeriod.h"
+#include "ExtendedRepetitionPeriod.h"
+#include "NumberofBroadcastRequest.h"
+#include "WarningType.h"
+#include "WarningSecurityInfo.h"
+#include "DataCodingScheme.h"
+#include "WarningMessageContents.h"
+#include "ConcurrentWarningMessageIndicator.h"
+#include "WarningAreaCoordinates.h"
+#include "BroadcastCompletedAreaList.h"
+#include "Inter-SystemInformationTransferType.h"
+#include "SONConfigurationTransfer.h"
+#include "EN-DCSONConfigurationTransfer.h"
+#include "KillAllWarningMessages.h"
+#include "BroadcastCancelledAreaList.h"
+#include "ECGIListForRestart.h"
+#include "TAIListForRestart.h"
+#include "EmergencyAreaIDListForRestart.h"
+#include "PWSfailedECGIList.h"
+#include "Routing-ID.h"
+#include "LPPa-PDU.h"
+#include "E-RABToBeModifiedListBearerModInd.h"
+#include "E-RABNotToBeModifiedListBearerModInd.h"
+#include "CSGMembershipInfo.h"
+#include "E-RABModifyListBearerModConf.h"
+#include "E-RABFailedToResumeListResumeReq.h"
+#include "E-RABFailedToResumeListResumeRes.h"
+#include "DL-CP-SecurityInformation.h"
+#include "E-RABLevelQoSParameters.h"
+#include "UL-CP-SecurityInformation.h"
+#include "HandoverFlag.h"
+#include "E-RABDataForwardingItem.h"
+#include "E-RABToBeSetupItemHOReq.h"
+#include "E-RABAdmittedItem.h"
+#include "E-RABFailedToSetupItemHOReqAck.h"
+#include "E-RABToBeSwitchedDLItem.h"
+#include "E-RABToBeSwitchedULItem.h"
+#include "E-RABToBeModifiedItemBearerModInd.h"
+#include "E-RABNotToBeModifiedItemBearerModInd.h"
+#include "E-RABFailedToResumeItemResumeReq.h"
+#include "E-RABFailedToResumeItemResumeRes.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* Dependencies */
+typedef enum Bearers_SubjectToStatusTransfer_ItemIEs__value_PR {
+	Bearers_SubjectToStatusTransfer_ItemIEs__value_PR_NOTHING,	/* No components present */
+	Bearers_SubjectToStatusTransfer_ItemIEs__value_PR_Bearers_SubjectToStatusTransfer_Item
+} Bearers_SubjectToStatusTransfer_ItemIEs__value_PR;
+typedef enum E_RABInformationListIEs__value_PR {
+	E_RABInformationListIEs__value_PR_NOTHING,	/* No components present */
+	E_RABInformationListIEs__value_PR_E_RABInformationListItem
+} E_RABInformationListIEs__value_PR;
+typedef enum E_RABItemIEs__value_PR {
+	E_RABItemIEs__value_PR_NOTHING,	/* No components present */
+	E_RABItemIEs__value_PR_E_RABItem
+} E_RABItemIEs__value_PR;
+typedef enum E_RABUsageReportItemIEs__value_PR {
+	E_RABUsageReportItemIEs__value_PR_NOTHING,	/* No components present */
+	E_RABUsageReportItemIEs__value_PR_E_RABUsageReportItem
+} E_RABUsageReportItemIEs__value_PR;
+typedef enum MDTMode_ExtensionIE__value_PR {
+	MDTMode_ExtensionIE__value_PR_NOTHING,	/* No components present */
+	MDTMode_ExtensionIE__value_PR_LoggedMBSFNMDT
+} MDTMode_ExtensionIE__value_PR;
+typedef enum RecommendedCellItemIEs__value_PR {
+	RecommendedCellItemIEs__value_PR_NOTHING,	/* No components present */
+	RecommendedCellItemIEs__value_PR_RecommendedCellItem
+} RecommendedCellItemIEs__value_PR;
+typedef enum RecommendedENBItemIEs__value_PR {
+	RecommendedENBItemIEs__value_PR_NOTHING,	/* No components present */
+	RecommendedENBItemIEs__value_PR_RecommendedENBItem
+} RecommendedENBItemIEs__value_PR;
+typedef enum SecondaryRATDataUsageReportItemIEs__value_PR {
+	SecondaryRATDataUsageReportItemIEs__value_PR_NOTHING,	/* No components present */
+	SecondaryRATDataUsageReportItemIEs__value_PR_SecondaryRATDataUsageReportItem
+} SecondaryRATDataUsageReportItemIEs__value_PR;
+typedef enum SONInformation_ExtensionIE__value_PR {
+	SONInformation_ExtensionIE__value_PR_NOTHING,	/* No components present */
+	SONInformation_ExtensionIE__value_PR_SONInformationReport
+} SONInformation_ExtensionIE__value_PR;
+typedef enum E_RABToBeSetupItemBearerSUReqIEs__value_PR {
+	E_RABToBeSetupItemBearerSUReqIEs__value_PR_NOTHING,	/* No components present */
+	E_RABToBeSetupItemBearerSUReqIEs__value_PR_E_RABToBeSetupItemBearerSUReq
+} E_RABToBeSetupItemBearerSUReqIEs__value_PR;
+typedef enum E_RABSetupItemBearerSUResIEs__value_PR {
+	E_RABSetupItemBearerSUResIEs__value_PR_NOTHING,	/* No components present */
+	E_RABSetupItemBearerSUResIEs__value_PR_E_RABSetupItemBearerSURes
+} E_RABSetupItemBearerSUResIEs__value_PR;
+typedef enum E_RABToBeModifiedItemBearerModReqIEs__value_PR {
+	E_RABToBeModifiedItemBearerModReqIEs__value_PR_NOTHING,	/* No components present */
+	E_RABToBeModifiedItemBearerModReqIEs__value_PR_E_RABToBeModifiedItemBearerModReq
+} E_RABToBeModifiedItemBearerModReqIEs__value_PR;
+typedef enum E_RABModifyItemBearerModResIEs__value_PR {
+	E_RABModifyItemBearerModResIEs__value_PR_NOTHING,	/* No components present */
+	E_RABModifyItemBearerModResIEs__value_PR_E_RABModifyItemBearerModRes
+} E_RABModifyItemBearerModResIEs__value_PR;
+typedef enum E_RABReleaseItemBearerRelCompIEs__value_PR {
+	E_RABReleaseItemBearerRelCompIEs__value_PR_NOTHING,	/* No components present */
+	E_RABReleaseItemBearerRelCompIEs__value_PR_E_RABReleaseItemBearerRelComp
+} E_RABReleaseItemBearerRelCompIEs__value_PR;
+typedef enum E_RABToBeSetupItemCtxtSUReqIEs__value_PR {
+	E_RABToBeSetupItemCtxtSUReqIEs__value_PR_NOTHING,	/* No components present */
+	E_RABToBeSetupItemCtxtSUReqIEs__value_PR_E_RABToBeSetupItemCtxtSUReq
+} E_RABToBeSetupItemCtxtSUReqIEs__value_PR;
+typedef enum E_RABSetupItemCtxtSUResIEs__value_PR {
+	E_RABSetupItemCtxtSUResIEs__value_PR_NOTHING,	/* No components present */
+	E_RABSetupItemCtxtSUResIEs__value_PR_E_RABSetupItemCtxtSURes
+} E_RABSetupItemCtxtSUResIEs__value_PR;
+typedef enum TAIItemIEs__value_PR {
+	TAIItemIEs__value_PR_NOTHING,	/* No components present */
+	TAIItemIEs__value_PR_TAIItem
+} TAIItemIEs__value_PR;
+typedef enum UE_associatedLogicalS1_ConnectionItemRes__value_PR {
+	UE_associatedLogicalS1_ConnectionItemRes__value_PR_NOTHING,	/* No components present */
+	UE_associatedLogicalS1_ConnectionItemRes__value_PR_UE_associatedLogicalS1_ConnectionItem
+} UE_associatedLogicalS1_ConnectionItemRes__value_PR;
+typedef enum UE_associatedLogicalS1_ConnectionItemResAck__value_PR {
+	UE_associatedLogicalS1_ConnectionItemResAck__value_PR_NOTHING,	/* No components present */
+	UE_associatedLogicalS1_ConnectionItemResAck__value_PR_UE_associatedLogicalS1_ConnectionItem
+} UE_associatedLogicalS1_ConnectionItemResAck__value_PR;
+typedef enum E_RABModifyItemBearerModConfIEs__value_PR {
+	E_RABModifyItemBearerModConfIEs__value_PR_NOTHING,	/* No components present */
+	E_RABModifyItemBearerModConfIEs__value_PR_E_RABModifyItemBearerModConf
+} E_RABModifyItemBearerModConfIEs__value_PR;
+typedef enum HandoverRequiredIEs__value_PR {
+	HandoverRequiredIEs__value_PR_NOTHING,	/* No components present */
+	HandoverRequiredIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverRequiredIEs__value_PR_ENB_UE_S1AP_ID,
+	HandoverRequiredIEs__value_PR_HandoverType,
+	HandoverRequiredIEs__value_PR_Cause,
+	HandoverRequiredIEs__value_PR_TargetID,
+	HandoverRequiredIEs__value_PR_Direct_Forwarding_Path_Availability,
+	HandoverRequiredIEs__value_PR_SRVCCHOIndication,
+	HandoverRequiredIEs__value_PR_Source_ToTarget_TransparentContainer,
+	HandoverRequiredIEs__value_PR_Source_ToTarget_TransparentContainer_1,
+	HandoverRequiredIEs__value_PR_MSClassmark2,
+	HandoverRequiredIEs__value_PR_MSClassmark3,
+	HandoverRequiredIEs__value_PR_CSG_Id,
+	HandoverRequiredIEs__value_PR_CellAccessMode,
+	HandoverRequiredIEs__value_PR_PS_ServiceNotAvailable
+} HandoverRequiredIEs__value_PR;
+typedef enum HandoverCommandIEs__value_PR {
+	HandoverCommandIEs__value_PR_NOTHING,	/* No components present */
+	HandoverCommandIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverCommandIEs__value_PR_ENB_UE_S1AP_ID,
+	HandoverCommandIEs__value_PR_HandoverType,
+	HandoverCommandIEs__value_PR_NASSecurityParametersfromE_UTRAN,
+	HandoverCommandIEs__value_PR_E_RABSubjecttoDataForwardingList,
+	HandoverCommandIEs__value_PR_E_RABList,
+	HandoverCommandIEs__value_PR_Target_ToSource_TransparentContainer,
+	HandoverCommandIEs__value_PR_Target_ToSource_TransparentContainer_1,
+	HandoverCommandIEs__value_PR_CriticalityDiagnostics
+} HandoverCommandIEs__value_PR;
+typedef enum HandoverPreparationFailureIEs__value_PR {
+	HandoverPreparationFailureIEs__value_PR_NOTHING,	/* No components present */
+	HandoverPreparationFailureIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverPreparationFailureIEs__value_PR_ENB_UE_S1AP_ID,
+	HandoverPreparationFailureIEs__value_PR_Cause,
+	HandoverPreparationFailureIEs__value_PR_CriticalityDiagnostics
+} HandoverPreparationFailureIEs__value_PR;
+typedef enum HandoverRequestIEs__value_PR {
+	HandoverRequestIEs__value_PR_NOTHING,	/* No components present */
+	HandoverRequestIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverRequestIEs__value_PR_HandoverType,
+	HandoverRequestIEs__value_PR_Cause,
+	HandoverRequestIEs__value_PR_UEAggregateMaximumBitrate,
+	HandoverRequestIEs__value_PR_E_RABToBeSetupListHOReq,
+	HandoverRequestIEs__value_PR_Source_ToTarget_TransparentContainer,
+	HandoverRequestIEs__value_PR_UESecurityCapabilities,
+	HandoverRequestIEs__value_PR_HandoverRestrictionList,
+	HandoverRequestIEs__value_PR_TraceActivation,
+	HandoverRequestIEs__value_PR_RequestType,
+	HandoverRequestIEs__value_PR_SRVCCOperationPossible,
+	HandoverRequestIEs__value_PR_SecurityContext,
+	HandoverRequestIEs__value_PR_NASSecurityParameterstoE_UTRAN,
+	HandoverRequestIEs__value_PR_CSG_Id,
+	HandoverRequestIEs__value_PR_CSGMembershipStatus,
+	HandoverRequestIEs__value_PR_GUMMEI,
+	HandoverRequestIEs__value_PR_MME_UE_S1AP_ID_1,
+	HandoverRequestIEs__value_PR_ManagementBasedMDTAllowed,
+	HandoverRequestIEs__value_PR_MDTPLMNList,
+	HandoverRequestIEs__value_PR_Masked_IMEISV,
+	HandoverRequestIEs__value_PR_ExpectedUEBehaviour,
+	HandoverRequestIEs__value_PR_ProSeAuthorized,
+	HandoverRequestIEs__value_PR_UEUserPlaneCIoTSupportIndicator,
+	HandoverRequestIEs__value_PR_V2XServicesAuthorized,
+	HandoverRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate,
+	HandoverRequestIEs__value_PR_EnhancedCoverageRestricted,
+	HandoverRequestIEs__value_PR_NRUESecurityCapabilities,
+	HandoverRequestIEs__value_PR_CE_ModeBRestricted,
+	HandoverRequestIEs__value_PR_AerialUEsubscriptionInformation,
+	HandoverRequestIEs__value_PR_PendingDataIndication,
+	HandoverRequestIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
+} HandoverRequestIEs__value_PR;
+typedef enum HandoverRequestAcknowledgeIEs__value_PR {
+	HandoverRequestAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
+	HandoverRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverRequestAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID,
+	HandoverRequestAcknowledgeIEs__value_PR_E_RABAdmittedList,
+	HandoverRequestAcknowledgeIEs__value_PR_E_RABFailedtoSetupListHOReqAck,
+	HandoverRequestAcknowledgeIEs__value_PR_Target_ToSource_TransparentContainer,
+	HandoverRequestAcknowledgeIEs__value_PR_CSG_Id,
+	HandoverRequestAcknowledgeIEs__value_PR_CriticalityDiagnostics,
+	HandoverRequestAcknowledgeIEs__value_PR_CellAccessMode,
+	HandoverRequestAcknowledgeIEs__value_PR_CE_mode_B_SupportIndicator
+} HandoverRequestAcknowledgeIEs__value_PR;
+typedef enum HandoverFailureIEs__value_PR {
+	HandoverFailureIEs__value_PR_NOTHING,	/* No components present */
+	HandoverFailureIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverFailureIEs__value_PR_Cause,
+	HandoverFailureIEs__value_PR_CriticalityDiagnostics
+} HandoverFailureIEs__value_PR;
+typedef enum HandoverNotifyIEs__value_PR {
+	HandoverNotifyIEs__value_PR_NOTHING,	/* No components present */
+	HandoverNotifyIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverNotifyIEs__value_PR_ENB_UE_S1AP_ID,
+	HandoverNotifyIEs__value_PR_EUTRAN_CGI,
+	HandoverNotifyIEs__value_PR_TAI,
+	HandoverNotifyIEs__value_PR_TunnelInformation,
+	HandoverNotifyIEs__value_PR_LHN_ID,
+	HandoverNotifyIEs__value_PR_PSCellInformation
+} HandoverNotifyIEs__value_PR;
+typedef enum PathSwitchRequestIEs__value_PR {
+	PathSwitchRequestIEs__value_PR_NOTHING,	/* No components present */
+	PathSwitchRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	PathSwitchRequestIEs__value_PR_E_RABToBeSwitchedDLList,
+	PathSwitchRequestIEs__value_PR_MME_UE_S1AP_ID,
+	PathSwitchRequestIEs__value_PR_EUTRAN_CGI,
+	PathSwitchRequestIEs__value_PR_TAI,
+	PathSwitchRequestIEs__value_PR_UESecurityCapabilities,
+	PathSwitchRequestIEs__value_PR_CSG_Id,
+	PathSwitchRequestIEs__value_PR_CellAccessMode,
+	PathSwitchRequestIEs__value_PR_GUMMEI,
+	PathSwitchRequestIEs__value_PR_CSGMembershipStatus,
+	PathSwitchRequestIEs__value_PR_TunnelInformation,
+	PathSwitchRequestIEs__value_PR_LHN_ID,
+	PathSwitchRequestIEs__value_PR_RRC_Establishment_Cause,
+	PathSwitchRequestIEs__value_PR_NRUESecurityCapabilities,
+	PathSwitchRequestIEs__value_PR_PSCellInformation
+} PathSwitchRequestIEs__value_PR;
+typedef enum PathSwitchRequestAcknowledgeIEs__value_PR {
+	PathSwitchRequestAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
+	PathSwitchRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID,
+	PathSwitchRequestAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID,
+	PathSwitchRequestAcknowledgeIEs__value_PR_UEAggregateMaximumBitrate,
+	PathSwitchRequestAcknowledgeIEs__value_PR_E_RABToBeSwitchedULList,
+	PathSwitchRequestAcknowledgeIEs__value_PR_E_RABList,
+	PathSwitchRequestAcknowledgeIEs__value_PR_SecurityContext,
+	PathSwitchRequestAcknowledgeIEs__value_PR_CriticalityDiagnostics,
+	PathSwitchRequestAcknowledgeIEs__value_PR_MME_UE_S1AP_ID_1,
+	PathSwitchRequestAcknowledgeIEs__value_PR_CSGMembershipStatus,
+	PathSwitchRequestAcknowledgeIEs__value_PR_ProSeAuthorized,
+	PathSwitchRequestAcknowledgeIEs__value_PR_UEUserPlaneCIoTSupportIndicator,
+	PathSwitchRequestAcknowledgeIEs__value_PR_V2XServicesAuthorized,
+	PathSwitchRequestAcknowledgeIEs__value_PR_UESidelinkAggregateMaximumBitrate,
+	PathSwitchRequestAcknowledgeIEs__value_PR_EnhancedCoverageRestricted,
+	PathSwitchRequestAcknowledgeIEs__value_PR_NRUESecurityCapabilities,
+	PathSwitchRequestAcknowledgeIEs__value_PR_CE_ModeBRestricted,
+	PathSwitchRequestAcknowledgeIEs__value_PR_AerialUEsubscriptionInformation,
+	PathSwitchRequestAcknowledgeIEs__value_PR_PendingDataIndication,
+	PathSwitchRequestAcknowledgeIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
+} PathSwitchRequestAcknowledgeIEs__value_PR;
+typedef enum PathSwitchRequestFailureIEs__value_PR {
+	PathSwitchRequestFailureIEs__value_PR_NOTHING,	/* No components present */
+	PathSwitchRequestFailureIEs__value_PR_MME_UE_S1AP_ID,
+	PathSwitchRequestFailureIEs__value_PR_ENB_UE_S1AP_ID,
+	PathSwitchRequestFailureIEs__value_PR_Cause,
+	PathSwitchRequestFailureIEs__value_PR_CriticalityDiagnostics
+} PathSwitchRequestFailureIEs__value_PR;
+typedef enum HandoverCancelIEs__value_PR {
+	HandoverCancelIEs__value_PR_NOTHING,	/* No components present */
+	HandoverCancelIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverCancelIEs__value_PR_ENB_UE_S1AP_ID,
+	HandoverCancelIEs__value_PR_Cause
+} HandoverCancelIEs__value_PR;
+typedef enum HandoverCancelAcknowledgeIEs__value_PR {
+	HandoverCancelAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
+	HandoverCancelAcknowledgeIEs__value_PR_MME_UE_S1AP_ID,
+	HandoverCancelAcknowledgeIEs__value_PR_ENB_UE_S1AP_ID,
+	HandoverCancelAcknowledgeIEs__value_PR_CriticalityDiagnostics
+} HandoverCancelAcknowledgeIEs__value_PR;
+typedef enum E_RABSetupRequestIEs__value_PR {
+	E_RABSetupRequestIEs__value_PR_NOTHING,	/* No components present */
+	E_RABSetupRequestIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABSetupRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABSetupRequestIEs__value_PR_UEAggregateMaximumBitrate,
+	E_RABSetupRequestIEs__value_PR_E_RABToBeSetupListBearerSUReq
+} E_RABSetupRequestIEs__value_PR;
+typedef enum E_RABSetupResponseIEs__value_PR {
+	E_RABSetupResponseIEs__value_PR_NOTHING,	/* No components present */
+	E_RABSetupResponseIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABSetupResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABSetupResponseIEs__value_PR_E_RABSetupListBearerSURes,
+	E_RABSetupResponseIEs__value_PR_E_RABList,
+	E_RABSetupResponseIEs__value_PR_CriticalityDiagnostics
+} E_RABSetupResponseIEs__value_PR;
+typedef enum E_RABModifyRequestIEs__value_PR {
+	E_RABModifyRequestIEs__value_PR_NOTHING,	/* No components present */
+	E_RABModifyRequestIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABModifyRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABModifyRequestIEs__value_PR_UEAggregateMaximumBitrate,
+	E_RABModifyRequestIEs__value_PR_E_RABToBeModifiedListBearerModReq,
+	E_RABModifyRequestIEs__value_PR_SecondaryRATDataUsageRequest
+} E_RABModifyRequestIEs__value_PR;
+typedef enum E_RABModifyResponseIEs__value_PR {
+	E_RABModifyResponseIEs__value_PR_NOTHING,	/* No components present */
+	E_RABModifyResponseIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABModifyResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABModifyResponseIEs__value_PR_E_RABModifyListBearerModRes,
+	E_RABModifyResponseIEs__value_PR_E_RABList,
+	E_RABModifyResponseIEs__value_PR_CriticalityDiagnostics,
+	E_RABModifyResponseIEs__value_PR_SecondaryRATDataUsageReportList
+} E_RABModifyResponseIEs__value_PR;
+typedef enum E_RABReleaseCommandIEs__value_PR {
+	E_RABReleaseCommandIEs__value_PR_NOTHING,	/* No components present */
+	E_RABReleaseCommandIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABReleaseCommandIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABReleaseCommandIEs__value_PR_UEAggregateMaximumBitrate,
+	E_RABReleaseCommandIEs__value_PR_E_RABList,
+	E_RABReleaseCommandIEs__value_PR_NAS_PDU
+} E_RABReleaseCommandIEs__value_PR;
+typedef enum E_RABReleaseResponseIEs__value_PR {
+	E_RABReleaseResponseIEs__value_PR_NOTHING,	/* No components present */
+	E_RABReleaseResponseIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABReleaseResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABReleaseResponseIEs__value_PR_E_RABReleaseListBearerRelComp,
+	E_RABReleaseResponseIEs__value_PR_E_RABList,
+	E_RABReleaseResponseIEs__value_PR_CriticalityDiagnostics,
+	E_RABReleaseResponseIEs__value_PR_UserLocationInformation,
+	E_RABReleaseResponseIEs__value_PR_SecondaryRATDataUsageReportList
+} E_RABReleaseResponseIEs__value_PR;
+typedef enum E_RABReleaseIndicationIEs__value_PR {
+	E_RABReleaseIndicationIEs__value_PR_NOTHING,	/* No components present */
+	E_RABReleaseIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABReleaseIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABReleaseIndicationIEs__value_PR_E_RABList,
+	E_RABReleaseIndicationIEs__value_PR_UserLocationInformation,
+	E_RABReleaseIndicationIEs__value_PR_SecondaryRATDataUsageReportList
+} E_RABReleaseIndicationIEs__value_PR;
+typedef enum InitialContextSetupRequestIEs__value_PR {
+	InitialContextSetupRequestIEs__value_PR_NOTHING,	/* No components present */
+	InitialContextSetupRequestIEs__value_PR_MME_UE_S1AP_ID,
+	InitialContextSetupRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	InitialContextSetupRequestIEs__value_PR_UEAggregateMaximumBitrate,
+	InitialContextSetupRequestIEs__value_PR_E_RABToBeSetupListCtxtSUReq,
+	InitialContextSetupRequestIEs__value_PR_UESecurityCapabilities,
+	InitialContextSetupRequestIEs__value_PR_SecurityKey,
+	InitialContextSetupRequestIEs__value_PR_TraceActivation,
+	InitialContextSetupRequestIEs__value_PR_HandoverRestrictionList,
+	InitialContextSetupRequestIEs__value_PR_UERadioCapability,
+	InitialContextSetupRequestIEs__value_PR_SubscriberProfileIDforRFP,
+	InitialContextSetupRequestIEs__value_PR_CSFallbackIndicator,
+	InitialContextSetupRequestIEs__value_PR_SRVCCOperationPossible,
+	InitialContextSetupRequestIEs__value_PR_CSGMembershipStatus,
+	InitialContextSetupRequestIEs__value_PR_LAI,
+	InitialContextSetupRequestIEs__value_PR_GUMMEI,
+	InitialContextSetupRequestIEs__value_PR_MME_UE_S1AP_ID_1,
+	InitialContextSetupRequestIEs__value_PR_ManagementBasedMDTAllowed,
+	InitialContextSetupRequestIEs__value_PR_MDTPLMNList,
+	InitialContextSetupRequestIEs__value_PR_AdditionalCSFallbackIndicator,
+	InitialContextSetupRequestIEs__value_PR_Masked_IMEISV,
+	InitialContextSetupRequestIEs__value_PR_ExpectedUEBehaviour,
+	InitialContextSetupRequestIEs__value_PR_ProSeAuthorized,
+	InitialContextSetupRequestIEs__value_PR_UEUserPlaneCIoTSupportIndicator,
+	InitialContextSetupRequestIEs__value_PR_V2XServicesAuthorized,
+	InitialContextSetupRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate,
+	InitialContextSetupRequestIEs__value_PR_EnhancedCoverageRestricted,
+	InitialContextSetupRequestIEs__value_PR_NRUESecurityCapabilities,
+	InitialContextSetupRequestIEs__value_PR_CE_ModeBRestricted,
+	InitialContextSetupRequestIEs__value_PR_AerialUEsubscriptionInformation,
+	InitialContextSetupRequestIEs__value_PR_PendingDataIndication,
+	InitialContextSetupRequestIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
+} InitialContextSetupRequestIEs__value_PR;
+typedef enum InitialContextSetupResponseIEs__value_PR {
+	InitialContextSetupResponseIEs__value_PR_NOTHING,	/* No components present */
+	InitialContextSetupResponseIEs__value_PR_MME_UE_S1AP_ID,
+	InitialContextSetupResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	InitialContextSetupResponseIEs__value_PR_E_RABSetupListCtxtSURes,
+	InitialContextSetupResponseIEs__value_PR_E_RABList,
+	InitialContextSetupResponseIEs__value_PR_CriticalityDiagnostics
+} InitialContextSetupResponseIEs__value_PR;
+typedef enum InitialContextSetupFailureIEs__value_PR {
+	InitialContextSetupFailureIEs__value_PR_NOTHING,	/* No components present */
+	InitialContextSetupFailureIEs__value_PR_MME_UE_S1AP_ID,
+	InitialContextSetupFailureIEs__value_PR_ENB_UE_S1AP_ID,
+	InitialContextSetupFailureIEs__value_PR_Cause,
+	InitialContextSetupFailureIEs__value_PR_CriticalityDiagnostics
+} InitialContextSetupFailureIEs__value_PR;
+typedef enum PagingIEs__value_PR {
+	PagingIEs__value_PR_NOTHING,	/* No components present */
+	PagingIEs__value_PR_UEIdentityIndexValue,
+	PagingIEs__value_PR_UEPagingID,
+	PagingIEs__value_PR_PagingDRX,
+	PagingIEs__value_PR_CNDomain,
+	PagingIEs__value_PR_TAIList,
+	PagingIEs__value_PR_CSG_IdList,
+	PagingIEs__value_PR_PagingPriority,
+	PagingIEs__value_PR_UERadioCapabilityForPaging,
+	PagingIEs__value_PR_AssistanceDataForPaging,
+	PagingIEs__value_PR_Paging_eDRXInformation,
+	PagingIEs__value_PR_Extended_UEIdentityIndexValue,
+	PagingIEs__value_PR_NB_IoT_Paging_eDRXInformation,
+	PagingIEs__value_PR_NB_IoT_UEIdentityIndexValue,
+	PagingIEs__value_PR_EnhancedCoverageRestricted,
+	PagingIEs__value_PR_CE_ModeBRestricted
+} PagingIEs__value_PR;
+typedef enum UEContextReleaseRequest_IEs__value_PR {
+	UEContextReleaseRequest_IEs__value_PR_NOTHING,	/* No components present */
+	UEContextReleaseRequest_IEs__value_PR_MME_UE_S1AP_ID,
+	UEContextReleaseRequest_IEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextReleaseRequest_IEs__value_PR_Cause,
+	UEContextReleaseRequest_IEs__value_PR_GWContextReleaseIndication,
+	UEContextReleaseRequest_IEs__value_PR_SecondaryRATDataUsageReportList
+} UEContextReleaseRequest_IEs__value_PR;
+typedef enum UEContextReleaseCommand_IEs__value_PR {
+	UEContextReleaseCommand_IEs__value_PR_NOTHING,	/* No components present */
+	UEContextReleaseCommand_IEs__value_PR_UE_S1AP_IDs,
+	UEContextReleaseCommand_IEs__value_PR_Cause
+} UEContextReleaseCommand_IEs__value_PR;
+typedef enum UEContextReleaseComplete_IEs__value_PR {
+	UEContextReleaseComplete_IEs__value_PR_NOTHING,	/* No components present */
+	UEContextReleaseComplete_IEs__value_PR_MME_UE_S1AP_ID,
+	UEContextReleaseComplete_IEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextReleaseComplete_IEs__value_PR_CriticalityDiagnostics,
+	UEContextReleaseComplete_IEs__value_PR_UserLocationInformation,
+	UEContextReleaseComplete_IEs__value_PR_InformationOnRecommendedCellsAndENBsForPaging,
+	UEContextReleaseComplete_IEs__value_PR_CellIdentifierAndCELevelForCECapableUEs,
+	UEContextReleaseComplete_IEs__value_PR_SecondaryRATDataUsageReportList,
+	UEContextReleaseComplete_IEs__value_PR_TimeSinceSecondaryNodeRelease
+} UEContextReleaseComplete_IEs__value_PR;
+typedef enum UEContextModificationRequestIEs__value_PR {
+	UEContextModificationRequestIEs__value_PR_NOTHING,	/* No components present */
+	UEContextModificationRequestIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextModificationRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextModificationRequestIEs__value_PR_SecurityKey,
+	UEContextModificationRequestIEs__value_PR_SubscriberProfileIDforRFP,
+	UEContextModificationRequestIEs__value_PR_UEAggregateMaximumBitrate,
+	UEContextModificationRequestIEs__value_PR_CSFallbackIndicator,
+	UEContextModificationRequestIEs__value_PR_UESecurityCapabilities,
+	UEContextModificationRequestIEs__value_PR_CSGMembershipStatus,
+	UEContextModificationRequestIEs__value_PR_LAI,
+	UEContextModificationRequestIEs__value_PR_AdditionalCSFallbackIndicator,
+	UEContextModificationRequestIEs__value_PR_ProSeAuthorized,
+	UEContextModificationRequestIEs__value_PR_SRVCCOperationPossible,
+	UEContextModificationRequestIEs__value_PR_SRVCCOperationNotPossible,
+	UEContextModificationRequestIEs__value_PR_V2XServicesAuthorized,
+	UEContextModificationRequestIEs__value_PR_UESidelinkAggregateMaximumBitrate,
+	UEContextModificationRequestIEs__value_PR_NRUESecurityCapabilities,
+	UEContextModificationRequestIEs__value_PR_AerialUEsubscriptionInformation
+} UEContextModificationRequestIEs__value_PR;
+typedef enum UEContextModificationResponseIEs__value_PR {
+	UEContextModificationResponseIEs__value_PR_NOTHING,	/* No components present */
+	UEContextModificationResponseIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextModificationResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextModificationResponseIEs__value_PR_CriticalityDiagnostics
+} UEContextModificationResponseIEs__value_PR;
+typedef enum UEContextModificationFailureIEs__value_PR {
+	UEContextModificationFailureIEs__value_PR_NOTHING,	/* No components present */
+	UEContextModificationFailureIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextModificationFailureIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextModificationFailureIEs__value_PR_Cause,
+	UEContextModificationFailureIEs__value_PR_CriticalityDiagnostics
+} UEContextModificationFailureIEs__value_PR;
+typedef enum UERadioCapabilityMatchRequestIEs__value_PR {
+	UERadioCapabilityMatchRequestIEs__value_PR_NOTHING,	/* No components present */
+	UERadioCapabilityMatchRequestIEs__value_PR_MME_UE_S1AP_ID,
+	UERadioCapabilityMatchRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	UERadioCapabilityMatchRequestIEs__value_PR_UERadioCapability
+} UERadioCapabilityMatchRequestIEs__value_PR;
+typedef enum UERadioCapabilityMatchResponseIEs__value_PR {
+	UERadioCapabilityMatchResponseIEs__value_PR_NOTHING,	/* No components present */
+	UERadioCapabilityMatchResponseIEs__value_PR_MME_UE_S1AP_ID,
+	UERadioCapabilityMatchResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	UERadioCapabilityMatchResponseIEs__value_PR_VoiceSupportMatchIndicator,
+	UERadioCapabilityMatchResponseIEs__value_PR_CriticalityDiagnostics
+} UERadioCapabilityMatchResponseIEs__value_PR;
+typedef enum DownlinkNASTransport_IEs__value_PR {
+	DownlinkNASTransport_IEs__value_PR_NOTHING,	/* No components present */
+	DownlinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID,
+	DownlinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID,
+	DownlinkNASTransport_IEs__value_PR_NAS_PDU,
+	DownlinkNASTransport_IEs__value_PR_HandoverRestrictionList,
+	DownlinkNASTransport_IEs__value_PR_SubscriberProfileIDforRFP,
+	DownlinkNASTransport_IEs__value_PR_SRVCCOperationPossible,
+	DownlinkNASTransport_IEs__value_PR_UERadioCapability,
+	DownlinkNASTransport_IEs__value_PR_DLNASPDUDeliveryAckRequest,
+	DownlinkNASTransport_IEs__value_PR_EnhancedCoverageRestricted,
+	DownlinkNASTransport_IEs__value_PR_NRUESecurityCapabilities,
+	DownlinkNASTransport_IEs__value_PR_CE_ModeBRestricted,
+	DownlinkNASTransport_IEs__value_PR_UECapabilityInfoRequest,
+	DownlinkNASTransport_IEs__value_PR_EndIndication,
+	DownlinkNASTransport_IEs__value_PR_PendingDataIndication,
+	DownlinkNASTransport_IEs__value_PR_Subscription_Based_UE_DifferentiationInfo
+} DownlinkNASTransport_IEs__value_PR;
+typedef enum InitialUEMessage_IEs__value_PR {
+	InitialUEMessage_IEs__value_PR_NOTHING,	/* No components present */
+	InitialUEMessage_IEs__value_PR_ENB_UE_S1AP_ID,
+	InitialUEMessage_IEs__value_PR_NAS_PDU,
+	InitialUEMessage_IEs__value_PR_TAI,
+	InitialUEMessage_IEs__value_PR_EUTRAN_CGI,
+	InitialUEMessage_IEs__value_PR_RRC_Establishment_Cause,
+	InitialUEMessage_IEs__value_PR_S_TMSI,
+	InitialUEMessage_IEs__value_PR_CSG_Id,
+	InitialUEMessage_IEs__value_PR_GUMMEI,
+	InitialUEMessage_IEs__value_PR_CellAccessMode,
+	InitialUEMessage_IEs__value_PR_TransportLayerAddress,
+	InitialUEMessage_IEs__value_PR_RelayNode_Indicator,
+	InitialUEMessage_IEs__value_PR_GUMMEIType,
+	InitialUEMessage_IEs__value_PR_TunnelInformation,
+	InitialUEMessage_IEs__value_PR_TransportLayerAddress_1,
+	InitialUEMessage_IEs__value_PR_LHN_ID,
+	InitialUEMessage_IEs__value_PR_MME_Group_ID,
+	InitialUEMessage_IEs__value_PR_UE_Usage_Type,
+	InitialUEMessage_IEs__value_PR_CE_mode_B_SupportIndicator,
+	InitialUEMessage_IEs__value_PR_DCN_ID,
+	InitialUEMessage_IEs__value_PR_Coverage_Level,
+	InitialUEMessage_IEs__value_PR_UE_Application_Layer_Measurement_Capability,
+	InitialUEMessage_IEs__value_PR_EDT_Session
+} InitialUEMessage_IEs__value_PR;
+typedef enum UplinkNASTransport_IEs__value_PR {
+	UplinkNASTransport_IEs__value_PR_NOTHING,	/* No components present */
+	UplinkNASTransport_IEs__value_PR_MME_UE_S1AP_ID,
+	UplinkNASTransport_IEs__value_PR_ENB_UE_S1AP_ID,
+	UplinkNASTransport_IEs__value_PR_NAS_PDU,
+	UplinkNASTransport_IEs__value_PR_EUTRAN_CGI,
+	UplinkNASTransport_IEs__value_PR_TAI,
+	UplinkNASTransport_IEs__value_PR_TransportLayerAddress,
+	UplinkNASTransport_IEs__value_PR_TransportLayerAddress_1,
+	UplinkNASTransport_IEs__value_PR_LHN_ID,
+	UplinkNASTransport_IEs__value_PR_PSCellInformation
+} UplinkNASTransport_IEs__value_PR;
+typedef enum NASNonDeliveryIndication_IEs__value_PR {
+	NASNonDeliveryIndication_IEs__value_PR_NOTHING,	/* No components present */
+	NASNonDeliveryIndication_IEs__value_PR_MME_UE_S1AP_ID,
+	NASNonDeliveryIndication_IEs__value_PR_ENB_UE_S1AP_ID,
+	NASNonDeliveryIndication_IEs__value_PR_NAS_PDU,
+	NASNonDeliveryIndication_IEs__value_PR_Cause
+} NASNonDeliveryIndication_IEs__value_PR;
+typedef enum RerouteNASRequest_IEs__value_PR {
+	RerouteNASRequest_IEs__value_PR_NOTHING,	/* No components present */
+	RerouteNASRequest_IEs__value_PR_ENB_UE_S1AP_ID,
+	RerouteNASRequest_IEs__value_PR_MME_UE_S1AP_ID,
+	RerouteNASRequest_IEs__value_PR_OCTET_STRING,
+	RerouteNASRequest_IEs__value_PR_MME_Group_ID,
+	RerouteNASRequest_IEs__value_PR_Additional_GUTI,
+	RerouteNASRequest_IEs__value_PR_UE_Usage_Type
+} RerouteNASRequest_IEs__value_PR;
+typedef enum NASDeliveryIndicationIEs__value_PR {
+	NASDeliveryIndicationIEs__value_PR_NOTHING,	/* No components present */
+	NASDeliveryIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	NASDeliveryIndicationIEs__value_PR_ENB_UE_S1AP_ID
+} NASDeliveryIndicationIEs__value_PR;
+typedef enum ResetIEs__value_PR {
+	ResetIEs__value_PR_NOTHING,	/* No components present */
+	ResetIEs__value_PR_Cause,
+	ResetIEs__value_PR_ResetType
+} ResetIEs__value_PR;
+typedef enum ResetAcknowledgeIEs__value_PR {
+	ResetAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
+	ResetAcknowledgeIEs__value_PR_UE_associatedLogicalS1_ConnectionListResAck,
+	ResetAcknowledgeIEs__value_PR_CriticalityDiagnostics
+} ResetAcknowledgeIEs__value_PR;
+typedef enum ErrorIndicationIEs__value_PR {
+	ErrorIndicationIEs__value_PR_NOTHING,	/* No components present */
+	ErrorIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	ErrorIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	ErrorIndicationIEs__value_PR_Cause,
+	ErrorIndicationIEs__value_PR_CriticalityDiagnostics
+} ErrorIndicationIEs__value_PR;
+typedef enum S1SetupRequestIEs__value_PR {
+	S1SetupRequestIEs__value_PR_NOTHING,	/* No components present */
+	S1SetupRequestIEs__value_PR_Global_ENB_ID,
+	S1SetupRequestIEs__value_PR_ENBname,
+	S1SetupRequestIEs__value_PR_SupportedTAs,
+	S1SetupRequestIEs__value_PR_PagingDRX,
+	S1SetupRequestIEs__value_PR_CSG_IdList,
+	S1SetupRequestIEs__value_PR_UE_RetentionInformation,
+	S1SetupRequestIEs__value_PR_NB_IoT_DefaultPagingDRX,
+	S1SetupRequestIEs__value_PR_ConnectedengNBList
+} S1SetupRequestIEs__value_PR;
+typedef enum S1SetupResponseIEs__value_PR {
+	S1SetupResponseIEs__value_PR_NOTHING,	/* No components present */
+	S1SetupResponseIEs__value_PR_MMEname,
+	S1SetupResponseIEs__value_PR_ServedGUMMEIs,
+	S1SetupResponseIEs__value_PR_RelativeMMECapacity,
+	S1SetupResponseIEs__value_PR_MMERelaySupportIndicator,
+	S1SetupResponseIEs__value_PR_CriticalityDiagnostics,
+	S1SetupResponseIEs__value_PR_UE_RetentionInformation,
+	S1SetupResponseIEs__value_PR_ServedDCNs
+} S1SetupResponseIEs__value_PR;
+typedef enum S1SetupFailureIEs__value_PR {
+	S1SetupFailureIEs__value_PR_NOTHING,	/* No components present */
+	S1SetupFailureIEs__value_PR_Cause,
+	S1SetupFailureIEs__value_PR_TimeToWait,
+	S1SetupFailureIEs__value_PR_CriticalityDiagnostics
+} S1SetupFailureIEs__value_PR;
+typedef enum ENBConfigurationUpdateIEs__value_PR {
+	ENBConfigurationUpdateIEs__value_PR_NOTHING,	/* No components present */
+	ENBConfigurationUpdateIEs__value_PR_ENBname,
+	ENBConfigurationUpdateIEs__value_PR_SupportedTAs,
+	ENBConfigurationUpdateIEs__value_PR_CSG_IdList,
+	ENBConfigurationUpdateIEs__value_PR_PagingDRX,
+	ENBConfigurationUpdateIEs__value_PR_NB_IoT_DefaultPagingDRX,
+	ENBConfigurationUpdateIEs__value_PR_ConnectedengNBList,
+	ENBConfigurationUpdateIEs__value_PR_ConnectedengNBList_1
+} ENBConfigurationUpdateIEs__value_PR;
+typedef enum ENBConfigurationUpdateAcknowledgeIEs__value_PR {
+	ENBConfigurationUpdateAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
+	ENBConfigurationUpdateAcknowledgeIEs__value_PR_CriticalityDiagnostics
+} ENBConfigurationUpdateAcknowledgeIEs__value_PR;
+typedef enum ENBConfigurationUpdateFailureIEs__value_PR {
+	ENBConfigurationUpdateFailureIEs__value_PR_NOTHING,	/* No components present */
+	ENBConfigurationUpdateFailureIEs__value_PR_Cause,
+	ENBConfigurationUpdateFailureIEs__value_PR_TimeToWait,
+	ENBConfigurationUpdateFailureIEs__value_PR_CriticalityDiagnostics
+} ENBConfigurationUpdateFailureIEs__value_PR;
+typedef enum MMEConfigurationUpdateIEs__value_PR {
+	MMEConfigurationUpdateIEs__value_PR_NOTHING,	/* No components present */
+	MMEConfigurationUpdateIEs__value_PR_MMEname,
+	MMEConfigurationUpdateIEs__value_PR_ServedGUMMEIs,
+	MMEConfigurationUpdateIEs__value_PR_RelativeMMECapacity,
+	MMEConfigurationUpdateIEs__value_PR_ServedDCNs
+} MMEConfigurationUpdateIEs__value_PR;
+typedef enum MMEConfigurationUpdateAcknowledgeIEs__value_PR {
+	MMEConfigurationUpdateAcknowledgeIEs__value_PR_NOTHING,	/* No components present */
+	MMEConfigurationUpdateAcknowledgeIEs__value_PR_CriticalityDiagnostics
+} MMEConfigurationUpdateAcknowledgeIEs__value_PR;
+typedef enum MMEConfigurationUpdateFailureIEs__value_PR {
+	MMEConfigurationUpdateFailureIEs__value_PR_NOTHING,	/* No components present */
+	MMEConfigurationUpdateFailureIEs__value_PR_Cause,
+	MMEConfigurationUpdateFailureIEs__value_PR_TimeToWait,
+	MMEConfigurationUpdateFailureIEs__value_PR_CriticalityDiagnostics
+} MMEConfigurationUpdateFailureIEs__value_PR;
+typedef enum DownlinkS1cdma2000tunnellingIEs__value_PR {
+	DownlinkS1cdma2000tunnellingIEs__value_PR_NOTHING,	/* No components present */
+	DownlinkS1cdma2000tunnellingIEs__value_PR_MME_UE_S1AP_ID,
+	DownlinkS1cdma2000tunnellingIEs__value_PR_ENB_UE_S1AP_ID,
+	DownlinkS1cdma2000tunnellingIEs__value_PR_E_RABSubjecttoDataForwardingList,
+	DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000HOStatus,
+	DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000RATType,
+	DownlinkS1cdma2000tunnellingIEs__value_PR_Cdma2000PDU
+} DownlinkS1cdma2000tunnellingIEs__value_PR;
+typedef enum UplinkS1cdma2000tunnellingIEs__value_PR {
+	UplinkS1cdma2000tunnellingIEs__value_PR_NOTHING,	/* No components present */
+	UplinkS1cdma2000tunnellingIEs__value_PR_MME_UE_S1AP_ID,
+	UplinkS1cdma2000tunnellingIEs__value_PR_ENB_UE_S1AP_ID,
+	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000RATType,
+	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000SectorID,
+	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000HORequiredIndication,
+	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000OneXSRVCCInfo,
+	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000OneXRAND,
+	UplinkS1cdma2000tunnellingIEs__value_PR_Cdma2000PDU,
+	UplinkS1cdma2000tunnellingIEs__value_PR_EUTRANRoundTripDelayEstimationInfo
+} UplinkS1cdma2000tunnellingIEs__value_PR;
+typedef enum UECapabilityInfoIndicationIEs__value_PR {
+	UECapabilityInfoIndicationIEs__value_PR_NOTHING,	/* No components present */
+	UECapabilityInfoIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	UECapabilityInfoIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	UECapabilityInfoIndicationIEs__value_PR_UERadioCapability,
+	UECapabilityInfoIndicationIEs__value_PR_UERadioCapabilityForPaging,
+	UECapabilityInfoIndicationIEs__value_PR_UE_Application_Layer_Measurement_Capability,
+	UECapabilityInfoIndicationIEs__value_PR_LTE_M_Indication
+} UECapabilityInfoIndicationIEs__value_PR;
+typedef enum ENBStatusTransferIEs__value_PR {
+	ENBStatusTransferIEs__value_PR_NOTHING,	/* No components present */
+	ENBStatusTransferIEs__value_PR_MME_UE_S1AP_ID,
+	ENBStatusTransferIEs__value_PR_ENB_UE_S1AP_ID,
+	ENBStatusTransferIEs__value_PR_ENB_StatusTransfer_TransparentContainer
+} ENBStatusTransferIEs__value_PR;
+typedef enum MMEStatusTransferIEs__value_PR {
+	MMEStatusTransferIEs__value_PR_NOTHING,	/* No components present */
+	MMEStatusTransferIEs__value_PR_MME_UE_S1AP_ID,
+	MMEStatusTransferIEs__value_PR_ENB_UE_S1AP_ID,
+	MMEStatusTransferIEs__value_PR_ENB_StatusTransfer_TransparentContainer
+} MMEStatusTransferIEs__value_PR;
+typedef enum TraceStartIEs__value_PR {
+	TraceStartIEs__value_PR_NOTHING,	/* No components present */
+	TraceStartIEs__value_PR_MME_UE_S1AP_ID,
+	TraceStartIEs__value_PR_ENB_UE_S1AP_ID,
+	TraceStartIEs__value_PR_TraceActivation
+} TraceStartIEs__value_PR;
+typedef enum TraceFailureIndicationIEs__value_PR {
+	TraceFailureIndicationIEs__value_PR_NOTHING,	/* No components present */
+	TraceFailureIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	TraceFailureIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	TraceFailureIndicationIEs__value_PR_E_UTRAN_Trace_ID,
+	TraceFailureIndicationIEs__value_PR_Cause
+} TraceFailureIndicationIEs__value_PR;
+typedef enum DeactivateTraceIEs__value_PR {
+	DeactivateTraceIEs__value_PR_NOTHING,	/* No components present */
+	DeactivateTraceIEs__value_PR_MME_UE_S1AP_ID,
+	DeactivateTraceIEs__value_PR_ENB_UE_S1AP_ID,
+	DeactivateTraceIEs__value_PR_E_UTRAN_Trace_ID
+} DeactivateTraceIEs__value_PR;
+typedef enum CellTrafficTraceIEs__value_PR {
+	CellTrafficTraceIEs__value_PR_NOTHING,	/* No components present */
+	CellTrafficTraceIEs__value_PR_MME_UE_S1AP_ID,
+	CellTrafficTraceIEs__value_PR_ENB_UE_S1AP_ID,
+	CellTrafficTraceIEs__value_PR_E_UTRAN_Trace_ID,
+	CellTrafficTraceIEs__value_PR_EUTRAN_CGI,
+	CellTrafficTraceIEs__value_PR_TransportLayerAddress,
+	CellTrafficTraceIEs__value_PR_PrivacyIndicator
+} CellTrafficTraceIEs__value_PR;
+typedef enum LocationReportingControlIEs__value_PR {
+	LocationReportingControlIEs__value_PR_NOTHING,	/* No components present */
+	LocationReportingControlIEs__value_PR_MME_UE_S1AP_ID,
+	LocationReportingControlIEs__value_PR_ENB_UE_S1AP_ID,
+	LocationReportingControlIEs__value_PR_RequestType
+} LocationReportingControlIEs__value_PR;
+typedef enum LocationReportingFailureIndicationIEs__value_PR {
+	LocationReportingFailureIndicationIEs__value_PR_NOTHING,	/* No components present */
+	LocationReportingFailureIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	LocationReportingFailureIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	LocationReportingFailureIndicationIEs__value_PR_Cause
+} LocationReportingFailureIndicationIEs__value_PR;
+typedef enum LocationReportIEs__value_PR {
+	LocationReportIEs__value_PR_NOTHING,	/* No components present */
+	LocationReportIEs__value_PR_MME_UE_S1AP_ID,
+	LocationReportIEs__value_PR_ENB_UE_S1AP_ID,
+	LocationReportIEs__value_PR_EUTRAN_CGI,
+	LocationReportIEs__value_PR_TAI,
+	LocationReportIEs__value_PR_RequestType,
+	LocationReportIEs__value_PR_PSCellInformation
+} LocationReportIEs__value_PR;
+typedef enum OverloadStartIEs__value_PR {
+	OverloadStartIEs__value_PR_NOTHING,	/* No components present */
+	OverloadStartIEs__value_PR_OverloadResponse,
+	OverloadStartIEs__value_PR_GUMMEIList,
+	OverloadStartIEs__value_PR_TrafficLoadReductionIndication
+} OverloadStartIEs__value_PR;
+typedef enum OverloadStopIEs__value_PR {
+	OverloadStopIEs__value_PR_NOTHING,	/* No components present */
+	OverloadStopIEs__value_PR_GUMMEIList
+} OverloadStopIEs__value_PR;
+typedef enum WriteReplaceWarningRequestIEs__value_PR {
+	WriteReplaceWarningRequestIEs__value_PR_NOTHING,	/* No components present */
+	WriteReplaceWarningRequestIEs__value_PR_MessageIdentifier,
+	WriteReplaceWarningRequestIEs__value_PR_SerialNumber,
+	WriteReplaceWarningRequestIEs__value_PR_WarningAreaList,
+	WriteReplaceWarningRequestIEs__value_PR_RepetitionPeriod,
+	WriteReplaceWarningRequestIEs__value_PR_ExtendedRepetitionPeriod,
+	WriteReplaceWarningRequestIEs__value_PR_NumberofBroadcastRequest,
+	WriteReplaceWarningRequestIEs__value_PR_WarningType,
+	WriteReplaceWarningRequestIEs__value_PR_WarningSecurityInfo,
+	WriteReplaceWarningRequestIEs__value_PR_DataCodingScheme,
+	WriteReplaceWarningRequestIEs__value_PR_WarningMessageContents,
+	WriteReplaceWarningRequestIEs__value_PR_ConcurrentWarningMessageIndicator,
+	WriteReplaceWarningRequestIEs__value_PR_WarningAreaCoordinates
+} WriteReplaceWarningRequestIEs__value_PR;
+typedef enum WriteReplaceWarningResponseIEs__value_PR {
+	WriteReplaceWarningResponseIEs__value_PR_NOTHING,	/* No components present */
+	WriteReplaceWarningResponseIEs__value_PR_MessageIdentifier,
+	WriteReplaceWarningResponseIEs__value_PR_SerialNumber,
+	WriteReplaceWarningResponseIEs__value_PR_BroadcastCompletedAreaList,
+	WriteReplaceWarningResponseIEs__value_PR_CriticalityDiagnostics
+} WriteReplaceWarningResponseIEs__value_PR;
+typedef enum ENBDirectInformationTransferIEs__value_PR {
+	ENBDirectInformationTransferIEs__value_PR_NOTHING,	/* No components present */
+	ENBDirectInformationTransferIEs__value_PR_Inter_SystemInformationTransferType
+} ENBDirectInformationTransferIEs__value_PR;
+typedef enum MMEDirectInformationTransferIEs__value_PR {
+	MMEDirectInformationTransferIEs__value_PR_NOTHING,	/* No components present */
+	MMEDirectInformationTransferIEs__value_PR_Inter_SystemInformationTransferType
+} MMEDirectInformationTransferIEs__value_PR;
+typedef enum ENBConfigurationTransferIEs__value_PR {
+	ENBConfigurationTransferIEs__value_PR_NOTHING,	/* No components present */
+	ENBConfigurationTransferIEs__value_PR_SONConfigurationTransfer,
+	ENBConfigurationTransferIEs__value_PR_EN_DCSONConfigurationTransfer
+} ENBConfigurationTransferIEs__value_PR;
+typedef enum MMEConfigurationTransferIEs__value_PR {
+	MMEConfigurationTransferIEs__value_PR_NOTHING,	/* No components present */
+	MMEConfigurationTransferIEs__value_PR_SONConfigurationTransfer,
+	MMEConfigurationTransferIEs__value_PR_EN_DCSONConfigurationTransfer
+} MMEConfigurationTransferIEs__value_PR;
+typedef enum KillRequestIEs__value_PR {
+	KillRequestIEs__value_PR_NOTHING,	/* No components present */
+	KillRequestIEs__value_PR_MessageIdentifier,
+	KillRequestIEs__value_PR_SerialNumber,
+	KillRequestIEs__value_PR_WarningAreaList,
+	KillRequestIEs__value_PR_KillAllWarningMessages
+} KillRequestIEs__value_PR;
+typedef enum KillResponseIEs__value_PR {
+	KillResponseIEs__value_PR_NOTHING,	/* No components present */
+	KillResponseIEs__value_PR_MessageIdentifier,
+	KillResponseIEs__value_PR_SerialNumber,
+	KillResponseIEs__value_PR_BroadcastCancelledAreaList,
+	KillResponseIEs__value_PR_CriticalityDiagnostics
+} KillResponseIEs__value_PR;
+typedef enum PWSRestartIndicationIEs__value_PR {
+	PWSRestartIndicationIEs__value_PR_NOTHING,	/* No components present */
+	PWSRestartIndicationIEs__value_PR_ECGIListForRestart,
+	PWSRestartIndicationIEs__value_PR_Global_ENB_ID,
+	PWSRestartIndicationIEs__value_PR_TAIListForRestart,
+	PWSRestartIndicationIEs__value_PR_EmergencyAreaIDListForRestart
+} PWSRestartIndicationIEs__value_PR;
+typedef enum PWSFailureIndicationIEs__value_PR {
+	PWSFailureIndicationIEs__value_PR_NOTHING,	/* No components present */
+	PWSFailureIndicationIEs__value_PR_PWSfailedECGIList,
+	PWSFailureIndicationIEs__value_PR_Global_ENB_ID
+} PWSFailureIndicationIEs__value_PR;
+typedef enum DownlinkUEAssociatedLPPaTransport_IEs__value_PR {
+	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
+	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_MME_UE_S1AP_ID,
+	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_ENB_UE_S1AP_ID,
+	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
+	DownlinkUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
+} DownlinkUEAssociatedLPPaTransport_IEs__value_PR;
+typedef enum UplinkUEAssociatedLPPaTransport_IEs__value_PR {
+	UplinkUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
+	UplinkUEAssociatedLPPaTransport_IEs__value_PR_MME_UE_S1AP_ID,
+	UplinkUEAssociatedLPPaTransport_IEs__value_PR_ENB_UE_S1AP_ID,
+	UplinkUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
+	UplinkUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
+} UplinkUEAssociatedLPPaTransport_IEs__value_PR;
+typedef enum DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR {
+	DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
+	DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
+	DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
+} DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR;
+typedef enum UplinkNonUEAssociatedLPPaTransport_IEs__value_PR {
+	UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_NOTHING,	/* No components present */
+	UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_Routing_ID,
+	UplinkNonUEAssociatedLPPaTransport_IEs__value_PR_LPPa_PDU
+} UplinkNonUEAssociatedLPPaTransport_IEs__value_PR;
+typedef enum E_RABModificationIndicationIEs__value_PR {
+	E_RABModificationIndicationIEs__value_PR_NOTHING,	/* No components present */
+	E_RABModificationIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABModificationIndicationIEs__value_PR_E_RABToBeModifiedListBearerModInd,
+	E_RABModificationIndicationIEs__value_PR_E_RABNotToBeModifiedListBearerModInd,
+	E_RABModificationIndicationIEs__value_PR_CSGMembershipInfo,
+	E_RABModificationIndicationIEs__value_PR_TunnelInformation,
+	E_RABModificationIndicationIEs__value_PR_SecondaryRATDataUsageReportList
+} E_RABModificationIndicationIEs__value_PR;
+typedef enum E_RABModificationConfirmIEs__value_PR {
+	E_RABModificationConfirmIEs__value_PR_NOTHING,	/* No components present */
+	E_RABModificationConfirmIEs__value_PR_MME_UE_S1AP_ID,
+	E_RABModificationConfirmIEs__value_PR_ENB_UE_S1AP_ID,
+	E_RABModificationConfirmIEs__value_PR_E_RABModifyListBearerModConf,
+	E_RABModificationConfirmIEs__value_PR_E_RABList,
+	E_RABModificationConfirmIEs__value_PR_E_RABList_1,
+	E_RABModificationConfirmIEs__value_PR_CriticalityDiagnostics,
+	E_RABModificationConfirmIEs__value_PR_CSGMembershipStatus
+} E_RABModificationConfirmIEs__value_PR;
+typedef enum UEContextModificationIndicationIEs__value_PR {
+	UEContextModificationIndicationIEs__value_PR_NOTHING,	/* No components present */
+	UEContextModificationIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextModificationIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextModificationIndicationIEs__value_PR_CSGMembershipInfo
+} UEContextModificationIndicationIEs__value_PR;
+typedef enum UEContextModificationConfirmIEs__value_PR {
+	UEContextModificationConfirmIEs__value_PR_NOTHING,	/* No components present */
+	UEContextModificationConfirmIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextModificationConfirmIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextModificationConfirmIEs__value_PR_CSGMembershipStatus,
+	UEContextModificationConfirmIEs__value_PR_CriticalityDiagnostics
+} UEContextModificationConfirmIEs__value_PR;
+typedef enum UEContextSuspendRequestIEs__value_PR {
+	UEContextSuspendRequestIEs__value_PR_NOTHING,	/* No components present */
+	UEContextSuspendRequestIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextSuspendRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextSuspendRequestIEs__value_PR_InformationOnRecommendedCellsAndENBsForPaging,
+	UEContextSuspendRequestIEs__value_PR_CellIdentifierAndCELevelForCECapableUEs,
+	UEContextSuspendRequestIEs__value_PR_SecondaryRATDataUsageReportList,
+	UEContextSuspendRequestIEs__value_PR_UserLocationInformation,
+	UEContextSuspendRequestIEs__value_PR_TimeSinceSecondaryNodeRelease
+} UEContextSuspendRequestIEs__value_PR;
+typedef enum UEContextSuspendResponseIEs__value_PR {
+	UEContextSuspendResponseIEs__value_PR_NOTHING,	/* No components present */
+	UEContextSuspendResponseIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextSuspendResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextSuspendResponseIEs__value_PR_CriticalityDiagnostics,
+	UEContextSuspendResponseIEs__value_PR_SecurityContext
+} UEContextSuspendResponseIEs__value_PR;
+typedef enum UEContextResumeRequestIEs__value_PR {
+	UEContextResumeRequestIEs__value_PR_NOTHING,	/* No components present */
+	UEContextResumeRequestIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextResumeRequestIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextResumeRequestIEs__value_PR_E_RABFailedToResumeListResumeReq,
+	UEContextResumeRequestIEs__value_PR_RRC_Establishment_Cause
+} UEContextResumeRequestIEs__value_PR;
+typedef enum UEContextResumeResponseIEs__value_PR {
+	UEContextResumeResponseIEs__value_PR_NOTHING,	/* No components present */
+	UEContextResumeResponseIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextResumeResponseIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextResumeResponseIEs__value_PR_E_RABFailedToResumeListResumeRes,
+	UEContextResumeResponseIEs__value_PR_CriticalityDiagnostics,
+	UEContextResumeResponseIEs__value_PR_SecurityContext,
+	UEContextResumeResponseIEs__value_PR_PendingDataIndication
+} UEContextResumeResponseIEs__value_PR;
+typedef enum UEContextResumeFailureIEs__value_PR {
+	UEContextResumeFailureIEs__value_PR_NOTHING,	/* No components present */
+	UEContextResumeFailureIEs__value_PR_MME_UE_S1AP_ID,
+	UEContextResumeFailureIEs__value_PR_ENB_UE_S1AP_ID,
+	UEContextResumeFailureIEs__value_PR_Cause,
+	UEContextResumeFailureIEs__value_PR_CriticalityDiagnostics
+} UEContextResumeFailureIEs__value_PR;
+typedef enum ConnectionEstablishmentIndicationIEs__value_PR {
+	ConnectionEstablishmentIndicationIEs__value_PR_NOTHING,	/* No components present */
+	ConnectionEstablishmentIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	ConnectionEstablishmentIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	ConnectionEstablishmentIndicationIEs__value_PR_UERadioCapability,
+	ConnectionEstablishmentIndicationIEs__value_PR_EnhancedCoverageRestricted,
+	ConnectionEstablishmentIndicationIEs__value_PR_DL_CP_SecurityInformation,
+	ConnectionEstablishmentIndicationIEs__value_PR_CE_ModeBRestricted,
+	ConnectionEstablishmentIndicationIEs__value_PR_EndIndication,
+	ConnectionEstablishmentIndicationIEs__value_PR_Subscription_Based_UE_DifferentiationInfo
+} ConnectionEstablishmentIndicationIEs__value_PR;
+typedef enum RetrieveUEInformationIEs__value_PR {
+	RetrieveUEInformationIEs__value_PR_NOTHING,	/* No components present */
+	RetrieveUEInformationIEs__value_PR_S_TMSI
+} RetrieveUEInformationIEs__value_PR;
+typedef enum UEInformationTransferIEs__value_PR {
+	UEInformationTransferIEs__value_PR_NOTHING,	/* No components present */
+	UEInformationTransferIEs__value_PR_S_TMSI,
+	UEInformationTransferIEs__value_PR_E_RABLevelQoSParameters,
+	UEInformationTransferIEs__value_PR_UERadioCapability,
+	UEInformationTransferIEs__value_PR_Subscription_Based_UE_DifferentiationInfo,
+	UEInformationTransferIEs__value_PR_PendingDataIndication
+} UEInformationTransferIEs__value_PR;
+typedef enum ENBCPRelocationIndicationIEs__value_PR {
+	ENBCPRelocationIndicationIEs__value_PR_NOTHING,	/* No components present */
+	ENBCPRelocationIndicationIEs__value_PR_ENB_UE_S1AP_ID,
+	ENBCPRelocationIndicationIEs__value_PR_S_TMSI,
+	ENBCPRelocationIndicationIEs__value_PR_EUTRAN_CGI,
+	ENBCPRelocationIndicationIEs__value_PR_TAI,
+	ENBCPRelocationIndicationIEs__value_PR_UL_CP_SecurityInformation
+} ENBCPRelocationIndicationIEs__value_PR;
+typedef enum MMECPRelocationIndicationIEs__value_PR {
+	MMECPRelocationIndicationIEs__value_PR_NOTHING,	/* No components present */
+	MMECPRelocationIndicationIEs__value_PR_MME_UE_S1AP_ID,
+	MMECPRelocationIndicationIEs__value_PR_ENB_UE_S1AP_ID
+} MMECPRelocationIndicationIEs__value_PR;
+typedef enum SecondaryRATDataUsageReportIEs__value_PR {
+	SecondaryRATDataUsageReportIEs__value_PR_NOTHING,	/* No components present */
+	SecondaryRATDataUsageReportIEs__value_PR_MME_UE_S1AP_ID,
+	SecondaryRATDataUsageReportIEs__value_PR_ENB_UE_S1AP_ID,
+	SecondaryRATDataUsageReportIEs__value_PR_SecondaryRATDataUsageReportList,
+	SecondaryRATDataUsageReportIEs__value_PR_HandoverFlag,
+	SecondaryRATDataUsageReportIEs__value_PR_UserLocationInformation,
+	SecondaryRATDataUsageReportIEs__value_PR_TimeSinceSecondaryNodeRelease
+} SecondaryRATDataUsageReportIEs__value_PR;
+typedef enum E_RABDataForwardingItemIEs__value_PR {
+	E_RABDataForwardingItemIEs__value_PR_NOTHING,	/* No components present */
+	E_RABDataForwardingItemIEs__value_PR_E_RABDataForwardingItem
+} E_RABDataForwardingItemIEs__value_PR;
+typedef enum E_RABToBeSetupItemHOReqIEs__value_PR {
+	E_RABToBeSetupItemHOReqIEs__value_PR_NOTHING,	/* No components present */
+	E_RABToBeSetupItemHOReqIEs__value_PR_E_RABToBeSetupItemHOReq
+} E_RABToBeSetupItemHOReqIEs__value_PR;
+typedef enum E_RABAdmittedItemIEs__value_PR {
+	E_RABAdmittedItemIEs__value_PR_NOTHING,	/* No components present */
+	E_RABAdmittedItemIEs__value_PR_E_RABAdmittedItem
+} E_RABAdmittedItemIEs__value_PR;
+typedef enum E_RABFailedtoSetupItemHOReqAckIEs__value_PR {
+	E_RABFailedtoSetupItemHOReqAckIEs__value_PR_NOTHING,	/* No components present */
+	E_RABFailedtoSetupItemHOReqAckIEs__value_PR_E_RABFailedToSetupItemHOReqAck
+} E_RABFailedtoSetupItemHOReqAckIEs__value_PR;
+typedef enum E_RABToBeSwitchedDLItemIEs__value_PR {
+	E_RABToBeSwitchedDLItemIEs__value_PR_NOTHING,	/* No components present */
+	E_RABToBeSwitchedDLItemIEs__value_PR_E_RABToBeSwitchedDLItem
+} E_RABToBeSwitchedDLItemIEs__value_PR;
+typedef enum E_RABToBeSwitchedULItemIEs__value_PR {
+	E_RABToBeSwitchedULItemIEs__value_PR_NOTHING,	/* No components present */
+	E_RABToBeSwitchedULItemIEs__value_PR_E_RABToBeSwitchedULItem
+} E_RABToBeSwitchedULItemIEs__value_PR;
+typedef enum E_RABToBeModifiedItemBearerModIndIEs__value_PR {
+	E_RABToBeModifiedItemBearerModIndIEs__value_PR_NOTHING,	/* No components present */
+	E_RABToBeModifiedItemBearerModIndIEs__value_PR_E_RABToBeModifiedItemBearerModInd
+} E_RABToBeModifiedItemBearerModIndIEs__value_PR;
+typedef enum E_RABNotToBeModifiedItemBearerModIndIEs__value_PR {
+	E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_NOTHING,	/* No components present */
+	E_RABNotToBeModifiedItemBearerModIndIEs__value_PR_E_RABNotToBeModifiedItemBearerModInd
+} E_RABNotToBeModifiedItemBearerModIndIEs__value_PR;
+typedef enum E_RABFailedToResumeItemResumeReqIEs__value_PR {
+	E_RABFailedToResumeItemResumeReqIEs__value_PR_NOTHING,	/* No components present */
+	E_RABFailedToResumeItemResumeReqIEs__value_PR_E_RABFailedToResumeItemResumeReq
+} E_RABFailedToResumeItemResumeReqIEs__value_PR;
+typedef enum E_RABFailedToResumeItemResumeResIEs__value_PR {
+	E_RABFailedToResumeItemResumeResIEs__value_PR_NOTHING,	/* No components present */
+	E_RABFailedToResumeItemResumeResIEs__value_PR_E_RABFailedToResumeItemResumeRes
+} E_RABFailedToResumeItemResumeResIEs__value_PR;
+
+/* ProtocolIE-Field */
+typedef struct Bearers_SubjectToStatusTransfer_ItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct Bearers_SubjectToStatusTransfer_ItemIEs__value {
+		Bearers_SubjectToStatusTransfer_ItemIEs__value_PR present;
+		union Bearers_SubjectToStatusTransfer_ItemIEs__value_u {
+			Bearers_SubjectToStatusTransfer_Item_t	 Bearers_SubjectToStatusTransfer_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;
+} Bearers_SubjectToStatusTransfer_ItemIEs_t;
+typedef struct E_RABInformationListIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABInformationListIEs__value {
+		E_RABInformationListIEs__value_PR present;
+		union E_RABInformationListIEs__value_u {
+			E_RABInformationListItem_t	 E_RABInformationListItem;
+		} 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;
+} E_RABInformationListIEs_t;
+typedef struct E_RABItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABItemIEs__value {
+		E_RABItemIEs__value_PR present;
+		union E_RABItemIEs__value_u {
+			E_RABItem_t	 E_RABItem;
+		} 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;
+} E_RABItemIEs_t;
+typedef struct E_RABUsageReportItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABUsageReportItemIEs__value {
+		E_RABUsageReportItemIEs__value_PR present;
+		union E_RABUsageReportItemIEs__value_u {
+			E_RABUsageReportItem_t	 E_RABUsageReportItem;
+		} 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;
+} E_RABUsageReportItemIEs_t;
+typedef struct MDTMode_ExtensionIE {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MDTMode_ExtensionIE__value {
+		MDTMode_ExtensionIE__value_PR present;
+		union MDTMode_ExtensionIE__value_u {
+			LoggedMBSFNMDT_t	 LoggedMBSFNMDT;
+		} 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;
+} MDTMode_ExtensionIE_t;
+typedef struct RecommendedCellItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct RecommendedCellItemIEs__value {
+		RecommendedCellItemIEs__value_PR present;
+		union RecommendedCellItemIEs__value_u {
+			RecommendedCellItem_t	 RecommendedCellItem;
+		} 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;
+} RecommendedCellItemIEs_t;
+typedef struct RecommendedENBItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct RecommendedENBItemIEs__value {
+		RecommendedENBItemIEs__value_PR present;
+		union RecommendedENBItemIEs__value_u {
+			RecommendedENBItem_t	 RecommendedENBItem;
+		} 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;
+} RecommendedENBItemIEs_t;
+typedef struct SecondaryRATDataUsageReportItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct SecondaryRATDataUsageReportItemIEs__value {
+		SecondaryRATDataUsageReportItemIEs__value_PR present;
+		union SecondaryRATDataUsageReportItemIEs__value_u {
+			SecondaryRATDataUsageReportItem_t	 SecondaryRATDataUsageReportItem;
+		} 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;
+} SecondaryRATDataUsageReportItemIEs_t;
+typedef struct SONInformation_ExtensionIE {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct SONInformation_ExtensionIE__value {
+		SONInformation_ExtensionIE__value_PR present;
+		union SONInformation_ExtensionIE__value_u {
+			SONInformationReport_t	 SONInformationReport;
+		} 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;
+} SONInformation_ExtensionIE_t;
+typedef struct E_RABToBeSetupItemBearerSUReqIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABToBeSetupItemBearerSUReqIEs__value {
+		E_RABToBeSetupItemBearerSUReqIEs__value_PR present;
+		union E_RABToBeSetupItemBearerSUReqIEs__value_u {
+			E_RABToBeSetupItemBearerSUReq_t	 E_RABToBeSetupItemBearerSUReq;
+		} 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;
+} E_RABToBeSetupItemBearerSUReqIEs_t;
+typedef struct E_RABSetupItemBearerSUResIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABSetupItemBearerSUResIEs__value {
+		E_RABSetupItemBearerSUResIEs__value_PR present;
+		union E_RABSetupItemBearerSUResIEs__value_u {
+			E_RABSetupItemBearerSURes_t	 E_RABSetupItemBearerSURes;
+		} 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;
+} E_RABSetupItemBearerSUResIEs_t;
+typedef struct E_RABToBeModifiedItemBearerModReqIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABToBeModifiedItemBearerModReqIEs__value {
+		E_RABToBeModifiedItemBearerModReqIEs__value_PR present;
+		union E_RABToBeModifiedItemBearerModReqIEs__value_u {
+			E_RABToBeModifiedItemBearerModReq_t	 E_RABToBeModifiedItemBearerModReq;
+		} 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;
+} E_RABToBeModifiedItemBearerModReqIEs_t;
+typedef struct E_RABModifyItemBearerModResIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABModifyItemBearerModResIEs__value {
+		E_RABModifyItemBearerModResIEs__value_PR present;
+		union E_RABModifyItemBearerModResIEs__value_u {
+			E_RABModifyItemBearerModRes_t	 E_RABModifyItemBearerModRes;
+		} 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;
+} E_RABModifyItemBearerModResIEs_t;
+typedef struct E_RABReleaseItemBearerRelCompIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABReleaseItemBearerRelCompIEs__value {
+		E_RABReleaseItemBearerRelCompIEs__value_PR present;
+		union E_RABReleaseItemBearerRelCompIEs__value_u {
+			E_RABReleaseItemBearerRelComp_t	 E_RABReleaseItemBearerRelComp;
+		} 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;
+} E_RABReleaseItemBearerRelCompIEs_t;
+typedef struct E_RABToBeSetupItemCtxtSUReqIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABToBeSetupItemCtxtSUReqIEs__value {
+		E_RABToBeSetupItemCtxtSUReqIEs__value_PR present;
+		union E_RABToBeSetupItemCtxtSUReqIEs__value_u {
+			E_RABToBeSetupItemCtxtSUReq_t	 E_RABToBeSetupItemCtxtSUReq;
+		} 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;
+} E_RABToBeSetupItemCtxtSUReqIEs_t;
+typedef struct E_RABSetupItemCtxtSUResIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABSetupItemCtxtSUResIEs__value {
+		E_RABSetupItemCtxtSUResIEs__value_PR present;
+		union E_RABSetupItemCtxtSUResIEs__value_u {
+			E_RABSetupItemCtxtSURes_t	 E_RABSetupItemCtxtSURes;
+		} 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;
+} E_RABSetupItemCtxtSUResIEs_t;
+typedef struct TAIItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct TAIItemIEs__value {
+		TAIItemIEs__value_PR present;
+		union TAIItemIEs__value_u {
+			TAIItem_t	 TAIItem;
+		} 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;
+} TAIItemIEs_t;
+typedef struct UE_associatedLogicalS1_ConnectionItemRes {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UE_associatedLogicalS1_ConnectionItemRes__value {
+		UE_associatedLogicalS1_ConnectionItemRes__value_PR present;
+		union UE_associatedLogicalS1_ConnectionItemRes__value_u {
+			UE_associatedLogicalS1_ConnectionItem_t	 UE_associatedLogicalS1_ConnectionItem;
+		} 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;
+} UE_associatedLogicalS1_ConnectionItemRes_t;
+typedef struct UE_associatedLogicalS1_ConnectionItemResAck {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UE_associatedLogicalS1_ConnectionItemResAck__value {
+		UE_associatedLogicalS1_ConnectionItemResAck__value_PR present;
+		union UE_associatedLogicalS1_ConnectionItemResAck__value_u {
+			UE_associatedLogicalS1_ConnectionItem_t	 UE_associatedLogicalS1_ConnectionItem;
+		} 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;
+} UE_associatedLogicalS1_ConnectionItemResAck_t;
+typedef struct E_RABModifyItemBearerModConfIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABModifyItemBearerModConfIEs__value {
+		E_RABModifyItemBearerModConfIEs__value_PR present;
+		union E_RABModifyItemBearerModConfIEs__value_u {
+			E_RABModifyItemBearerModConf_t	 E_RABModifyItemBearerModConf;
+		} 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;
+} E_RABModifyItemBearerModConfIEs_t;
+typedef struct HandoverRequiredIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverRequiredIEs__value {
+		HandoverRequiredIEs__value_PR present;
+		union HandoverRequiredIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			HandoverType_t	 HandoverType;
+			Cause_t	 Cause;
+			TargetID_t	 TargetID;
+			Direct_Forwarding_Path_Availability_t	 Direct_Forwarding_Path_Availability;
+			SRVCCHOIndication_t	 SRVCCHOIndication;
+			Source_ToTarget_TransparentContainer_t	 Source_ToTarget_TransparentContainer;
+			Source_ToTarget_TransparentContainer_t	 Source_ToTarget_TransparentContainer_1;
+			MSClassmark2_t	 MSClassmark2;
+			MSClassmark3_t	 MSClassmark3;
+			CSG_Id_t	 CSG_Id;
+			CellAccessMode_t	 CellAccessMode;
+			PS_ServiceNotAvailable_t	 PS_ServiceNotAvailable;
+		} 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;
+} HandoverRequiredIEs_t;
+typedef struct HandoverCommandIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverCommandIEs__value {
+		HandoverCommandIEs__value_PR present;
+		union HandoverCommandIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			HandoverType_t	 HandoverType;
+			NASSecurityParametersfromE_UTRAN_t	 NASSecurityParametersfromE_UTRAN;
+			E_RABSubjecttoDataForwardingList_t	 E_RABSubjecttoDataForwardingList;
+			E_RABList_t	 E_RABList;
+			Target_ToSource_TransparentContainer_t	 Target_ToSource_TransparentContainer;
+			Target_ToSource_TransparentContainer_t	 Target_ToSource_TransparentContainer_1;
+			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;
+} HandoverCommandIEs_t;
+typedef struct HandoverPreparationFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverPreparationFailureIEs__value {
+		HandoverPreparationFailureIEs__value_PR present;
+		union HandoverPreparationFailureIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cause_t	 Cause;
+			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;
+} HandoverPreparationFailureIEs_t;
+typedef struct HandoverRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverRequestIEs__value {
+		HandoverRequestIEs__value_PR present;
+		union HandoverRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			HandoverType_t	 HandoverType;
+			Cause_t	 Cause;
+			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
+			E_RABToBeSetupListHOReq_t	 E_RABToBeSetupListHOReq;
+			Source_ToTarget_TransparentContainer_t	 Source_ToTarget_TransparentContainer;
+			UESecurityCapabilities_t	 UESecurityCapabilities;
+			HandoverRestrictionList_t	 HandoverRestrictionList;
+			TraceActivation_t	 TraceActivation;
+			RequestType_t	 RequestType;
+			SRVCCOperationPossible_t	 SRVCCOperationPossible;
+			SecurityContext_t	 SecurityContext;
+			NASSecurityParameterstoE_UTRAN_t	 NASSecurityParameterstoE_UTRAN;
+			CSG_Id_t	 CSG_Id;
+			CSGMembershipStatus_t	 CSGMembershipStatus;
+			GUMMEI_t	 GUMMEI;
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID_1;
+			ManagementBasedMDTAllowed_t	 ManagementBasedMDTAllowed;
+			MDTPLMNList_t	 MDTPLMNList;
+			Masked_IMEISV_t	 Masked_IMEISV;
+			ExpectedUEBehaviour_t	 ExpectedUEBehaviour;
+			ProSeAuthorized_t	 ProSeAuthorized;
+			UEUserPlaneCIoTSupportIndicator_t	 UEUserPlaneCIoTSupportIndicator;
+			V2XServicesAuthorized_t	 V2XServicesAuthorized;
+			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
+			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
+			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
+			CE_ModeBRestricted_t	 CE_ModeBRestricted;
+			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
+			PendingDataIndication_t	 PendingDataIndication;
+			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
+		} 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;
+} HandoverRequestIEs_t;
+typedef struct HandoverRequestAcknowledgeIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverRequestAcknowledgeIEs__value {
+		HandoverRequestAcknowledgeIEs__value_PR present;
+		union HandoverRequestAcknowledgeIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABAdmittedList_t	 E_RABAdmittedList;
+			E_RABFailedtoSetupListHOReqAck_t	 E_RABFailedtoSetupListHOReqAck;
+			Target_ToSource_TransparentContainer_t	 Target_ToSource_TransparentContainer;
+			CSG_Id_t	 CSG_Id;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			CellAccessMode_t	 CellAccessMode;
+			CE_mode_B_SupportIndicator_t	 CE_mode_B_SupportIndicator;
+		} 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;
+} HandoverRequestAcknowledgeIEs_t;
+typedef struct HandoverFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverFailureIEs__value {
+		HandoverFailureIEs__value_PR present;
+		union HandoverFailureIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			Cause_t	 Cause;
+			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;
+} HandoverFailureIEs_t;
+typedef struct HandoverNotifyIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverNotifyIEs__value {
+		HandoverNotifyIEs__value_PR present;
+		union HandoverNotifyIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			EUTRAN_CGI_t	 EUTRAN_CGI;
+			TAI_t	 TAI;
+			TunnelInformation_t	 TunnelInformation;
+			LHN_ID_t	 LHN_ID;
+			PSCellInformation_t	 PSCellInformation;
+		} 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;
+} HandoverNotifyIEs_t;
+typedef struct PathSwitchRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct PathSwitchRequestIEs__value {
+		PathSwitchRequestIEs__value_PR present;
+		union PathSwitchRequestIEs__value_u {
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABToBeSwitchedDLList_t	 E_RABToBeSwitchedDLList;
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			EUTRAN_CGI_t	 EUTRAN_CGI;
+			TAI_t	 TAI;
+			UESecurityCapabilities_t	 UESecurityCapabilities;
+			CSG_Id_t	 CSG_Id;
+			CellAccessMode_t	 CellAccessMode;
+			GUMMEI_t	 GUMMEI;
+			CSGMembershipStatus_t	 CSGMembershipStatus;
+			TunnelInformation_t	 TunnelInformation;
+			LHN_ID_t	 LHN_ID;
+			RRC_Establishment_Cause_t	 RRC_Establishment_Cause;
+			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
+			PSCellInformation_t	 PSCellInformation;
+		} 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;
+} PathSwitchRequestIEs_t;
+typedef struct PathSwitchRequestAcknowledgeIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct PathSwitchRequestAcknowledgeIEs__value {
+		PathSwitchRequestAcknowledgeIEs__value_PR present;
+		union PathSwitchRequestAcknowledgeIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
+			E_RABToBeSwitchedULList_t	 E_RABToBeSwitchedULList;
+			E_RABList_t	 E_RABList;
+			SecurityContext_t	 SecurityContext;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID_1;
+			CSGMembershipStatus_t	 CSGMembershipStatus;
+			ProSeAuthorized_t	 ProSeAuthorized;
+			UEUserPlaneCIoTSupportIndicator_t	 UEUserPlaneCIoTSupportIndicator;
+			V2XServicesAuthorized_t	 V2XServicesAuthorized;
+			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
+			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
+			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
+			CE_ModeBRestricted_t	 CE_ModeBRestricted;
+			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
+			PendingDataIndication_t	 PendingDataIndication;
+			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
+		} 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;
+} PathSwitchRequestAcknowledgeIEs_t;
+typedef struct PathSwitchRequestFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct PathSwitchRequestFailureIEs__value {
+		PathSwitchRequestFailureIEs__value_PR present;
+		union PathSwitchRequestFailureIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cause_t	 Cause;
+			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;
+} PathSwitchRequestFailureIEs_t;
+typedef struct HandoverCancelIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverCancelIEs__value {
+		HandoverCancelIEs__value_PR present;
+		union HandoverCancelIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			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;
+} HandoverCancelIEs_t;
+typedef struct HandoverCancelAcknowledgeIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct HandoverCancelAcknowledgeIEs__value {
+		HandoverCancelAcknowledgeIEs__value_PR present;
+		union HandoverCancelAcknowledgeIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			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;
+} HandoverCancelAcknowledgeIEs_t;
+typedef struct E_RABSetupRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABSetupRequestIEs__value {
+		E_RABSetupRequestIEs__value_PR present;
+		union E_RABSetupRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
+			E_RABToBeSetupListBearerSUReq_t	 E_RABToBeSetupListBearerSUReq;
+		} 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;
+} E_RABSetupRequestIEs_t;
+typedef struct E_RABSetupResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABSetupResponseIEs__value {
+		E_RABSetupResponseIEs__value_PR present;
+		union E_RABSetupResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABSetupListBearerSURes_t	 E_RABSetupListBearerSURes;
+			E_RABList_t	 E_RABList;
+			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;
+} E_RABSetupResponseIEs_t;
+typedef struct E_RABModifyRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABModifyRequestIEs__value {
+		E_RABModifyRequestIEs__value_PR present;
+		union E_RABModifyRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
+			E_RABToBeModifiedListBearerModReq_t	 E_RABToBeModifiedListBearerModReq;
+			SecondaryRATDataUsageRequest_t	 SecondaryRATDataUsageRequest;
+		} 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;
+} E_RABModifyRequestIEs_t;
+typedef struct E_RABModifyResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABModifyResponseIEs__value {
+		E_RABModifyResponseIEs__value_PR present;
+		union E_RABModifyResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABModifyListBearerModRes_t	 E_RABModifyListBearerModRes;
+			E_RABList_t	 E_RABList;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+		} 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;
+} E_RABModifyResponseIEs_t;
+typedef struct E_RABReleaseCommandIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABReleaseCommandIEs__value {
+		E_RABReleaseCommandIEs__value_PR present;
+		union E_RABReleaseCommandIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
+			E_RABList_t	 E_RABList;
+			NAS_PDU_t	 NAS_PDU;
+		} 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;
+} E_RABReleaseCommandIEs_t;
+typedef struct E_RABReleaseResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABReleaseResponseIEs__value {
+		E_RABReleaseResponseIEs__value_PR present;
+		union E_RABReleaseResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABReleaseListBearerRelComp_t	 E_RABReleaseListBearerRelComp;
+			E_RABList_t	 E_RABList;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			UserLocationInformation_t	 UserLocationInformation;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+		} 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;
+} E_RABReleaseResponseIEs_t;
+typedef struct E_RABReleaseIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABReleaseIndicationIEs__value {
+		E_RABReleaseIndicationIEs__value_PR present;
+		union E_RABReleaseIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABList_t	 E_RABList;
+			UserLocationInformation_t	 UserLocationInformation;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+		} 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;
+} E_RABReleaseIndicationIEs_t;
+typedef struct InitialContextSetupRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct InitialContextSetupRequestIEs__value {
+		InitialContextSetupRequestIEs__value_PR present;
+		union InitialContextSetupRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
+			E_RABToBeSetupListCtxtSUReq_t	 E_RABToBeSetupListCtxtSUReq;
+			UESecurityCapabilities_t	 UESecurityCapabilities;
+			SecurityKey_t	 SecurityKey;
+			TraceActivation_t	 TraceActivation;
+			HandoverRestrictionList_t	 HandoverRestrictionList;
+			UERadioCapability_t	 UERadioCapability;
+			SubscriberProfileIDforRFP_t	 SubscriberProfileIDforRFP;
+			CSFallbackIndicator_t	 CSFallbackIndicator;
+			SRVCCOperationPossible_t	 SRVCCOperationPossible;
+			CSGMembershipStatus_t	 CSGMembershipStatus;
+			LAI_t	 LAI;
+			GUMMEI_t	 GUMMEI;
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID_1;
+			ManagementBasedMDTAllowed_t	 ManagementBasedMDTAllowed;
+			MDTPLMNList_t	 MDTPLMNList;
+			AdditionalCSFallbackIndicator_t	 AdditionalCSFallbackIndicator;
+			Masked_IMEISV_t	 Masked_IMEISV;
+			ExpectedUEBehaviour_t	 ExpectedUEBehaviour;
+			ProSeAuthorized_t	 ProSeAuthorized;
+			UEUserPlaneCIoTSupportIndicator_t	 UEUserPlaneCIoTSupportIndicator;
+			V2XServicesAuthorized_t	 V2XServicesAuthorized;
+			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
+			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
+			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
+			CE_ModeBRestricted_t	 CE_ModeBRestricted;
+			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
+			PendingDataIndication_t	 PendingDataIndication;
+			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
+		} 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;
+} InitialContextSetupRequestIEs_t;
+typedef struct InitialContextSetupResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct InitialContextSetupResponseIEs__value {
+		InitialContextSetupResponseIEs__value_PR present;
+		union InitialContextSetupResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABSetupListCtxtSURes_t	 E_RABSetupListCtxtSURes;
+			E_RABList_t	 E_RABList;
+			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;
+} InitialContextSetupResponseIEs_t;
+typedef struct InitialContextSetupFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct InitialContextSetupFailureIEs__value {
+		InitialContextSetupFailureIEs__value_PR present;
+		union InitialContextSetupFailureIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cause_t	 Cause;
+			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;
+} InitialContextSetupFailureIEs_t;
+typedef struct PagingIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct PagingIEs__value {
+		PagingIEs__value_PR present;
+		union PagingIEs__value_u {
+			UEIdentityIndexValue_t	 UEIdentityIndexValue;
+			UEPagingID_t	 UEPagingID;
+			PagingDRX_t	 PagingDRX;
+			CNDomain_t	 CNDomain;
+			TAIList_t	 TAIList;
+			CSG_IdList_t	 CSG_IdList;
+			PagingPriority_t	 PagingPriority;
+			UERadioCapabilityForPaging_t	 UERadioCapabilityForPaging;
+			AssistanceDataForPaging_t	 AssistanceDataForPaging;
+			Paging_eDRXInformation_t	 Paging_eDRXInformation;
+			Extended_UEIdentityIndexValue_t	 Extended_UEIdentityIndexValue;
+			NB_IoT_Paging_eDRXInformation_t	 NB_IoT_Paging_eDRXInformation;
+			NB_IoT_UEIdentityIndexValue_t	 NB_IoT_UEIdentityIndexValue;
+			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
+			CE_ModeBRestricted_t	 CE_ModeBRestricted;
+		} 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;
+} PagingIEs_t;
+typedef struct UEContextReleaseRequest_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextReleaseRequest_IEs__value {
+		UEContextReleaseRequest_IEs__value_PR present;
+		union UEContextReleaseRequest_IEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cause_t	 Cause;
+			GWContextReleaseIndication_t	 GWContextReleaseIndication;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+		} 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;
+} UEContextReleaseRequest_IEs_t;
+typedef struct UEContextReleaseCommand_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextReleaseCommand_IEs__value {
+		UEContextReleaseCommand_IEs__value_PR present;
+		union UEContextReleaseCommand_IEs__value_u {
+			UE_S1AP_IDs_t	 UE_S1AP_IDs;
+			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;
+} UEContextReleaseCommand_IEs_t;
+typedef struct UEContextReleaseComplete_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextReleaseComplete_IEs__value {
+		UEContextReleaseComplete_IEs__value_PR present;
+		union UEContextReleaseComplete_IEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			UserLocationInformation_t	 UserLocationInformation;
+			InformationOnRecommendedCellsAndENBsForPaging_t	 InformationOnRecommendedCellsAndENBsForPaging;
+			CellIdentifierAndCELevelForCECapableUEs_t	 CellIdentifierAndCELevelForCECapableUEs;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+			TimeSinceSecondaryNodeRelease_t	 TimeSinceSecondaryNodeRelease;
+		} 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;
+} UEContextReleaseComplete_IEs_t;
+typedef struct UEContextModificationRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextModificationRequestIEs__value {
+		UEContextModificationRequestIEs__value_PR present;
+		union UEContextModificationRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			SecurityKey_t	 SecurityKey;
+			SubscriberProfileIDforRFP_t	 SubscriberProfileIDforRFP;
+			UEAggregateMaximumBitrate_t	 UEAggregateMaximumBitrate;
+			CSFallbackIndicator_t	 CSFallbackIndicator;
+			UESecurityCapabilities_t	 UESecurityCapabilities;
+			CSGMembershipStatus_t	 CSGMembershipStatus;
+			LAI_t	 LAI;
+			AdditionalCSFallbackIndicator_t	 AdditionalCSFallbackIndicator;
+			ProSeAuthorized_t	 ProSeAuthorized;
+			SRVCCOperationPossible_t	 SRVCCOperationPossible;
+			SRVCCOperationNotPossible_t	 SRVCCOperationNotPossible;
+			V2XServicesAuthorized_t	 V2XServicesAuthorized;
+			UESidelinkAggregateMaximumBitrate_t	 UESidelinkAggregateMaximumBitrate;
+			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
+			AerialUEsubscriptionInformation_t	 AerialUEsubscriptionInformation;
+		} 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;
+} UEContextModificationRequestIEs_t;
+typedef struct UEContextModificationResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextModificationResponseIEs__value {
+		UEContextModificationResponseIEs__value_PR present;
+		union UEContextModificationResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			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;
+} UEContextModificationResponseIEs_t;
+typedef struct UEContextModificationFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextModificationFailureIEs__value {
+		UEContextModificationFailureIEs__value_PR present;
+		union UEContextModificationFailureIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cause_t	 Cause;
+			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;
+} UEContextModificationFailureIEs_t;
+typedef struct UERadioCapabilityMatchRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UERadioCapabilityMatchRequestIEs__value {
+		UERadioCapabilityMatchRequestIEs__value_PR present;
+		union UERadioCapabilityMatchRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UERadioCapability_t	 UERadioCapability;
+		} 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;
+} UERadioCapabilityMatchRequestIEs_t;
+typedef struct UERadioCapabilityMatchResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UERadioCapabilityMatchResponseIEs__value {
+		UERadioCapabilityMatchResponseIEs__value_PR present;
+		union UERadioCapabilityMatchResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			VoiceSupportMatchIndicator_t	 VoiceSupportMatchIndicator;
+			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;
+} UERadioCapabilityMatchResponseIEs_t;
+typedef struct DownlinkNASTransport_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct DownlinkNASTransport_IEs__value {
+		DownlinkNASTransport_IEs__value_PR present;
+		union DownlinkNASTransport_IEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			NAS_PDU_t	 NAS_PDU;
+			HandoverRestrictionList_t	 HandoverRestrictionList;
+			SubscriberProfileIDforRFP_t	 SubscriberProfileIDforRFP;
+			SRVCCOperationPossible_t	 SRVCCOperationPossible;
+			UERadioCapability_t	 UERadioCapability;
+			DLNASPDUDeliveryAckRequest_t	 DLNASPDUDeliveryAckRequest;
+			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
+			NRUESecurityCapabilities_t	 NRUESecurityCapabilities;
+			CE_ModeBRestricted_t	 CE_ModeBRestricted;
+			UECapabilityInfoRequest_t	 UECapabilityInfoRequest;
+			EndIndication_t	 EndIndication;
+			PendingDataIndication_t	 PendingDataIndication;
+			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
+		} 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;
+} DownlinkNASTransport_IEs_t;
+typedef struct InitialUEMessage_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct InitialUEMessage_IEs__value {
+		InitialUEMessage_IEs__value_PR present;
+		union InitialUEMessage_IEs__value_u {
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			NAS_PDU_t	 NAS_PDU;
+			TAI_t	 TAI;
+			EUTRAN_CGI_t	 EUTRAN_CGI;
+			RRC_Establishment_Cause_t	 RRC_Establishment_Cause;
+			S_TMSI_t	 S_TMSI;
+			CSG_Id_t	 CSG_Id;
+			GUMMEI_t	 GUMMEI;
+			CellAccessMode_t	 CellAccessMode;
+			TransportLayerAddress_t	 TransportLayerAddress;
+			RelayNode_Indicator_t	 RelayNode_Indicator;
+			GUMMEIType_t	 GUMMEIType;
+			TunnelInformation_t	 TunnelInformation;
+			TransportLayerAddress_t	 TransportLayerAddress_1;
+			LHN_ID_t	 LHN_ID;
+			MME_Group_ID_t	 MME_Group_ID;
+			UE_Usage_Type_t	 UE_Usage_Type;
+			CE_mode_B_SupportIndicator_t	 CE_mode_B_SupportIndicator;
+			DCN_ID_t	 DCN_ID;
+			Coverage_Level_t	 Coverage_Level;
+			UE_Application_Layer_Measurement_Capability_t	 UE_Application_Layer_Measurement_Capability;
+			EDT_Session_t	 EDT_Session;
+		} 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;
+} InitialUEMessage_IEs_t;
+typedef struct UplinkNASTransport_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UplinkNASTransport_IEs__value {
+		UplinkNASTransport_IEs__value_PR present;
+		union UplinkNASTransport_IEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			NAS_PDU_t	 NAS_PDU;
+			EUTRAN_CGI_t	 EUTRAN_CGI;
+			TAI_t	 TAI;
+			TransportLayerAddress_t	 TransportLayerAddress;
+			TransportLayerAddress_t	 TransportLayerAddress_1;
+			LHN_ID_t	 LHN_ID;
+			PSCellInformation_t	 PSCellInformation;
+		} 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;
+} UplinkNASTransport_IEs_t;
+typedef struct NASNonDeliveryIndication_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct NASNonDeliveryIndication_IEs__value {
+		NASNonDeliveryIndication_IEs__value_PR present;
+		union NASNonDeliveryIndication_IEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			NAS_PDU_t	 NAS_PDU;
+			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;
+} NASNonDeliveryIndication_IEs_t;
+typedef struct RerouteNASRequest_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct RerouteNASRequest_IEs__value {
+		RerouteNASRequest_IEs__value_PR present;
+		union RerouteNASRequest_IEs__value_u {
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			OCTET_STRING_t	 OCTET_STRING;
+			MME_Group_ID_t	 MME_Group_ID;
+			Additional_GUTI_t	 Additional_GUTI;
+			UE_Usage_Type_t	 UE_Usage_Type;
+		} 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;
+} RerouteNASRequest_IEs_t;
+typedef struct NASDeliveryIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct NASDeliveryIndicationIEs__value {
+		NASDeliveryIndicationIEs__value_PR present;
+		union NASDeliveryIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_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;
+} NASDeliveryIndicationIEs_t;
+typedef struct ResetIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ResetIEs__value {
+		ResetIEs__value_PR present;
+		union ResetIEs__value_u {
+			Cause_t	 Cause;
+			ResetType_t	 ResetType;
+		} 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;
+} ResetIEs_t;
+typedef struct ResetAcknowledgeIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ResetAcknowledgeIEs__value {
+		ResetAcknowledgeIEs__value_PR present;
+		union ResetAcknowledgeIEs__value_u {
+			UE_associatedLogicalS1_ConnectionListResAck_t	 UE_associatedLogicalS1_ConnectionListResAck;
+			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;
+} ResetAcknowledgeIEs_t;
+typedef struct ErrorIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ErrorIndicationIEs__value {
+		ErrorIndicationIEs__value_PR present;
+		union ErrorIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cause_t	 Cause;
+			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;
+} ErrorIndicationIEs_t;
+typedef struct S1SetupRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct S1SetupRequestIEs__value {
+		S1SetupRequestIEs__value_PR present;
+		union S1SetupRequestIEs__value_u {
+			Global_ENB_ID_t	 Global_ENB_ID;
+			ENBname_t	 ENBname;
+			SupportedTAs_t	 SupportedTAs;
+			PagingDRX_t	 PagingDRX;
+			CSG_IdList_t	 CSG_IdList;
+			UE_RetentionInformation_t	 UE_RetentionInformation;
+			NB_IoT_DefaultPagingDRX_t	 NB_IoT_DefaultPagingDRX;
+			ConnectedengNBList_t	 ConnectedengNBList;
+		} 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;
+} S1SetupRequestIEs_t;
+typedef struct S1SetupResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct S1SetupResponseIEs__value {
+		S1SetupResponseIEs__value_PR present;
+		union S1SetupResponseIEs__value_u {
+			MMEname_t	 MMEname;
+			ServedGUMMEIs_t	 ServedGUMMEIs;
+			RelativeMMECapacity_t	 RelativeMMECapacity;
+			MMERelaySupportIndicator_t	 MMERelaySupportIndicator;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			UE_RetentionInformation_t	 UE_RetentionInformation;
+			ServedDCNs_t	 ServedDCNs;
+		} 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;
+} S1SetupResponseIEs_t;
+typedef struct S1SetupFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct S1SetupFailureIEs__value {
+		S1SetupFailureIEs__value_PR present;
+		union S1SetupFailureIEs__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;
+} S1SetupFailureIEs_t;
+typedef struct ENBConfigurationUpdateIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ENBConfigurationUpdateIEs__value {
+		ENBConfigurationUpdateIEs__value_PR present;
+		union ENBConfigurationUpdateIEs__value_u {
+			ENBname_t	 ENBname;
+			SupportedTAs_t	 SupportedTAs;
+			CSG_IdList_t	 CSG_IdList;
+			PagingDRX_t	 PagingDRX;
+			NB_IoT_DefaultPagingDRX_t	 NB_IoT_DefaultPagingDRX;
+			ConnectedengNBList_t	 ConnectedengNBList;
+			ConnectedengNBList_t	 ConnectedengNBList_1;
+		} 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;
+} ENBConfigurationUpdateIEs_t;
+typedef struct ENBConfigurationUpdateAcknowledgeIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ENBConfigurationUpdateAcknowledgeIEs__value {
+		ENBConfigurationUpdateAcknowledgeIEs__value_PR present;
+		union ENBConfigurationUpdateAcknowledgeIEs__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;
+} ENBConfigurationUpdateAcknowledgeIEs_t;
+typedef struct ENBConfigurationUpdateFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ENBConfigurationUpdateFailureIEs__value {
+		ENBConfigurationUpdateFailureIEs__value_PR present;
+		union ENBConfigurationUpdateFailureIEs__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;
+} ENBConfigurationUpdateFailureIEs_t;
+typedef struct MMEConfigurationUpdateIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MMEConfigurationUpdateIEs__value {
+		MMEConfigurationUpdateIEs__value_PR present;
+		union MMEConfigurationUpdateIEs__value_u {
+			MMEname_t	 MMEname;
+			ServedGUMMEIs_t	 ServedGUMMEIs;
+			RelativeMMECapacity_t	 RelativeMMECapacity;
+			ServedDCNs_t	 ServedDCNs;
+		} 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;
+} MMEConfigurationUpdateIEs_t;
+typedef struct MMEConfigurationUpdateAcknowledgeIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MMEConfigurationUpdateAcknowledgeIEs__value {
+		MMEConfigurationUpdateAcknowledgeIEs__value_PR present;
+		union MMEConfigurationUpdateAcknowledgeIEs__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;
+} MMEConfigurationUpdateAcknowledgeIEs_t;
+typedef struct MMEConfigurationUpdateFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MMEConfigurationUpdateFailureIEs__value {
+		MMEConfigurationUpdateFailureIEs__value_PR present;
+		union MMEConfigurationUpdateFailureIEs__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;
+} MMEConfigurationUpdateFailureIEs_t;
+typedef struct DownlinkS1cdma2000tunnellingIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct DownlinkS1cdma2000tunnellingIEs__value {
+		DownlinkS1cdma2000tunnellingIEs__value_PR present;
+		union DownlinkS1cdma2000tunnellingIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABSubjecttoDataForwardingList_t	 E_RABSubjecttoDataForwardingList;
+			Cdma2000HOStatus_t	 Cdma2000HOStatus;
+			Cdma2000RATType_t	 Cdma2000RATType;
+			Cdma2000PDU_t	 Cdma2000PDU;
+		} 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;
+} DownlinkS1cdma2000tunnellingIEs_t;
+typedef struct UplinkS1cdma2000tunnellingIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UplinkS1cdma2000tunnellingIEs__value {
+		UplinkS1cdma2000tunnellingIEs__value_PR present;
+		union UplinkS1cdma2000tunnellingIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cdma2000RATType_t	 Cdma2000RATType;
+			Cdma2000SectorID_t	 Cdma2000SectorID;
+			Cdma2000HORequiredIndication_t	 Cdma2000HORequiredIndication;
+			Cdma2000OneXSRVCCInfo_t	 Cdma2000OneXSRVCCInfo;
+			Cdma2000OneXRAND_t	 Cdma2000OneXRAND;
+			Cdma2000PDU_t	 Cdma2000PDU;
+			EUTRANRoundTripDelayEstimationInfo_t	 EUTRANRoundTripDelayEstimationInfo;
+		} 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;
+} UplinkS1cdma2000tunnellingIEs_t;
+typedef struct UECapabilityInfoIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UECapabilityInfoIndicationIEs__value {
+		UECapabilityInfoIndicationIEs__value_PR present;
+		union UECapabilityInfoIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UERadioCapability_t	 UERadioCapability;
+			UERadioCapabilityForPaging_t	 UERadioCapabilityForPaging;
+			UE_Application_Layer_Measurement_Capability_t	 UE_Application_Layer_Measurement_Capability;
+			LTE_M_Indication_t	 LTE_M_Indication;
+		} 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;
+} UECapabilityInfoIndicationIEs_t;
+typedef struct ENBStatusTransferIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ENBStatusTransferIEs__value {
+		ENBStatusTransferIEs__value_PR present;
+		union ENBStatusTransferIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			ENB_StatusTransfer_TransparentContainer_t	 ENB_StatusTransfer_TransparentContainer;
+		} 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;
+} ENBStatusTransferIEs_t;
+typedef struct MMEStatusTransferIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MMEStatusTransferIEs__value {
+		MMEStatusTransferIEs__value_PR present;
+		union MMEStatusTransferIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			ENB_StatusTransfer_TransparentContainer_t	 ENB_StatusTransfer_TransparentContainer;
+		} 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;
+} MMEStatusTransferIEs_t;
+typedef struct TraceStartIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct TraceStartIEs__value {
+		TraceStartIEs__value_PR present;
+		union TraceStartIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			TraceActivation_t	 TraceActivation;
+		} 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;
+} TraceStartIEs_t;
+typedef struct TraceFailureIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct TraceFailureIndicationIEs__value {
+		TraceFailureIndicationIEs__value_PR present;
+		union TraceFailureIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_UTRAN_Trace_ID_t	 E_UTRAN_Trace_ID;
+			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;
+} TraceFailureIndicationIEs_t;
+typedef struct DeactivateTraceIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct DeactivateTraceIEs__value {
+		DeactivateTraceIEs__value_PR present;
+		union DeactivateTraceIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_UTRAN_Trace_ID_t	 E_UTRAN_Trace_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;
+} DeactivateTraceIEs_t;
+typedef struct CellTrafficTraceIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct CellTrafficTraceIEs__value {
+		CellTrafficTraceIEs__value_PR present;
+		union CellTrafficTraceIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_UTRAN_Trace_ID_t	 E_UTRAN_Trace_ID;
+			EUTRAN_CGI_t	 EUTRAN_CGI;
+			TransportLayerAddress_t	 TransportLayerAddress;
+			PrivacyIndicator_t	 PrivacyIndicator;
+		} 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;
+} CellTrafficTraceIEs_t;
+typedef struct LocationReportingControlIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct LocationReportingControlIEs__value {
+		LocationReportingControlIEs__value_PR present;
+		union LocationReportingControlIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			RequestType_t	 RequestType;
+		} 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;
+} LocationReportingControlIEs_t;
+typedef struct LocationReportingFailureIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct LocationReportingFailureIndicationIEs__value {
+		LocationReportingFailureIndicationIEs__value_PR present;
+		union LocationReportingFailureIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			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;
+} LocationReportingFailureIndicationIEs_t;
+typedef struct LocationReportIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct LocationReportIEs__value {
+		LocationReportIEs__value_PR present;
+		union LocationReportIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			EUTRAN_CGI_t	 EUTRAN_CGI;
+			TAI_t	 TAI;
+			RequestType_t	 RequestType;
+			PSCellInformation_t	 PSCellInformation;
+		} 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;
+} LocationReportIEs_t;
+typedef struct OverloadStartIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct OverloadStartIEs__value {
+		OverloadStartIEs__value_PR present;
+		union OverloadStartIEs__value_u {
+			OverloadResponse_t	 OverloadResponse;
+			GUMMEIList_t	 GUMMEIList;
+			TrafficLoadReductionIndication_t	 TrafficLoadReductionIndication;
+		} 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;
+} OverloadStartIEs_t;
+typedef struct OverloadStopIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct OverloadStopIEs__value {
+		OverloadStopIEs__value_PR present;
+		union OverloadStopIEs__value_u {
+			GUMMEIList_t	 GUMMEIList;
+		} 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;
+} OverloadStopIEs_t;
+typedef struct WriteReplaceWarningRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct WriteReplaceWarningRequestIEs__value {
+		WriteReplaceWarningRequestIEs__value_PR present;
+		union WriteReplaceWarningRequestIEs__value_u {
+			MessageIdentifier_t	 MessageIdentifier;
+			SerialNumber_t	 SerialNumber;
+			WarningAreaList_t	 WarningAreaList;
+			RepetitionPeriod_t	 RepetitionPeriod;
+			ExtendedRepetitionPeriod_t	 ExtendedRepetitionPeriod;
+			NumberofBroadcastRequest_t	 NumberofBroadcastRequest;
+			WarningType_t	 WarningType;
+			WarningSecurityInfo_t	 WarningSecurityInfo;
+			DataCodingScheme_t	 DataCodingScheme;
+			WarningMessageContents_t	 WarningMessageContents;
+			ConcurrentWarningMessageIndicator_t	 ConcurrentWarningMessageIndicator;
+			WarningAreaCoordinates_t	 WarningAreaCoordinates;
+		} 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;
+} WriteReplaceWarningRequestIEs_t;
+typedef struct WriteReplaceWarningResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct WriteReplaceWarningResponseIEs__value {
+		WriteReplaceWarningResponseIEs__value_PR present;
+		union WriteReplaceWarningResponseIEs__value_u {
+			MessageIdentifier_t	 MessageIdentifier;
+			SerialNumber_t	 SerialNumber;
+			BroadcastCompletedAreaList_t	 BroadcastCompletedAreaList;
+			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;
+} WriteReplaceWarningResponseIEs_t;
+typedef struct ENBDirectInformationTransferIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ENBDirectInformationTransferIEs__value {
+		ENBDirectInformationTransferIEs__value_PR present;
+		union ENBDirectInformationTransferIEs__value_u {
+			Inter_SystemInformationTransferType_t	 Inter_SystemInformationTransferType;
+		} 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;
+} ENBDirectInformationTransferIEs_t;
+typedef struct MMEDirectInformationTransferIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MMEDirectInformationTransferIEs__value {
+		MMEDirectInformationTransferIEs__value_PR present;
+		union MMEDirectInformationTransferIEs__value_u {
+			Inter_SystemInformationTransferType_t	 Inter_SystemInformationTransferType;
+		} 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;
+} MMEDirectInformationTransferIEs_t;
+typedef struct ENBConfigurationTransferIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ENBConfigurationTransferIEs__value {
+		ENBConfigurationTransferIEs__value_PR present;
+		union ENBConfigurationTransferIEs__value_u {
+			SONConfigurationTransfer_t	 SONConfigurationTransfer;
+			EN_DCSONConfigurationTransfer_t	 EN_DCSONConfigurationTransfer;
+		} 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;
+} ENBConfigurationTransferIEs_t;
+typedef struct MMEConfigurationTransferIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MMEConfigurationTransferIEs__value {
+		MMEConfigurationTransferIEs__value_PR present;
+		union MMEConfigurationTransferIEs__value_u {
+			SONConfigurationTransfer_t	 SONConfigurationTransfer;
+			EN_DCSONConfigurationTransfer_t	 EN_DCSONConfigurationTransfer;
+		} 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;
+} MMEConfigurationTransferIEs_t;
+typedef struct KillRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct KillRequestIEs__value {
+		KillRequestIEs__value_PR present;
+		union KillRequestIEs__value_u {
+			MessageIdentifier_t	 MessageIdentifier;
+			SerialNumber_t	 SerialNumber;
+			WarningAreaList_t	 WarningAreaList;
+			KillAllWarningMessages_t	 KillAllWarningMessages;
+		} 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;
+} KillRequestIEs_t;
+typedef struct KillResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct KillResponseIEs__value {
+		KillResponseIEs__value_PR present;
+		union KillResponseIEs__value_u {
+			MessageIdentifier_t	 MessageIdentifier;
+			SerialNumber_t	 SerialNumber;
+			BroadcastCancelledAreaList_t	 BroadcastCancelledAreaList;
+			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;
+} KillResponseIEs_t;
+typedef struct PWSRestartIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct PWSRestartIndicationIEs__value {
+		PWSRestartIndicationIEs__value_PR present;
+		union PWSRestartIndicationIEs__value_u {
+			ECGIListForRestart_t	 ECGIListForRestart;
+			Global_ENB_ID_t	 Global_ENB_ID;
+			TAIListForRestart_t	 TAIListForRestart;
+			EmergencyAreaIDListForRestart_t	 EmergencyAreaIDListForRestart;
+		} 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;
+} PWSRestartIndicationIEs_t;
+typedef struct PWSFailureIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct PWSFailureIndicationIEs__value {
+		PWSFailureIndicationIEs__value_PR present;
+		union PWSFailureIndicationIEs__value_u {
+			PWSfailedECGIList_t	 PWSfailedECGIList;
+			Global_ENB_ID_t	 Global_ENB_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;
+} PWSFailureIndicationIEs_t;
+typedef struct DownlinkUEAssociatedLPPaTransport_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct DownlinkUEAssociatedLPPaTransport_IEs__value {
+		DownlinkUEAssociatedLPPaTransport_IEs__value_PR present;
+		union DownlinkUEAssociatedLPPaTransport_IEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Routing_ID_t	 Routing_ID;
+			LPPa_PDU_t	 LPPa_PDU;
+		} 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;
+} DownlinkUEAssociatedLPPaTransport_IEs_t;
+typedef struct UplinkUEAssociatedLPPaTransport_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UplinkUEAssociatedLPPaTransport_IEs__value {
+		UplinkUEAssociatedLPPaTransport_IEs__value_PR present;
+		union UplinkUEAssociatedLPPaTransport_IEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Routing_ID_t	 Routing_ID;
+			LPPa_PDU_t	 LPPa_PDU;
+		} 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;
+} UplinkUEAssociatedLPPaTransport_IEs_t;
+typedef struct DownlinkNonUEAssociatedLPPaTransport_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct DownlinkNonUEAssociatedLPPaTransport_IEs__value {
+		DownlinkNonUEAssociatedLPPaTransport_IEs__value_PR present;
+		union DownlinkNonUEAssociatedLPPaTransport_IEs__value_u {
+			Routing_ID_t	 Routing_ID;
+			LPPa_PDU_t	 LPPa_PDU;
+		} 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;
+} DownlinkNonUEAssociatedLPPaTransport_IEs_t;
+typedef struct UplinkNonUEAssociatedLPPaTransport_IEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UplinkNonUEAssociatedLPPaTransport_IEs__value {
+		UplinkNonUEAssociatedLPPaTransport_IEs__value_PR present;
+		union UplinkNonUEAssociatedLPPaTransport_IEs__value_u {
+			Routing_ID_t	 Routing_ID;
+			LPPa_PDU_t	 LPPa_PDU;
+		} 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;
+} UplinkNonUEAssociatedLPPaTransport_IEs_t;
+typedef struct E_RABModificationIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABModificationIndicationIEs__value {
+		E_RABModificationIndicationIEs__value_PR present;
+		union E_RABModificationIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABToBeModifiedListBearerModInd_t	 E_RABToBeModifiedListBearerModInd;
+			E_RABNotToBeModifiedListBearerModInd_t	 E_RABNotToBeModifiedListBearerModInd;
+			CSGMembershipInfo_t	 CSGMembershipInfo;
+			TunnelInformation_t	 TunnelInformation;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+		} 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;
+} E_RABModificationIndicationIEs_t;
+typedef struct E_RABModificationConfirmIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABModificationConfirmIEs__value {
+		E_RABModificationConfirmIEs__value_PR present;
+		union E_RABModificationConfirmIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABModifyListBearerModConf_t	 E_RABModifyListBearerModConf;
+			E_RABList_t	 E_RABList;
+			E_RABList_t	 E_RABList_1;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			CSGMembershipStatus_t	 CSGMembershipStatus;
+		} 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;
+} E_RABModificationConfirmIEs_t;
+typedef struct UEContextModificationIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextModificationIndicationIEs__value {
+		UEContextModificationIndicationIEs__value_PR present;
+		union UEContextModificationIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			CSGMembershipInfo_t	 CSGMembershipInfo;
+		} 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;
+} UEContextModificationIndicationIEs_t;
+typedef struct UEContextModificationConfirmIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextModificationConfirmIEs__value {
+		UEContextModificationConfirmIEs__value_PR present;
+		union UEContextModificationConfirmIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			CSGMembershipStatus_t	 CSGMembershipStatus;
+			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;
+} UEContextModificationConfirmIEs_t;
+typedef struct UEContextSuspendRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextSuspendRequestIEs__value {
+		UEContextSuspendRequestIEs__value_PR present;
+		union UEContextSuspendRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			InformationOnRecommendedCellsAndENBsForPaging_t	 InformationOnRecommendedCellsAndENBsForPaging;
+			CellIdentifierAndCELevelForCECapableUEs_t	 CellIdentifierAndCELevelForCECapableUEs;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+			UserLocationInformation_t	 UserLocationInformation;
+			TimeSinceSecondaryNodeRelease_t	 TimeSinceSecondaryNodeRelease;
+		} 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;
+} UEContextSuspendRequestIEs_t;
+typedef struct UEContextSuspendResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextSuspendResponseIEs__value {
+		UEContextSuspendResponseIEs__value_PR present;
+		union UEContextSuspendResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			SecurityContext_t	 SecurityContext;
+		} 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;
+} UEContextSuspendResponseIEs_t;
+typedef struct UEContextResumeRequestIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextResumeRequestIEs__value {
+		UEContextResumeRequestIEs__value_PR present;
+		union UEContextResumeRequestIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABFailedToResumeListResumeReq_t	 E_RABFailedToResumeListResumeReq;
+			RRC_Establishment_Cause_t	 RRC_Establishment_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;
+} UEContextResumeRequestIEs_t;
+typedef struct UEContextResumeResponseIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextResumeResponseIEs__value {
+		UEContextResumeResponseIEs__value_PR present;
+		union UEContextResumeResponseIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			E_RABFailedToResumeListResumeRes_t	 E_RABFailedToResumeListResumeRes;
+			CriticalityDiagnostics_t	 CriticalityDiagnostics;
+			SecurityContext_t	 SecurityContext;
+			PendingDataIndication_t	 PendingDataIndication;
+		} 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;
+} UEContextResumeResponseIEs_t;
+typedef struct UEContextResumeFailureIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEContextResumeFailureIEs__value {
+		UEContextResumeFailureIEs__value_PR present;
+		union UEContextResumeFailureIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			Cause_t	 Cause;
+			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;
+} UEContextResumeFailureIEs_t;
+typedef struct ConnectionEstablishmentIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ConnectionEstablishmentIndicationIEs__value {
+		ConnectionEstablishmentIndicationIEs__value_PR present;
+		union ConnectionEstablishmentIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			UERadioCapability_t	 UERadioCapability;
+			EnhancedCoverageRestricted_t	 EnhancedCoverageRestricted;
+			DL_CP_SecurityInformation_t	 DL_CP_SecurityInformation;
+			CE_ModeBRestricted_t	 CE_ModeBRestricted;
+			EndIndication_t	 EndIndication;
+			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
+		} 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;
+} ConnectionEstablishmentIndicationIEs_t;
+typedef struct RetrieveUEInformationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct RetrieveUEInformationIEs__value {
+		RetrieveUEInformationIEs__value_PR present;
+		union RetrieveUEInformationIEs__value_u {
+			S_TMSI_t	 S_TMSI;
+		} 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;
+} RetrieveUEInformationIEs_t;
+typedef struct UEInformationTransferIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct UEInformationTransferIEs__value {
+		UEInformationTransferIEs__value_PR present;
+		union UEInformationTransferIEs__value_u {
+			S_TMSI_t	 S_TMSI;
+			E_RABLevelQoSParameters_t	 E_RABLevelQoSParameters;
+			UERadioCapability_t	 UERadioCapability;
+			Subscription_Based_UE_DifferentiationInfo_t	 Subscription_Based_UE_DifferentiationInfo;
+			PendingDataIndication_t	 PendingDataIndication;
+		} 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;
+} UEInformationTransferIEs_t;
+typedef struct ENBCPRelocationIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct ENBCPRelocationIndicationIEs__value {
+		ENBCPRelocationIndicationIEs__value_PR present;
+		union ENBCPRelocationIndicationIEs__value_u {
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			S_TMSI_t	 S_TMSI;
+			EUTRAN_CGI_t	 EUTRAN_CGI;
+			TAI_t	 TAI;
+			UL_CP_SecurityInformation_t	 UL_CP_SecurityInformation;
+		} 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;
+} ENBCPRelocationIndicationIEs_t;
+typedef struct MMECPRelocationIndicationIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct MMECPRelocationIndicationIEs__value {
+		MMECPRelocationIndicationIEs__value_PR present;
+		union MMECPRelocationIndicationIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_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;
+} MMECPRelocationIndicationIEs_t;
+typedef struct SecondaryRATDataUsageReportIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct SecondaryRATDataUsageReportIEs__value {
+		SecondaryRATDataUsageReportIEs__value_PR present;
+		union SecondaryRATDataUsageReportIEs__value_u {
+			MME_UE_S1AP_ID_t	 MME_UE_S1AP_ID;
+			ENB_UE_S1AP_ID_t	 ENB_UE_S1AP_ID;
+			SecondaryRATDataUsageReportList_t	 SecondaryRATDataUsageReportList;
+			HandoverFlag_t	 HandoverFlag;
+			UserLocationInformation_t	 UserLocationInformation;
+			TimeSinceSecondaryNodeRelease_t	 TimeSinceSecondaryNodeRelease;
+		} 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;
+} SecondaryRATDataUsageReportIEs_t;
+typedef struct E_RABDataForwardingItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABDataForwardingItemIEs__value {
+		E_RABDataForwardingItemIEs__value_PR present;
+		union E_RABDataForwardingItemIEs__value_u {
+			E_RABDataForwardingItem_t	 E_RABDataForwardingItem;
+		} 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;
+} E_RABDataForwardingItemIEs_t;
+typedef struct E_RABToBeSetupItemHOReqIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABToBeSetupItemHOReqIEs__value {
+		E_RABToBeSetupItemHOReqIEs__value_PR present;
+		union E_RABToBeSetupItemHOReqIEs__value_u {
+			E_RABToBeSetupItemHOReq_t	 E_RABToBeSetupItemHOReq;
+		} 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;
+} E_RABToBeSetupItemHOReqIEs_t;
+typedef struct E_RABAdmittedItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABAdmittedItemIEs__value {
+		E_RABAdmittedItemIEs__value_PR present;
+		union E_RABAdmittedItemIEs__value_u {
+			E_RABAdmittedItem_t	 E_RABAdmittedItem;
+		} 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;
+} E_RABAdmittedItemIEs_t;
+typedef struct E_RABFailedtoSetupItemHOReqAckIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABFailedtoSetupItemHOReqAckIEs__value {
+		E_RABFailedtoSetupItemHOReqAckIEs__value_PR present;
+		union E_RABFailedtoSetupItemHOReqAckIEs__value_u {
+			E_RABFailedToSetupItemHOReqAck_t	 E_RABFailedToSetupItemHOReqAck;
+		} 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;
+} E_RABFailedtoSetupItemHOReqAckIEs_t;
+typedef struct E_RABToBeSwitchedDLItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABToBeSwitchedDLItemIEs__value {
+		E_RABToBeSwitchedDLItemIEs__value_PR present;
+		union E_RABToBeSwitchedDLItemIEs__value_u {
+			E_RABToBeSwitchedDLItem_t	 E_RABToBeSwitchedDLItem;
+		} 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;
+} E_RABToBeSwitchedDLItemIEs_t;
+typedef struct E_RABToBeSwitchedULItemIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABToBeSwitchedULItemIEs__value {
+		E_RABToBeSwitchedULItemIEs__value_PR present;
+		union E_RABToBeSwitchedULItemIEs__value_u {
+			E_RABToBeSwitchedULItem_t	 E_RABToBeSwitchedULItem;
+		} 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;
+} E_RABToBeSwitchedULItemIEs_t;
+typedef struct E_RABToBeModifiedItemBearerModIndIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABToBeModifiedItemBearerModIndIEs__value {
+		E_RABToBeModifiedItemBearerModIndIEs__value_PR present;
+		union E_RABToBeModifiedItemBearerModIndIEs__value_u {
+			E_RABToBeModifiedItemBearerModInd_t	 E_RABToBeModifiedItemBearerModInd;
+		} 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;
+} E_RABToBeModifiedItemBearerModIndIEs_t;
+typedef struct E_RABNotToBeModifiedItemBearerModIndIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABNotToBeModifiedItemBearerModIndIEs__value {
+		E_RABNotToBeModifiedItemBearerModIndIEs__value_PR present;
+		union E_RABNotToBeModifiedItemBearerModIndIEs__value_u {
+			E_RABNotToBeModifiedItemBearerModInd_t	 E_RABNotToBeModifiedItemBearerModInd;
+		} 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;
+} E_RABNotToBeModifiedItemBearerModIndIEs_t;
+typedef struct E_RABFailedToResumeItemResumeReqIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABFailedToResumeItemResumeReqIEs__value {
+		E_RABFailedToResumeItemResumeReqIEs__value_PR present;
+		union E_RABFailedToResumeItemResumeReqIEs__value_u {
+			E_RABFailedToResumeItemResumeReq_t	 E_RABFailedToResumeItemResumeReq;
+		} 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;
+} E_RABFailedToResumeItemResumeReqIEs_t;
+typedef struct E_RABFailedToResumeItemResumeResIEs {
+	ProtocolIE_ID_t	 id;
+	Criticality_t	 criticality;
+	struct E_RABFailedToResumeItemResumeResIEs__value {
+		E_RABFailedToResumeItemResumeResIEs__value_PR present;
+		union E_RABFailedToResumeItemResumeResIEs__value_u {
+			E_RABFailedToResumeItemResumeRes_t	 E_RABFailedToResumeItemResumeRes;
+		} 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;
+} E_RABFailedToResumeItemResumeResIEs_t;
+
+/* Implementation */
+extern asn_TYPE_descriptor_t asn_DEF_Bearers_SubjectToStatusTransfer_ItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_Bearers_SubjectToStatusTransfer_ItemIEs_specs_1;
+extern asn_TYPE_member_t asn_MBR_Bearers_SubjectToStatusTransfer_ItemIEs_1[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABInformationListIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABInformationListIEs_specs_5;
+extern asn_TYPE_member_t asn_MBR_E_RABInformationListIEs_5[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABItemIEs_specs_9;
+extern asn_TYPE_member_t asn_MBR_E_RABItemIEs_9[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABUsageReportItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABUsageReportItemIEs_specs_13;
+extern asn_TYPE_member_t asn_MBR_E_RABUsageReportItemIEs_13[3];
+extern asn_TYPE_descriptor_t asn_DEF_MDTMode_ExtensionIE;
+extern asn_SEQUENCE_specifics_t asn_SPC_MDTMode_ExtensionIE_specs_17;
+extern asn_TYPE_member_t asn_MBR_MDTMode_ExtensionIE_17[3];
+extern asn_TYPE_descriptor_t asn_DEF_RecommendedCellItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedCellItemIEs_specs_21;
+extern asn_TYPE_member_t asn_MBR_RecommendedCellItemIEs_21[3];
+extern asn_TYPE_descriptor_t asn_DEF_RecommendedENBItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RecommendedENBItemIEs_specs_25;
+extern asn_TYPE_member_t asn_MBR_RecommendedENBItemIEs_25[3];
+extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReportItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReportItemIEs_specs_29;
+extern asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReportItemIEs_29[3];
+extern asn_TYPE_descriptor_t asn_DEF_SONInformation_ExtensionIE;
+extern asn_SEQUENCE_specifics_t asn_SPC_SONInformation_ExtensionIE_specs_33;
+extern asn_TYPE_member_t asn_MBR_SONInformation_ExtensionIE_33[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemBearerSUReqIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemBearerSUReqIEs_specs_37;
+extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemBearerSUReqIEs_37[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupItemBearerSUResIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupItemBearerSUResIEs_specs_41;
+extern asn_TYPE_member_t asn_MBR_E_RABSetupItemBearerSUResIEs_41[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeModifiedItemBearerModReqIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeModifiedItemBearerModReqIEs_specs_45;
+extern asn_TYPE_member_t asn_MBR_E_RABToBeModifiedItemBearerModReqIEs_45[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyItemBearerModResIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyItemBearerModResIEs_specs_49;
+extern asn_TYPE_member_t asn_MBR_E_RABModifyItemBearerModResIEs_49[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseItemBearerRelCompIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseItemBearerRelCompIEs_specs_53;
+extern asn_TYPE_member_t asn_MBR_E_RABReleaseItemBearerRelCompIEs_53[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemCtxtSUReqIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemCtxtSUReqIEs_specs_57;
+extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemCtxtSUReqIEs_57[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupItemCtxtSUResIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupItemCtxtSUResIEs_specs_61;
+extern asn_TYPE_member_t asn_MBR_E_RABSetupItemCtxtSUResIEs_61[3];
+extern asn_TYPE_descriptor_t asn_DEF_TAIItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_TAIItemIEs_specs_65;
+extern asn_TYPE_member_t asn_MBR_TAIItemIEs_65[3];
+extern asn_TYPE_descriptor_t asn_DEF_UE_associatedLogicalS1_ConnectionItemRes;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_associatedLogicalS1_ConnectionItemRes_specs_69;
+extern asn_TYPE_member_t asn_MBR_UE_associatedLogicalS1_ConnectionItemRes_69[3];
+extern asn_TYPE_descriptor_t asn_DEF_UE_associatedLogicalS1_ConnectionItemResAck;
+extern asn_SEQUENCE_specifics_t asn_SPC_UE_associatedLogicalS1_ConnectionItemResAck_specs_73;
+extern asn_TYPE_member_t asn_MBR_UE_associatedLogicalS1_ConnectionItemResAck_73[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyItemBearerModConfIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyItemBearerModConfIEs_specs_77;
+extern asn_TYPE_member_t asn_MBR_E_RABModifyItemBearerModConfIEs_77[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverRequiredIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequiredIEs_specs_81;
+extern asn_TYPE_member_t asn_MBR_HandoverRequiredIEs_81[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverCommandIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCommandIEs_specs_85;
+extern asn_TYPE_member_t asn_MBR_HandoverCommandIEs_85[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverPreparationFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverPreparationFailureIEs_specs_89;
+extern asn_TYPE_member_t asn_MBR_HandoverPreparationFailureIEs_89[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestIEs_specs_93;
+extern asn_TYPE_member_t asn_MBR_HandoverRequestIEs_93[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverRequestAcknowledgeIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverRequestAcknowledgeIEs_specs_97;
+extern asn_TYPE_member_t asn_MBR_HandoverRequestAcknowledgeIEs_97[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverFailureIEs_specs_101;
+extern asn_TYPE_member_t asn_MBR_HandoverFailureIEs_101[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverNotifyIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverNotifyIEs_specs_105;
+extern asn_TYPE_member_t asn_MBR_HandoverNotifyIEs_105[3];
+extern asn_TYPE_descriptor_t asn_DEF_PathSwitchRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_PathSwitchRequestIEs_specs_109;
+extern asn_TYPE_member_t asn_MBR_PathSwitchRequestIEs_109[3];
+extern asn_TYPE_descriptor_t asn_DEF_PathSwitchRequestAcknowledgeIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_PathSwitchRequestAcknowledgeIEs_specs_113;
+extern asn_TYPE_member_t asn_MBR_PathSwitchRequestAcknowledgeIEs_113[3];
+extern asn_TYPE_descriptor_t asn_DEF_PathSwitchRequestFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_PathSwitchRequestFailureIEs_specs_117;
+extern asn_TYPE_member_t asn_MBR_PathSwitchRequestFailureIEs_117[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverCancelIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCancelIEs_specs_121;
+extern asn_TYPE_member_t asn_MBR_HandoverCancelIEs_121[3];
+extern asn_TYPE_descriptor_t asn_DEF_HandoverCancelAcknowledgeIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_HandoverCancelAcknowledgeIEs_specs_125;
+extern asn_TYPE_member_t asn_MBR_HandoverCancelAcknowledgeIEs_125[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupRequestIEs_specs_129;
+extern asn_TYPE_member_t asn_MBR_E_RABSetupRequestIEs_129[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABSetupResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABSetupResponseIEs_specs_133;
+extern asn_TYPE_member_t asn_MBR_E_RABSetupResponseIEs_133[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyRequestIEs_specs_137;
+extern asn_TYPE_member_t asn_MBR_E_RABModifyRequestIEs_137[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABModifyResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModifyResponseIEs_specs_141;
+extern asn_TYPE_member_t asn_MBR_E_RABModifyResponseIEs_141[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseCommandIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseCommandIEs_specs_145;
+extern asn_TYPE_member_t asn_MBR_E_RABReleaseCommandIEs_145[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseResponseIEs_specs_149;
+extern asn_TYPE_member_t asn_MBR_E_RABReleaseResponseIEs_149[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABReleaseIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABReleaseIndicationIEs_specs_153;
+extern asn_TYPE_member_t asn_MBR_E_RABReleaseIndicationIEs_153[3];
+extern asn_TYPE_descriptor_t asn_DEF_InitialContextSetupRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_InitialContextSetupRequestIEs_specs_157;
+extern asn_TYPE_member_t asn_MBR_InitialContextSetupRequestIEs_157[3];
+extern asn_TYPE_descriptor_t asn_DEF_InitialContextSetupResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_InitialContextSetupResponseIEs_specs_161;
+extern asn_TYPE_member_t asn_MBR_InitialContextSetupResponseIEs_161[3];
+extern asn_TYPE_descriptor_t asn_DEF_InitialContextSetupFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_InitialContextSetupFailureIEs_specs_165;
+extern asn_TYPE_member_t asn_MBR_InitialContextSetupFailureIEs_165[3];
+extern asn_TYPE_descriptor_t asn_DEF_PagingIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_PagingIEs_specs_169;
+extern asn_TYPE_member_t asn_MBR_PagingIEs_169[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextReleaseRequest_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextReleaseRequest_IEs_specs_173;
+extern asn_TYPE_member_t asn_MBR_UEContextReleaseRequest_IEs_173[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextReleaseCommand_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextReleaseCommand_IEs_specs_177;
+extern asn_TYPE_member_t asn_MBR_UEContextReleaseCommand_IEs_177[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextReleaseComplete_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextReleaseComplete_IEs_specs_181;
+extern asn_TYPE_member_t asn_MBR_UEContextReleaseComplete_IEs_181[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationRequestIEs_specs_185;
+extern asn_TYPE_member_t asn_MBR_UEContextModificationRequestIEs_185[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationResponseIEs_specs_189;
+extern asn_TYPE_member_t asn_MBR_UEContextModificationResponseIEs_189[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationFailureIEs_specs_193;
+extern asn_TYPE_member_t asn_MBR_UEContextModificationFailureIEs_193[3];
+extern asn_TYPE_descriptor_t asn_DEF_UERadioCapabilityMatchRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UERadioCapabilityMatchRequestIEs_specs_197;
+extern asn_TYPE_member_t asn_MBR_UERadioCapabilityMatchRequestIEs_197[3];
+extern asn_TYPE_descriptor_t asn_DEF_UERadioCapabilityMatchResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UERadioCapabilityMatchResponseIEs_specs_201;
+extern asn_TYPE_member_t asn_MBR_UERadioCapabilityMatchResponseIEs_201[3];
+extern asn_TYPE_descriptor_t asn_DEF_DownlinkNASTransport_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkNASTransport_IEs_specs_205;
+extern asn_TYPE_member_t asn_MBR_DownlinkNASTransport_IEs_205[3];
+extern asn_TYPE_descriptor_t asn_DEF_InitialUEMessage_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_InitialUEMessage_IEs_specs_209;
+extern asn_TYPE_member_t asn_MBR_InitialUEMessage_IEs_209[3];
+extern asn_TYPE_descriptor_t asn_DEF_UplinkNASTransport_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkNASTransport_IEs_specs_213;
+extern asn_TYPE_member_t asn_MBR_UplinkNASTransport_IEs_213[3];
+extern asn_TYPE_descriptor_t asn_DEF_NASNonDeliveryIndication_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_NASNonDeliveryIndication_IEs_specs_217;
+extern asn_TYPE_member_t asn_MBR_NASNonDeliveryIndication_IEs_217[3];
+extern asn_TYPE_descriptor_t asn_DEF_RerouteNASRequest_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RerouteNASRequest_IEs_specs_221;
+extern asn_TYPE_member_t asn_MBR_RerouteNASRequest_IEs_221[3];
+extern asn_TYPE_descriptor_t asn_DEF_NASDeliveryIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_NASDeliveryIndicationIEs_specs_225;
+extern asn_TYPE_member_t asn_MBR_NASDeliveryIndicationIEs_225[3];
+extern asn_TYPE_descriptor_t asn_DEF_ResetIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ResetIEs_specs_229;
+extern asn_TYPE_member_t asn_MBR_ResetIEs_229[3];
+extern asn_TYPE_descriptor_t asn_DEF_ResetAcknowledgeIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ResetAcknowledgeIEs_specs_233;
+extern asn_TYPE_member_t asn_MBR_ResetAcknowledgeIEs_233[3];
+extern asn_TYPE_descriptor_t asn_DEF_ErrorIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ErrorIndicationIEs_specs_237;
+extern asn_TYPE_member_t asn_MBR_ErrorIndicationIEs_237[3];
+extern asn_TYPE_descriptor_t asn_DEF_S1SetupRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_S1SetupRequestIEs_specs_241;
+extern asn_TYPE_member_t asn_MBR_S1SetupRequestIEs_241[3];
+extern asn_TYPE_descriptor_t asn_DEF_S1SetupResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_S1SetupResponseIEs_specs_245;
+extern asn_TYPE_member_t asn_MBR_S1SetupResponseIEs_245[3];
+extern asn_TYPE_descriptor_t asn_DEF_S1SetupFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_S1SetupFailureIEs_specs_249;
+extern asn_TYPE_member_t asn_MBR_S1SetupFailureIEs_249[3];
+extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateIEs_specs_253;
+extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateIEs_253[3];
+extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateAcknowledgeIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateAcknowledgeIEs_specs_257;
+extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateAcknowledgeIEs_257[3];
+extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationUpdateFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationUpdateFailureIEs_specs_261;
+extern asn_TYPE_member_t asn_MBR_ENBConfigurationUpdateFailureIEs_261[3];
+extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationUpdateIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationUpdateIEs_specs_265;
+extern asn_TYPE_member_t asn_MBR_MMEConfigurationUpdateIEs_265[3];
+extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationUpdateAcknowledgeIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationUpdateAcknowledgeIEs_specs_269;
+extern asn_TYPE_member_t asn_MBR_MMEConfigurationUpdateAcknowledgeIEs_269[3];
+extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationUpdateFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationUpdateFailureIEs_specs_273;
+extern asn_TYPE_member_t asn_MBR_MMEConfigurationUpdateFailureIEs_273[3];
+extern asn_TYPE_descriptor_t asn_DEF_DownlinkS1cdma2000tunnellingIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkS1cdma2000tunnellingIEs_specs_277;
+extern asn_TYPE_member_t asn_MBR_DownlinkS1cdma2000tunnellingIEs_277[3];
+extern asn_TYPE_descriptor_t asn_DEF_UplinkS1cdma2000tunnellingIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkS1cdma2000tunnellingIEs_specs_281;
+extern asn_TYPE_member_t asn_MBR_UplinkS1cdma2000tunnellingIEs_281[3];
+extern asn_TYPE_descriptor_t asn_DEF_UECapabilityInfoIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UECapabilityInfoIndicationIEs_specs_285;
+extern asn_TYPE_member_t asn_MBR_UECapabilityInfoIndicationIEs_285[3];
+extern asn_TYPE_descriptor_t asn_DEF_ENBStatusTransferIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ENBStatusTransferIEs_specs_289;
+extern asn_TYPE_member_t asn_MBR_ENBStatusTransferIEs_289[3];
+extern asn_TYPE_descriptor_t asn_DEF_MMEStatusTransferIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MMEStatusTransferIEs_specs_293;
+extern asn_TYPE_member_t asn_MBR_MMEStatusTransferIEs_293[3];
+extern asn_TYPE_descriptor_t asn_DEF_TraceStartIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_TraceStartIEs_specs_297;
+extern asn_TYPE_member_t asn_MBR_TraceStartIEs_297[3];
+extern asn_TYPE_descriptor_t asn_DEF_TraceFailureIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_TraceFailureIndicationIEs_specs_301;
+extern asn_TYPE_member_t asn_MBR_TraceFailureIndicationIEs_301[3];
+extern asn_TYPE_descriptor_t asn_DEF_DeactivateTraceIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_DeactivateTraceIEs_specs_305;
+extern asn_TYPE_member_t asn_MBR_DeactivateTraceIEs_305[3];
+extern asn_TYPE_descriptor_t asn_DEF_CellTrafficTraceIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_CellTrafficTraceIEs_specs_309;
+extern asn_TYPE_member_t asn_MBR_CellTrafficTraceIEs_309[3];
+extern asn_TYPE_descriptor_t asn_DEF_LocationReportingControlIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingControlIEs_specs_313;
+extern asn_TYPE_member_t asn_MBR_LocationReportingControlIEs_313[3];
+extern asn_TYPE_descriptor_t asn_DEF_LocationReportingFailureIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportingFailureIndicationIEs_specs_317;
+extern asn_TYPE_member_t asn_MBR_LocationReportingFailureIndicationIEs_317[3];
+extern asn_TYPE_descriptor_t asn_DEF_LocationReportIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_LocationReportIEs_specs_321;
+extern asn_TYPE_member_t asn_MBR_LocationReportIEs_321[3];
+extern asn_TYPE_descriptor_t asn_DEF_OverloadStartIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_OverloadStartIEs_specs_325;
+extern asn_TYPE_member_t asn_MBR_OverloadStartIEs_325[3];
+extern asn_TYPE_descriptor_t asn_DEF_OverloadStopIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_OverloadStopIEs_specs_329;
+extern asn_TYPE_member_t asn_MBR_OverloadStopIEs_329[3];
+extern asn_TYPE_descriptor_t asn_DEF_WriteReplaceWarningRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_WriteReplaceWarningRequestIEs_specs_333;
+extern asn_TYPE_member_t asn_MBR_WriteReplaceWarningRequestIEs_333[3];
+extern asn_TYPE_descriptor_t asn_DEF_WriteReplaceWarningResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_WriteReplaceWarningResponseIEs_specs_337;
+extern asn_TYPE_member_t asn_MBR_WriteReplaceWarningResponseIEs_337[3];
+extern asn_TYPE_descriptor_t asn_DEF_ENBDirectInformationTransferIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ENBDirectInformationTransferIEs_specs_341;
+extern asn_TYPE_member_t asn_MBR_ENBDirectInformationTransferIEs_341[3];
+extern asn_TYPE_descriptor_t asn_DEF_MMEDirectInformationTransferIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MMEDirectInformationTransferIEs_specs_345;
+extern asn_TYPE_member_t asn_MBR_MMEDirectInformationTransferIEs_345[3];
+extern asn_TYPE_descriptor_t asn_DEF_ENBConfigurationTransferIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ENBConfigurationTransferIEs_specs_349;
+extern asn_TYPE_member_t asn_MBR_ENBConfigurationTransferIEs_349[3];
+extern asn_TYPE_descriptor_t asn_DEF_MMEConfigurationTransferIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MMEConfigurationTransferIEs_specs_353;
+extern asn_TYPE_member_t asn_MBR_MMEConfigurationTransferIEs_353[3];
+extern asn_TYPE_descriptor_t asn_DEF_KillRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_KillRequestIEs_specs_357;
+extern asn_TYPE_member_t asn_MBR_KillRequestIEs_357[3];
+extern asn_TYPE_descriptor_t asn_DEF_KillResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_KillResponseIEs_specs_361;
+extern asn_TYPE_member_t asn_MBR_KillResponseIEs_361[3];
+extern asn_TYPE_descriptor_t asn_DEF_PWSRestartIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_PWSRestartIndicationIEs_specs_365;
+extern asn_TYPE_member_t asn_MBR_PWSRestartIndicationIEs_365[3];
+extern asn_TYPE_descriptor_t asn_DEF_PWSFailureIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_PWSFailureIndicationIEs_specs_369;
+extern asn_TYPE_member_t asn_MBR_PWSFailureIndicationIEs_369[3];
+extern asn_TYPE_descriptor_t asn_DEF_DownlinkUEAssociatedLPPaTransport_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkUEAssociatedLPPaTransport_IEs_specs_373;
+extern asn_TYPE_member_t asn_MBR_DownlinkUEAssociatedLPPaTransport_IEs_373[3];
+extern asn_TYPE_descriptor_t asn_DEF_UplinkUEAssociatedLPPaTransport_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkUEAssociatedLPPaTransport_IEs_specs_377;
+extern asn_TYPE_member_t asn_MBR_UplinkUEAssociatedLPPaTransport_IEs_377[3];
+extern asn_TYPE_descriptor_t asn_DEF_DownlinkNonUEAssociatedLPPaTransport_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_DownlinkNonUEAssociatedLPPaTransport_IEs_specs_381;
+extern asn_TYPE_member_t asn_MBR_DownlinkNonUEAssociatedLPPaTransport_IEs_381[3];
+extern asn_TYPE_descriptor_t asn_DEF_UplinkNonUEAssociatedLPPaTransport_IEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UplinkNonUEAssociatedLPPaTransport_IEs_specs_385;
+extern asn_TYPE_member_t asn_MBR_UplinkNonUEAssociatedLPPaTransport_IEs_385[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABModificationIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModificationIndicationIEs_specs_389;
+extern asn_TYPE_member_t asn_MBR_E_RABModificationIndicationIEs_389[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABModificationConfirmIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABModificationConfirmIEs_specs_393;
+extern asn_TYPE_member_t asn_MBR_E_RABModificationConfirmIEs_393[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationIndicationIEs_specs_397;
+extern asn_TYPE_member_t asn_MBR_UEContextModificationIndicationIEs_397[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextModificationConfirmIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextModificationConfirmIEs_specs_401;
+extern asn_TYPE_member_t asn_MBR_UEContextModificationConfirmIEs_401[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextSuspendRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextSuspendRequestIEs_specs_405;
+extern asn_TYPE_member_t asn_MBR_UEContextSuspendRequestIEs_405[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextSuspendResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextSuspendResponseIEs_specs_409;
+extern asn_TYPE_member_t asn_MBR_UEContextSuspendResponseIEs_409[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextResumeRequestIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextResumeRequestIEs_specs_413;
+extern asn_TYPE_member_t asn_MBR_UEContextResumeRequestIEs_413[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextResumeResponseIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextResumeResponseIEs_specs_417;
+extern asn_TYPE_member_t asn_MBR_UEContextResumeResponseIEs_417[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEContextResumeFailureIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEContextResumeFailureIEs_specs_421;
+extern asn_TYPE_member_t asn_MBR_UEContextResumeFailureIEs_421[3];
+extern asn_TYPE_descriptor_t asn_DEF_ConnectionEstablishmentIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ConnectionEstablishmentIndicationIEs_specs_425;
+extern asn_TYPE_member_t asn_MBR_ConnectionEstablishmentIndicationIEs_425[3];
+extern asn_TYPE_descriptor_t asn_DEF_RetrieveUEInformationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_RetrieveUEInformationIEs_specs_429;
+extern asn_TYPE_member_t asn_MBR_RetrieveUEInformationIEs_429[3];
+extern asn_TYPE_descriptor_t asn_DEF_UEInformationTransferIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_UEInformationTransferIEs_specs_433;
+extern asn_TYPE_member_t asn_MBR_UEInformationTransferIEs_433[3];
+extern asn_TYPE_descriptor_t asn_DEF_ENBCPRelocationIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_ENBCPRelocationIndicationIEs_specs_437;
+extern asn_TYPE_member_t asn_MBR_ENBCPRelocationIndicationIEs_437[3];
+extern asn_TYPE_descriptor_t asn_DEF_MMECPRelocationIndicationIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_MMECPRelocationIndicationIEs_specs_441;
+extern asn_TYPE_member_t asn_MBR_MMECPRelocationIndicationIEs_441[3];
+extern asn_TYPE_descriptor_t asn_DEF_SecondaryRATDataUsageReportIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_SecondaryRATDataUsageReportIEs_specs_445;
+extern asn_TYPE_member_t asn_MBR_SecondaryRATDataUsageReportIEs_445[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABDataForwardingItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABDataForwardingItemIEs_specs_449;
+extern asn_TYPE_member_t asn_MBR_E_RABDataForwardingItemIEs_449[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSetupItemHOReqIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSetupItemHOReqIEs_specs_453;
+extern asn_TYPE_member_t asn_MBR_E_RABToBeSetupItemHOReqIEs_453[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABAdmittedItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABAdmittedItemIEs_specs_457;
+extern asn_TYPE_member_t asn_MBR_E_RABAdmittedItemIEs_457[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedtoSetupItemHOReqAckIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedtoSetupItemHOReqAckIEs_specs_461;
+extern asn_TYPE_member_t asn_MBR_E_RABFailedtoSetupItemHOReqAckIEs_461[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSwitchedDLItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSwitchedDLItemIEs_specs_465;
+extern asn_TYPE_member_t asn_MBR_E_RABToBeSwitchedDLItemIEs_465[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeSwitchedULItemIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeSwitchedULItemIEs_specs_469;
+extern asn_TYPE_member_t asn_MBR_E_RABToBeSwitchedULItemIEs_469[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABToBeModifiedItemBearerModIndIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABToBeModifiedItemBearerModIndIEs_specs_473;
+extern asn_TYPE_member_t asn_MBR_E_RABToBeModifiedItemBearerModIndIEs_473[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABNotToBeModifiedItemBearerModIndIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABNotToBeModifiedItemBearerModIndIEs_specs_477;
+extern asn_TYPE_member_t asn_MBR_E_RABNotToBeModifiedItemBearerModIndIEs_477[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedToResumeItemResumeReqIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedToResumeItemResumeReqIEs_specs_481;
+extern asn_TYPE_member_t asn_MBR_E_RABFailedToResumeItemResumeReqIEs_481[3];
+extern asn_TYPE_descriptor_t asn_DEF_E_RABFailedToResumeItemResumeResIEs;
+extern asn_SEQUENCE_specifics_t asn_SPC_E_RABFailedToResumeItemResumeResIEs_specs_485;
+extern asn_TYPE_member_t asn_MBR_E_RABFailedToResumeItemResumeResIEs_485[3];
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif	/* _ProtocolIE_Field_H_ */
+#include <asn_internal.h>
