diff --git a/3rdparty/libe2ap/ProtocolExtensionContainer.c b/3rdparty/libe2ap/ProtocolExtensionContainer.c
new file mode 100644
index 0000000..325a040
--- /dev/null
+++ b/3rdparty/libe2ap/ProtocolExtensionContainer.c
@@ -0,0 +1,3050 @@
+/*
+ * 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 "ProtocolExtensionContainer.h"
+
+#include "ProtocolExtensionField.h"
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P0_constr_1 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P1_constr_3 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P2_constr_5 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P3_constr_7 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P4_constr_9 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P5_constr_11 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P6_constr_13 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P7_constr_15 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P8_constr_17 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P9_constr_19 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P10_constr_21 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P11_constr_23 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P12_constr_25 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P13_constr_27 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P14_constr_29 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P15_constr_31 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P16_constr_33 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P17_constr_35 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P18_constr_37 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P19_constr_39 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P20_constr_41 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P21_constr_43 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P22_constr_45 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P23_constr_47 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P24_constr_49 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P25_constr_51 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P26_constr_53 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P27_constr_55 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P28_constr_57 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P29_constr_59 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P30_constr_61 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P31_constr_63 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P32_constr_65 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P33_constr_67 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P34_constr_69 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P35_constr_71 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P36_constr_73 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P37_constr_75 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P38_constr_77 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P39_constr_79 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P40_constr_81 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P41_constr_83 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P42_constr_85 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P43_constr_87 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P44_constr_89 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P45_constr_91 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P46_constr_93 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P47_constr_95 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P48_constr_97 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P49_constr_99 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P50_constr_101 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P51_constr_103 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P52_constr_105 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P53_constr_107 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P54_constr_109 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P55_constr_111 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P56_constr_113 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P57_constr_115 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P58_constr_117 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P59_constr_119 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P60_constr_121 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P61_constr_123 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P62_constr_125 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P63_constr_127 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P64_constr_129 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P65_constr_131 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P66_constr_133 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P67_constr_135 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P68_constr_137 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P69_constr_139 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P70_constr_141 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P71_constr_143 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P72_constr_145 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P73_constr_147 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P74_constr_149 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_per_constraints_t asn_PER_type_ProtocolExtensionContainer_8858P75_constr_151 CC_NOTUSED = {
+	{ APC_UNCONSTRAINED,	-1, -1,  0,  0 },
+	{ APC_CONSTRAINED,	 16,  16,  1,  65535 }	/* (SIZE(1..65535)) */,
+	0, 0	/* No PER value map */
+};
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P0_1[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CellInformation_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P0_tags_1[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P0_specs_1 = {
+	sizeof(struct ProtocolExtensionContainer_8858P0),
+	offsetof(struct ProtocolExtensionContainer_8858P0, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P0 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P0_tags_1,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P0_tags_1,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P0_tags_1[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P0_constr_1, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P0_1,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P0_specs_1	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P1_3[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ServedCellsToModify_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P1_tags_3[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P1_specs_3 = {
+	sizeof(struct ProtocolExtensionContainer_8858P1),
+	offsetof(struct ProtocolExtensionContainer_8858P1, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P1 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P1_tags_3,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P1_tags_3,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P1_tags_3[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P1_constr_3, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P1_3,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P1_specs_3	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P2_5[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CellToReport_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P2_tags_5[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P2_specs_5 = {
+	sizeof(struct ProtocolExtensionContainer_8858P2),
+	offsetof(struct ProtocolExtensionContainer_8858P2, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P2 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P2_tags_5,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P2_tags_5,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P2_tags_5[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P2_constr_5, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P2_5,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P2_specs_5	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P3_7[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_MeasurementInitiationResult_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P3_tags_7[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P3_specs_7 = {
+	sizeof(struct ProtocolExtensionContainer_8858P3),
+	offsetof(struct ProtocolExtensionContainer_8858P3, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P3 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P3_tags_7,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P3_tags_7,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P3_tags_7[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P3_constr_7, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P3_7,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P3_specs_7	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P4_9[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_MeasurementFailureCause_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P4_tags_9[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P4_specs_9 = {
+	sizeof(struct ProtocolExtensionContainer_8858P4),
+	offsetof(struct ProtocolExtensionContainer_8858P4, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P4 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P4_tags_9,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P4_tags_9,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P4_tags_9[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P4_constr_9, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P4_9,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P4_specs_9	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P5_11[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CompleteFailureCauseInformation_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P5_tags_11[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P5_specs_11 = {
+	sizeof(struct ProtocolExtensionContainer_8858P5),
+	offsetof(struct ProtocolExtensionContainer_8858P5, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P5 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P5_tags_11,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P5_tags_11,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P5_tags_11[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P5_constr_11, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P5_11,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P5_specs_11	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P6_13[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CellMeasurementResult_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P6_tags_13[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P6_specs_13 = {
+	sizeof(struct ProtocolExtensionContainer_8858P6),
+	offsetof(struct ProtocolExtensionContainer_8858P6, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P6 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P6_tags_13,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P6_tags_13,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P6_tags_13[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P6_constr_13, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P6_13,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P6_specs_13	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P7_15[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ResponseInformationSeNBReconfComp_SuccessItemExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P7_tags_15[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P7_specs_15 = {
+	sizeof(struct ProtocolExtensionContainer_8858P7),
+	offsetof(struct ProtocolExtensionContainer_8858P7, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P7 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P7_tags_15,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P7_tags_15,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P7_tags_15[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P7_constr_15, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P7_15,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P7_specs_15	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P8_17[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ResponseInformationSeNBReconfComp_RejectByMeNBItemExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P8_tags_17[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P8_specs_17 = {
+	sizeof(struct ProtocolExtensionContainer_8858P8),
+	offsetof(struct ProtocolExtensionContainer_8858P8, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P8 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P8_tags_17,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P8_tags_17,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P8_tags_17[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P8_constr_17, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P8_17,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P8_specs_17	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P9_19[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ServedEUTRAcellsENDCX2Management_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P9_tags_19[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P9_specs_19 = {
+	sizeof(struct ProtocolExtensionContainer_8858P9),
+	offsetof(struct ProtocolExtensionContainer_8858P9, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P9 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P9_tags_19,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P9_tags_19,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P9_tags_19[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P9_constr_19, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P9_19,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P9_specs_19	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P10_21[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_En_gNBServedCells_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P10_tags_21[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P10_specs_21 = {
+	sizeof(struct ProtocolExtensionContainer_8858P10),
+	offsetof(struct ProtocolExtensionContainer_8858P10, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P10 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P10_tags_21,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P10_tags_21,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P10_tags_21[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P10_constr_21, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P10_21,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P10_specs_21	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P11_23[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ServedNRCell_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P11_tags_23[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P11_specs_23 = {
+	sizeof(struct ProtocolExtensionContainer_8858P11),
+	offsetof(struct ProtocolExtensionContainer_8858P11, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P11 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P11_tags_23,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P11_tags_23,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P11_tags_23[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P11_constr_23, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P11_23,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P11_specs_23	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P12_25[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_FDD_InfoServedNRCell_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P12_tags_25[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P12_specs_25 = {
+	sizeof(struct ProtocolExtensionContainer_8858P12),
+	offsetof(struct ProtocolExtensionContainer_8858P12, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P12 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P12_tags_25,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P12_tags_25,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P12_tags_25[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P12_constr_25, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P12_25,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P12_specs_25	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P13_27[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_FDD_InfoNeighbourServedNRCell_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P13_tags_27[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P13_specs_27 = {
+	sizeof(struct ProtocolExtensionContainer_8858P13),
+	offsetof(struct ProtocolExtensionContainer_8858P13, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P13 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P13_tags_27,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P13_tags_27,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P13_tags_27[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P13_constr_27, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P13_27,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P13_specs_27	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P14_29[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_TDD_InfoServedNRCell_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P14_tags_29[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P14_specs_29 = {
+	sizeof(struct ProtocolExtensionContainer_8858P14),
+	offsetof(struct ProtocolExtensionContainer_8858P14, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P14 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P14_tags_29,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P14_tags_29,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P14_tags_29[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P14_constr_29, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P14_29,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P14_specs_29	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P15_31[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_TDD_InfoNeighbourServedNRCell_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P15_tags_31[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P15_specs_31 = {
+	sizeof(struct ProtocolExtensionContainer_8858P15),
+	offsetof(struct ProtocolExtensionContainer_8858P15, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P15 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P15_tags_31,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P15_tags_31,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P15_tags_31[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P15_constr_31, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P15_31,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P15_specs_31	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P16_33[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_NRNeighbour_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P16_tags_33[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P16_specs_33 = {
+	sizeof(struct ProtocolExtensionContainer_8858P16),
+	offsetof(struct ProtocolExtensionContainer_8858P16, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P16 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P16_tags_33,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P16_tags_33,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P16_tags_33[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P16_constr_33, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P16_33,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P16_specs_33	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P17_35[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_Limited_list_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P17_tags_35[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P17_specs_35 = {
+	sizeof(struct ProtocolExtensionContainer_8858P17),
+	offsetof(struct ProtocolExtensionContainer_8858P17, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P17 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P17_tags_35,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P17_tags_35,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P17_tags_35[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P17_constr_35, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P17_35,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P17_specs_35	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P18_37[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ServedEUTRAcellsToModifyListENDCConfUpd_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P18_tags_37[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P18_specs_37 = {
+	sizeof(struct ProtocolExtensionContainer_8858P18),
+	offsetof(struct ProtocolExtensionContainer_8858P18, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P18 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P18_tags_37,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P18_tags_37,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P18_tags_37[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P18_constr_37, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P18_37,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P18_specs_37	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P19_39[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ServedNRCellsToModify_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P19_tags_39[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P19_specs_39 = {
+	sizeof(struct ProtocolExtensionContainer_8858P19),
+	offsetof(struct ProtocolExtensionContainer_8858P19, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P19 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P19_tags_39,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P19_tags_39,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P19_tags_39[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P19_constr_39, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P19_39,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P19_specs_39	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P20_41[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ABSInformationFDD_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P20_tags_41[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P20_specs_41 = {
+	sizeof(struct ProtocolExtensionContainer_8858P20),
+	offsetof(struct ProtocolExtensionContainer_8858P20, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P20 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P20_tags_41,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P20_tags_41,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P20_tags_41[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P20_constr_41, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P20_41,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P20_specs_41	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P21_43[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ABSInformationTDD_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P21_tags_43[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P21_specs_43 = {
+	sizeof(struct ProtocolExtensionContainer_8858P21),
+	offsetof(struct ProtocolExtensionContainer_8858P21, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P21 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P21_tags_43,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P21_tags_43,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P21_tags_43[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P21_constr_43, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P21_43,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P21_specs_43	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P22_45[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ABS_Status_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P22_tags_45[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P22_specs_45 = {
+	sizeof(struct ProtocolExtensionContainer_8858P22),
+	offsetof(struct ProtocolExtensionContainer_8858P22, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P22 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P22_tags_45,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P22_tags_45,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P22_tags_45[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P22_constr_45, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P22_45,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P22_specs_45	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P23_47[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_AdditionalSpecialSubframe_Info_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P23_tags_47[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P23_specs_47 = {
+	sizeof(struct ProtocolExtensionContainer_8858P23),
+	offsetof(struct ProtocolExtensionContainer_8858P23, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P23 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P23_tags_47,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P23_tags_47,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P23_tags_47[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P23_constr_47, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P23_47,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P23_specs_47	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P24_49[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_AdditionalSpecialSubframeExtension_Info_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P24_tags_49[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P24_specs_49 = {
+	sizeof(struct ProtocolExtensionContainer_8858P24),
+	offsetof(struct ProtocolExtensionContainer_8858P24, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P24 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P24_tags_49,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P24_tags_49,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P24_tags_49[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P24_constr_49, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P24_49,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P24_specs_49	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P25_51[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CellBasedQMC_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P25_tags_51[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P25_specs_51 = {
+	sizeof(struct ProtocolExtensionContainer_8858P25),
+	offsetof(struct ProtocolExtensionContainer_8858P25, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P25 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P25_tags_51,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P25_tags_51,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P25_tags_51[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P25_constr_51, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P25_51,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P25_specs_51	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P26_53[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CellReplacingInfo_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P26_tags_53[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P26_specs_53 = {
+	sizeof(struct ProtocolExtensionContainer_8858P26),
+	offsetof(struct ProtocolExtensionContainer_8858P26, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P26 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P26_tags_53,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P26_tags_53,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P26_tags_53[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P26_constr_53, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P26_53,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P26_specs_53	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P27_55[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CoMPHypothesisSetItem_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P27_tags_55[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P27_specs_55 = {
+	sizeof(struct ProtocolExtensionContainer_8858P27),
+	offsetof(struct ProtocolExtensionContainer_8858P27, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P27 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P27_tags_55,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P27_tags_55,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P27_tags_55[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P27_constr_55, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P27_55,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P27_specs_55	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P28_57[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CoMPInformation_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P28_tags_57[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P28_specs_57 = {
+	sizeof(struct ProtocolExtensionContainer_8858P28),
+	offsetof(struct ProtocolExtensionContainer_8858P28, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P28 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P28_tags_57,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P28_tags_57,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P28_tags_57[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P28_constr_57, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P28_57,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P28_specs_57	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P29_59[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CoMPInformationItem_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P29_tags_59[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P29_specs_59 = {
+	sizeof(struct ProtocolExtensionContainer_8858P29),
+	offsetof(struct ProtocolExtensionContainer_8858P29, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P29 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P29_tags_59,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P29_tags_59,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P29_tags_59[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P29_constr_59, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P29_59,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P29_specs_59	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P30_61[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CoMPInformationStartTime_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P30_tags_61[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P30_specs_61 = {
+	sizeof(struct ProtocolExtensionContainer_8858P30),
+	offsetof(struct ProtocolExtensionContainer_8858P30, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P30 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P30_tags_61,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P30_tags_61,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P30_tags_61[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P30_constr_61, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P30_61,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P30_specs_61	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P31_63[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CompositeAvailableCapacity_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P31_tags_63[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P31_specs_63 = {
+	sizeof(struct ProtocolExtensionContainer_8858P31),
+	offsetof(struct ProtocolExtensionContainer_8858P31, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P31 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P31_tags_63,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P31_tags_63,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P31_tags_63[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P31_constr_63, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P31_63,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P31_specs_63	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P32_65[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CompositeAvailableCapacityGroup_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P32_tags_65[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P32_specs_65 = {
+	sizeof(struct ProtocolExtensionContainer_8858P32),
+	offsetof(struct ProtocolExtensionContainer_8858P32, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P32 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P32_tags_65,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P32_tags_65,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P32_tags_65[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P32_constr_65, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P32_65,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P32_specs_65	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P33_67[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CriticalityDiagnostics_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P33_tags_67[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P33_specs_67 = {
+	sizeof(struct ProtocolExtensionContainer_8858P33),
+	offsetof(struct ProtocolExtensionContainer_8858P33, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P33 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P33_tags_67,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P33_tags_67,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P33_tags_67[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P33_constr_67, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P33_67,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P33_specs_67	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P34_69[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CriticalityDiagnostics_IE_List_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P34_tags_69[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P34_specs_69 = {
+	sizeof(struct ProtocolExtensionContainer_8858P34),
+	offsetof(struct ProtocolExtensionContainer_8858P34, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P34 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P34_tags_69,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P34_tags_69,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P34_tags_69[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P34_constr_69, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P34_69,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P34_specs_69	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P35_71[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CSIReportList_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P35_tags_71[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P35_specs_71 = {
+	sizeof(struct ProtocolExtensionContainer_8858P35),
+	offsetof(struct ProtocolExtensionContainer_8858P35, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P35 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P35_tags_71,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P35_tags_71,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P35_tags_71[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P35_constr_71, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P35_71,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P35_specs_71	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P36_73[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CSIReportPerCSIProcess_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P36_tags_73[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P36_specs_73 = {
+	sizeof(struct ProtocolExtensionContainer_8858P36),
+	offsetof(struct ProtocolExtensionContainer_8858P36, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P36 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P36_tags_73,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P36_tags_73,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P36_tags_73[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P36_constr_73, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P36_73,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P36_specs_73	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P37_75[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_CSIReportPerCSIProcessItem_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P37_tags_75[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P37_specs_75 = {
+	sizeof(struct ProtocolExtensionContainer_8858P37),
+	offsetof(struct ProtocolExtensionContainer_8858P37, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P37 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P37_tags_75,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P37_tags_75,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P37_tags_75[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P37_constr_75, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P37_75,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P37_specs_75	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P38_77[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_DynamicNAICSInformation_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P38_tags_77[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P38_specs_77 = {
+	sizeof(struct ProtocolExtensionContainer_8858P38),
+	offsetof(struct ProtocolExtensionContainer_8858P38, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P38 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P38_tags_77,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P38_tags_77,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P38_tags_77[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P38_constr_77, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P38_77,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P38_specs_77	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P39_79[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ECGI_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P39_tags_79[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P39_specs_79 = {
+	sizeof(struct ProtocolExtensionContainer_8858P39),
+	offsetof(struct ProtocolExtensionContainer_8858P39, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P39 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P39_tags_79,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P39_tags_79,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P39_tags_79[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P39_constr_79, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P39_79,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P39_specs_79	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P40_81[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_EnhancedRNTP_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P40_tags_81[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P40_specs_81 = {
+	sizeof(struct ProtocolExtensionContainer_8858P40),
+	offsetof(struct ProtocolExtensionContainer_8858P40, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P40 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P40_tags_81,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P40_tags_81,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P40_tags_81[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P40_constr_81, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P40_81,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P40_specs_81	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P41_83[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_EnhancedRNTPStartTime_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P41_tags_83[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P41_specs_83 = {
+	sizeof(struct ProtocolExtensionContainer_8858P41),
+	offsetof(struct ProtocolExtensionContainer_8858P41, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P41 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P41_tags_83,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P41_tags_83,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P41_tags_83[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P41_constr_83, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P41_83,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P41_specs_83	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P42_85[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ExtendedULInterferenceOverloadInfo_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P42_tags_85[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P42_specs_85 = {
+	sizeof(struct ProtocolExtensionContainer_8858P42),
+	offsetof(struct ProtocolExtensionContainer_8858P42, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P42 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P42_tags_85,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P42_tags_85,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P42_tags_85[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P42_constr_85, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P42_85,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P42_specs_85	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P43_87[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_FDD_Info_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P43_tags_87[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P43_specs_87 = {
+	sizeof(struct ProtocolExtensionContainer_8858P43),
+	offsetof(struct ProtocolExtensionContainer_8858P43, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P43 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P43_tags_87,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P43_tags_87,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P43_tags_87[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P43_constr_87, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P43_87,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P43_specs_87	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P44_89[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_FreqBandNrItem_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P44_tags_89[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P44_specs_89 = {
+	sizeof(struct ProtocolExtensionContainer_8858P44),
+	offsetof(struct ProtocolExtensionContainer_8858P44, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P44 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P44_tags_89,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P44_tags_89,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P44_tags_89[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P44_constr_89, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P44_89,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P44_specs_89	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P45_91[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_GlobalENB_ID_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P45_tags_91[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P45_specs_91 = {
+	sizeof(struct ProtocolExtensionContainer_8858P45),
+	offsetof(struct ProtocolExtensionContainer_8858P45, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P45 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P45_tags_91,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P45_tags_91,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P45_tags_91[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P45_constr_91, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P45_91,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P45_specs_91	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P46_93[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_GlobalGNB_ID_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P46_tags_93[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P46_specs_93 = {
+	sizeof(struct ProtocolExtensionContainer_8858P46),
+	offsetof(struct ProtocolExtensionContainer_8858P46, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P46 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P46_tags_93,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P46_tags_93,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P46_tags_93[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P46_constr_93, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P46_93,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P46_specs_93	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P47_95[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_GU_Group_ID_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P47_tags_95[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P47_specs_95 = {
+	sizeof(struct ProtocolExtensionContainer_8858P47),
+	offsetof(struct ProtocolExtensionContainer_8858P47, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P47 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P47_tags_95,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P47_tags_95,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P47_tags_95[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P47_constr_95, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P47_95,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P47_specs_95	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P48_97[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_HWLoadIndicator_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P48_tags_97[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P48_specs_97 = {
+	sizeof(struct ProtocolExtensionContainer_8858P48),
+	offsetof(struct ProtocolExtensionContainer_8858P48, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P48 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P48_tags_97,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P48_tags_97,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P48_tags_97[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P48_constr_97, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P48_97,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P48_specs_97	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P49_99[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_MBSFN_Subframe_Info_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P49_tags_99[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P49_specs_99 = {
+	sizeof(struct ProtocolExtensionContainer_8858P49),
+	offsetof(struct ProtocolExtensionContainer_8858P49, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P49 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P49_tags_99,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P49_tags_99,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P49_tags_99[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P49_constr_99, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P49_99,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P49_specs_99	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P50_101[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_BandInfo_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P50_tags_101[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P50_specs_101 = {
+	sizeof(struct ProtocolExtensionContainer_8858P50),
+	offsetof(struct ProtocolExtensionContainer_8858P50, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P50 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P50_tags_101,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P50_tags_101,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P50_tags_101[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P50_constr_101, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P50_101,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P50_specs_101	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P51_103[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_Neighbour_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P51_tags_103[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P51_specs_103 = {
+	sizeof(struct ProtocolExtensionContainer_8858P51),
+	offsetof(struct ProtocolExtensionContainer_8858P51, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P51 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P51_tags_103,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P51_tags_103,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P51_tags_103[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P51_constr_103, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P51_103,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P51_specs_103	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P52_105[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_NRFreqInfo_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P52_tags_105[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P52_specs_105 = {
+	sizeof(struct ProtocolExtensionContainer_8858P52),
+	offsetof(struct ProtocolExtensionContainer_8858P52, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P52 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P52_tags_105,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P52_tags_105,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P52_tags_105[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P52_constr_105, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P52_105,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P52_specs_105	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P53_107[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_NRCGI_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P53_tags_107[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P53_specs_107 = {
+	sizeof(struct ProtocolExtensionContainer_8858P53),
+	offsetof(struct ProtocolExtensionContainer_8858P53, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P53 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P53_tags_107,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P53_tags_107,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P53_tags_107[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P53_constr_107, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P53_107,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P53_specs_107	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P54_109[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_NR_TxBW_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P54_tags_109[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P54_specs_109 = {
+	sizeof(struct ProtocolExtensionContainer_8858P54),
+	offsetof(struct ProtocolExtensionContainer_8858P54, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P54 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P54_tags_109,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P54_tags_109,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P54_tags_109[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P54_constr_109, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P54_109,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P54_specs_109	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P55_111[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_PRACH_Configuration_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P55_tags_111[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P55_specs_111 = {
+	sizeof(struct ProtocolExtensionContainer_8858P55),
+	offsetof(struct ProtocolExtensionContainer_8858P55, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P55 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P55_tags_111,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P55_tags_111,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P55_tags_111[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P55_constr_111, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P55_111,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P55_specs_111	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P56_113[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ProtectedEUTRAResourceIndication_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P56_tags_113[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P56_specs_113 = {
+	sizeof(struct ProtocolExtensionContainer_8858P56),
+	offsetof(struct ProtocolExtensionContainer_8858P56, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P56 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P56_tags_113,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P56_tags_113,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P56_tags_113[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P56_constr_113, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P56_113,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P56_specs_113	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P57_115[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ProtectedFootprintTimePattern_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P57_tags_115[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P57_specs_115 = {
+	sizeof(struct ProtocolExtensionContainer_8858P57),
+	offsetof(struct ProtocolExtensionContainer_8858P57, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P57 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P57_tags_115,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P57_tags_115,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P57_tags_115[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P57_constr_115, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P57_115,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P57_specs_115	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P58_117[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ProtectedResourceList_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P58_tags_117[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P58_specs_117 = {
+	sizeof(struct ProtocolExtensionContainer_8858P58),
+	offsetof(struct ProtocolExtensionContainer_8858P58, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P58 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P58_tags_117,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P58_tags_117,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P58_tags_117[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P58_constr_117, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P58_117,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P58_specs_117	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P59_119[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RadioResourceStatus_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P59_tags_119[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P59_specs_119 = {
+	sizeof(struct ProtocolExtensionContainer_8858P59),
+	offsetof(struct ProtocolExtensionContainer_8858P59, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P59 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P59_tags_119,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P59_tags_119,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P59_tags_119[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P59_constr_119, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P59_119,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P59_specs_119	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P60_121[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RelativeNarrowbandTxPower_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P60_tags_121[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P60_specs_121 = {
+	sizeof(struct ProtocolExtensionContainer_8858P60),
+	offsetof(struct ProtocolExtensionContainer_8858P60, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P60 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P60_tags_121,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P60_tags_121,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P60_tags_121[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P60_constr_121, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P60_121,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P60_specs_121	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P61_123[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RSRPMeasurementResult_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P61_tags_123[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P61_specs_123 = {
+	sizeof(struct ProtocolExtensionContainer_8858P61),
+	offsetof(struct ProtocolExtensionContainer_8858P61, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P61 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P61_tags_123,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P61_tags_123,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P61_tags_123[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P61_constr_123, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P61_123,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P61_specs_123	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P62_125[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_RSRPMRList_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P62_tags_125[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P62_specs_125 = {
+	sizeof(struct ProtocolExtensionContainer_8858P62),
+	offsetof(struct ProtocolExtensionContainer_8858P62, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P62 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P62_tags_125,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P62_tags_125,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P62_tags_125[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P62_constr_125, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P62_125,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P62_specs_125	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P63_127[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_S1TNLLoadIndicator_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P63_tags_127[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P63_specs_127 = {
+	sizeof(struct ProtocolExtensionContainer_8858P63),
+	offsetof(struct ProtocolExtensionContainer_8858P63, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P63 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P63_tags_127,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P63_tags_127,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P63_tags_127[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P63_constr_127, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P63_127,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P63_specs_127	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P64_129[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ServedCell_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P64_tags_129[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P64_specs_129 = {
+	sizeof(struct ProtocolExtensionContainer_8858P64),
+	offsetof(struct ProtocolExtensionContainer_8858P64, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P64 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P64_tags_129,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P64_tags_129,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P64_tags_129[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P64_constr_129, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P64_129,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P64_specs_129	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P65_131[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_ServedCell_Information_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P65_tags_131[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P65_specs_131 = {
+	sizeof(struct ProtocolExtensionContainer_8858P65),
+	offsetof(struct ProtocolExtensionContainer_8858P65, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P65 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P65_tags_131,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P65_tags_131,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P65_tags_131[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P65_constr_131, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P65_131,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P65_specs_131	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P66_133[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_SpecialSubframe_Info_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P66_tags_133[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P66_specs_133 = {
+	sizeof(struct ProtocolExtensionContainer_8858P66),
+	offsetof(struct ProtocolExtensionContainer_8858P66, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P66 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P66_tags_133,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P66_tags_133,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P66_tags_133[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P66_constr_133, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P66_133,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P66_specs_133	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P67_135[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_SubbandCQI_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P67_tags_135[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P67_specs_135 = {
+	sizeof(struct ProtocolExtensionContainer_8858P67),
+	offsetof(struct ProtocolExtensionContainer_8858P67, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P67 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P67_tags_135,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P67_tags_135,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P67_tags_135[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P67_constr_135, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P67_135,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P67_specs_135	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P68_137[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_SubbandCQIItem_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P68_tags_137[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P68_specs_137 = {
+	sizeof(struct ProtocolExtensionContainer_8858P68),
+	offsetof(struct ProtocolExtensionContainer_8858P68, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P68 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P68_tags_137,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P68_tags_137,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P68_tags_137[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P68_constr_137, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P68_137,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P68_specs_137	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P69_139[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_SULInformation_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P69_tags_139[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P69_specs_139 = {
+	sizeof(struct ProtocolExtensionContainer_8858P69),
+	offsetof(struct ProtocolExtensionContainer_8858P69, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P69 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P69_tags_139,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P69_tags_139,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P69_tags_139[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P69_constr_139, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P69_139,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P69_specs_139	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P70_141[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_SupportedSULFreqBandItem_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P70_tags_141[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P70_specs_141 = {
+	sizeof(struct ProtocolExtensionContainer_8858P70),
+	offsetof(struct ProtocolExtensionContainer_8858P70, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P70 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P70_tags_141,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P70_tags_141,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P70_tags_141[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P70_constr_141, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P70_141,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P70_specs_141	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P71_143[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_TDD_Info_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P71_tags_143[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P71_specs_143 = {
+	sizeof(struct ProtocolExtensionContainer_8858P71),
+	offsetof(struct ProtocolExtensionContainer_8858P71, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P71 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P71_tags_143,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P71_tags_143,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P71_tags_143[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P71_constr_143, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P71_143,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P71_specs_143	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P72_145[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_UL_HighInterferenceIndicationInfo_Item_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P72_tags_145[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P72_specs_145 = {
+	sizeof(struct ProtocolExtensionContainer_8858P72),
+	offsetof(struct ProtocolExtensionContainer_8858P72, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P72 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P72_tags_145,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P72_tags_145,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P72_tags_145[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P72_constr_145, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P72_145,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P72_specs_145	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P73_147[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_UsableABSInformationFDD_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P73_tags_147[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P73_specs_147 = {
+	sizeof(struct ProtocolExtensionContainer_8858P73),
+	offsetof(struct ProtocolExtensionContainer_8858P73, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P73 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P73_tags_147,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P73_tags_147,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P73_tags_147[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P73_constr_147, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P73_147,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P73_specs_147	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P74_149[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_UsableABSInformationTDD_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P74_tags_149[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P74_specs_149 = {
+	sizeof(struct ProtocolExtensionContainer_8858P74),
+	offsetof(struct ProtocolExtensionContainer_8858P74, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P74 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P74_tags_149,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P74_tags_149,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P74_tags_149[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P74_constr_149, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P74_149,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P74_specs_149	/* Additional specs */
+};
+
+asn_TYPE_member_t asn_MBR_ProtocolExtensionContainer_8858P75_151[] = {
+	{ ATF_POINTER, 0, 0,
+		(ASN_TAG_CLASS_UNIVERSAL | (16 << 2)),
+		0,
+		&asn_DEF_WidebandCQI_ExtIEs,
+		0,
+		{ 0, 0, 0 },
+		0, 0, /* No default value */
+		""
+		},
+};
+static const ber_tlv_tag_t asn_DEF_ProtocolExtensionContainer_8858P75_tags_151[] = {
+	(ASN_TAG_CLASS_UNIVERSAL | (16 << 2))
+};
+asn_SET_OF_specifics_t asn_SPC_ProtocolExtensionContainer_8858P75_specs_151 = {
+	sizeof(struct ProtocolExtensionContainer_8858P75),
+	offsetof(struct ProtocolExtensionContainer_8858P75, _asn_ctx),
+	0,	/* XER encoding is XMLDelimitedItemList */
+};
+asn_TYPE_descriptor_t asn_DEF_ProtocolExtensionContainer_8858P75 = {
+	"ProtocolExtensionContainer",
+	"ProtocolExtensionContainer",
+	&asn_OP_SEQUENCE_OF,
+	asn_DEF_ProtocolExtensionContainer_8858P75_tags_151,
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151[0]), /* 1 */
+	asn_DEF_ProtocolExtensionContainer_8858P75_tags_151,	/* Same as above */
+	sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151)
+		/sizeof(asn_DEF_ProtocolExtensionContainer_8858P75_tags_151[0]), /* 1 */
+	{ 0, &asn_PER_type_ProtocolExtensionContainer_8858P75_constr_151, SEQUENCE_OF_constraint },
+	asn_MBR_ProtocolExtensionContainer_8858P75_151,
+	1,	/* Single element */
+	&asn_SPC_ProtocolExtensionContainer_8858P75_specs_151	/* Additional specs */
+};
+
