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

#include "ProtocolIE-Container.h"

#include "ProtocolIE-Field.h"
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P0_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P1_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P2_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P3_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P4_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P5_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P6_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P7_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P8_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P9_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P10_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P11_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P12_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P13_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P14_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P15_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P16_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P17_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P18_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P19_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P20_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P21_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P22_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P23_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P24_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P25_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P26_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P27_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P28_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P29_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P30_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P31_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P32_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P33_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P34_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P35_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P36_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P37_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P38_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P39_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P40_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P41_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P42_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 */
};
asn_per_constraints_t asn_PER_type_ProtocolIE_Container_8807P43_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 */
};
asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P0_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_8807P0_tags_1[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P0_specs_1 = {
	sizeof(struct ProtocolIE_Container_8807P0),
	offsetof(struct ProtocolIE_Container_8807P0, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P0 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P0_tags_1,
	sizeof(asn_DEF_ProtocolIE_Container_8807P0_tags_1)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P0_tags_1[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P0_tags_1,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P0_tags_1)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P0_tags_1[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P0_constr_1, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P0_1,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P0_specs_1	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P1_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_8807P1_tags_3[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P1_specs_3 = {
	sizeof(struct ProtocolIE_Container_8807P1),
	offsetof(struct ProtocolIE_Container_8807P1, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P1 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P1_tags_3,
	sizeof(asn_DEF_ProtocolIE_Container_8807P1_tags_3)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P1_tags_3[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P1_tags_3,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P1_tags_3)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P1_tags_3[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P1_constr_3, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P1_3,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P1_specs_3	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P2_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_8807P2_tags_5[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P2_specs_5 = {
	sizeof(struct ProtocolIE_Container_8807P2),
	offsetof(struct ProtocolIE_Container_8807P2, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P2 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P2_tags_5,
	sizeof(asn_DEF_ProtocolIE_Container_8807P2_tags_5)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P2_tags_5[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P2_tags_5,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P2_tags_5)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P2_tags_5[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P2_constr_5, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P2_5,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P2_specs_5	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P3_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_8807P3_tags_7[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P3_specs_7 = {
	sizeof(struct ProtocolIE_Container_8807P3),
	offsetof(struct ProtocolIE_Container_8807P3, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P3 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P3_tags_7,
	sizeof(asn_DEF_ProtocolIE_Container_8807P3_tags_7)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P3_tags_7[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P3_tags_7,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P3_tags_7)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P3_tags_7[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P3_constr_7, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P3_7,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P3_specs_7	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P4_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_8807P4_tags_9[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P4_specs_9 = {
	sizeof(struct ProtocolIE_Container_8807P4),
	offsetof(struct ProtocolIE_Container_8807P4, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P4 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P4_tags_9,
	sizeof(asn_DEF_ProtocolIE_Container_8807P4_tags_9)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P4_tags_9[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P4_tags_9,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P4_tags_9)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P4_tags_9[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P4_constr_9, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P4_9,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P4_specs_9	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P5_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_8807P5_tags_11[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P5_specs_11 = {
	sizeof(struct ProtocolIE_Container_8807P5),
	offsetof(struct ProtocolIE_Container_8807P5, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P5 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P5_tags_11,
	sizeof(asn_DEF_ProtocolIE_Container_8807P5_tags_11)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P5_tags_11[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P5_tags_11,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P5_tags_11)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P5_tags_11[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P5_constr_11, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P5_11,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P5_specs_11	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P6_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_8807P6_tags_13[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P6_specs_13 = {
	sizeof(struct ProtocolIE_Container_8807P6),
	offsetof(struct ProtocolIE_Container_8807P6, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P6 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P6_tags_13,
	sizeof(asn_DEF_ProtocolIE_Container_8807P6_tags_13)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P6_tags_13[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P6_tags_13,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P6_tags_13)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P6_tags_13[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P6_constr_13, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P6_13,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P6_specs_13	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P7_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_8807P7_tags_15[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P7_specs_15 = {
	sizeof(struct ProtocolIE_Container_8807P7),
	offsetof(struct ProtocolIE_Container_8807P7, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P7 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P7_tags_15,
	sizeof(asn_DEF_ProtocolIE_Container_8807P7_tags_15)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P7_tags_15[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P7_tags_15,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P7_tags_15)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P7_tags_15[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P7_constr_15, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P7_15,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P7_specs_15	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P8_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_8807P8_tags_17[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P8_specs_17 = {
	sizeof(struct ProtocolIE_Container_8807P8),
	offsetof(struct ProtocolIE_Container_8807P8, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P8 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P8_tags_17,
	sizeof(asn_DEF_ProtocolIE_Container_8807P8_tags_17)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P8_tags_17[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P8_tags_17,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P8_tags_17)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P8_tags_17[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P8_constr_17, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P8_17,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P8_specs_17	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P9_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_8807P9_tags_19[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P9_specs_19 = {
	sizeof(struct ProtocolIE_Container_8807P9),
	offsetof(struct ProtocolIE_Container_8807P9, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P9 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P9_tags_19,
	sizeof(asn_DEF_ProtocolIE_Container_8807P9_tags_19)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P9_tags_19[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P9_tags_19,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P9_tags_19)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P9_tags_19[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P9_constr_19, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P9_19,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P9_specs_19	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P10_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_8807P10_tags_21[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P10_specs_21 = {
	sizeof(struct ProtocolIE_Container_8807P10),
	offsetof(struct ProtocolIE_Container_8807P10, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P10 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P10_tags_21,
	sizeof(asn_DEF_ProtocolIE_Container_8807P10_tags_21)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P10_tags_21[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P10_tags_21,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P10_tags_21)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P10_tags_21[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P10_constr_21, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P10_21,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P10_specs_21	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P11_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_8807P11_tags_23[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P11_specs_23 = {
	sizeof(struct ProtocolIE_Container_8807P11),
	offsetof(struct ProtocolIE_Container_8807P11, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P11 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P11_tags_23,
	sizeof(asn_DEF_ProtocolIE_Container_8807P11_tags_23)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P11_tags_23[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P11_tags_23,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P11_tags_23)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P11_tags_23[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P11_constr_23, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P11_23,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P11_specs_23	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P12_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_8807P12_tags_25[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P12_specs_25 = {
	sizeof(struct ProtocolIE_Container_8807P12),
	offsetof(struct ProtocolIE_Container_8807P12, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P12 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P12_tags_25,
	sizeof(asn_DEF_ProtocolIE_Container_8807P12_tags_25)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P12_tags_25[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P12_tags_25,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P12_tags_25)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P12_tags_25[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P12_constr_25, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P12_25,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P12_specs_25	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P13_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_8807P13_tags_27[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P13_specs_27 = {
	sizeof(struct ProtocolIE_Container_8807P13),
	offsetof(struct ProtocolIE_Container_8807P13, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P13 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P13_tags_27,
	sizeof(asn_DEF_ProtocolIE_Container_8807P13_tags_27)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P13_tags_27[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P13_tags_27,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P13_tags_27)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P13_tags_27[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P13_constr_27, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P13_27,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P13_specs_27	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P14_29[] = {
	{ 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_8807P14_tags_29[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P14_specs_29 = {
	sizeof(struct ProtocolIE_Container_8807P14),
	offsetof(struct ProtocolIE_Container_8807P14, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P14 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P14_tags_29,
	sizeof(asn_DEF_ProtocolIE_Container_8807P14_tags_29)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P14_tags_29[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P14_tags_29,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P14_tags_29)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P14_tags_29[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P14_constr_29, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P14_29,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P14_specs_29	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P15_31[] = {
	{ 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_8807P15_tags_31[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P15_specs_31 = {
	sizeof(struct ProtocolIE_Container_8807P15),
	offsetof(struct ProtocolIE_Container_8807P15, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P15 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P15_tags_31,
	sizeof(asn_DEF_ProtocolIE_Container_8807P15_tags_31)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P15_tags_31[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P15_tags_31,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P15_tags_31)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P15_tags_31[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P15_constr_31, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P15_31,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P15_specs_31	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P16_33[] = {
	{ 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_8807P16_tags_33[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P16_specs_33 = {
	sizeof(struct ProtocolIE_Container_8807P16),
	offsetof(struct ProtocolIE_Container_8807P16, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P16 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P16_tags_33,
	sizeof(asn_DEF_ProtocolIE_Container_8807P16_tags_33)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P16_tags_33[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P16_tags_33,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P16_tags_33)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P16_tags_33[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P16_constr_33, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P16_33,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P16_specs_33	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P17_35[] = {
	{ 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_8807P17_tags_35[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P17_specs_35 = {
	sizeof(struct ProtocolIE_Container_8807P17),
	offsetof(struct ProtocolIE_Container_8807P17, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P17 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P17_tags_35,
	sizeof(asn_DEF_ProtocolIE_Container_8807P17_tags_35)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P17_tags_35[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P17_tags_35,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P17_tags_35)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P17_tags_35[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P17_constr_35, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P17_35,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P17_specs_35	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P18_37[] = {
	{ 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_8807P18_tags_37[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P18_specs_37 = {
	sizeof(struct ProtocolIE_Container_8807P18),
	offsetof(struct ProtocolIE_Container_8807P18, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P18 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P18_tags_37,
	sizeof(asn_DEF_ProtocolIE_Container_8807P18_tags_37)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P18_tags_37[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P18_tags_37,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P18_tags_37)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P18_tags_37[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P18_constr_37, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P18_37,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P18_specs_37	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P19_39[] = {
	{ 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_8807P19_tags_39[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P19_specs_39 = {
	sizeof(struct ProtocolIE_Container_8807P19),
	offsetof(struct ProtocolIE_Container_8807P19, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P19 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P19_tags_39,
	sizeof(asn_DEF_ProtocolIE_Container_8807P19_tags_39)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P19_tags_39[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P19_tags_39,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P19_tags_39)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P19_tags_39[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P19_constr_39, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P19_39,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P19_specs_39	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P20_41[] = {
	{ 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_8807P20_tags_41[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P20_specs_41 = {
	sizeof(struct ProtocolIE_Container_8807P20),
	offsetof(struct ProtocolIE_Container_8807P20, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P20 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P20_tags_41,
	sizeof(asn_DEF_ProtocolIE_Container_8807P20_tags_41)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P20_tags_41[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P20_tags_41,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P20_tags_41)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P20_tags_41[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P20_constr_41, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P20_41,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P20_specs_41	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P21_43[] = {
	{ 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_8807P21_tags_43[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P21_specs_43 = {
	sizeof(struct ProtocolIE_Container_8807P21),
	offsetof(struct ProtocolIE_Container_8807P21, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P21 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P21_tags_43,
	sizeof(asn_DEF_ProtocolIE_Container_8807P21_tags_43)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P21_tags_43[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P21_tags_43,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P21_tags_43)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P21_tags_43[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P21_constr_43, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P21_43,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P21_specs_43	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P22_45[] = {
	{ 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_8807P22_tags_45[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P22_specs_45 = {
	sizeof(struct ProtocolIE_Container_8807P22),
	offsetof(struct ProtocolIE_Container_8807P22, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P22 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P22_tags_45,
	sizeof(asn_DEF_ProtocolIE_Container_8807P22_tags_45)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P22_tags_45[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P22_tags_45,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P22_tags_45)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P22_tags_45[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P22_constr_45, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P22_45,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P22_specs_45	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P23_47[] = {
	{ 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_8807P23_tags_47[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P23_specs_47 = {
	sizeof(struct ProtocolIE_Container_8807P23),
	offsetof(struct ProtocolIE_Container_8807P23, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P23 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P23_tags_47,
	sizeof(asn_DEF_ProtocolIE_Container_8807P23_tags_47)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P23_tags_47[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P23_tags_47,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P23_tags_47)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P23_tags_47[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P23_constr_47, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P23_47,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P23_specs_47	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P24_49[] = {
	{ 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_8807P24_tags_49[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P24_specs_49 = {
	sizeof(struct ProtocolIE_Container_8807P24),
	offsetof(struct ProtocolIE_Container_8807P24, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P24 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P24_tags_49,
	sizeof(asn_DEF_ProtocolIE_Container_8807P24_tags_49)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P24_tags_49[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P24_tags_49,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P24_tags_49)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P24_tags_49[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P24_constr_49, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P24_49,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P24_specs_49	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P25_51[] = {
	{ 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_8807P25_tags_51[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P25_specs_51 = {
	sizeof(struct ProtocolIE_Container_8807P25),
	offsetof(struct ProtocolIE_Container_8807P25, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P25 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P25_tags_51,
	sizeof(asn_DEF_ProtocolIE_Container_8807P25_tags_51)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P25_tags_51[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P25_tags_51,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P25_tags_51)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P25_tags_51[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P25_constr_51, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P25_51,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P25_specs_51	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P26_53[] = {
	{ 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_8807P26_tags_53[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P26_specs_53 = {
	sizeof(struct ProtocolIE_Container_8807P26),
	offsetof(struct ProtocolIE_Container_8807P26, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P26 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P26_tags_53,
	sizeof(asn_DEF_ProtocolIE_Container_8807P26_tags_53)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P26_tags_53[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P26_tags_53,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P26_tags_53)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P26_tags_53[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P26_constr_53, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P26_53,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P26_specs_53	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P27_55[] = {
	{ 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_8807P27_tags_55[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P27_specs_55 = {
	sizeof(struct ProtocolIE_Container_8807P27),
	offsetof(struct ProtocolIE_Container_8807P27, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P27 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P27_tags_55,
	sizeof(asn_DEF_ProtocolIE_Container_8807P27_tags_55)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P27_tags_55[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P27_tags_55,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P27_tags_55)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P27_tags_55[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P27_constr_55, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P27_55,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P27_specs_55	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P28_57[] = {
	{ 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_8807P28_tags_57[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P28_specs_57 = {
	sizeof(struct ProtocolIE_Container_8807P28),
	offsetof(struct ProtocolIE_Container_8807P28, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P28 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P28_tags_57,
	sizeof(asn_DEF_ProtocolIE_Container_8807P28_tags_57)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P28_tags_57[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P28_tags_57,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P28_tags_57)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P28_tags_57[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P28_constr_57, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P28_57,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P28_specs_57	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P29_59[] = {
	{ 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_8807P29_tags_59[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P29_specs_59 = {
	sizeof(struct ProtocolIE_Container_8807P29),
	offsetof(struct ProtocolIE_Container_8807P29, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P29 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P29_tags_59,
	sizeof(asn_DEF_ProtocolIE_Container_8807P29_tags_59)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P29_tags_59[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P29_tags_59,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P29_tags_59)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P29_tags_59[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P29_constr_59, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P29_59,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P29_specs_59	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P30_61[] = {
	{ 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_8807P30_tags_61[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P30_specs_61 = {
	sizeof(struct ProtocolIE_Container_8807P30),
	offsetof(struct ProtocolIE_Container_8807P30, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P30 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P30_tags_61,
	sizeof(asn_DEF_ProtocolIE_Container_8807P30_tags_61)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P30_tags_61[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P30_tags_61,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P30_tags_61)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P30_tags_61[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P30_constr_61, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P30_61,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P30_specs_61	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P31_63[] = {
	{ 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_8807P31_tags_63[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P31_specs_63 = {
	sizeof(struct ProtocolIE_Container_8807P31),
	offsetof(struct ProtocolIE_Container_8807P31, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P31 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P31_tags_63,
	sizeof(asn_DEF_ProtocolIE_Container_8807P31_tags_63)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P31_tags_63[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P31_tags_63,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P31_tags_63)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P31_tags_63[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P31_constr_63, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P31_63,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P31_specs_63	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P32_65[] = {
	{ 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_8807P32_tags_65[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P32_specs_65 = {
	sizeof(struct ProtocolIE_Container_8807P32),
	offsetof(struct ProtocolIE_Container_8807P32, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P32 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P32_tags_65,
	sizeof(asn_DEF_ProtocolIE_Container_8807P32_tags_65)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P32_tags_65[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P32_tags_65,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P32_tags_65)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P32_tags_65[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P32_constr_65, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P32_65,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P32_specs_65	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P33_67[] = {
	{ 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_8807P33_tags_67[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P33_specs_67 = {
	sizeof(struct ProtocolIE_Container_8807P33),
	offsetof(struct ProtocolIE_Container_8807P33, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P33 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P33_tags_67,
	sizeof(asn_DEF_ProtocolIE_Container_8807P33_tags_67)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P33_tags_67[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P33_tags_67,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P33_tags_67)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P33_tags_67[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P33_constr_67, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P33_67,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P33_specs_67	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P34_69[] = {
	{ 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_8807P34_tags_69[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P34_specs_69 = {
	sizeof(struct ProtocolIE_Container_8807P34),
	offsetof(struct ProtocolIE_Container_8807P34, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P34 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P34_tags_69,
	sizeof(asn_DEF_ProtocolIE_Container_8807P34_tags_69)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P34_tags_69[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P34_tags_69,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P34_tags_69)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P34_tags_69[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P34_constr_69, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P34_69,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P34_specs_69	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P35_71[] = {
	{ 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_8807P35_tags_71[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P35_specs_71 = {
	sizeof(struct ProtocolIE_Container_8807P35),
	offsetof(struct ProtocolIE_Container_8807P35, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P35 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P35_tags_71,
	sizeof(asn_DEF_ProtocolIE_Container_8807P35_tags_71)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P35_tags_71[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P35_tags_71,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P35_tags_71)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P35_tags_71[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P35_constr_71, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P35_71,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P35_specs_71	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P36_73[] = {
	{ 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_8807P36_tags_73[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P36_specs_73 = {
	sizeof(struct ProtocolIE_Container_8807P36),
	offsetof(struct ProtocolIE_Container_8807P36, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P36 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P36_tags_73,
	sizeof(asn_DEF_ProtocolIE_Container_8807P36_tags_73)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P36_tags_73[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P36_tags_73,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P36_tags_73)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P36_tags_73[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P36_constr_73, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P36_73,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P36_specs_73	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P37_75[] = {
	{ 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_8807P37_tags_75[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P37_specs_75 = {
	sizeof(struct ProtocolIE_Container_8807P37),
	offsetof(struct ProtocolIE_Container_8807P37, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P37 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P37_tags_75,
	sizeof(asn_DEF_ProtocolIE_Container_8807P37_tags_75)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P37_tags_75[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P37_tags_75,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P37_tags_75)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P37_tags_75[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P37_constr_75, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P37_75,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P37_specs_75	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P38_77[] = {
	{ 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_8807P38_tags_77[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P38_specs_77 = {
	sizeof(struct ProtocolIE_Container_8807P38),
	offsetof(struct ProtocolIE_Container_8807P38, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P38 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P38_tags_77,
	sizeof(asn_DEF_ProtocolIE_Container_8807P38_tags_77)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P38_tags_77[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P38_tags_77,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P38_tags_77)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P38_tags_77[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P38_constr_77, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P38_77,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P38_specs_77	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P39_79[] = {
	{ 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_8807P39_tags_79[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P39_specs_79 = {
	sizeof(struct ProtocolIE_Container_8807P39),
	offsetof(struct ProtocolIE_Container_8807P39, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P39 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P39_tags_79,
	sizeof(asn_DEF_ProtocolIE_Container_8807P39_tags_79)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P39_tags_79[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P39_tags_79,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P39_tags_79)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P39_tags_79[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P39_constr_79, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P39_79,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P39_specs_79	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P40_81[] = {
	{ 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_8807P40_tags_81[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P40_specs_81 = {
	sizeof(struct ProtocolIE_Container_8807P40),
	offsetof(struct ProtocolIE_Container_8807P40, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P40 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P40_tags_81,
	sizeof(asn_DEF_ProtocolIE_Container_8807P40_tags_81)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P40_tags_81[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P40_tags_81,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P40_tags_81)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P40_tags_81[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P40_constr_81, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P40_81,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P40_specs_81	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P41_83[] = {
	{ 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_8807P41_tags_83[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P41_specs_83 = {
	sizeof(struct ProtocolIE_Container_8807P41),
	offsetof(struct ProtocolIE_Container_8807P41, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P41 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P41_tags_83,
	sizeof(asn_DEF_ProtocolIE_Container_8807P41_tags_83)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P41_tags_83[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P41_tags_83,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P41_tags_83)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P41_tags_83[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P41_constr_83, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P41_83,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P41_specs_83	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P42_85[] = {
	{ 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_8807P42_tags_85[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P42_specs_85 = {
	sizeof(struct ProtocolIE_Container_8807P42),
	offsetof(struct ProtocolIE_Container_8807P42, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P42 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P42_tags_85,
	sizeof(asn_DEF_ProtocolIE_Container_8807P42_tags_85)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P42_tags_85[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P42_tags_85,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P42_tags_85)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P42_tags_85[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P42_constr_85, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P42_85,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P42_specs_85	/* Additional specs */
};

asn_TYPE_member_t asn_MBR_ProtocolIE_Container_8807P43_87[] = {
	{ 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_8807P43_tags_87[] = {
	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
};
asn_SET_OF_specifics_t asn_SPC_ProtocolIE_Container_8807P43_specs_87 = {
	sizeof(struct ProtocolIE_Container_8807P43),
	offsetof(struct ProtocolIE_Container_8807P43, _asn_ctx),
	0,	/* XER encoding is XMLDelimitedItemList */
};
asn_TYPE_descriptor_t asn_DEF_ProtocolIE_Container_8807P43 = {
	"ProtocolIE-Container",
	"ProtocolIE-Container",
	&asn_OP_SEQUENCE_OF,
	asn_DEF_ProtocolIE_Container_8807P43_tags_87,
	sizeof(asn_DEF_ProtocolIE_Container_8807P43_tags_87)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P43_tags_87[0]), /* 1 */
	asn_DEF_ProtocolIE_Container_8807P43_tags_87,	/* Same as above */
	sizeof(asn_DEF_ProtocolIE_Container_8807P43_tags_87)
		/sizeof(asn_DEF_ProtocolIE_Container_8807P43_tags_87[0]), /* 1 */
	{ 0, &asn_PER_type_ProtocolIE_Container_8807P43_constr_87, SEQUENCE_OF_constraint },
	asn_MBR_ProtocolIE_Container_8807P43_87,
	1,	/* Single element */
	&asn_SPC_ProtocolIE_Container_8807P43_specs_87	/* Additional specs */
};

