/*
 * Generated by asn1c-0.9.29 (http://lionet.info/asn1c)
 * From ASN.1 module "X2AP-Containers"
 * 	found in "X2AP-15-4-0.asn1"
 * 	`asn1c -D ./asn1_n1 -pdu=auto -fno-include-deps -fcompound-names -findirect-choice -gen-PER -gen-OER -no-gen-example`
 */

#include "ProtocolIE-Container.h"

#include "ProtocolIE-Field.h"
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P0_constr_1 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P0_constr_1 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P1_constr_3 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P1_constr_3 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P2_constr_5 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P2_constr_5 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P3_constr_7 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P3_constr_7 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P4_constr_9 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P4_constr_9 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P5_constr_11 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P5_constr_11 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P6_constr_13 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P6_constr_13 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P7_constr_15 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P7_constr_15 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P8_constr_17 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P8_constr_17 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P9_constr_19 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P9_constr_19 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P10_constr_21 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P10_constr_21 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P11_constr_23 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P11_constr_23 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P12_constr_25 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P12_constr_25 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P13_constr_27 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P13_constr_27 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P14_constr_29 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P14_constr_29 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P15_constr_31 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P15_constr_31 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P16_constr_33 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P16_constr_33 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P17_constr_35 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P17_constr_35 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P18_constr_37 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P18_constr_37 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P19_constr_39 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P19_constr_39 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P20_constr_41 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P20_constr_41 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P21_constr_43 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P21_constr_43 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P22_constr_45 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P22_constr_45 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P23_constr_47 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P23_constr_47 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P24_constr_49 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P24_constr_49 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P25_constr_51 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P25_constr_51 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P26_constr_53 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P26_constr_53 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P27_constr_55 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P27_constr_55 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P28_constr_57 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P28_constr_57 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P29_constr_59 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P29_constr_59 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P30_constr_61 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P30_constr_61 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P31_constr_63 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P31_constr_63 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P32_constr_65 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P32_constr_65 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P33_constr_67 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P33_constr_67 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P34_constr_69 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P34_constr_69 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P35_constr_71 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P35_constr_71 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P36_constr_73 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P36_constr_73 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P37_constr_75 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P37_constr_75 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P38_constr_77 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P38_constr_77 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P39_constr_79 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P39_constr_79 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P40_constr_81 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P40_constr_81 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P41_constr_83 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P41_constr_83 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P42_constr_85 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P42_constr_85 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P43_constr_87 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P43_constr_87 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P44_constr_89 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P44_constr_89 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P45_constr_91 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P45_constr_91 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P46_constr_93 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P46_constr_93 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P47_constr_95 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P47_constr_95 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P48_constr_97 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P48_constr_97 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P49_constr_99 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P49_constr_99 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P50_constr_101 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P50_constr_101 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P51_constr_103 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P51_constr_103 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P52_constr_105 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P52_constr_105 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P53_constr_107 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P53_constr_107 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P54_constr_109 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P54_constr_109 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P55_constr_111 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P55_constr_111 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P56_constr_113 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P56_constr_113 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P57_constr_115 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P57_constr_115 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P58_constr_117 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P58_constr_117 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P59_constr_119 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P59_constr_119 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P60_constr_121 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P60_constr_121 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P61_constr_123 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P61_constr_123 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P62_constr_125 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P62_constr_125 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P63_constr_127 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P63_constr_127 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P64_constr_129 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P64_constr_129 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P65_constr_131 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P65_constr_131 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P66_constr_133 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P66_constr_133 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P67_constr_135 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P67_constr_135 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P68_constr_137 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P68_constr_137 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P69_constr_139 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P69_constr_139 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P70_constr_141 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P70_constr_141 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P71_constr_143 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P71_constr_143 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P72_constr_145 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P72_constr_145 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P73_constr_147 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P73_constr_147 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P74_constr_149 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P74_constr_149 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P75_constr_151 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P75_constr_151 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P76_constr_153 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P76_constr_153 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P77_constr_155 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P77_constr_155 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P78_constr_157 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P78_constr_157 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P79_constr_159 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P79_constr_159 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P80_constr_161 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P80_constr_161 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P81_constr_163 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P81_constr_163 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P82_constr_165 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P82_constr_165 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P83_constr_167 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P83_constr_167 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P84_constr_169 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P84_constr_169 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P85_constr_171 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P85_constr_171 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P86_constr_173 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P86_constr_173 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P87_constr_175 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P87_constr_175 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P88_constr_177 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P88_constr_177 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P89_constr_179 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P89_constr_179 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P90_constr_181 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P90_constr_181 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P91_constr_183 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P91_constr_183 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P92_constr_185 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P92_constr_185 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P93_constr_187 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P93_constr_187 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P94_constr_189 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P94_constr_189 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P95_constr_191 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P95_constr_191 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P96_constr_193 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P96_constr_193 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P97_constr_195 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P97_constr_195 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P98_constr_197 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P98_constr_197 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P99_constr_199 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P99_constr_199 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P100_constr_201 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P100_constr_201 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P101_constr_203 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P101_constr_203 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P102_constr_205 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P102_constr_205 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P103_constr_207 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P103_constr_207 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P104_constr_209 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P104_constr_209 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P105_constr_211 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P105_constr_211 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P106_constr_213 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P106_constr_213 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P107_constr_215 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P107_constr_215 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P108_constr_217 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P108_constr_217 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P109_constr_219 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P109_constr_219 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P110_constr_221 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P110_constr_221 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P111_constr_223 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P111_constr_223 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P112_constr_225 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P112_constr_225 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P113_constr_227 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P113_constr_227 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P114_constr_229 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P114_constr_229 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P115_constr_231 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P115_constr_231 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P116_constr_233 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P116_constr_233 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P117_constr_235 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P117_constr_235 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P118_constr_237 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P118_constr_237 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
static asn_oer_constraints_t asn_OER_type_ProtocolIE_Container_7632P119_constr_239 CC_NOTUSED = {
	{ 0, 0 },
	-1	/* (SIZE(0..65535)) */};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_7632P119_constr_239 CC_NOTUSED = {
	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
	{ APC_CONSTRAINED,	 16,  16,  0,  65535 }	/* (SIZE(0..65535)) */,
	0, 0	/* No PER value map */
};
asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P0_1[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICsubscriptionRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P0_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P0_specs_1 = {
	sizeof(struct ProtocolIE_Container_7632P0),
	offsetof(struct ProtocolIE_Container_7632P0, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P0 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P0_tags_1,
	sizeof(asn_DEF_ProtocolIE_Container_7632P0_tags_1)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P0_tags_1[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P0_tags_1,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P0_tags_1)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P0_tags_1[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P0_constr_1, &asn_PER_type_ProtocolIE_Container_7632P0_constr_1, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P0_1,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P0_specs_1	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P1_3[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICsubscriptionResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P1_tags_3[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P1_specs_3 = {
	sizeof(struct ProtocolIE_Container_7632P1),
	offsetof(struct ProtocolIE_Container_7632P1, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P1 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P1_tags_3,
	sizeof(asn_DEF_ProtocolIE_Container_7632P1_tags_3)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P1_tags_3[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P1_tags_3,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P1_tags_3)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P1_tags_3[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P1_constr_3, &asn_PER_type_ProtocolIE_Container_7632P1_constr_3, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P1_3,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P1_specs_3	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P2_5[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICsubscriptionFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P2_tags_5[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P2_specs_5 = {
	sizeof(struct ProtocolIE_Container_7632P2),
	offsetof(struct ProtocolIE_Container_7632P2, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P2 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P2_tags_5,
	sizeof(asn_DEF_ProtocolIE_Container_7632P2_tags_5)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P2_tags_5[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P2_tags_5,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P2_tags_5)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P2_tags_5[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P2_constr_5, &asn_PER_type_ProtocolIE_Container_7632P2_constr_5, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P2_5,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P2_specs_5	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P3_7[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICsubscriptionDeleteRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P3_tags_7[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P3_specs_7 = {
	sizeof(struct ProtocolIE_Container_7632P3),
	offsetof(struct ProtocolIE_Container_7632P3, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P3 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P3_tags_7,
	sizeof(asn_DEF_ProtocolIE_Container_7632P3_tags_7)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P3_tags_7[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P3_tags_7,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P3_tags_7)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P3_tags_7[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P3_constr_7, &asn_PER_type_ProtocolIE_Container_7632P3_constr_7, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P3_7,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P3_specs_7	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P4_9[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICsubscriptionDeleteResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P4_tags_9[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P4_specs_9 = {
	sizeof(struct ProtocolIE_Container_7632P4),
	offsetof(struct ProtocolIE_Container_7632P4, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P4 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P4_tags_9,
	sizeof(asn_DEF_ProtocolIE_Container_7632P4_tags_9)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P4_tags_9[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P4_tags_9,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P4_tags_9)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P4_tags_9[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P4_constr_9, &asn_PER_type_ProtocolIE_Container_7632P4_constr_9, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P4_9,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P4_specs_9	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P5_11[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICsubscriptionDeleteFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P5_tags_11[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P5_specs_11 = {
	sizeof(struct ProtocolIE_Container_7632P5),
	offsetof(struct ProtocolIE_Container_7632P5, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P5 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P5_tags_11,
	sizeof(asn_DEF_ProtocolIE_Container_7632P5_tags_11)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P5_tags_11[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P5_tags_11,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P5_tags_11)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P5_tags_11[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P5_constr_11, &asn_PER_type_ProtocolIE_Container_7632P5_constr_11, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P5_11,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P5_specs_11	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P6_13[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICindication_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P6_tags_13[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P6_specs_13 = {
	sizeof(struct ProtocolIE_Container_7632P6),
	offsetof(struct ProtocolIE_Container_7632P6, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P6 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P6_tags_13,
	sizeof(asn_DEF_ProtocolIE_Container_7632P6_tags_13)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P6_tags_13[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P6_tags_13,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P6_tags_13)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P6_tags_13[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P6_constr_13, &asn_PER_type_ProtocolIE_Container_7632P6_constr_13, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P6_13,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P6_specs_13	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P7_15[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICcontrolRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P7_tags_15[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P7_specs_15 = {
	sizeof(struct ProtocolIE_Container_7632P7),
	offsetof(struct ProtocolIE_Container_7632P7, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P7 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P7_tags_15,
	sizeof(asn_DEF_ProtocolIE_Container_7632P7_tags_15)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P7_tags_15[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P7_tags_15,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P7_tags_15)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P7_tags_15[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P7_constr_15, &asn_PER_type_ProtocolIE_Container_7632P7_constr_15, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P7_15,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P7_specs_15	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P8_17[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICcontrolAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P8_tags_17[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P8_specs_17 = {
	sizeof(struct ProtocolIE_Container_7632P8),
	offsetof(struct ProtocolIE_Container_7632P8, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P8 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P8_tags_17,
	sizeof(asn_DEF_ProtocolIE_Container_7632P8_tags_17)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P8_tags_17[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P8_tags_17,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P8_tags_17)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P8_tags_17[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P8_constr_17, &asn_PER_type_ProtocolIE_Container_7632P8_constr_17, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P8_17,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P8_specs_17	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P9_19[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICcontrolFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P9_tags_19[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P9_specs_19 = {
	sizeof(struct ProtocolIE_Container_7632P9),
	offsetof(struct ProtocolIE_Container_7632P9, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P9 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P9_tags_19,
	sizeof(asn_DEF_ProtocolIE_Container_7632P9_tags_19)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P9_tags_19[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P9_tags_19,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P9_tags_19)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P9_tags_19[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P9_constr_19, &asn_PER_type_ProtocolIE_Container_7632P9_constr_19, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P9_19,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P9_specs_19	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P10_21[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICserviceUpdate_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P10_tags_21[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P10_specs_21 = {
	sizeof(struct ProtocolIE_Container_7632P10),
	offsetof(struct ProtocolIE_Container_7632P10, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P10 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P10_tags_21,
	sizeof(asn_DEF_ProtocolIE_Container_7632P10_tags_21)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P10_tags_21[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P10_tags_21,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P10_tags_21)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P10_tags_21[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P10_constr_21, &asn_PER_type_ProtocolIE_Container_7632P10_constr_21, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P10_21,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P10_specs_21	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P11_23[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICserviceUpdateAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P11_tags_23[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P11_specs_23 = {
	sizeof(struct ProtocolIE_Container_7632P11),
	offsetof(struct ProtocolIE_Container_7632P11, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P11 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P11_tags_23,
	sizeof(asn_DEF_ProtocolIE_Container_7632P11_tags_23)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P11_tags_23[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P11_tags_23,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P11_tags_23)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P11_tags_23[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P11_constr_23, &asn_PER_type_ProtocolIE_Container_7632P11_constr_23, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P11_23,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P11_specs_23	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P12_25[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICserviceUpdateFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P12_tags_25[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P12_specs_25 = {
	sizeof(struct ProtocolIE_Container_7632P12),
	offsetof(struct ProtocolIE_Container_7632P12, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P12 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P12_tags_25,
	sizeof(asn_DEF_ProtocolIE_Container_7632P12_tags_25)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P12_tags_25[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P12_tags_25,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P12_tags_25)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P12_tags_25[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P12_constr_25, &asn_PER_type_ProtocolIE_Container_7632P12_constr_25, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P12_25,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P12_specs_25	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P13_27[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RICserviceQuery_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P13_tags_27[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P13_specs_27 = {
	sizeof(struct ProtocolIE_Container_7632P13),
	offsetof(struct ProtocolIE_Container_7632P13, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P13 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P13_tags_27,
	sizeof(asn_DEF_ProtocolIE_Container_7632P13_tags_27)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P13_tags_27[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P13_tags_27,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P13_tags_27)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P13_tags_27[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P13_constr_27, &asn_PER_type_ProtocolIE_Container_7632P13_constr_27, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P13_27,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P13_specs_27	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P14_29[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_HandoverRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P14_tags_29[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P14_specs_29 = {
	sizeof(struct ProtocolIE_Container_7632P14),
	offsetof(struct ProtocolIE_Container_7632P14, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P14 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P14_tags_29,
	sizeof(asn_DEF_ProtocolIE_Container_7632P14_tags_29)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P14_tags_29[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P14_tags_29,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P14_tags_29)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P14_tags_29[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P14_constr_29, &asn_PER_type_ProtocolIE_Container_7632P14_constr_29, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P14_29,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P14_specs_29	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P15_31[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_HandoverRequestAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P15_tags_31[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P15_specs_31 = {
	sizeof(struct ProtocolIE_Container_7632P15),
	offsetof(struct ProtocolIE_Container_7632P15, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P15 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P15_tags_31,
	sizeof(asn_DEF_ProtocolIE_Container_7632P15_tags_31)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P15_tags_31[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P15_tags_31,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P15_tags_31)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P15_tags_31[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P15_constr_31, &asn_PER_type_ProtocolIE_Container_7632P15_constr_31, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P15_31,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P15_specs_31	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P16_33[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_HandoverPreparationFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P16_tags_33[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P16_specs_33 = {
	sizeof(struct ProtocolIE_Container_7632P16),
	offsetof(struct ProtocolIE_Container_7632P16, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P16 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P16_tags_33,
	sizeof(asn_DEF_ProtocolIE_Container_7632P16_tags_33)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P16_tags_33[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P16_tags_33,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P16_tags_33)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P16_tags_33[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P16_constr_33, &asn_PER_type_ProtocolIE_Container_7632P16_constr_33, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P16_33,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P16_specs_33	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P17_35[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_HandoverReport_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P17_tags_35[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P17_specs_35 = {
	sizeof(struct ProtocolIE_Container_7632P17),
	offsetof(struct ProtocolIE_Container_7632P17, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P17 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P17_tags_35,
	sizeof(asn_DEF_ProtocolIE_Container_7632P17_tags_35)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P17_tags_35[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P17_tags_35,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P17_tags_35)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P17_tags_35[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P17_constr_35, &asn_PER_type_ProtocolIE_Container_7632P17_constr_35, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P17_35,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P17_specs_35	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P18_37[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SNStatusTransfer_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P18_tags_37[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P18_specs_37 = {
	sizeof(struct ProtocolIE_Container_7632P18),
	offsetof(struct ProtocolIE_Container_7632P18, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P18 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P18_tags_37,
	sizeof(asn_DEF_ProtocolIE_Container_7632P18_tags_37)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P18_tags_37[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P18_tags_37,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P18_tags_37)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P18_tags_37[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P18_constr_37, &asn_PER_type_ProtocolIE_Container_7632P18_constr_37, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P18_37,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P18_specs_37	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P19_39[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_UEContextRelease_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P19_tags_39[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P19_specs_39 = {
	sizeof(struct ProtocolIE_Container_7632P19),
	offsetof(struct ProtocolIE_Container_7632P19, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P19 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P19_tags_39,
	sizeof(asn_DEF_ProtocolIE_Container_7632P19_tags_39)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P19_tags_39[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P19_tags_39,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P19_tags_39)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P19_tags_39[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P19_constr_39, &asn_PER_type_ProtocolIE_Container_7632P19_constr_39, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P19_39,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P19_specs_39	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P20_41[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_HandoverCancel_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P20_tags_41[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P20_specs_41 = {
	sizeof(struct ProtocolIE_Container_7632P20),
	offsetof(struct ProtocolIE_Container_7632P20, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P20 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P20_tags_41,
	sizeof(asn_DEF_ProtocolIE_Container_7632P20_tags_41)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P20_tags_41[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P20_tags_41,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P20_tags_41)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P20_tags_41[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P20_constr_41, &asn_PER_type_ProtocolIE_Container_7632P20_constr_41, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P20_41,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P20_specs_41	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P21_43[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ErrorIndication_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P21_tags_43[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P21_specs_43 = {
	sizeof(struct ProtocolIE_Container_7632P21),
	offsetof(struct ProtocolIE_Container_7632P21, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P21 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P21_tags_43,
	sizeof(asn_DEF_ProtocolIE_Container_7632P21_tags_43)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P21_tags_43[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P21_tags_43,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P21_tags_43)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P21_tags_43[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P21_constr_43, &asn_PER_type_ProtocolIE_Container_7632P21_constr_43, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P21_43,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P21_specs_43	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P22_45[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResetRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P22_tags_45[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P22_specs_45 = {
	sizeof(struct ProtocolIE_Container_7632P22),
	offsetof(struct ProtocolIE_Container_7632P22, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P22 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P22_tags_45,
	sizeof(asn_DEF_ProtocolIE_Container_7632P22_tags_45)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P22_tags_45[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P22_tags_45,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P22_tags_45)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P22_tags_45[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P22_constr_45, &asn_PER_type_ProtocolIE_Container_7632P22_constr_45, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P22_45,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P22_specs_45	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P23_47[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResetResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P23_tags_47[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P23_specs_47 = {
	sizeof(struct ProtocolIE_Container_7632P23),
	offsetof(struct ProtocolIE_Container_7632P23, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P23 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P23_tags_47,
	sizeof(asn_DEF_ProtocolIE_Container_7632P23_tags_47)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P23_tags_47[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P23_tags_47,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P23_tags_47)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P23_tags_47[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P23_constr_47, &asn_PER_type_ProtocolIE_Container_7632P23_constr_47, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P23_47,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P23_specs_47	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P24_49[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2SetupRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P24_tags_49[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P24_specs_49 = {
	sizeof(struct ProtocolIE_Container_7632P24),
	offsetof(struct ProtocolIE_Container_7632P24, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P24 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P24_tags_49,
	sizeof(asn_DEF_ProtocolIE_Container_7632P24_tags_49)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P24_tags_49[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P24_tags_49,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P24_tags_49)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P24_tags_49[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P24_constr_49, &asn_PER_type_ProtocolIE_Container_7632P24_constr_49, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P24_49,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P24_specs_49	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P25_51[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2SetupResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P25_tags_51[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P25_specs_51 = {
	sizeof(struct ProtocolIE_Container_7632P25),
	offsetof(struct ProtocolIE_Container_7632P25, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P25 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P25_tags_51,
	sizeof(asn_DEF_ProtocolIE_Container_7632P25_tags_51)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P25_tags_51[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P25_tags_51,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P25_tags_51)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P25_tags_51[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P25_constr_51, &asn_PER_type_ProtocolIE_Container_7632P25_constr_51, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P25_51,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P25_specs_51	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P26_53[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2SetupFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P26_tags_53[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P26_specs_53 = {
	sizeof(struct ProtocolIE_Container_7632P26),
	offsetof(struct ProtocolIE_Container_7632P26, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P26 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P26_tags_53,
	sizeof(asn_DEF_ProtocolIE_Container_7632P26_tags_53)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P26_tags_53[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P26_tags_53,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P26_tags_53)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P26_tags_53[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P26_constr_53, &asn_PER_type_ProtocolIE_Container_7632P26_constr_53, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P26_53,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P26_specs_53	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P27_55[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_LoadInformation_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P27_tags_55[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P27_specs_55 = {
	sizeof(struct ProtocolIE_Container_7632P27),
	offsetof(struct ProtocolIE_Container_7632P27, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P27 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P27_tags_55,
	sizeof(asn_DEF_ProtocolIE_Container_7632P27_tags_55)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P27_tags_55[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P27_tags_55,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P27_tags_55)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P27_tags_55[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P27_constr_55, &asn_PER_type_ProtocolIE_Container_7632P27_constr_55, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P27_55,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P27_specs_55	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P28_57[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENBConfigurationUpdate_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P28_tags_57[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P28_specs_57 = {
	sizeof(struct ProtocolIE_Container_7632P28),
	offsetof(struct ProtocolIE_Container_7632P28, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P28 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P28_tags_57,
	sizeof(asn_DEF_ProtocolIE_Container_7632P28_tags_57)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P28_tags_57[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P28_tags_57,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P28_tags_57)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P28_tags_57[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P28_constr_57, &asn_PER_type_ProtocolIE_Container_7632P28_constr_57, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P28_57,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P28_specs_57	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P29_59[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENBConfigurationUpdateAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P29_tags_59[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P29_specs_59 = {
	sizeof(struct ProtocolIE_Container_7632P29),
	offsetof(struct ProtocolIE_Container_7632P29, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P29 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P29_tags_59,
	sizeof(asn_DEF_ProtocolIE_Container_7632P29_tags_59)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P29_tags_59[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P29_tags_59,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P29_tags_59)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P29_tags_59[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P29_constr_59, &asn_PER_type_ProtocolIE_Container_7632P29_constr_59, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P29_59,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P29_specs_59	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P30_61[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENBConfigurationUpdateFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P30_tags_61[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P30_specs_61 = {
	sizeof(struct ProtocolIE_Container_7632P30),
	offsetof(struct ProtocolIE_Container_7632P30, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P30 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P30_tags_61,
	sizeof(asn_DEF_ProtocolIE_Container_7632P30_tags_61)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P30_tags_61[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P30_tags_61,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P30_tags_61)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P30_tags_61[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P30_constr_61, &asn_PER_type_ProtocolIE_Container_7632P30_constr_61, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P30_61,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P30_specs_61	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P31_63[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResourceStatusRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P31_tags_63[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P31_specs_63 = {
	sizeof(struct ProtocolIE_Container_7632P31),
	offsetof(struct ProtocolIE_Container_7632P31, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P31 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P31_tags_63,
	sizeof(asn_DEF_ProtocolIE_Container_7632P31_tags_63)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P31_tags_63[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P31_tags_63,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P31_tags_63)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P31_tags_63[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P31_constr_63, &asn_PER_type_ProtocolIE_Container_7632P31_constr_63, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P31_63,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P31_specs_63	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P32_65[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResourceStatusResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P32_tags_65[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P32_specs_65 = {
	sizeof(struct ProtocolIE_Container_7632P32),
	offsetof(struct ProtocolIE_Container_7632P32, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P32 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P32_tags_65,
	sizeof(asn_DEF_ProtocolIE_Container_7632P32_tags_65)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P32_tags_65[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P32_tags_65,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P32_tags_65)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P32_tags_65[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P32_constr_65, &asn_PER_type_ProtocolIE_Container_7632P32_constr_65, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P32_65,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P32_specs_65	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P33_67[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResourceStatusFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P33_tags_67[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P33_specs_67 = {
	sizeof(struct ProtocolIE_Container_7632P33),
	offsetof(struct ProtocolIE_Container_7632P33, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P33 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P33_tags_67,
	sizeof(asn_DEF_ProtocolIE_Container_7632P33_tags_67)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P33_tags_67[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P33_tags_67,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P33_tags_67)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P33_tags_67[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P33_constr_67, &asn_PER_type_ProtocolIE_Container_7632P33_constr_67, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P33_67,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P33_specs_67	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P34_69[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ResourceStatusUpdate_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P34_tags_69[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P34_specs_69 = {
	sizeof(struct ProtocolIE_Container_7632P34),
	offsetof(struct ProtocolIE_Container_7632P34, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P34 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P34_tags_69,
	sizeof(asn_DEF_ProtocolIE_Container_7632P34_tags_69)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P34_tags_69[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P34_tags_69,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P34_tags_69)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P34_tags_69[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P34_constr_69, &asn_PER_type_ProtocolIE_Container_7632P34_constr_69, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P34_69,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P34_specs_69	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P35_71[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MobilityChangeRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P35_tags_71[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P35_specs_71 = {
	sizeof(struct ProtocolIE_Container_7632P35),
	offsetof(struct ProtocolIE_Container_7632P35, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P35 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P35_tags_71,
	sizeof(asn_DEF_ProtocolIE_Container_7632P35_tags_71)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P35_tags_71[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P35_tags_71,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P35_tags_71)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P35_tags_71[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P35_constr_71, &asn_PER_type_ProtocolIE_Container_7632P35_constr_71, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P35_71,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P35_specs_71	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P36_73[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MobilityChangeAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P36_tags_73[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P36_specs_73 = {
	sizeof(struct ProtocolIE_Container_7632P36),
	offsetof(struct ProtocolIE_Container_7632P36, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P36 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P36_tags_73,
	sizeof(asn_DEF_ProtocolIE_Container_7632P36_tags_73)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P36_tags_73[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P36_tags_73,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P36_tags_73)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P36_tags_73[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P36_constr_73, &asn_PER_type_ProtocolIE_Container_7632P36_constr_73, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P36_73,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P36_specs_73	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P37_75[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_MobilityChangeFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P37_tags_75[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P37_specs_75 = {
	sizeof(struct ProtocolIE_Container_7632P37),
	offsetof(struct ProtocolIE_Container_7632P37, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P37 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P37_tags_75,
	sizeof(asn_DEF_ProtocolIE_Container_7632P37_tags_75)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P37_tags_75[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P37_tags_75,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P37_tags_75)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P37_tags_75[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P37_constr_75, &asn_PER_type_ProtocolIE_Container_7632P37_constr_75, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P37_75,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P37_specs_75	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P38_77[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RLFIndication_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P38_tags_77[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P38_specs_77 = {
	sizeof(struct ProtocolIE_Container_7632P38),
	offsetof(struct ProtocolIE_Container_7632P38, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P38 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P38_tags_77,
	sizeof(asn_DEF_ProtocolIE_Container_7632P38_tags_77)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P38_tags_77[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P38_tags_77,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P38_tags_77)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P38_tags_77[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P38_constr_77, &asn_PER_type_ProtocolIE_Container_7632P38_constr_77, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P38_77,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P38_specs_77	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P39_79[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellActivationRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P39_tags_79[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P39_specs_79 = {
	sizeof(struct ProtocolIE_Container_7632P39),
	offsetof(struct ProtocolIE_Container_7632P39, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P39 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P39_tags_79,
	sizeof(asn_DEF_ProtocolIE_Container_7632P39_tags_79)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P39_tags_79[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P39_tags_79,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P39_tags_79)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P39_tags_79[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P39_constr_79, &asn_PER_type_ProtocolIE_Container_7632P39_constr_79, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P39_79,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P39_specs_79	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P40_81[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellActivationResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P40_tags_81[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P40_specs_81 = {
	sizeof(struct ProtocolIE_Container_7632P40),
	offsetof(struct ProtocolIE_Container_7632P40, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P40 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P40_tags_81,
	sizeof(asn_DEF_ProtocolIE_Container_7632P40_tags_81)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P40_tags_81[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P40_tags_81,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P40_tags_81)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P40_tags_81[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P40_constr_81, &asn_PER_type_ProtocolIE_Container_7632P40_constr_81, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P40_81,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P40_specs_81	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P41_83[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_CellActivationFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P41_tags_83[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P41_specs_83 = {
	sizeof(struct ProtocolIE_Container_7632P41),
	offsetof(struct ProtocolIE_Container_7632P41, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P41 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P41_tags_83,
	sizeof(asn_DEF_ProtocolIE_Container_7632P41_tags_83)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P41_tags_83[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P41_tags_83,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P41_tags_83)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P41_tags_83[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P41_constr_83, &asn_PER_type_ProtocolIE_Container_7632P41_constr_83, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P41_83,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P41_specs_83	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P42_85[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2Release_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P42_tags_85[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P42_specs_85 = {
	sizeof(struct ProtocolIE_Container_7632P42),
	offsetof(struct ProtocolIE_Container_7632P42, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P42 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P42_tags_85,
	sizeof(asn_DEF_ProtocolIE_Container_7632P42_tags_85)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P42_tags_85[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P42_tags_85,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P42_tags_85)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P42_tags_85[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P42_constr_85, &asn_PER_type_ProtocolIE_Container_7632P42_constr_85, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P42_85,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P42_specs_85	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P43_87[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2APMessageTransfer_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P43_tags_87[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P43_specs_87 = {
	sizeof(struct ProtocolIE_Container_7632P43),
	offsetof(struct ProtocolIE_Container_7632P43, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P43 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P43_tags_87,
	sizeof(asn_DEF_ProtocolIE_Container_7632P43_tags_87)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P43_tags_87[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P43_tags_87,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P43_tags_87)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P43_tags_87[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P43_constr_87, &asn_PER_type_ProtocolIE_Container_7632P43_constr_87, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P43_87,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P43_specs_87	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P44_89[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBAdditionRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P44_tags_89[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P44_specs_89 = {
	sizeof(struct ProtocolIE_Container_7632P44),
	offsetof(struct ProtocolIE_Container_7632P44, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P44 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P44_tags_89,
	sizeof(asn_DEF_ProtocolIE_Container_7632P44_tags_89)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P44_tags_89[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P44_tags_89,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P44_tags_89)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P44_tags_89[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P44_constr_89, &asn_PER_type_ProtocolIE_Container_7632P44_constr_89, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P44_89,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P44_specs_89	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P45_91[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBAdditionRequestAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P45_tags_91[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P45_specs_91 = {
	sizeof(struct ProtocolIE_Container_7632P45),
	offsetof(struct ProtocolIE_Container_7632P45, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P45 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P45_tags_91,
	sizeof(asn_DEF_ProtocolIE_Container_7632P45_tags_91)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P45_tags_91[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P45_tags_91,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P45_tags_91)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P45_tags_91[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P45_constr_91, &asn_PER_type_ProtocolIE_Container_7632P45_constr_91, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P45_91,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P45_specs_91	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P46_93[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBAdditionRequestReject_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P46_tags_93[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P46_specs_93 = {
	sizeof(struct ProtocolIE_Container_7632P46),
	offsetof(struct ProtocolIE_Container_7632P46, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P46 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P46_tags_93,
	sizeof(asn_DEF_ProtocolIE_Container_7632P46_tags_93)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P46_tags_93[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P46_tags_93,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P46_tags_93)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P46_tags_93[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P46_constr_93, &asn_PER_type_ProtocolIE_Container_7632P46_constr_93, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P46_93,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P46_specs_93	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P47_95[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBReconfigurationComplete_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P47_tags_95[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P47_specs_95 = {
	sizeof(struct ProtocolIE_Container_7632P47),
	offsetof(struct ProtocolIE_Container_7632P47, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P47 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P47_tags_95,
	sizeof(asn_DEF_ProtocolIE_Container_7632P47_tags_95)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P47_tags_95[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P47_tags_95,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P47_tags_95)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P47_tags_95[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P47_constr_95, &asn_PER_type_ProtocolIE_Container_7632P47_constr_95, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P47_95,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P47_specs_95	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P48_97[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBModificationRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P48_tags_97[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P48_specs_97 = {
	sizeof(struct ProtocolIE_Container_7632P48),
	offsetof(struct ProtocolIE_Container_7632P48, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P48 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P48_tags_97,
	sizeof(asn_DEF_ProtocolIE_Container_7632P48_tags_97)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P48_tags_97[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P48_tags_97,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P48_tags_97)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P48_tags_97[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P48_constr_97, &asn_PER_type_ProtocolIE_Container_7632P48_constr_97, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P48_97,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P48_specs_97	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P49_99[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBModificationRequestAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P49_tags_99[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P49_specs_99 = {
	sizeof(struct ProtocolIE_Container_7632P49),
	offsetof(struct ProtocolIE_Container_7632P49, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P49 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P49_tags_99,
	sizeof(asn_DEF_ProtocolIE_Container_7632P49_tags_99)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P49_tags_99[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P49_tags_99,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P49_tags_99)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P49_tags_99[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P49_constr_99, &asn_PER_type_ProtocolIE_Container_7632P49_constr_99, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P49_99,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P49_specs_99	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P50_101[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBModificationRequestReject_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P50_tags_101[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P50_specs_101 = {
	sizeof(struct ProtocolIE_Container_7632P50),
	offsetof(struct ProtocolIE_Container_7632P50, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P50 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P50_tags_101,
	sizeof(asn_DEF_ProtocolIE_Container_7632P50_tags_101)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P50_tags_101[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P50_tags_101,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P50_tags_101)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P50_tags_101[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P50_constr_101, &asn_PER_type_ProtocolIE_Container_7632P50_constr_101, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P50_101,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P50_specs_101	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P51_103[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBModificationRequired_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P51_tags_103[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P51_specs_103 = {
	sizeof(struct ProtocolIE_Container_7632P51),
	offsetof(struct ProtocolIE_Container_7632P51, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P51 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P51_tags_103,
	sizeof(asn_DEF_ProtocolIE_Container_7632P51_tags_103)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P51_tags_103[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P51_tags_103,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P51_tags_103)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P51_tags_103[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P51_constr_103, &asn_PER_type_ProtocolIE_Container_7632P51_constr_103, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P51_103,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P51_specs_103	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P52_105[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBModificationConfirm_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P52_tags_105[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P52_specs_105 = {
	sizeof(struct ProtocolIE_Container_7632P52),
	offsetof(struct ProtocolIE_Container_7632P52, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P52 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P52_tags_105,
	sizeof(asn_DEF_ProtocolIE_Container_7632P52_tags_105)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P52_tags_105[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P52_tags_105,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P52_tags_105)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P52_tags_105[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P52_constr_105, &asn_PER_type_ProtocolIE_Container_7632P52_constr_105, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P52_105,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P52_specs_105	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P53_107[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBModificationRefuse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P53_tags_107[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P53_specs_107 = {
	sizeof(struct ProtocolIE_Container_7632P53),
	offsetof(struct ProtocolIE_Container_7632P53, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P53 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P53_tags_107,
	sizeof(asn_DEF_ProtocolIE_Container_7632P53_tags_107)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P53_tags_107[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P53_tags_107,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P53_tags_107)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P53_tags_107[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P53_constr_107, &asn_PER_type_ProtocolIE_Container_7632P53_constr_107, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P53_107,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P53_specs_107	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P54_109[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBReleaseRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P54_tags_109[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P54_specs_109 = {
	sizeof(struct ProtocolIE_Container_7632P54),
	offsetof(struct ProtocolIE_Container_7632P54, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P54 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P54_tags_109,
	sizeof(asn_DEF_ProtocolIE_Container_7632P54_tags_109)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P54_tags_109[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P54_tags_109,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P54_tags_109)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P54_tags_109[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P54_constr_109, &asn_PER_type_ProtocolIE_Container_7632P54_constr_109, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P54_109,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P54_specs_109	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P55_111[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBReleaseRequired_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P55_tags_111[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P55_specs_111 = {
	sizeof(struct ProtocolIE_Container_7632P55),
	offsetof(struct ProtocolIE_Container_7632P55, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P55 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P55_tags_111,
	sizeof(asn_DEF_ProtocolIE_Container_7632P55_tags_111)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P55_tags_111[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P55_tags_111,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P55_tags_111)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P55_tags_111[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P55_constr_111, &asn_PER_type_ProtocolIE_Container_7632P55_constr_111, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P55_111,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P55_specs_111	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P56_113[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBReleaseConfirm_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P56_tags_113[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P56_specs_113 = {
	sizeof(struct ProtocolIE_Container_7632P56),
	offsetof(struct ProtocolIE_Container_7632P56, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P56 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P56_tags_113,
	sizeof(asn_DEF_ProtocolIE_Container_7632P56_tags_113)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P56_tags_113[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P56_tags_113,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P56_tags_113)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P56_tags_113[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P56_constr_113, &asn_PER_type_ProtocolIE_Container_7632P56_constr_113, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P56_113,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P56_specs_113	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P57_115[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SeNBCounterCheckRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P57_tags_115[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P57_specs_115 = {
	sizeof(struct ProtocolIE_Container_7632P57),
	offsetof(struct ProtocolIE_Container_7632P57, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P57 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P57_tags_115,
	sizeof(asn_DEF_ProtocolIE_Container_7632P57_tags_115)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P57_tags_115[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P57_tags_115,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P57_tags_115)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P57_tags_115[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P57_constr_115, &asn_PER_type_ProtocolIE_Container_7632P57_constr_115, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P57_115,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P57_specs_115	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P58_117[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2RemovalRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P58_tags_117[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P58_specs_117 = {
	sizeof(struct ProtocolIE_Container_7632P58),
	offsetof(struct ProtocolIE_Container_7632P58, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P58 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P58_tags_117,
	sizeof(asn_DEF_ProtocolIE_Container_7632P58_tags_117)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P58_tags_117[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P58_tags_117,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P58_tags_117)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P58_tags_117[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P58_constr_117, &asn_PER_type_ProtocolIE_Container_7632P58_constr_117, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P58_117,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P58_specs_117	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P59_119[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2RemovalResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P59_tags_119[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P59_specs_119 = {
	sizeof(struct ProtocolIE_Container_7632P59),
	offsetof(struct ProtocolIE_Container_7632P59, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P59 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P59_tags_119,
	sizeof(asn_DEF_ProtocolIE_Container_7632P59_tags_119)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P59_tags_119[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P59_tags_119,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P59_tags_119)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P59_tags_119[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P59_constr_119, &asn_PER_type_ProtocolIE_Container_7632P59_constr_119, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P59_119,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P59_specs_119	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P60_121[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_X2RemovalFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P60_tags_121[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P60_specs_121 = {
	sizeof(struct ProtocolIE_Container_7632P60),
	offsetof(struct ProtocolIE_Container_7632P60, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P60 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P60_tags_121,
	sizeof(asn_DEF_ProtocolIE_Container_7632P60_tags_121)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P60_tags_121[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P60_tags_121,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P60_tags_121)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P60_tags_121[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P60_constr_121, &asn_PER_type_ProtocolIE_Container_7632P60_constr_121, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P60_121,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P60_specs_121	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P61_123[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RetrieveUEContextRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P61_tags_123[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P61_specs_123 = {
	sizeof(struct ProtocolIE_Container_7632P61),
	offsetof(struct ProtocolIE_Container_7632P61, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P61 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P61_tags_123,
	sizeof(asn_DEF_ProtocolIE_Container_7632P61_tags_123)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P61_tags_123[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P61_tags_123,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P61_tags_123)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P61_tags_123[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P61_constr_123, &asn_PER_type_ProtocolIE_Container_7632P61_constr_123, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P61_123,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P61_specs_123	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P62_125[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RetrieveUEContextResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P62_tags_125[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P62_specs_125 = {
	sizeof(struct ProtocolIE_Container_7632P62),
	offsetof(struct ProtocolIE_Container_7632P62, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P62 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P62_tags_125,
	sizeof(asn_DEF_ProtocolIE_Container_7632P62_tags_125)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P62_tags_125[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P62_tags_125,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P62_tags_125)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P62_tags_125[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P62_constr_125, &asn_PER_type_ProtocolIE_Container_7632P62_constr_125, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P62_125,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P62_specs_125	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P63_127[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RetrieveUEContextFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P63_tags_127[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P63_specs_127 = {
	sizeof(struct ProtocolIE_Container_7632P63),
	offsetof(struct ProtocolIE_Container_7632P63, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P63 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P63_tags_127,
	sizeof(asn_DEF_ProtocolIE_Container_7632P63_tags_127)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P63_tags_127[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P63_tags_127,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P63_tags_127)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P63_tags_127[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P63_constr_127, &asn_PER_type_ProtocolIE_Container_7632P63_constr_127, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P63_127,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P63_specs_127	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P64_129[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBAdditionRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P64_tags_129[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P64_specs_129 = {
	sizeof(struct ProtocolIE_Container_7632P64),
	offsetof(struct ProtocolIE_Container_7632P64, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P64 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P64_tags_129,
	sizeof(asn_DEF_ProtocolIE_Container_7632P64_tags_129)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P64_tags_129[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P64_tags_129,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P64_tags_129)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P64_tags_129[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P64_constr_129, &asn_PER_type_ProtocolIE_Container_7632P64_constr_129, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P64_129,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P64_specs_129	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P65_131[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBAdditionRequestAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P65_tags_131[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P65_specs_131 = {
	sizeof(struct ProtocolIE_Container_7632P65),
	offsetof(struct ProtocolIE_Container_7632P65, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P65 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P65_tags_131,
	sizeof(asn_DEF_ProtocolIE_Container_7632P65_tags_131)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P65_tags_131[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P65_tags_131,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P65_tags_131)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P65_tags_131[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P65_constr_131, &asn_PER_type_ProtocolIE_Container_7632P65_constr_131, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P65_131,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P65_specs_131	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P66_133[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBAdditionRequestReject_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P66_tags_133[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P66_specs_133 = {
	sizeof(struct ProtocolIE_Container_7632P66),
	offsetof(struct ProtocolIE_Container_7632P66, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P66 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P66_tags_133,
	sizeof(asn_DEF_ProtocolIE_Container_7632P66_tags_133)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P66_tags_133[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P66_tags_133,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P66_tags_133)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P66_tags_133[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P66_constr_133, &asn_PER_type_ProtocolIE_Container_7632P66_constr_133, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P66_133,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P66_specs_133	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P67_135[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBReconfigurationComplete_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P67_tags_135[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P67_specs_135 = {
	sizeof(struct ProtocolIE_Container_7632P67),
	offsetof(struct ProtocolIE_Container_7632P67, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P67 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P67_tags_135,
	sizeof(asn_DEF_ProtocolIE_Container_7632P67_tags_135)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P67_tags_135[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P67_tags_135,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P67_tags_135)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P67_tags_135[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P67_constr_135, &asn_PER_type_ProtocolIE_Container_7632P67_constr_135, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P67_135,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P67_specs_135	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P68_137[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBModificationRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P68_tags_137[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P68_specs_137 = {
	sizeof(struct ProtocolIE_Container_7632P68),
	offsetof(struct ProtocolIE_Container_7632P68, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P68 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P68_tags_137,
	sizeof(asn_DEF_ProtocolIE_Container_7632P68_tags_137)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P68_tags_137[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P68_tags_137,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P68_tags_137)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P68_tags_137[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P68_constr_137, &asn_PER_type_ProtocolIE_Container_7632P68_constr_137, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P68_137,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P68_specs_137	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P69_139[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBModificationRequestAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P69_tags_139[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P69_specs_139 = {
	sizeof(struct ProtocolIE_Container_7632P69),
	offsetof(struct ProtocolIE_Container_7632P69, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P69 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P69_tags_139,
	sizeof(asn_DEF_ProtocolIE_Container_7632P69_tags_139)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P69_tags_139[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P69_tags_139,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P69_tags_139)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P69_tags_139[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P69_constr_139, &asn_PER_type_ProtocolIE_Container_7632P69_constr_139, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P69_139,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P69_specs_139	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P70_141[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBModificationRequestReject_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P70_tags_141[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P70_specs_141 = {
	sizeof(struct ProtocolIE_Container_7632P70),
	offsetof(struct ProtocolIE_Container_7632P70, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P70 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P70_tags_141,
	sizeof(asn_DEF_ProtocolIE_Container_7632P70_tags_141)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P70_tags_141[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P70_tags_141,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P70_tags_141)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P70_tags_141[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P70_constr_141, &asn_PER_type_ProtocolIE_Container_7632P70_constr_141, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P70_141,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P70_specs_141	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P71_143[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBModificationRequired_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P71_tags_143[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P71_specs_143 = {
	sizeof(struct ProtocolIE_Container_7632P71),
	offsetof(struct ProtocolIE_Container_7632P71, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P71 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P71_tags_143,
	sizeof(asn_DEF_ProtocolIE_Container_7632P71_tags_143)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P71_tags_143[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P71_tags_143,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P71_tags_143)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P71_tags_143[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P71_constr_143, &asn_PER_type_ProtocolIE_Container_7632P71_constr_143, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P71_143,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P71_specs_143	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P72_145[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBModificationConfirm_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P72_tags_145[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P72_specs_145 = {
	sizeof(struct ProtocolIE_Container_7632P72),
	offsetof(struct ProtocolIE_Container_7632P72, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P72 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P72_tags_145,
	sizeof(asn_DEF_ProtocolIE_Container_7632P72_tags_145)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P72_tags_145[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P72_tags_145,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P72_tags_145)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P72_tags_145[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P72_constr_145, &asn_PER_type_ProtocolIE_Container_7632P72_constr_145, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P72_145,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P72_specs_145	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P73_147[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBModificationRefuse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P73_tags_147[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P73_specs_147 = {
	sizeof(struct ProtocolIE_Container_7632P73),
	offsetof(struct ProtocolIE_Container_7632P73, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P73 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P73_tags_147,
	sizeof(asn_DEF_ProtocolIE_Container_7632P73_tags_147)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P73_tags_147[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P73_tags_147,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P73_tags_147)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P73_tags_147[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P73_constr_147, &asn_PER_type_ProtocolIE_Container_7632P73_constr_147, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P73_147,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P73_specs_147	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P74_149[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBReleaseRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P74_tags_149[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P74_specs_149 = {
	sizeof(struct ProtocolIE_Container_7632P74),
	offsetof(struct ProtocolIE_Container_7632P74, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P74 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P74_tags_149,
	sizeof(asn_DEF_ProtocolIE_Container_7632P74_tags_149)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P74_tags_149[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P74_tags_149,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P74_tags_149)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P74_tags_149[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P74_constr_149, &asn_PER_type_ProtocolIE_Container_7632P74_constr_149, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P74_149,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P74_specs_149	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P75_151[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBReleaseRequestAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P75_tags_151[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P75_specs_151 = {
	sizeof(struct ProtocolIE_Container_7632P75),
	offsetof(struct ProtocolIE_Container_7632P75, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P75 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P75_tags_151,
	sizeof(asn_DEF_ProtocolIE_Container_7632P75_tags_151)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P75_tags_151[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P75_tags_151,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P75_tags_151)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P75_tags_151[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P75_constr_151, &asn_PER_type_ProtocolIE_Container_7632P75_constr_151, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P75_151,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P75_specs_151	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P76_153[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBReleaseRequestReject_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P76_tags_153[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P76_specs_153 = {
	sizeof(struct ProtocolIE_Container_7632P76),
	offsetof(struct ProtocolIE_Container_7632P76, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P76 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P76_tags_153,
	sizeof(asn_DEF_ProtocolIE_Container_7632P76_tags_153)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P76_tags_153[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P76_tags_153,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P76_tags_153)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P76_tags_153[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P76_constr_153, &asn_PER_type_ProtocolIE_Container_7632P76_constr_153, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P76_153,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P76_specs_153	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P77_155[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBReleaseRequired_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P77_tags_155[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P77_specs_155 = {
	sizeof(struct ProtocolIE_Container_7632P77),
	offsetof(struct ProtocolIE_Container_7632P77, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P77 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P77_tags_155,
	sizeof(asn_DEF_ProtocolIE_Container_7632P77_tags_155)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P77_tags_155[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P77_tags_155,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P77_tags_155)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P77_tags_155[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P77_constr_155, &asn_PER_type_ProtocolIE_Container_7632P77_constr_155, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P77_155,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P77_specs_155	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P78_157[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBReleaseConfirm_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P78_tags_157[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P78_specs_157 = {
	sizeof(struct ProtocolIE_Container_7632P78),
	offsetof(struct ProtocolIE_Container_7632P78, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P78 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P78_tags_157,
	sizeof(asn_DEF_ProtocolIE_Container_7632P78_tags_157)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P78_tags_157[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P78_tags_157,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P78_tags_157)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P78_tags_157[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P78_constr_157, &asn_PER_type_ProtocolIE_Container_7632P78_constr_157, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P78_157,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P78_specs_157	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P79_159[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBCounterCheckRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P79_tags_159[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P79_specs_159 = {
	sizeof(struct ProtocolIE_Container_7632P79),
	offsetof(struct ProtocolIE_Container_7632P79, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P79 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P79_tags_159,
	sizeof(asn_DEF_ProtocolIE_Container_7632P79_tags_159)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P79_tags_159[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P79_tags_159,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P79_tags_159)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P79_tags_159[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P79_constr_159, &asn_PER_type_ProtocolIE_Container_7632P79_constr_159, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P79_159,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P79_specs_159	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P80_161[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBChangeRequired_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P80_tags_161[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P80_specs_161 = {
	sizeof(struct ProtocolIE_Container_7632P80),
	offsetof(struct ProtocolIE_Container_7632P80, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P80 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P80_tags_161,
	sizeof(asn_DEF_ProtocolIE_Container_7632P80_tags_161)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P80_tags_161[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P80_tags_161,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P80_tags_161)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P80_tags_161[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P80_constr_161, &asn_PER_type_ProtocolIE_Container_7632P80_constr_161, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P80_161,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P80_specs_161	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P81_163[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBChangeConfirm_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P81_tags_163[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P81_specs_163 = {
	sizeof(struct ProtocolIE_Container_7632P81),
	offsetof(struct ProtocolIE_Container_7632P81, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P81 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P81_tags_163,
	sizeof(asn_DEF_ProtocolIE_Container_7632P81_tags_163)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P81_tags_163[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P81_tags_163,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P81_tags_163)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P81_tags_163[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P81_constr_163, &asn_PER_type_ProtocolIE_Container_7632P81_constr_163, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P81_163,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P81_specs_163	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P82_165[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_RRCTransfer_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P82_tags_165[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P82_specs_165 = {
	sizeof(struct ProtocolIE_Container_7632P82),
	offsetof(struct ProtocolIE_Container_7632P82, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P82 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P82_tags_165,
	sizeof(asn_DEF_ProtocolIE_Container_7632P82_tags_165)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P82_tags_165[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P82_tags_165,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P82_tags_165)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P82_tags_165[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P82_constr_165, &asn_PER_type_ProtocolIE_Container_7632P82_constr_165, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P82_165,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P82_specs_165	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P83_167[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBChangeRefuse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P83_tags_167[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P83_specs_167 = {
	sizeof(struct ProtocolIE_Container_7632P83),
	offsetof(struct ProtocolIE_Container_7632P83, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P83 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P83_tags_167,
	sizeof(asn_DEF_ProtocolIE_Container_7632P83_tags_167)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P83_tags_167[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P83_tags_167,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P83_tags_167)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P83_tags_167[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P83_constr_167, &asn_PER_type_ProtocolIE_Container_7632P83_constr_167, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P83_167,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P83_specs_167	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P84_169[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCX2SetupRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P84_tags_169[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P84_specs_169 = {
	sizeof(struct ProtocolIE_Container_7632P84),
	offsetof(struct ProtocolIE_Container_7632P84, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P84 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P84_tags_169,
	sizeof(asn_DEF_ProtocolIE_Container_7632P84_tags_169)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P84_tags_169[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P84_tags_169,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P84_tags_169)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P84_tags_169[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P84_constr_169, &asn_PER_type_ProtocolIE_Container_7632P84_constr_169, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P84_169,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P84_specs_169	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P85_171[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_ENDCX2SetupReqIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P85_tags_171[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P85_specs_171 = {
	sizeof(struct ProtocolIE_Container_7632P85),
	offsetof(struct ProtocolIE_Container_7632P85, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P85 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P85_tags_171,
	sizeof(asn_DEF_ProtocolIE_Container_7632P85_tags_171)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P85_tags_171[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P85_tags_171,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P85_tags_171)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P85_tags_171[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P85_constr_171, &asn_PER_type_ProtocolIE_Container_7632P85_constr_171, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P85_171,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P85_specs_171	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P86_173[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_ENDCX2SetupReqIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P86_tags_173[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P86_specs_173 = {
	sizeof(struct ProtocolIE_Container_7632P86),
	offsetof(struct ProtocolIE_Container_7632P86, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P86 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P86_tags_173,
	sizeof(asn_DEF_ProtocolIE_Container_7632P86_tags_173)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P86_tags_173[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P86_tags_173,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P86_tags_173)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P86_tags_173[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P86_constr_173, &asn_PER_type_ProtocolIE_Container_7632P86_constr_173, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P86_173,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P86_specs_173	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P87_175[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCX2SetupResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P87_tags_175[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P87_specs_175 = {
	sizeof(struct ProtocolIE_Container_7632P87),
	offsetof(struct ProtocolIE_Container_7632P87, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P87 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P87_tags_175,
	sizeof(asn_DEF_ProtocolIE_Container_7632P87_tags_175)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P87_tags_175[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P87_tags_175,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P87_tags_175)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P87_tags_175[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P87_constr_175, &asn_PER_type_ProtocolIE_Container_7632P87_constr_175, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P87_175,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P87_specs_175	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P88_177[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_ENDCX2SetupReqAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P88_tags_177[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P88_specs_177 = {
	sizeof(struct ProtocolIE_Container_7632P88),
	offsetof(struct ProtocolIE_Container_7632P88, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P88 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P88_tags_177,
	sizeof(asn_DEF_ProtocolIE_Container_7632P88_tags_177)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P88_tags_177[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P88_tags_177,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P88_tags_177)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P88_tags_177[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P88_constr_177, &asn_PER_type_ProtocolIE_Container_7632P88_constr_177, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P88_177,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P88_specs_177	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P89_179[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_ENDCX2SetupReqAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P89_tags_179[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P89_specs_179 = {
	sizeof(struct ProtocolIE_Container_7632P89),
	offsetof(struct ProtocolIE_Container_7632P89, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P89 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P89_tags_179,
	sizeof(asn_DEF_ProtocolIE_Container_7632P89_tags_179)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P89_tags_179[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P89_tags_179,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P89_tags_179)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P89_tags_179[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P89_constr_179, &asn_PER_type_ProtocolIE_Container_7632P89_constr_179, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P89_179,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P89_specs_179	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P90_181[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCX2SetupFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P90_tags_181[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P90_specs_181 = {
	sizeof(struct ProtocolIE_Container_7632P90),
	offsetof(struct ProtocolIE_Container_7632P90, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P90 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P90_tags_181,
	sizeof(asn_DEF_ProtocolIE_Container_7632P90_tags_181)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P90_tags_181[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P90_tags_181,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P90_tags_181)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P90_tags_181[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P90_constr_181, &asn_PER_type_ProtocolIE_Container_7632P90_constr_181, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P90_181,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P90_specs_181	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P91_183[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCConfigurationUpdate_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P91_tags_183[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P91_specs_183 = {
	sizeof(struct ProtocolIE_Container_7632P91),
	offsetof(struct ProtocolIE_Container_7632P91, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P91 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P91_tags_183,
	sizeof(asn_DEF_ProtocolIE_Container_7632P91_tags_183)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P91_tags_183[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P91_tags_183,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P91_tags_183)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P91_tags_183[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P91_constr_183, &asn_PER_type_ProtocolIE_Container_7632P91_constr_183, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P91_183,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P91_specs_183	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P92_185[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_ENDCConfigUpdateIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P92_tags_185[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P92_specs_185 = {
	sizeof(struct ProtocolIE_Container_7632P92),
	offsetof(struct ProtocolIE_Container_7632P92, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P92 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P92_tags_185,
	sizeof(asn_DEF_ProtocolIE_Container_7632P92_tags_185)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P92_tags_185[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P92_tags_185,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P92_tags_185)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P92_tags_185[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P92_constr_185, &asn_PER_type_ProtocolIE_Container_7632P92_constr_185, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P92_185,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P92_specs_185	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P93_187[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_ENDCConfigUpdateIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P93_tags_187[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P93_specs_187 = {
	sizeof(struct ProtocolIE_Container_7632P93),
	offsetof(struct ProtocolIE_Container_7632P93, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P93 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P93_tags_187,
	sizeof(asn_DEF_ProtocolIE_Container_7632P93_tags_187)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P93_tags_187[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P93_tags_187,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P93_tags_187)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P93_tags_187[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P93_constr_187, &asn_PER_type_ProtocolIE_Container_7632P93_constr_187, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P93_187,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P93_specs_187	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P94_189[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCConfigurationUpdateAcknowledge_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P94_tags_189[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P94_specs_189 = {
	sizeof(struct ProtocolIE_Container_7632P94),
	offsetof(struct ProtocolIE_Container_7632P94, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P94 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P94_tags_189,
	sizeof(asn_DEF_ProtocolIE_Container_7632P94_tags_189)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P94_tags_189[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P94_tags_189,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P94_tags_189)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P94_tags_189[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P94_constr_189, &asn_PER_type_ProtocolIE_Container_7632P94_constr_189, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P94_189,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P94_specs_189	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P95_191[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_ENDCConfigUpdateAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P95_tags_191[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P95_specs_191 = {
	sizeof(struct ProtocolIE_Container_7632P95),
	offsetof(struct ProtocolIE_Container_7632P95, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P95 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P95_tags_191,
	sizeof(asn_DEF_ProtocolIE_Container_7632P95_tags_191)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P95_tags_191[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P95_tags_191,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P95_tags_191)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P95_tags_191[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P95_constr_191, &asn_PER_type_ProtocolIE_Container_7632P95_constr_191, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P95_191,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P95_specs_191	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P96_193[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_ENDCConfigUpdateAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P96_tags_193[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P96_specs_193 = {
	sizeof(struct ProtocolIE_Container_7632P96),
	offsetof(struct ProtocolIE_Container_7632P96, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P96 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P96_tags_193,
	sizeof(asn_DEF_ProtocolIE_Container_7632P96_tags_193)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P96_tags_193[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P96_tags_193,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P96_tags_193)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P96_tags_193[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P96_constr_193, &asn_PER_type_ProtocolIE_Container_7632P96_constr_193, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P96_193,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P96_specs_193	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P97_195[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCConfigurationUpdateFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P97_tags_195[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P97_specs_195 = {
	sizeof(struct ProtocolIE_Container_7632P97),
	offsetof(struct ProtocolIE_Container_7632P97, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P97 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P97_tags_195,
	sizeof(asn_DEF_ProtocolIE_Container_7632P97_tags_195)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P97_tags_195[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P97_tags_195,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P97_tags_195)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P97_tags_195[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P97_constr_195, &asn_PER_type_ProtocolIE_Container_7632P97_constr_195, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P97_195,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P97_specs_195	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P98_197[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCCellActivationRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P98_tags_197[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P98_specs_197 = {
	sizeof(struct ProtocolIE_Container_7632P98),
	offsetof(struct ProtocolIE_Container_7632P98, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P98 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P98_tags_197,
	sizeof(asn_DEF_ProtocolIE_Container_7632P98_tags_197)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P98_tags_197[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P98_tags_197,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P98_tags_197)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P98_tags_197[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P98_constr_197, &asn_PER_type_ProtocolIE_Container_7632P98_constr_197, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P98_197,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P98_specs_197	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P99_199[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCCellActivationResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P99_tags_199[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P99_specs_199 = {
	sizeof(struct ProtocolIE_Container_7632P99),
	offsetof(struct ProtocolIE_Container_7632P99, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P99 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P99_tags_199,
	sizeof(asn_DEF_ProtocolIE_Container_7632P99_tags_199)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P99_tags_199[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P99_tags_199,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P99_tags_199)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P99_tags_199[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P99_constr_199, &asn_PER_type_ProtocolIE_Container_7632P99_constr_199, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P99_199,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P99_specs_199	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P100_201[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCCellActivationFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P100_tags_201[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P100_specs_201 = {
	sizeof(struct ProtocolIE_Container_7632P100),
	offsetof(struct ProtocolIE_Container_7632P100, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P100 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P100_tags_201,
	sizeof(asn_DEF_ProtocolIE_Container_7632P100_tags_201)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P100_tags_201[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P100_tags_201,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P100_tags_201)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P100_tags_201[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P100_constr_201, &asn_PER_type_ProtocolIE_Container_7632P100_constr_201, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P100_201,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P100_specs_201	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P101_203[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SecondaryRATDataUsageReport_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P101_tags_203[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P101_specs_203 = {
	sizeof(struct ProtocolIE_Container_7632P101),
	offsetof(struct ProtocolIE_Container_7632P101, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P101 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P101_tags_203,
	sizeof(asn_DEF_ProtocolIE_Container_7632P101_tags_203)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P101_tags_203[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P101_tags_203,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P101_tags_203)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P101_tags_203[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P101_constr_203, &asn_PER_type_ProtocolIE_Container_7632P101_constr_203, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P101_203,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P101_specs_203	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P102_205[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_SgNBActivityNotification_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P102_tags_205[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P102_specs_205 = {
	sizeof(struct ProtocolIE_Container_7632P102),
	offsetof(struct ProtocolIE_Container_7632P102, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P102 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P102_tags_205,
	sizeof(asn_DEF_ProtocolIE_Container_7632P102_tags_205)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P102_tags_205[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P102_tags_205,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P102_tags_205)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P102_tags_205[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P102_constr_205, &asn_PER_type_ProtocolIE_Container_7632P102_constr_205, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P102_205,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P102_specs_205	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P103_207[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCPartialResetRequired_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P103_tags_207[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P103_specs_207 = {
	sizeof(struct ProtocolIE_Container_7632P103),
	offsetof(struct ProtocolIE_Container_7632P103, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P103 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P103_tags_207,
	sizeof(asn_DEF_ProtocolIE_Container_7632P103_tags_207)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P103_tags_207[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P103_tags_207,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P103_tags_207)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P103_tags_207[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P103_constr_207, &asn_PER_type_ProtocolIE_Container_7632P103_constr_207, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P103_207,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P103_specs_207	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P104_209[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCPartialResetConfirm_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P104_tags_209[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P104_specs_209 = {
	sizeof(struct ProtocolIE_Container_7632P104),
	offsetof(struct ProtocolIE_Container_7632P104, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P104 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P104_tags_209,
	sizeof(asn_DEF_ProtocolIE_Container_7632P104_tags_209)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P104_tags_209[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P104_tags_209,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P104_tags_209)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P104_tags_209[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P104_constr_209, &asn_PER_type_ProtocolIE_Container_7632P104_constr_209, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P104_209,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P104_specs_209	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P105_211[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_EUTRANRCellResourceCoordinationRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P105_tags_211[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P105_specs_211 = {
	sizeof(struct ProtocolIE_Container_7632P105),
	offsetof(struct ProtocolIE_Container_7632P105, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P105 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P105_tags_211,
	sizeof(asn_DEF_ProtocolIE_Container_7632P105_tags_211)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P105_tags_211[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P105_tags_211,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P105_tags_211)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P105_tags_211[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P105_constr_211, &asn_PER_type_ProtocolIE_Container_7632P105_constr_211, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P105_211,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P105_specs_211	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P106_213[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P106_tags_213[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P106_specs_213 = {
	sizeof(struct ProtocolIE_Container_7632P106),
	offsetof(struct ProtocolIE_Container_7632P106, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P106 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P106_tags_213,
	sizeof(asn_DEF_ProtocolIE_Container_7632P106_tags_213)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P106_tags_213[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P106_tags_213,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P106_tags_213)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P106_tags_213[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P106_constr_213, &asn_PER_type_ProtocolIE_Container_7632P106_constr_213, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P106_213,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P106_specs_213	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P107_215[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P107_tags_215[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P107_specs_215 = {
	sizeof(struct ProtocolIE_Container_7632P107),
	offsetof(struct ProtocolIE_Container_7632P107, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P107 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P107_tags_215,
	sizeof(asn_DEF_ProtocolIE_Container_7632P107_tags_215)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P107_tags_215[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P107_tags_215,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P107_tags_215)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P107_tags_215[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P107_constr_215, &asn_PER_type_ProtocolIE_Container_7632P107_constr_215, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P107_215,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P107_specs_215	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P108_217[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_EUTRANRCellResourceCoordinationResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P108_tags_217[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P108_specs_217 = {
	sizeof(struct ProtocolIE_Container_7632P108),
	offsetof(struct ProtocolIE_Container_7632P108, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P108 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P108_tags_217,
	sizeof(asn_DEF_ProtocolIE_Container_7632P108_tags_217)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P108_tags_217[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P108_tags_217,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P108_tags_217)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P108_tags_217[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P108_constr_217, &asn_PER_type_ProtocolIE_Container_7632P108_constr_217, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P108_217,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P108_specs_217	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P109_219[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_EUTRA_NRCellResourceCoordinationReqAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P109_tags_219[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P109_specs_219 = {
	sizeof(struct ProtocolIE_Container_7632P109),
	offsetof(struct ProtocolIE_Container_7632P109, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P109 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P109_tags_219,
	sizeof(asn_DEF_ProtocolIE_Container_7632P109_tags_219)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P109_tags_219[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P109_tags_219,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P109_tags_219)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P109_tags_219[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P109_constr_219, &asn_PER_type_ProtocolIE_Container_7632P109_constr_219, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P109_219,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P109_specs_219	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P110_221[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_EUTRA_NRCellResourceCoordinationReqAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P110_tags_221[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P110_specs_221 = {
	sizeof(struct ProtocolIE_Container_7632P110),
	offsetof(struct ProtocolIE_Container_7632P110, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P110 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P110_tags_221,
	sizeof(asn_DEF_ProtocolIE_Container_7632P110_tags_221)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P110_tags_221[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P110_tags_221,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P110_tags_221)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P110_tags_221[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P110_constr_221, &asn_PER_type_ProtocolIE_Container_7632P110_constr_221, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P110_221,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P110_specs_221	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P111_223[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCX2RemovalRequest_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P111_tags_223[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P111_specs_223 = {
	sizeof(struct ProtocolIE_Container_7632P111),
	offsetof(struct ProtocolIE_Container_7632P111, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P111 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P111_tags_223,
	sizeof(asn_DEF_ProtocolIE_Container_7632P111_tags_223)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P111_tags_223[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P111_tags_223,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P111_tags_223)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P111_tags_223[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P111_constr_223, &asn_PER_type_ProtocolIE_Container_7632P111_constr_223, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P111_223,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P111_specs_223	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P112_225[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_ENDCX2RemovalReqIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P112_tags_225[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P112_specs_225 = {
	sizeof(struct ProtocolIE_Container_7632P112),
	offsetof(struct ProtocolIE_Container_7632P112, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P112 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P112_tags_225,
	sizeof(asn_DEF_ProtocolIE_Container_7632P112_tags_225)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P112_tags_225[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P112_tags_225,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P112_tags_225)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P112_tags_225[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P112_constr_225, &asn_PER_type_ProtocolIE_Container_7632P112_constr_225, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P112_225,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P112_specs_225	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P113_227[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_ENDCX2RemovalReqIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P113_tags_227[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P113_specs_227 = {
	sizeof(struct ProtocolIE_Container_7632P113),
	offsetof(struct ProtocolIE_Container_7632P113, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P113 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P113_tags_227,
	sizeof(asn_DEF_ProtocolIE_Container_7632P113_tags_227)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P113_tags_227[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P113_tags_227,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P113_tags_227)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P113_tags_227[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P113_constr_227, &asn_PER_type_ProtocolIE_Container_7632P113_constr_227, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P113_227,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P113_specs_227	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P114_229[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCX2RemovalResponse_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P114_tags_229[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P114_specs_229 = {
	sizeof(struct ProtocolIE_Container_7632P114),
	offsetof(struct ProtocolIE_Container_7632P114, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P114 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P114_tags_229,
	sizeof(asn_DEF_ProtocolIE_Container_7632P114_tags_229)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P114_tags_229[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P114_tags_229,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P114_tags_229)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P114_tags_229[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P114_constr_229, &asn_PER_type_ProtocolIE_Container_7632P114_constr_229, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P114_229,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P114_specs_229	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P115_231[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENB_ENDCX2RemovalReqAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P115_tags_231[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P115_specs_231 = {
	sizeof(struct ProtocolIE_Container_7632P115),
	offsetof(struct ProtocolIE_Container_7632P115, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P115 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P115_tags_231,
	sizeof(asn_DEF_ProtocolIE_Container_7632P115_tags_231)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P115_tags_231[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P115_tags_231,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P115_tags_231)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P115_tags_231[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P115_constr_231, &asn_PER_type_ProtocolIE_Container_7632P115_constr_231, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P115_231,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P115_specs_231	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P116_233[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_En_gNB_ENDCX2RemovalReqAckIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P116_tags_233[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P116_specs_233 = {
	sizeof(struct ProtocolIE_Container_7632P116),
	offsetof(struct ProtocolIE_Container_7632P116, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P116 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P116_tags_233,
	sizeof(asn_DEF_ProtocolIE_Container_7632P116_tags_233)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P116_tags_233[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P116_tags_233,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P116_tags_233)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P116_tags_233[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P116_constr_233, &asn_PER_type_ProtocolIE_Container_7632P116_constr_233, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P116_233,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P116_specs_233	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P117_235[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_ENDCX2RemovalFailure_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P117_tags_235[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P117_specs_235 = {
	sizeof(struct ProtocolIE_Container_7632P117),
	offsetof(struct ProtocolIE_Container_7632P117, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P117 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P117_tags_235,
	sizeof(asn_DEF_ProtocolIE_Container_7632P117_tags_235)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P117_tags_235[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P117_tags_235,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P117_tags_235)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P117_tags_235[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P117_constr_235, &asn_PER_type_ProtocolIE_Container_7632P117_constr_235, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P117_235,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P117_specs_235	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P118_237[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_DataForwardingAddressIndication_IEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P118_tags_237[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P118_specs_237 = {
	sizeof(struct ProtocolIE_Container_7632P118),
	offsetof(struct ProtocolIE_Container_7632P118, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P118 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P118_tags_237,
	sizeof(asn_DEF_ProtocolIE_Container_7632P118_tags_237)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P118_tags_237[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P118_tags_237,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P118_tags_237)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P118_tags_237[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P118_constr_237, &asn_PER_type_ProtocolIE_Container_7632P118_constr_237, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P118_237,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P118_specs_237	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_7632P119_239[] = {
	{ ATF_POINTER, 0, 0,
		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
		0,
		&asn_DEF_GNBStatusIndicationIEs,
		0,
		{ 0, 0, 0 },
		0, 0, /* No default value */
		""
		},
};
static const ber_tlv_tag_t asn_DEF_ProtocolIE_Container_7632P119_tags_239[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_7632P119_specs_239 = {
	sizeof(struct ProtocolIE_Container_7632P119),
	offsetof(struct ProtocolIE_Container_7632P119, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_7632P119 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_7632P119_tags_239,
	sizeof(asn_DEF_ProtocolIE_Container_7632P119_tags_239)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P119_tags_239[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_7632P119_tags_239,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_7632P119_tags_239)
		/sizeof(asn_DEF_ProtocolIE_Container_7632P119_tags_239[0]), /* 1 */
	{ &asn_OER_type_ProtocolIE_Container_7632P119_constr_239, &asn_PER_type_ProtocolIE_Container_7632P119_constr_239, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_7632P119_239,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_7632P119_specs_239	/* Additional specs */
};

