eSIM RSP 测试用例对比站

人工切片(-man) ↔ Cas 盲生成(-cas)· 真机真卡执行证据对照

源码对照:4.2.14.2.1

ES10b 列出通知 / TC_eUICC_ES10b.ListNotification

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
2496 行 / 138808 字符 / gb18030
-cas 入口
TC_eUICC_ES10b_ListNotification/Import/TC_eUICC_ES10b_ListNotification.js
2830 行 / 231323 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js2496 行 / 138808 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification + TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification + TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification + TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification + TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address + TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications + TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications + TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available (extracted verbatim)
2
3function TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification()
4{
5	tracenamestr = "测试目的:列举安装通知";
6	curDis.TraceStart(sno++,tracenamestr);
7
8	curDis.TestStepStart2(stno++,"复位;");
9	ResetCard();
10	
11	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
12	TS_TERMINAL_CAPABILITY_cmd();
13	
14	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
15	TS_MANAGE_CHANNEL_OPEN();
16	
17	curLogicChannel = 1;
18	
19	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
20	TS_SELECT("Select ISD",ISD_R_AID,"9000");
21	
22	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
23	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
24	Profile_load_procedure.ES10b_ListNotification();
25	
26	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
27	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
28	Profile_load_procedure.ES10b_GetEUICCInfo1();
29	
30	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
31	Profile_load_procedure.ES10b_GetEUICCChallenge();
32
33	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
34	Profile_load_procedure.ES10b_AuthenticateServer();
35	
36	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
37	Profile_load_procedure.ES10b_PrepareDownload();
38	
39	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
40	Profile_load_procedure.ES10b_GetEID();
41	
42	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");	
43	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
44	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
45	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
46	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
47	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
48			
49	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
50	Profile_load_procedure.ES10b_ListNotification("04F0");
51	try
52	{		
53		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
54		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
55		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
56	
57		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
58		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
59		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
60	}catch(e){
61		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
62	}
63	
64	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
65	Profile_load_procedure.ES10b_ListNotification();
66	try
67	{		
68		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
69		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
70		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
71		
72		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
73		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
74		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
75	}catch(e){
76		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
77	}
78	
79	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
80	Profile_load_procedure.ES10b_ListNotification("");
81	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
82	
83	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
84	Profile_load_procedure.ES10b_ListNotification("0780");
85	try
86	{		
87		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
88		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
89		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
90		
91		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
92		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
93		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
94	}catch(e){
95		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
96	}
97	
98	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
99	Profile_load_procedure.ES10b_ListNotification("0640");
100	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
101	
102	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
103	Profile_load_procedure.ES10b_ListNotification("0520");
104	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
105	
106	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
107	Profile_load_procedure.ES10b_ListNotification("0410");
108	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
109	
110	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
111	Profile_load_procedure.ES10b_ListNotification("06C0");
112	try
113	{		
114		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
115		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
116		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
117	
118		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
119		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
120		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
121	}catch(e){
122		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
123	}
124	
125	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
126	Profile_load_procedure.ES10b_ListNotification("0430");
127	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
128	
129	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
130	Profile_load_procedure.ES10b_ListNotification("0560");
131	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
132	
133	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
134	Profile_load_procedure.ES10b_ListNotification("05E0");
135	try
136	{		
137		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
138		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
139		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
140	
141		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
142		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
143		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
144	}catch(e){
145		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
146	}
147	
148	RecoverCard();
149}
150
151function TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification()
152{
153		
154	tracenamestr = "测试目的:列举激活profile通知";
155	curDis.TraceStart(sno++,tracenamestr);
156
157	curDis.TestStepStart2(stno++,"复位;");
158	ResetCard();
159	
160	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
161	TS_TERMINAL_CAPABILITY_cmd();
162	
163	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
164	TS_MANAGE_CHANNEL_OPEN();
165	
166	curLogicChannel = 1;
167	
168	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
169	TS_SELECT("Select ISD",ISD_R_AID,"9000");
170	
171	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
172	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
173	Profile_load_procedure.ES10b_ListNotification();
174	
175	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
176	for(var i=0;i<NotificationLen;i++)
177	{
178	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
179	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
180	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
181	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
182	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
183	}
184	
185	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
186	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
187
188	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
189	Profile_load_procedure.ES10b_GetEUICCInfo1();
190	
191	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
192	Profile_load_procedure.ES10b_GetEUICCChallenge();
193
194	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
195	Profile_load_procedure.ES10b_AuthenticateServer();
196	
197	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
198	Profile_load_procedure.ES10b_PrepareDownload();
199	
200	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
201	Profile_load_procedure.ES10b_GetEID();
202	
203	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
204	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
205	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
206	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
207	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
208	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
209			
210	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
211	Profile_load_procedure.ES10b_ListNotification();
212	try
213	{		
214		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
215		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
216		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
217	}catch(e){
218		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
219	}
220	
221	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
222	for(var i=0;i<NotificationLen;i++)
223	{
224	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
225	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
226	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
227	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
228	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
229	}
230	
231	stno = 1;
232	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
233	TS_SELECT("Select ISD",ISD_R_AID,"9000");
234	
235	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
236	var enableProRequest = new EnableProfileRequest();
237	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
238	enableProRequest.refreshFlag = "00";
239	enableProRequest.GenHexData();
240	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
241	
242	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
243	
244	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
245	var proInfoListRequest = new ProfileInfoListRequest();
246	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
247	proInfoListRequest.tagList = "5A4F9F70";
248	proInfoListRequest.GenHexData();
249	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
250
251	var proInfoListResponse = new  ProfileInfoListResponse();
252	proInfoListResponse.checkCardResDataFormat(respData);
253	
254	try
255	{
256		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
257		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
258		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
259	}catch(e){
260		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
261	}
262	
263	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
264	Profile_load_procedure.ES10b_ListNotification("04F0");
265	try
266	{		
267		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
268		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
269		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
270	}catch(e){
271		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
272	}
273	
274	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
275	Profile_load_procedure.ES10b_ListNotification();
276	try
277	{		
278		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
279		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
280		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
281	}catch(e){
282		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
283	}
284	
285	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
286	Profile_load_procedure.ES10b_ListNotification("");
287	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
288	
289	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
290	Profile_load_procedure.ES10b_ListNotification("0780");
291	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
292	
293	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
294	Profile_load_procedure.ES10b_ListNotification("0640");
295	try
296	{		
297		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
298		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
299		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
300	}catch(e){
301		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
302	}
303	
304	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
305	Profile_load_procedure.ES10b_ListNotification("0520");
306	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
307	
308	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
309	Profile_load_procedure.ES10b_ListNotification("0410");
310	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
311	
312	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
313	Profile_load_procedure.ES10b_ListNotification("06C0");
314	try
315	{		
316		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
317		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
318		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
319	}catch(e){
320		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
321	}
322	
323	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
324	Profile_load_procedure.ES10b_ListNotification("0430");
325	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
326	
327	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
328	Profile_load_procedure.ES10b_ListNotification("0560");
329	try
330	{		
331		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
332		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
333		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
334	}catch(e){
335		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
336	}
337	
338	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
339	Profile_load_procedure.ES10b_ListNotification("05E0");
340	try
341	{		
342		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
343		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
344		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
345	}catch(e){
346		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
347	}
348	
349	RecoverCard();
350}
351
352function TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification()
353{
354		
355	tracenamestr = "测试目的:列举去激活profile通知";
356	curDis.TraceStart(sno++,tracenamestr);
357
358	curDis.TestStepStart2(stno++,"复位;");
359	ResetCard();
360	
361	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
362	TS_TERMINAL_CAPABILITY_cmd();
363	
364	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
365	TS_MANAGE_CHANNEL_OPEN();
366	
367	curLogicChannel = 1;
368	
369	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
370	TS_SELECT("Select ISD",ISD_R_AID,"9000");
371	
372	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
373		
374	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
375	Profile_load_procedure.ES10b_ListNotification();
376	
377	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
378	for(var i=0;i<NotificationLen;i++)
379	{
380	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
381	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
382	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
383	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
384	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
385	}
386	
387	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
388	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
389	
390	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
391	Profile_load_procedure.ES10b_GetEUICCInfo1();
392
393	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
394	Profile_load_procedure.ES10b_GetEUICCChallenge();
395
396	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
397	Profile_load_procedure.ES10b_AuthenticateServer();
398	
399	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
400	Profile_load_procedure.ES10b_PrepareDownload();
401	
402	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
403	Profile_load_procedure.ES10b_GetEID();
404	
405	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
406	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
407	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
408	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
409	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
410	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
411			
412	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
413	
414	Profile_load_procedure.ES10b_ListNotification();
415	curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
416	curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
417	curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
418	
419	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
420	for(var i=0;i<NotificationLen;i++)
421	{
422	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
423	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
424	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
425	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
426	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
427	}
428	
429	stno = 1;
430	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
431	TS_SELECT("Select ISD",ISD_R_AID,"9000");
432	
433	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
434	var enableProRequest = new EnableProfileRequest();
435	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
436	enableProRequest.refreshFlag = "00";
437	enableProRequest.GenHexData();
438	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
439	
440	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
441	
442	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
443	var proInfoListRequest = new ProfileInfoListRequest();
444	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
445	proInfoListRequest.tagList = "5A4F9F70";
446	proInfoListRequest.GenHexData();
447	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
448	
449	
450	var proInfoListResponse = new  ProfileInfoListResponse();
451	proInfoListResponse.checkCardResDataFormat(respData);
452	
453	try
454	{
455		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
456		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
457		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
458	}catch(e){
459		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
460	}
461	
462	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
463	Profile_load_procedure.ES10b_ListNotification("04F0");
464	try
465	{		
466		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
467		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
468		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
469	}catch(e){
470		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
471	}
472	
473	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
474	Profile_load_procedure.ES10b_ListNotification();
475	try
476	{		
477		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
478		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
479		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
480	}catch(e){
481		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
482	}
483	
484	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
485	for(var i=0;i<NotificationLen;i++)
486	{
487	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
488	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
489	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
490	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
491	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
492	}
493
494	RecoverCard();
495	
496}
497
498function TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification()
499{
500		
501	tracenamestr = "测试目的:列举删除profile通知";
502	curDis.TraceStart(sno++,tracenamestr);
503
504	curDis.TestStepStart2(stno++,"复位;");
505	ResetCard();
506	
507	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
508	TS_TERMINAL_CAPABILITY_cmd();
509	
510	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
511	TS_MANAGE_CHANNEL_OPEN();
512	
513	curLogicChannel = 1;
514	
515	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
516	TS_SELECT("Select ISD",ISD_R_AID,"9000");
517	
518	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
519		
520	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
521	Profile_load_procedure.ES10b_ListNotification();
522	
523	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
524	for(var i=0;i<NotificationLen;i++)
525	{
526	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
527	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
528	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
529	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
530	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
531	}
532	
533	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
534	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
535	
536	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
537	Profile_load_procedure.ES10b_GetEUICCInfo1();
538
539	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
540	Profile_load_procedure.ES10b_GetEUICCChallenge();
541
542	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
543	Profile_load_procedure.ES10b_AuthenticateServer();
544	
545	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
546	Profile_load_procedure.ES10b_PrepareDownload();
547	
548	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
549	Profile_load_procedure.ES10b_GetEID();
550	
551	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
552	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
553	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
554	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
555	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
556	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
557			
558	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
559	Profile_load_procedure.ES10b_ListNotification();
560	try
561	{		
562		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
563		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
564		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
565	}catch(e){
566		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
567	}
568	
569	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
570	for(var i=0;i<NotificationLen;i++)
571	{
572	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
573	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
574	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
575	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
576	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
577	}
578	
579	stno = 1;
580	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
581	TS_SELECT("Select ISD",ISD_R_AID,"9000");
582	
583	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
584	var enableProRequest = new EnableProfileRequest();
585	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
586	enableProRequest.refreshFlag = "00";
587	enableProRequest.GenHexData();
588	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
589	
590	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
591	
592	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
593	var proInfoListRequest = new ProfileInfoListRequest();
594	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
595	proInfoListRequest.tagList = "5A4F9F70";
596	proInfoListRequest.GenHexData();
597	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
598	
599	var proInfoListResponse = new  ProfileInfoListResponse();
600	proInfoListResponse.checkCardResDataFormat(respData);
601	
602	try
603	{
604		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
605		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
606		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
607	}catch(e){
608		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
609	}
610	
611	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
612	Profile_load_procedure.ES10b_ListNotification("04F0");
613	try
614	{		
615		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
616		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
617		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
618	}catch(e){
619		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
620	}
621	
622	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
623	Profile_load_procedure.ES10b_ListNotification();
624	try
625	{		
626		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
627		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
628		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
629	}catch(e){
630		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
631	}
632	
633	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
634	for(var i=0;i<NotificationLen;i++)
635	{
636	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
637	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
638	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
639	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
640	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
641	}
642	
643	RecoverCard();
644}
645
646function TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address()
647{
648	if(!Card_Have_ECC_Cert)
649		return;
650	
651	//测试入口条件
652	if(!check_Applicability_of_tests_RSP_SGP23_test("C025"))
653		return;
654	
655	tracenamestr = "Remove Notification";
656	curDis.TraceStart(sno++,tracenamestr);
657
658	curDis.TestStepStart2(stno++,"复位;");
659	ResetCard();
660	
661	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
662	TS_TERMINAL_CAPABILITY_cmd();
663	
664	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
665	TS_MANAGE_CHANNEL_OPEN();
666	
667	curLogicChannel = 1;
668	
669	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
670	TS_SELECT("Select ISD",ISD_R_AID,"9000");
671	
672	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
673	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
674	Profile_load_procedure.ES10b_ListNotification();
675	
676	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
677	for(var i=0;i<NotificationLen;i++)
678	{
679	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
680	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
681	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
682	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
683	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
684	}
685	
686	tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. Do not remove the Notification";
687	curDis.TraceStart(sno++,tracenamestr);
688	
689	curLogicChannel = 0;
690
691	curDis.TestStepStart("复位;");
692	ResetCard();
693	
694	curDis.TestStepStart("读卡器向卡片发送Terminal Capability命令;");
695	TS_TERMINAL_CAPABILITY_cmd();
696	
697	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
698	TS_MANAGE_CHANNEL_OPEN();
699	
700	curLogicChannel = 1;
701	
702	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
703	TS_SELECT("Select ISD",ISD_R_AID,"9000");
704	
705	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
706	pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
707	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
708	
709	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
710	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
711	Profile_load_procedure.ES10b_GetEUICCInfo1();
712	
713	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
714	Profile_load_procedure.ES10b_GetEUICCChallenge();
715
716	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
717	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
718	Profile_load_procedure.ES10b_AuthenticateServer();
719	
720	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
721	Profile_load_procedure.ES10b_PrepareDownload();
722	
723	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
724	Profile_load_procedure.ES10b_GetEID();
725	
726	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
727	Profile_load_procedure.serviceProviderName = SP_NAME1;
728	Profile_load_procedure.profileName = NAME_OP_PROF1;
729	Profile_load_procedure.iconType = "01";
730	Profile_load_procedure.icon = ICON_OP_PROF1;
731	Profile_load_procedure.profileClass = "02";
732	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
733	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
734	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
735	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
736	Profile_load_procedure.mccMnc = MCC_MNC1;
737	
738	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
739	
740	tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL.Do not remove the Notification";
741	curDis.TraceStart(sno++,tracenamestr);
742	
743	curLogicChannel = 0;
744	
745	curDis.TestStepStart("eUICC卡片初始化;");
746	Ini_powerOn_eUICC_LPAe_not_activate();
747	
748	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
749	TS_MANAGE_CHANNEL_OPEN();
750	
751	curLogicChannel = 1;
752	
753	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
754	TS_SELECT("Select ISD",ISD_R_AID,"9000");
755	
756	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
757	pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
758	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
759	
760	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
761	Profile_load_procedure.ICCID = ICCID_OP_PROF2;
762	Profile_load_procedure.ES10b_GetEUICCInfo1();
763	
764	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
765	Profile_load_procedure.ES10b_GetEUICCChallenge();
766
767	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
768	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
769	Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
770	Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;	
771	Profile_load_procedure.ES10b_AuthenticateServer();
772	
773	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
774	Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
775	Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
776	Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
777	Profile_load_procedure.ES10b_PrepareDownload();
778	
779	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
780	Profile_load_procedure.ES10b_GetEID();
781	
782	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
783	Profile_load_procedure.serviceProviderName = SP_NAME2;
784	Profile_load_procedure.profileName = NAME_OP_PROF2;
785	Profile_load_procedure.iconType = "01";
786	Profile_load_procedure.icon = ICON_OP_PROF2;
787	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
788	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
789	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
790	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
791	Profile_load_procedure.profileClass = "02";
792	Profile_load_procedure.mccMnc = MCC_MNC2;
793	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
794	
795	
796	tracenamestr = "Install Notification";
797	curDis.TraceStart(sno++,tracenamestr);
798	
799	curLogicChannel = 0;
800	
801	curDis.TestStepStart2(stno++,"复位;");
802	ResetCard();
803	
804	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
805	TS_TERMINAL_CAPABILITY_cmd();
806	
807	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
808	TS_MANAGE_CHANNEL_OPEN();
809	
810	curLogicChannel = 1;
811	
812	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
813	TS_SELECT("Select ISD",ISD_R_AID,"9000");
814	
815	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
816	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
817	Profile_load_procedure.ES10b_ListNotification("04F0");
818	try
819	{		
820		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
821		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
822		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
823	
824		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
825		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
826		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
827	}catch(e){
828		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
829	}
830	
831	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
832	Profile_load_procedure.ES10b_ListNotification();
833	try
834	{		
835		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
836		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
837		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
838	
839		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
840		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
841		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
842	}catch(e){
843		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
844	}
845	
846	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
847	Profile_load_procedure.ES10b_ListNotification("");
848	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
849	
850	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
851	Profile_load_procedure.ES10b_ListNotification("0780");
852	try
853	{		
854		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
855		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
856		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
857	
858		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
859		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
860		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
861	}catch(e){
862		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
863	}
864	
865	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
866	Profile_load_procedure.ES10b_ListNotification("0640");
867	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
868	
869	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
870	Profile_load_procedure.ES10b_ListNotification("0520");
871	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
872	
873	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
874	Profile_load_procedure.ES10b_ListNotification("0410");
875	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
876	
877	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
878	Profile_load_procedure.ES10b_ListNotification("06C0");
879	try
880	{		
881		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
882		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
883		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
884	
885		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
886		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
887		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
888	}catch(e){
889		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
890	}
891	
892	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
893	Profile_load_procedure.ES10b_ListNotification("0430");
894	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
895	
896	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
897	Profile_load_procedure.ES10b_ListNotification("0560");
898	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
899	
900	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
901	Profile_load_procedure.ES10b_ListNotification("05E0");
902	try
903	{		
904		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
905		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
906		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
907	
908		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
909		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
910		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
911	}catch(e){
912		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
913	}
914	
915	
916	tracenamestr = "DELETE PROFILE_OPERATIONAL1  , PROFILE_OPERATIONAL2";
917	curDis.TraceStart(sno++,tracenamestr);
918	
919	curLogicChannel = 0;
920	
921	curDis.TestStepStart2(stno++,"复位;");
922	ResetCard();
923	
924	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
925	TS_TERMINAL_CAPABILITY_cmd();
926	
927	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
928	TS_MANAGE_CHANNEL_OPEN();
929	
930	curLogicChannel = 1;
931	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
932	TS_SELECT("Select ISD",ISD_R_AID,"9000");
933	
934	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
935	var deleProfileRequest = new DeleteProfileRequest();
936	deleProfileRequest.iccid = ICCID_OP_PROF1;
937	deleProfileRequest.GenHexData();
938	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
939	
940	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
941	
942	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
943	var proInfoListRequest = new ProfileInfoListRequest();
944	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
945	proInfoListRequest.tagList = "5A4F9F70";
946	proInfoListRequest.GenHexData();
947	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
948	
949	var proInfoListResponse = new  ProfileInfoListResponse();
950	proInfoListResponse.checkCardResDataFormat(respData);
951	
952	try
953	{
954		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
955	}catch(e){
956		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
957	}
958	
959	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
960	var deleProfileRequest = new DeleteProfileRequest();
961	deleProfileRequest.iccid = ICCID_OP_PROF2;
962	deleProfileRequest.GenHexData();
963	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
964	
965	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
966	
967	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
968	var proInfoListRequest = new ProfileInfoListRequest();
969	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
970	proInfoListRequest.tagList = "5A4F9F70";
971	proInfoListRequest.GenHexData();
972	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
973	
974	var proInfoListResponse = new  ProfileInfoListResponse();
975	proInfoListResponse.checkCardResDataFormat(respData);
976	
977	try
978	{
979		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
980	}catch(e){
981		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
982	}
983	
984	RecoverCard();
985}
986
987function TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification()
988{
989	tracenamestr = "Remove Notification";
990	curDis.TraceStart(sno++,tracenamestr);
991
992	curDis.TestStepStart2(stno++,"复位;");
993	ResetCard();
994	
995	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
996	TS_TERMINAL_CAPABILITY_cmd();
997	
998	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
999	TS_MANAGE_CHANNEL_OPEN();
1000	
1001	curLogicChannel = 1;
1002	
1003	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1004	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1005	
1006	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
1007	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1008	Profile_load_procedure.ES10b_ListNotification();
1009	
1010	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1011	for(var i=0;i<NotificationLen;i++)
1012	{
1013	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1014	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1015	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1016	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1017	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1018	}
1019	
1020	
1021	tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
1022	curDis.TraceStart(sno++,tracenamestr);
1023	
1024	curLogicChannel = 0;
1025
1026	curDis.TestStepStart("eUICC卡片初始化;");
1027	Ini_powerOn_eUICC_LPAe_not_activate();
1028	
1029	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1030	TS_MANAGE_CHANNEL_OPEN();
1031	
1032	curLogicChannel = 1;
1033	
1034	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1035	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1036	
1037	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
1038	
1039	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1040	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
1041	Profile_load_procedure.ES10b_GetEUICCInfo1();
1042	
1043	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
1044	Profile_load_procedure.ES10b_GetEUICCChallenge();
1045
1046	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
1047	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
1048	Profile_load_procedure.ES10b_AuthenticateServer();
1049	
1050	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
1051	Profile_load_procedure.ES10b_PrepareDownload();
1052	
1053	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
1054	Profile_load_procedure.ES10b_GetEID();
1055	
1056	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
1057
1058	Profile_load_procedure.serviceProviderName = SP_NAME1;
1059	Profile_load_procedure.profileName = NAME_OP_PROF1;
1060	Profile_load_procedure.iconType = "01";
1061	Profile_load_procedure.icon = ICON_OP_PROF1;
1062	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
1063	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
1064	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
1065	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
1066	Profile_load_procedure.profileClass = "02";
1067	Profile_load_procedure.mccMnc = MCC_MNC1;
1068	
1069	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
1070	
1071	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1072	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1073	
1074	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
1075	var enableProRequest = new EnableProfileRequest();
1076	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1077	enableProRequest.refreshFlag = "00";
1078	enableProRequest.GenHexData();
1079	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
1080	
1081	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
1082	
1083	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1084	var proInfoListRequest = new ProfileInfoListRequest();
1085	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1086	proInfoListRequest.tagList = "5A4F9F70";
1087	proInfoListRequest.GenHexData();
1088	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1089	
1090	var proInfoListResponse = new  ProfileInfoListResponse();
1091	proInfoListResponse.checkCardResDataFormat(respData);
1092	
1093	try
1094	{
1095		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1096		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
1097		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1098	}catch(e){
1099		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1100	}
1101	
1102
1103	tracenamestr = "Install Notification (PIR) and Enable Notification ";
1104	curDis.TraceStart(sno++,tracenamestr);
1105	
1106	curLogicChannel = 0;
1107	
1108	curDis.TestStepStart2(stno++,"复位;");
1109	ResetCard();
1110	
1111	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1112	TS_TERMINAL_CAPABILITY_cmd();
1113	
1114	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1115	TS_MANAGE_CHANNEL_OPEN();
1116	
1117	curLogicChannel = 1;
1118	
1119	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1120	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1121	
1122	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
1123	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1124	Profile_load_procedure.ES10b_ListNotification("04F0");
1125	
1126	try
1127	{		
1128		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1129		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1130		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1131		
1132		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1133		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1134		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1135	}catch(e){
1136		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1137	}
1138	
1139	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1140	Profile_load_procedure.ES10b_ListNotification();
1141	
1142	try
1143	{		
1144		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1145		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1146		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1147		
1148		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1149		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1150		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1151	}catch(e){
1152		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1153	}
1154	
1155	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1156	Profile_load_procedure.ES10b_ListNotification("");
1157	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1158	
1159	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1160	Profile_load_procedure.ES10b_ListNotification("0780");
1161	
1162	try
1163	{		
1164		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1165		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1166		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1167	}catch(e){
1168		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1169	}
1170	
1171	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1172	Profile_load_procedure.ES10b_ListNotification("0640");
1173		
1174	try
1175	{		
1176		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1177		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1178		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1179	}catch(e){
1180		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1181	}
1182	
1183	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1184	Profile_load_procedure.ES10b_ListNotification("0520");
1185	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1186	
1187	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1188	Profile_load_procedure.ES10b_ListNotification("0410");
1189	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1190	
1191	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1192	Profile_load_procedure.ES10b_ListNotification("06C0");
1193	
1194	try
1195	{		
1196		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1197		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1198		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1199		
1200		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1201		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1202		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1203	}catch(e){
1204		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1205	}
1206	
1207	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1208	Profile_load_procedure.ES10b_ListNotification("0430");
1209	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1210	
1211	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1212	Profile_load_procedure.ES10b_ListNotification("0560");
1213		
1214	try
1215	{		
1216		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1217		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1218		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1219	}catch(e){
1220		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1221	}
1222	
1223	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1224	Profile_load_procedure.ES10b_ListNotification("05E0");
1225	
1226	try
1227	{		
1228		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1229		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1230		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1231		
1232		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1233		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1234		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1235	}catch(e){
1236		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1237	}
1238	
1239	RecoverCard();	
1240}
1241
1242function TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications()
1243{
1244	tracenamestr = "Remove Notification";
1245	curDis.TraceStart(sno++,tracenamestr);
1246
1247	curDis.TestStepStart2(stno++,"复位;");
1248	ResetCard();
1249	
1250	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1251	TS_TERMINAL_CAPABILITY_cmd();
1252	
1253	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1254	TS_MANAGE_CHANNEL_OPEN();
1255	
1256	curLogicChannel = 1;
1257	
1258	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1259	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1260	
1261	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
1262	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1263	Profile_load_procedure.ES10b_ListNotification();
1264	
1265	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1266	for(var i=0;i<NotificationLen;i++)
1267	{
1268	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1269	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1270	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1271	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1272	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1273	}
1274	
1275	
1276	tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
1277	curDis.TraceStart(sno++,tracenamestr);
1278	
1279	curLogicChannel = 0;
1280
1281	curDis.TestStepStart("eUICC卡片初始化;");
1282	Ini_powerOn_eUICC_LPAe_not_activate();
1283	
1284	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1285	TS_MANAGE_CHANNEL_OPEN();
1286	
1287	curLogicChannel = 1;
1288	
1289	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1290	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1291	
1292	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
1293	
1294	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1295	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
1296	Profile_load_procedure.ES10b_GetEUICCInfo1();
1297	
1298	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
1299	Profile_load_procedure.ES10b_GetEUICCChallenge();
1300
1301	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
1302	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
1303	Profile_load_procedure.ES10b_AuthenticateServer();
1304	
1305	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
1306	Profile_load_procedure.ES10b_PrepareDownload();
1307	
1308	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
1309	Profile_load_procedure.ES10b_GetEID();
1310	
1311	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
1312	Profile_load_procedure.serviceProviderName = SP_NAME1;
1313	Profile_load_procedure.profileName = NAME_OP_PROF1;
1314	Profile_load_procedure.iconType = "01";
1315	Profile_load_procedure.icon = ICON_OP_PROF1;
1316	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
1317	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
1318	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
1319	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
1320	Profile_load_procedure.profileClass = "02";
1321	Profile_load_procedure.mccMnc = MCC_MNC1;
1322	
1323	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
1324	
1325	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1326	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1327	
1328	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
1329	var enableProRequest = new EnableProfileRequest();
1330	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1331	enableProRequest.refreshFlag = "00";
1332	enableProRequest.GenHexData();
1333	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
1334	
1335	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
1336	
1337	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1338	var proInfoListRequest = new ProfileInfoListRequest();
1339	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1340	proInfoListRequest.tagList = "5A4F9F70";
1341	proInfoListRequest.GenHexData();
1342	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1343	
1344	var proInfoListResponse = new  ProfileInfoListResponse();
1345	proInfoListResponse.checkCardResDataFormat(respData);
1346	
1347	try
1348	{
1349		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1350		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
1351		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1352	}catch(e){
1353		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1354	}
1355	
1356	
1357	tracenamestr = "Remove Notification";
1358	curDis.TraceStart(sno++,tracenamestr);
1359	
1360	curLogicChannel = 0;
1361	
1362	curDis.TestStepStart2(stno++,"复位;");
1363	ResetCard();
1364	
1365	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1366	TS_TERMINAL_CAPABILITY_cmd();
1367	
1368	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1369	TS_MANAGE_CHANNEL_OPEN();
1370	
1371	curLogicChannel = 1;
1372	
1373	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1374	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1375	
1376	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
1377	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1378	Profile_load_procedure.ES10b_ListNotification();
1379	
1380	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1381	for(var i=0;i<NotificationLen;i++)
1382	{
1383	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1384	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1385	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1386	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1387	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1388	}
1389	
1390	
1391	tracenamestr = "还原卡片删除Enabled状态的PROFILE_OPERATIONAL1";
1392	curDis.TraceStart(sno++,tracenamestr);
1393	
1394	curLogicChannel = 0;
1395	curDis.TestStepStart("eUICC卡片初始化;");
1396	Ini_powerOn_eUICC_LPAe_not_activate();
1397	
1398	curDis.TestStepStart("读卡器向卡片发送 Terminal Profile命令,进行主动式命令交互;");
1399	IniCard_SetUpMenu("",1);
1400	
1401	counterC = 2000;
1402	
1403	curDis.TestStepStart("读卡器向卡片发送 Envelope命令,执行策略更新命令;");
1404	sSendType = SendTypeByOTA.SMS;
1405		
1406	KIC = MNO_SCP80_ENC_KEY;
1407	KID = MNO_SCP80_AUTH_KEY;
1408	KIK = MNO_SCP80_DATA_ENC_KEY;
1409	if (UpdatePPRformat == Remote_APDU_format.Compact)
1410	{
1411		//简单格式更新策略
1412		
1413		InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
1414		
1415		var sdatain = "BF2A0499020500";
1416		var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
1417		
1418		sAPDU1 = GetParaAPDU(InstallForPerson);
1419		sAPDU2 = GetParaAPDU(storedatapara);
1420		sAPDU = sAPDU1 + sAPDU2;
1421		
1422		SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
1423		CardSendMessageToServer(sSendType,1,"029000","00");
1424		
1425		
1426		TerminalResponse("00","9000");
1427	}
1428	else
1429	{
1430	
1431		numOfCmdTlvs = 0;
1432		arrExpandedRemoteCmdObj = new Array();
1433		
1434		InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
1435		InstallForPerson.SetAPDU();
1436		arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
1437		arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(InstallForPerson.apdu);
1438		numOfCmdTlvs ++;
1439		
1440		var sdatain = "BF2A0499020500";
1441		
1442		var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
1443		
1444		storedatapara.SetAPDU();
1445		arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
1446		arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(storedatapara.apdu);
1447		numOfCmdTlvs ++;
1448		
1449		sAPDU = GenExpandedRemoteCmd(arrExpandedRemoteCmdObj);
1450		
1451		SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
1452		
1453		var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
1454		CardSendMessageToServerExpandedRemoteCmd(exResPara);
1455		
1456		TerminalResponse("00","9000");
1457	}
1458	
1459	curLogicChannel = 0;
1460	
1461	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
1462	Ini_powerOn_eUICC_LPAe_not_activate();
1463	
1464	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1465	TS_MANAGE_CHANNEL_OPEN();
1466	
1467	curLogicChannel = 1;
1468	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1469	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1470	
1471	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DisableProfileRequest;");
1472	var disableProRequest = new DisableProfileRequest();
1473	disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1474	disableProRequest.refreshFlag = "00";
1475	disableProRequest.GenHexData();
1476	var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData);
1477	
1478	curStrHandle.CheckData("BF3203800100", respData, "DisableProfileResponse");
1479	
1480	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1481	var proInfoListRequest = new ProfileInfoListRequest();
1482	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1483	proInfoListRequest.tagList = "5A4F9F70";
1484	proInfoListRequest.GenHexData();
1485	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1486	
1487	if (debug)
1488		respData = "BF2D1CA01AE3185A0A890199900012345678934F060505050505059F70011F";
1489	var proInfoListResponse = new  ProfileInfoListResponse();
1490	proInfoListResponse.checkCardResDataFormat(respData);
1491	
1492	try
1493	{
1494		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1495		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1496	}catch(e){
1497		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1498	}
1499	
1500	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
1501	var deleProfileRequest = new DeleteProfileRequest();
1502	deleProfileRequest.iccid = ICCID_OP_PROF1;
1503	deleProfileRequest.GenHexData();
1504	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
1505	
1506	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
1507	
1508	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1509	var proInfoListRequest = new ProfileInfoListRequest();
1510	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1511	proInfoListRequest.tagList = "5A4F9F70";
1512	proInfoListRequest.GenHexData();
1513	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1514	
1515	if (debug)
1516		respData = "BF2D02A000";
1517	var proInfoListResponse = new  ProfileInfoListResponse();
1518	proInfoListResponse.checkCardResDataFormat(respData);
1519	
1520	try
1521	{
1522		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
1523	}catch(e){
1524		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1525	}
1526	
1527	tracenamestr = "Disable and Delete Notifications  ";
1528	curDis.TraceStart(sno++,tracenamestr);
1529	
1530	curLogicChannel = 0;
1531	
1532	curDis.TestStepStart2(stno++,"复位;");
1533	ResetCard();
1534	
1535	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1536	TS_TERMINAL_CAPABILITY_cmd();
1537	
1538	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1539	TS_MANAGE_CHANNEL_OPEN();
1540	
1541	curLogicChannel = 1;
1542	
1543	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1544	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1545	
1546	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
1547	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1548	Profile_load_procedure.ES10b_ListNotification("04F0");
1549		
1550	try
1551	{		
1552		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1553		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1554		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1555	
1556		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1557		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1558		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1559	}catch(e){
1560		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1561	}
1562	
1563	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1564	Profile_load_procedure.ES10b_ListNotification();
1565		
1566	try
1567	{		
1568		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1569		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1570		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1571	
1572		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1573		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1574		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1575	}catch(e){
1576		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1577	}
1578	
1579	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1580	Profile_load_procedure.ES10b_ListNotification("");
1581	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1582	
1583	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1584	Profile_load_procedure.ES10b_ListNotification("0780");
1585	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1586	
1587	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1588	Profile_load_procedure.ES10b_ListNotification("0640");
1589	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1590	
1591	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1592	Profile_load_procedure.ES10b_ListNotification("0520");
1593		
1594	try
1595	{		
1596		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1597		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1598		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1599	}catch(e){
1600		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1601	}
1602	
1603	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1604	Profile_load_procedure.ES10b_ListNotification("0410");
1605		
1606	try
1607	{		
1608		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1609		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1610		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1611	}catch(e){
1612		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1613	}
1614	
1615	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1616	Profile_load_procedure.ES10b_ListNotification("06C0");
1617	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1618	
1619	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1620	Profile_load_procedure.ES10b_ListNotification("0430");
1621		
1622	try
1623	{		
1624		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1625		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1626		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1627	
1628		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1629		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1630		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1631	}catch(e){
1632		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1633	}
1634	
1635	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1636	Profile_load_procedure.ES10b_ListNotification("05E0");
1637		
1638	try
1639	{		
1640		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1641		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1642		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1643	}catch(e){
1644		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1645	}
1646	
1647	RecoverCard();
1648}
1649
1650function TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification()
1651{
1652	tracenamestr = "Remove Notification";
1653	curDis.TraceStart(sno++,tracenamestr);
1654
1655	curDis.TestStepStart2(stno++,"复位;");
1656	ResetCard();
1657	
1658	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1659	TS_TERMINAL_CAPABILITY_cmd();
1660	
1661	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1662	TS_MANAGE_CHANNEL_OPEN();
1663	
1664	curLogicChannel = 1;
1665	
1666	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1667	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1668	
1669	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
1670	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1671	Profile_load_procedure.ES10b_ListNotification();
1672	
1673	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
1674	for(var i=0;i<NotificationLen;i++)
1675	{
1676	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1677	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
1678	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1679	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1680	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1681	}
1682	
1683	
1684	tracenamestr = "Install PROFILE_OPERATIONAL1. Remove the PIR notification, but do not remove the OtherSignedNotification.  ";
1685	curDis.TraceStart(sno++,tracenamestr);
1686	
1687	curLogicChannel = 0;
1688
1689	curDis.TestStepStart("eUICC卡片初始化;");
1690	Ini_powerOn_eUICC_LPAe_not_activate();
1691	
1692	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1693	TS_MANAGE_CHANNEL_OPEN();
1694	
1695	curLogicChannel = 1;
1696	
1697	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
1698	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1699	
1700	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
1701	
1702	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
1703	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
1704	Profile_load_procedure.ES10b_GetEUICCInfo1();
1705	
1706	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
1707	Profile_load_procedure.ES10b_GetEUICCChallenge();
1708
1709	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
1710	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
1711	Profile_load_procedure.ES10b_AuthenticateServer();
1712	
1713	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
1714	Profile_load_procedure.ES10b_PrepareDownload();
1715	
1716	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
1717	Profile_load_procedure.ES10b_GetEID();
1718	
1719	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
1720	Profile_load_procedure.serviceProviderName = SP_NAME1;
1721	Profile_load_procedure.profileName = NAME_OP_PROF1;
1722	Profile_load_procedure.iconType = "01";
1723	Profile_load_procedure.icon = ICON_OP_PROF1;
1724	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
1725	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
1726	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
1727	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
1728	Profile_load_procedure.profileClass = "02";
1729	Profile_load_procedure.mccMnc = MCC_MNC1;
1730	
1731	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
1732	
1733	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1734	Profile_load_procedure.ES10b_ListNotification();
1735	
1736	try
1737	{		
1738		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1739		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1740		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1741		
1742		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1743		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1744		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1745	}catch(e){
1746		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1747	}
1748	
1749	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
1750	var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
1751	Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
1752	var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
1753	curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
1754	
1755	tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
1756	curDis.TraceStart(sno++,tracenamestr);
1757	
1758	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
1759	var enableProRequest = new EnableProfileRequest();
1760	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
1761	enableProRequest.refreshFlag = "00";
1762	enableProRequest.GenHexData();
1763	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
1764	
1765	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
1766	
1767	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
1768	var proInfoListRequest = new ProfileInfoListRequest();
1769	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
1770	proInfoListRequest.tagList = "5A4F9F70";
1771	proInfoListRequest.GenHexData();
1772	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
1773	
1774	var proInfoListResponse = new  ProfileInfoListResponse();
1775	proInfoListResponse.checkCardResDataFormat(respData);
1776	
1777	try
1778	{
1779		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
1780		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
1781		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
1782	}catch(e){
1783		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
1784	}
1785	
1786
1787	tracenamestr = "Install (OtherSignedNotification) and Enable Notification ";
1788	curDis.TraceStart(sno++,tracenamestr);
1789	
1790	curLogicChannel = 0;
1791	
1792	curDis.TestStepStart2(stno++,"复位;");
1793	ResetCard();
1794	
1795	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
1796	TS_TERMINAL_CAPABILITY_cmd();
1797	
1798	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
1799	TS_MANAGE_CHANNEL_OPEN();
1800	
1801	curLogicChannel = 1;
1802	
1803	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
1804	TS_SELECT("Select ISD",ISD_R_AID,"9000");
1805	
1806	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
1807	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1808	Profile_load_procedure.ES10b_ListNotification("04F0");
1809	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1810	
1811	try
1812	{	var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1813		if(Max_seqNumber_Of_Notification ==	seqNumber)
1814		{
1815			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
1816			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1817			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1818			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1819		
1820			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
1821			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1822			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1823			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1824		}
1825		else
1826		{
1827			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
1828			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1829			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1830			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1831		
1832			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
1833			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1834			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1835			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
1836		}		
1837	}catch(e){
1838		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1839	}
1840	
1841	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1842	Profile_load_procedure.ES10b_ListNotification();
1843	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1844	
1845	try
1846	{		
1847		var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1848		if(Max_seqNumber_Of_Notification ==	seqNumber)
1849		{
1850			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
1851			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1852			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1853			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1854		
1855			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
1856			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1857			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1858			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1859		}
1860		else
1861		{
1862			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
1863			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1864			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1865			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1866		
1867			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
1868			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1869			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1870			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
1871		}	
1872	}catch(e){
1873		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1874	}
1875	
1876	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1877	Profile_load_procedure.ES10b_ListNotification("");
1878	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1879	
1880	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1881	Profile_load_procedure.ES10b_ListNotification("0780");
1882	
1883	try
1884	{		
1885		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1886		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1887		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1888	}catch(e){
1889		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1890	}
1891	
1892	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1893	Profile_load_procedure.ES10b_ListNotification("0640");
1894		
1895	try
1896	{		
1897		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1898		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1899		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1900	}catch(e){
1901		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1902	}
1903	
1904	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1905	Profile_load_procedure.ES10b_ListNotification("0520");
1906	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1907	
1908	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1909	Profile_load_procedure.ES10b_ListNotification("0410");
1910	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1911	
1912	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1913	Profile_load_procedure.ES10b_ListNotification("06C0");
1914	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1915	
1916	try
1917	{		
1918		var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1919		if(Max_seqNumber_Of_Notification ==	seqNumber)
1920		{
1921			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
1922			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1923			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1924			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1925		
1926			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
1927			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1928			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1929			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1930		}
1931		else
1932		{
1933			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
1934			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1935			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1936			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1937		
1938			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
1939			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1940			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1941			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
1942		}	
1943	}catch(e){
1944		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1945	}
1946	
1947	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1948	Profile_load_procedure.ES10b_ListNotification("0430");
1949	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
1950	
1951	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1952	Profile_load_procedure.ES10b_ListNotification("0560");
1953		
1954	try
1955	{		
1956		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1957		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1958		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1959	}catch(e){
1960		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1961	}
1962	
1963	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
1964	Profile_load_procedure.ES10b_ListNotification("05E0");
1965	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
1966	
1967	try
1968	{		
1969		var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
1970		if(Max_seqNumber_Of_Notification ==	seqNumber)
1971		{
1972			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
1973			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1974			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1975			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1976		
1977			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
1978			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1979			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1980			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
1981		}
1982		else
1983		{
1984			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
1985			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
1986			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
1987			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
1988		
1989			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
1990			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
1991			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
1992			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
1993		}	
1994	}catch(e){
1995		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
1996	}
1997	
1998	RecoverCard();	
1999}
2000
2001function TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications()
2002{
2003	if(!Card_Have_ECC_Cert)
2004		return;
2005	
2006	tracenamestr = "Remove Notification";
2007	curDis.TraceStart(sno++,tracenamestr);
2008
2009	curDis.TestStepStart2(stno++,"复位;");
2010	ResetCard();
2011	
2012	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2013	TS_TERMINAL_CAPABILITY_cmd();
2014	
2015	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2016	TS_MANAGE_CHANNEL_OPEN();
2017	
2018	curLogicChannel = 1;
2019	
2020	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2021	TS_SELECT("Select ISD",ISD_R_AID,"9000");
2022	
2023	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
2024	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2025	Profile_load_procedure.ES10b_ListNotification();
2026	
2027	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
2028	for(var i=0;i<NotificationLen;i++)
2029	{
2030	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
2031	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
2032	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
2033	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
2034	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
2035	}
2036	
2037	tracenamestr = "Install PROFILE_OPERATIONAL1. Remove both notifications.  ";
2038	curDis.TraceStart(sno++,tracenamestr);
2039	
2040	curLogicChannel = 0;
2041
2042	curDis.TestStepStart("eUICC卡片初始化;");
2043	Ini_powerOn_eUICC_LPAe_not_activate();
2044	
2045	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2046	TS_MANAGE_CHANNEL_OPEN();
2047	
2048	curLogicChannel = 1;
2049	
2050	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
2051	TS_SELECT("Select ISD",ISD_R_AID,"9000");
2052	
2053	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
2054	
2055	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
2056	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
2057	Profile_load_procedure.ES10b_GetEUICCInfo1();
2058	
2059	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
2060	Profile_load_procedure.ES10b_GetEUICCChallenge();
2061
2062	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
2063	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
2064	Profile_load_procedure.ES10b_AuthenticateServer();
2065	
2066	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
2067	Profile_load_procedure.ES10b_PrepareDownload();
2068	
2069	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
2070	Profile_load_procedure.ES10b_GetEID();
2071	
2072	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
2073	Profile_load_procedure.serviceProviderName = SP_NAME1;
2074	Profile_load_procedure.profileName = NAME_OP_PROF1;
2075	Profile_load_procedure.iconType = "01";
2076	Profile_load_procedure.icon = ICON_OP_PROF1;
2077	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
2078	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
2079	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
2080	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
2081	Profile_load_procedure.profileClass = "02";
2082	Profile_load_procedure.mccMnc = MCC_MNC1;
2083	
2084	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
2085	
2086	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2087	Profile_load_procedure.ES10b_ListNotification();
2088	
2089	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
2090	for(var i=0;i<NotificationLen;i++)
2091	{
2092	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
2093	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
2094	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
2095	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
2096	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
2097	}
2098	
2099	tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
2100	curDis.TraceStart(sno++,tracenamestr);
2101	
2102	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
2103	var enableProRequest = new EnableProfileRequest();
2104	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
2105	enableProRequest.refreshFlag = "00";
2106	enableProRequest.GenHexData();
2107	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
2108	
2109	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
2110	
2111	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
2112	var proInfoListRequest = new ProfileInfoListRequest();
2113	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
2114	proInfoListRequest.tagList = "5A4F9F70";
2115	proInfoListRequest.GenHexData();
2116	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
2117	
2118	var proInfoListResponse = new  ProfileInfoListResponse();
2119	proInfoListResponse.checkCardResDataFormat(respData);
2120	
2121	try
2122	{
2123		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
2124		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
2125		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
2126	}catch(e){
2127		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
2128	}
2129	
2130	tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL.  ";
2131	curDis.TraceStart(sno++,tracenamestr);
2132	
2133	
2134	curLogicChannel = 0;
2135	
2136	curDis.TestStepStart("eUICC卡片初始化;");
2137	Ini_powerOn_eUICC_LPAe_not_activate();
2138	
2139	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2140	TS_MANAGE_CHANNEL_OPEN();
2141	
2142	curLogicChannel = 1;
2143	
2144	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
2145	TS_SELECT("Select ISD",ISD_R_AID,"9000");
2146	
2147	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
2148	pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
2149	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
2150	
2151	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
2152	Profile_load_procedure.ICCID = ICCID_OP_PROF2;
2153	Profile_load_procedure.ES10b_GetEUICCInfo1();
2154	
2155	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
2156	Profile_load_procedure.ES10b_GetEUICCChallenge();
2157
2158	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
2159	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
2160	Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
2161	Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;	
2162	Profile_load_procedure.ES10b_AuthenticateServer();
2163	
2164	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
2165	Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
2166	Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
2167	Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
2168	Profile_load_procedure.ES10b_PrepareDownload();
2169	
2170	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
2171	Profile_load_procedure.ES10b_GetEID();
2172	
2173	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
2174	Profile_load_procedure.serviceProviderName = SP_NAME2;
2175	Profile_load_procedure.profileName = NAME_OP_PROF2;
2176	Profile_load_procedure.iconType = "01";
2177	Profile_load_procedure.icon = ICON_OP_PROF2;
2178	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
2179	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
2180	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
2181	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
2182	Profile_load_procedure.profileClass = "02";
2183	Profile_load_procedure.mccMnc = MCC_MNC2;
2184	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
2185	
2186	tracenamestr = "Enable and Install (PIR) Notifications  ";
2187	curDis.TraceStart(sno++,tracenamestr);
2188	
2189	curLogicChannel = 0;
2190	
2191	curDis.TestStepStart2(stno++,"复位;");
2192	ResetCard();
2193	
2194	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2195	TS_TERMINAL_CAPABILITY_cmd();
2196	
2197	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2198	TS_MANAGE_CHANNEL_OPEN();
2199	
2200	curLogicChannel = 1;
2201	
2202	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2203	TS_SELECT("Select ISD",ISD_R_AID,"9000");
2204	
2205	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
2206	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2207	Profile_load_procedure.ES10b_ListNotification("04F0");
2208		
2209	try
2210	{		
2211		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2212		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2213		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2214	
2215		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2216		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2217		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2218	}catch(e){
2219		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2220	}
2221	
2222	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2223	Profile_load_procedure.ES10b_ListNotification();
2224	
2225	try
2226	{		
2227		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2228		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2229		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2230	
2231		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2232		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2233		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2234	}catch(e){
2235		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2236	}
2237	
2238	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2239	Profile_load_procedure.ES10b_ListNotification("");
2240	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2241	
2242	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2243	Profile_load_procedure.ES10b_ListNotification("0780");
2244	
2245	try
2246	{		
2247		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2248		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2249		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2250	}catch(e){
2251		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2252	}
2253	
2254	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2255	Profile_load_procedure.ES10b_ListNotification("0640");
2256		
2257	try
2258	{		
2259		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2260		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2261		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2262	}catch(e){
2263		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2264	}
2265	
2266	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2267	Profile_load_procedure.ES10b_ListNotification("0520");
2268	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2269	
2270	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2271	Profile_load_procedure.ES10b_ListNotification("0410");
2272	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2273	
2274	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2275	Profile_load_procedure.ES10b_ListNotification("06C0");
2276	
2277	try
2278	{		
2279		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2280		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2281		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2282	
2283		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2284		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2285		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2286	}catch(e){
2287		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2288	}
2289	
2290	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2291	Profile_load_procedure.ES10b_ListNotification("0430");
2292	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2293	
2294	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2295	Profile_load_procedure.ES10b_ListNotification("0560");
2296		
2297	try
2298	{		
2299		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2300		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2301		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2302	}catch(e){
2303		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2304	}
2305	
2306	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2307	Profile_load_procedure.ES10b_ListNotification("05E0");
2308	
2309	try
2310	{		
2311		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
2312		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
2313		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
2314	
2315		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
2316		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
2317		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
2318	}catch(e){
2319		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
2320	}
2321	
2322	
2323	Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
2324	
2325	tracenamestr = "DELETE PROFILE_OPERATIONAL1  , PROFILE_OPERATIONAL2";
2326	curDis.TraceStart(sno++,tracenamestr);
2327	
2328	curLogicChannel = 0;
2329	
2330	curDis.TestStepStart2(stno++,"复位;");
2331	ResetCard();
2332	
2333	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2334	TS_TERMINAL_CAPABILITY_cmd();
2335	
2336	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2337	TS_MANAGE_CHANNEL_OPEN();
2338	
2339	curLogicChannel = 1;
2340	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
2341	TS_SELECT("Select ISD",ISD_R_AID,"9000");
2342	
2343	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
2344	var deleProfileRequest = new DeleteProfileRequest();
2345	deleProfileRequest.iccid = ICCID_OP_PROF1;
2346	deleProfileRequest.GenHexData();
2347	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
2348	
2349	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
2350	
2351	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
2352	var proInfoListRequest = new ProfileInfoListRequest();
2353	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
2354	proInfoListRequest.tagList = "5A4F9F70";
2355	proInfoListRequest.GenHexData();
2356	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
2357	
2358	var proInfoListResponse = new  ProfileInfoListResponse();
2359	proInfoListResponse.checkCardResDataFormat(respData);
2360	
2361	try
2362	{
2363		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
2364	}catch(e){
2365		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
2366	}
2367	
2368	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
2369	var deleProfileRequest = new DeleteProfileRequest();
2370	deleProfileRequest.iccid = ICCID_OP_PROF2;
2371	deleProfileRequest.GenHexData();
2372	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
2373	
2374	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
2375	
2376	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
2377	var proInfoListRequest = new ProfileInfoListRequest();
2378	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
2379	proInfoListRequest.tagList = "5A4F9F70";
2380	proInfoListRequest.GenHexData();
2381	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
2382	
2383	var proInfoListResponse = new  ProfileInfoListResponse();
2384	proInfoListResponse.checkCardResDataFormat(respData);
2385	
2386	try
2387	{
2388		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
2389	}catch(e){
2390		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
2391	}
2392	RecoverCard();	
2393	
2394	
2395}
2396
2397function TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available()
2398{
2399	tracenamestr = "Remove Notification";
2400	curDis.TraceStart(sno++,tracenamestr);
2401
2402	curDis.TestStepStart2(stno++,"复位;");
2403	ResetCard();
2404	
2405	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2406	TS_TERMINAL_CAPABILITY_cmd();
2407	
2408	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2409	TS_MANAGE_CHANNEL_OPEN();
2410	
2411	curLogicChannel = 1;
2412	
2413	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2414	TS_SELECT("Select ISD",ISD_R_AID,"9000");
2415	
2416	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
2417	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2418	Profile_load_procedure.ES10b_ListNotification();
2419	
2420	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
2421	for(var i=0;i<NotificationLen;i++)
2422	{
2423	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
2424	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
2425	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
2426	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
2427	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
2428	}
2429	
2430	tracenamestr = "No Notifications available";
2431	curDis.TraceStart(sno++,tracenamestr);
2432	
2433	curLogicChannel = 0;
2434	
2435	curDis.TestStepStart2(stno++,"复位;");
2436	ResetCard();
2437	
2438	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
2439	TS_TERMINAL_CAPABILITY_cmd();
2440	
2441	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
2442	TS_MANAGE_CHANNEL_OPEN();
2443	
2444	curLogicChannel = 1;
2445	
2446	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
2447	TS_SELECT("Select ISD",ISD_R_AID,"9000");
2448	
2449	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
2450	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2451	Profile_load_procedure.ES10b_ListNotification("04F0");
2452	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2453	
2454	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2455	Profile_load_procedure.ES10b_ListNotification();
2456	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2457	
2458	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2459	Profile_load_procedure.ES10b_ListNotification("");
2460	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2461	
2462	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2463	Profile_load_procedure.ES10b_ListNotification("0780");
2464	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2465	
2466	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2467	Profile_load_procedure.ES10b_ListNotification("0640");
2468	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2469	
2470	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2471	Profile_load_procedure.ES10b_ListNotification("0520");
2472	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2473	
2474	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2475	Profile_load_procedure.ES10b_ListNotification("0410");
2476	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2477	
2478	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2479	Profile_load_procedure.ES10b_ListNotification("06C0");
2480	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2481	
2482	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2483	Profile_load_procedure.ES10b_ListNotification("0430");
2484	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2485	
2486	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2487	Profile_load_procedure.ES10b_ListNotification("0560");
2488	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2489	
2490	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
2491	Profile_load_procedure.ES10b_ListNotification("05E0");
2492	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
2493	
2494	RecoverCard();
2495}
2496
-cas 盲生成TC_eUICC_ES10b_ListNotification/Import/TC_eUICC_ES10b_ListNotification.js2830 行 / 231323 字符 / gb18030入口函数 @L175
1// Author: 卡思Cas智能体
2// Date: 20260929-120236
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.ListNotification,Test Sequence #01-#10 Nominal(E_tc_4214 含 10 个 Test Sequence,全部纳入;schema 单值字段如实合并登记),适用性 M。
4// Test points: ICH-IC1-K1-C1 ATR_present;ICH-IC1-K2-C2 FCP_Template;ICH-IC1-K2-C4 SW
5//   ICH-IC1-K3-C4 SW;ICH-IC1-K4-C4 final SW;ICH-IC2-K1-C4 SW;ICH-IC2-K1-C3 CHANNEL_NUMBER extracted
6//   ICH-IC2-K2-C4 SW;S1-C1 SW
7//   S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count
8//   S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields;S2-C1 SW
9//   S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
10//   S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S3-C1 SW
11//   S3-C2 R-APDU 二选一 branch/count;S4-C1 SW
12//   S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
13//   S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S5-C1 SW
14//   S5-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S6-C1 SW
15//   S6-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S7-C1 SW
16//   S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S8-C1 SW
17//   S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
18//   S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S9-C1 SW
19//   S9-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S10-C1 SW
20//   S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S11-C1 SW
21//   S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
22//   S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S12-C1 SW
23//   S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count
24//   S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields;S13-C1 SW
25//   S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
26//   S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S14-C1 SW
27//   S14-C2 R-APDU 二选一 branch/count;S15-C1 SW
28//   S15-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S16-C1 SW
29//   S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
30//   S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S17-C1 SW
31//   S17-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S18-C1 SW
32//   S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S19-C1 SW
33//   S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
34//   S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S20-C1 SW
35//   S20-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S21-C1 SW
36//   S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
37//   S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S22-C1 SW
38//   S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
39//   S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S23-C1 SW
40//   S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count
41//   S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields;S24-C1 SW
42//   S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
43//   S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S25-C1 SW
44//   S25-C2 R-APDU 二选一 branch/count;S26-C1 SW
45//   S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S27-C1 SW
46//   S27-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S28-C1 SW
47//   S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
48//   S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S29-C1 SW
49//   S29-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S30-C1 SW
50//   S30-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S31-C1 SW
51//   S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
52//   S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S32-C1 SW
53//   S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
54//   S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S33-C1 SW
55//   S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
56//   S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S34-C1 SW
57//   S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count
58//   S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields;S35-C1 SW
59//   S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
60//   S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S36-C1 SW
61//   S36-C2 R-APDU 二选一 branch/count;S37-C1 SW
62//   S37-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S38-C1 SW
63//   S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S39-C1 SW
64//   S39-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S40-C1 SW
65//   S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
66//   S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S41-C1 SW
67//   S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S42-C1 SW
68//   S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
69//   S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S43-C1 SW
70//   S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S44-C1 SW
71//   S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
72//   S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S45-C1 SW
73//   S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count
74//   S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields;S46-C1 SW
75//   S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
76//   S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S47-C1 SW
77//   S47-C2 R-APDU 二选一 branch/count;S48-C1 SW
78//   S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
79//   S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S49-C1 SW
80//   S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S50-C1 SW
81//   S50-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S51-C1 SW
82//   S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S52-C1 SW
83//   S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
84//   S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S53-C1 SW
85//   S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S54-C1 SW
86//   S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S55-C1 SW
87//   S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
88//   S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S56-C1 SW
89//   S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList branch/count
90//   S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList element fields;S57-C1 SW
91//   S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
92//   S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S58-C1 SW
93//   S58-C2 R-APDU 二选一 branch/count;S59-C1 SW
94//   S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含  branch/count
95//   S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含  element fields;S60-C1 SW
96//   S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
97//   S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S61-C1 SW
98//   S61-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S62-C1 SW
99//   S62-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S63-C1 SW
100//   S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
101//   S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S64-C1 SW
102//   S64-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S65-C1 SW
103//   S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
104//   S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S66-C1 SW
105//   S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
106//   S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S67-C1 SW
107//   S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含  branch/count
108//   S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含  element fields;S68-C1 SW
109//   S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  branch/count
110//   S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  element fields;S69-C1 SW
111//   S69-C2 R-APDU 二选一 branch/count;S70-C1 SW
112//   S70-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S71-C1 SW
113//   S71-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S72-C1 SW
114//   S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
115//   S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S73-C1 SW
116//   S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
117//   S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S74-C1 SW
118//   S74-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S75-C1 SW
119//   S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  branch/count
120//   S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  element fields;S76-C1 SW
121//   S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
122//   S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S77-C1 SW
123//   S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
124//   S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S78-C1 SW
125//   S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含  branch/count
126//   S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含  element fields;S79-C1 SW
127//   S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count
128//   S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields;S80-C1 SW
129//   S80-C2 R-APDU 二选一 branch/count;S81-C1 SW
130//   S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT branch/count
131//   S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT element fields;S82-C1 SW
132//   S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
133//   S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S83-C1 SW
134//   S83-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S84-C1 SW
135//   S84-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S85-C1 SW
136//   S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count
137//   S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields;S86-C1 SW
138//   S86-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S87-C1 SW
139//   S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
140//   S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S88-C1 SW
141//   S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count
142//   S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields;S89-C1 SW
143//   S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList branch/count
144//   S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList element fields;S90-C1 SW
145//   S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
146//   S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S91-C1 SW
147//   S91-C2 R-APDU 二选一 branch/count;S92-C1 SW
148//   S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含  branch/count
149//   S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含  element fields;S93-C1 SW
150//   S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
151//   S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S94-C1 SW
152//   S94-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S95-C1 SW
153//   S95-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S96-C1 SW
154//   S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
155//   S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S97-C1 SW
156//   S97-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S98-C1 SW
157//   S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
158//   S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S99-C1 SW
159//   S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
160//   S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S100-C1 SW
161//   S100-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S101-C1 SW
162//   S101-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S102-C1 SW
163//   S102-C2 R-APDU 二选一 branch/count;S103-C1 SW
164//   S103-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S104-C1 SW
165//   S104-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S105-C1 SW
166//   S105-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S106-C1 SW
167//   S106-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S107-C1 SW
168//   S107-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S108-C1 SW
169//   S108-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S109-C1 SW
170//   S109-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S110-C1 SW
171//   S110-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count
172// 本函数由 CaseIR 4.2.14.2.1 编译生成(Q3W0-EXPAND-20260929-R4,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
173// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
174// 适用性 M:编译期门,运行时由 harness 环境前置承担。
175function TC_eUICC_ES10b_ListNotification_01_10_Nominal_E_tc_4214_10_Test_Sequence_schema() {
176    var bind = curBind;
177
178    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
179    var s111 = bind.resetAndAtr();
180    bind.checkData("ICH-IC1-K1-C1 ATR_present", "1", s111.atr_hex !== "" ? "1" : "0");
181
182    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
183    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
184    var s112 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
185    bind.checkData("ICH-IC1-K2-C2 FCP_Template", "1", s112.resp.length > 0 ? "1" : "0");
186    bind.checkData("ICH-IC1-K2-C4 SW", "9000", s112.sw);
187
188    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
189    var s113 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
190    bind.checkData("ICH-IC1-K3-C4 SW", "9000", s113.sw);
191
192    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
193    var steady114 = bind.runToSteadyState(function () {
194        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
195    });
196    bind.checkData("ICH-IC1-K4-C4 final SW", "9000", steady114.final.sw);
197
198    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
199    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
200    var s115 = bind.manageChannelOpen("9000");
201    bind.checkData("ICH-IC2-K1-C4 SW", "9000", s115.sw);
202    bind.checkData("ICH-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s115.chan !== null ? "1" : "0");
203
204    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
205    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
206    var s116 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
207    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
208    bind.checkData("ICH-IC2-K2-C4 SW", "9000", s116.sw);
209
210    // 步骤 1:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
211    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
212    var sdCla1 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
213    var s1 = bind.sendApdu(sdCla1, "E2", "91", "00", "BF2804810204F0", "00", "9000");
214    bind.checkData("S1-C1 SW", "9000", s1.sw);
215    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
216    var lw1T = BindEs10xSingleRequest.parseBerTlv(s1.resp);
217    var lw1Ok0 = lw1T.length === 1 && lw1T[0].tag === "BF28";
218    var lw1_br = lw1Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw1T[0].value) : [];
219    var lw1_brtag = lw1_br.length === 1 ? lw1_br[0].tag : "";
220    var lw1_els = lw1_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw1_br[0].value) : [];
221    bind.checkData("S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count", "1", (lw1_brtag === "A0" && lw1_els.length === 2) ? "1" : "0");
222    var lw1_fok = lw1_brtag === "A0" && lw1_els.length > 0;
223    for (var lw1i = 0; lw1i < lw1_els.length; lw1i++) {
224        if (lw1_els[lw1i].tag !== "BF2F") { lw1_fok = false; continue; }
225        var lw1M = BindEs10xSingleRequest.parseBerTlv(lw1_els[lw1i].value);
226        var lw1_f = {};
227        for (var lw1j = 0; lw1j < lw1M.length; lw1j++) {
228            if (lw1_f[lw1M[lw1j].tag] === undefined) { lw1_f[lw1M[lw1j].tag] = lw1M[lw1j].value; }
229        }
230        if (lw1_f["80"] === undefined) { lw1_fok = false; }
231        var lw1AddrHex = lw1_f["0C"];
232        var lw1AddrStr = "";
233        if (typeof lw1AddrHex === "string" && lw1AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw1AddrHex)) {
234            for (var lw1AddrI = 0; lw1AddrI < lw1AddrHex.length; lw1AddrI += 2) {
235                lw1AddrStr += String.fromCharCode(parseInt(lw1AddrHex.substr(lw1AddrI, 2), 16));
236            }
237        }
238        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw1AddrStr)) { lw1_fok = false; }
239        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
240        if (lw1_f["81"] !== "0780") { lw1_fok = false; }  // operation
241        if (lw1_f["5A"] !== "989209012143658709F5") { lw1_fok = false; }  // iccid
242    }
243    bind.checkData("S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields", "1", lw1_fok ? "1" : "0");
244
245    // 步骤 2:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
246    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
247    var sdCla2 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
248    var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", "BF2800", "00", "9000");
249    bind.checkData("S2-C1 SW", "9000", s2.sw);
250    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
251    var lw2T = BindEs10xSingleRequest.parseBerTlv(s2.resp);
252    var lw2Ok0 = lw2T.length === 1 && lw2T[0].tag === "BF28";
253    var lw2_br = lw2Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw2T[0].value) : [];
254    var lw2_brtag = lw2_br.length === 1 ? lw2_br[0].tag : "";
255    var lw2_els = lw2_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw2_br[0].value) : [];
256    bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw2_brtag === "A0" && lw2_els.length === 2) ? "1" : "0");
257    var lw2_fok = lw2_brtag === "A0" && lw2_els.length > 0;
258    for (var lw2i = 0; lw2i < lw2_els.length; lw2i++) {
259        if (lw2_els[lw2i].tag !== "BF2F") { lw2_fok = false; continue; }
260        var lw2M = BindEs10xSingleRequest.parseBerTlv(lw2_els[lw2i].value);
261        var lw2_f = {};
262        for (var lw2j = 0; lw2j < lw2M.length; lw2j++) {
263            if (lw2_f[lw2M[lw2j].tag] === undefined) { lw2_f[lw2M[lw2j].tag] = lw2M[lw2j].value; }
264        }
265        if (lw2_f["80"] === undefined) { lw2_fok = false; }
266        var lw2AddrHex = lw2_f["0C"];
267        var lw2AddrStr = "";
268        if (typeof lw2AddrHex === "string" && lw2AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw2AddrHex)) {
269            for (var lw2AddrI = 0; lw2AddrI < lw2AddrHex.length; lw2AddrI += 2) {
270                lw2AddrStr += String.fromCharCode(parseInt(lw2AddrHex.substr(lw2AddrI, 2), 16));
271            }
272        }
273        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw2AddrStr)) { lw2_fok = false; }
274        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
275        if (lw2_f["81"] !== "0780") { lw2_fok = false; }  // operation
276        if (lw2_f["5A"] !== "989209012143658709F5") { lw2_fok = false; }  // iccid
277    }
278    bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw2_fok ? "1" : "0");
279
280    // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
281    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
282    var sdCla3 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
283    var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2803810100", "00", "9000");
284    bind.checkData("S3-C1 SW", "9000", s3.sw);
285    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
286    var lw3T = BindEs10xSingleRequest.parseBerTlv(s3.resp);
287    var lw3Ok0 = lw3T.length === 1 && lw3T[0].tag === "BF28";
288    var lw3_br = lw3Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw3T[0].value) : [];
289    var lw3_brtag = lw3_br.length === 1 ? lw3_br[0].tag : "";
290    var lw3_els = lw3_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw3_br[0].value) : [];
291    bind.checkData("S3-C2 R-APDU 二选一 branch/count", "1", (lw3_brtag === "A0" && lw3_els.length === 0) || (lw3_brtag === "81" && lw3_br.length === 1 && lw3_br[0].value === "7F") ? "1" : "0");
292
293    // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
294    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
295    var sdCla4 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
296    var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF280481020780", "00", "9000");
297    bind.checkData("S4-C1 SW", "9000", s4.sw);
298    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
299    var lw4T = BindEs10xSingleRequest.parseBerTlv(s4.resp);
300    var lw4Ok0 = lw4T.length === 1 && lw4T[0].tag === "BF28";
301    var lw4_br = lw4Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw4T[0].value) : [];
302    var lw4_brtag = lw4_br.length === 1 ? lw4_br[0].tag : "";
303    var lw4_els = lw4_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw4_br[0].value) : [];
304    bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw4_brtag === "A0" && lw4_els.length === 2) ? "1" : "0");
305    var lw4_fok = lw4_brtag === "A0" && lw4_els.length > 0;
306    for (var lw4i = 0; lw4i < lw4_els.length; lw4i++) {
307        if (lw4_els[lw4i].tag !== "BF2F") { lw4_fok = false; continue; }
308        var lw4M = BindEs10xSingleRequest.parseBerTlv(lw4_els[lw4i].value);
309        var lw4_f = {};
310        for (var lw4j = 0; lw4j < lw4M.length; lw4j++) {
311            if (lw4_f[lw4M[lw4j].tag] === undefined) { lw4_f[lw4M[lw4j].tag] = lw4M[lw4j].value; }
312        }
313        if (lw4_f["80"] === undefined) { lw4_fok = false; }
314        var lw4AddrHex = lw4_f["0C"];
315        var lw4AddrStr = "";
316        if (typeof lw4AddrHex === "string" && lw4AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw4AddrHex)) {
317            for (var lw4AddrI = 0; lw4AddrI < lw4AddrHex.length; lw4AddrI += 2) {
318                lw4AddrStr += String.fromCharCode(parseInt(lw4AddrHex.substr(lw4AddrI, 2), 16));
319            }
320        }
321        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw4AddrStr)) { lw4_fok = false; }
322        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
323        if (lw4_f["81"] !== "0780") { lw4_fok = false; }  // operation
324        if (lw4_f["5A"] !== "989209012143658709F5") { lw4_fok = false; }  // iccid
325    }
326    bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw4_fok ? "1" : "0");
327
328    // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
329    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
330    var sdCla5 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
331    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF280481020640", "00", "9000");
332    bind.checkData("S5-C1 SW", "9000", s5.sw);
333    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
334    var lw5T = BindEs10xSingleRequest.parseBerTlv(s5.resp);
335    var lw5Ok0 = lw5T.length === 1 && lw5T[0].tag === "BF28";
336    var lw5_br = lw5Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw5T[0].value) : [];
337    var lw5_brtag = lw5_br.length === 1 ? lw5_br[0].tag : "";
338    var lw5_els = lw5_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw5_br[0].value) : [];
339    bind.checkData("S5-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw5_brtag === "A0" && lw5_els.length === 0) ? "1" : "0");
340
341    // 步骤 6:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
342    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
343    var sdCla6 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
344    var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF280481020520", "00", "9000");
345    bind.checkData("S6-C1 SW", "9000", s6.sw);
346    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
347    var lw6T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
348    var lw6Ok0 = lw6T.length === 1 && lw6T[0].tag === "BF28";
349    var lw6_br = lw6Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw6T[0].value) : [];
350    var lw6_brtag = lw6_br.length === 1 ? lw6_br[0].tag : "";
351    var lw6_els = lw6_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw6_br[0].value) : [];
352    bind.checkData("S6-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw6_brtag === "A0" && lw6_els.length === 0) ? "1" : "0");
353
354    // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
355    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
356    var sdCla7 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
357    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF280481020410", "00", "9000");
358    bind.checkData("S7-C1 SW", "9000", s7.sw);
359    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
360    var lw7T = BindEs10xSingleRequest.parseBerTlv(s7.resp);
361    var lw7Ok0 = lw7T.length === 1 && lw7T[0].tag === "BF28";
362    var lw7_br = lw7Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw7T[0].value) : [];
363    var lw7_brtag = lw7_br.length === 1 ? lw7_br[0].tag : "";
364    var lw7_els = lw7_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw7_br[0].value) : [];
365    bind.checkData("S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw7_brtag === "A0" && lw7_els.length === 0) ? "1" : "0");
366
367    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
368    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
369    var sdCla8 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
370    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2804810206C0", "00", "9000");
371    bind.checkData("S8-C1 SW", "9000", s8.sw);
372    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
373    var lw8T = BindEs10xSingleRequest.parseBerTlv(s8.resp);
374    var lw8Ok0 = lw8T.length === 1 && lw8T[0].tag === "BF28";
375    var lw8_br = lw8Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw8T[0].value) : [];
376    var lw8_brtag = lw8_br.length === 1 ? lw8_br[0].tag : "";
377    var lw8_els = lw8_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw8_br[0].value) : [];
378    bind.checkData("S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw8_brtag === "A0" && lw8_els.length === 2) ? "1" : "0");
379    var lw8_fok = lw8_brtag === "A0" && lw8_els.length > 0;
380    for (var lw8i = 0; lw8i < lw8_els.length; lw8i++) {
381        if (lw8_els[lw8i].tag !== "BF2F") { lw8_fok = false; continue; }
382        var lw8M = BindEs10xSingleRequest.parseBerTlv(lw8_els[lw8i].value);
383        var lw8_f = {};
384        for (var lw8j = 0; lw8j < lw8M.length; lw8j++) {
385            if (lw8_f[lw8M[lw8j].tag] === undefined) { lw8_f[lw8M[lw8j].tag] = lw8M[lw8j].value; }
386        }
387        if (lw8_f["80"] === undefined) { lw8_fok = false; }
388        var lw8AddrHex = lw8_f["0C"];
389        var lw8AddrStr = "";
390        if (typeof lw8AddrHex === "string" && lw8AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw8AddrHex)) {
391            for (var lw8AddrI = 0; lw8AddrI < lw8AddrHex.length; lw8AddrI += 2) {
392                lw8AddrStr += String.fromCharCode(parseInt(lw8AddrHex.substr(lw8AddrI, 2), 16));
393            }
394        }
395        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw8AddrStr)) { lw8_fok = false; }
396        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
397        if (lw8_f["81"] !== "0780") { lw8_fok = false; }  // operation
398        if (lw8_f["5A"] !== "989209012143658709F5") { lw8_fok = false; }  // iccid
399    }
400    bind.checkData("S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw8_fok ? "1" : "0");
401
402    // 步骤 9:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
403    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
404    var sdCla9 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
405    var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF280481020430", "00", "9000");
406    bind.checkData("S9-C1 SW", "9000", s9.sw);
407    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
408    var lw9T = BindEs10xSingleRequest.parseBerTlv(s9.resp);
409    var lw9Ok0 = lw9T.length === 1 && lw9T[0].tag === "BF28";
410    var lw9_br = lw9Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw9T[0].value) : [];
411    var lw9_brtag = lw9_br.length === 1 ? lw9_br[0].tag : "";
412    var lw9_els = lw9_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw9_br[0].value) : [];
413    bind.checkData("S9-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw9_brtag === "A0" && lw9_els.length === 0) ? "1" : "0");
414
415    // 步骤 10:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
416    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
417    var sdCla10 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
418    var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", "BF280481020560", "00", "9000");
419    bind.checkData("S10-C1 SW", "9000", s10.sw);
420    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
421    var lw10T = BindEs10xSingleRequest.parseBerTlv(s10.resp);
422    var lw10Ok0 = lw10T.length === 1 && lw10T[0].tag === "BF28";
423    var lw10_br = lw10Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw10T[0].value) : [];
424    var lw10_brtag = lw10_br.length === 1 ? lw10_br[0].tag : "";
425    var lw10_els = lw10_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw10_br[0].value) : [];
426    bind.checkData("S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw10_brtag === "A0" && lw10_els.length === 0) ? "1" : "0");
427
428    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
429    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
430    var sdCla11 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
431    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2804810205E0", "00", "9000");
432    bind.checkData("S11-C1 SW", "9000", s11.sw);
433    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
434    var lw11T = BindEs10xSingleRequest.parseBerTlv(s11.resp);
435    var lw11Ok0 = lw11T.length === 1 && lw11T[0].tag === "BF28";
436    var lw11_br = lw11Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw11T[0].value) : [];
437    var lw11_brtag = lw11_br.length === 1 ? lw11_br[0].tag : "";
438    var lw11_els = lw11_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw11_br[0].value) : [];
439    bind.checkData("S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw11_brtag === "A0" && lw11_els.length === 2) ? "1" : "0");
440    var lw11_fok = lw11_brtag === "A0" && lw11_els.length > 0;
441    for (var lw11i = 0; lw11i < lw11_els.length; lw11i++) {
442        if (lw11_els[lw11i].tag !== "BF2F") { lw11_fok = false; continue; }
443        var lw11M = BindEs10xSingleRequest.parseBerTlv(lw11_els[lw11i].value);
444        var lw11_f = {};
445        for (var lw11j = 0; lw11j < lw11M.length; lw11j++) {
446            if (lw11_f[lw11M[lw11j].tag] === undefined) { lw11_f[lw11M[lw11j].tag] = lw11M[lw11j].value; }
447        }
448        if (lw11_f["80"] === undefined) { lw11_fok = false; }
449        var lw11AddrHex = lw11_f["0C"];
450        var lw11AddrStr = "";
451        if (typeof lw11AddrHex === "string" && lw11AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw11AddrHex)) {
452            for (var lw11AddrI = 0; lw11AddrI < lw11AddrHex.length; lw11AddrI += 2) {
453                lw11AddrStr += String.fromCharCode(parseInt(lw11AddrHex.substr(lw11AddrI, 2), 16));
454            }
455        }
456        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw11AddrStr)) { lw11_fok = false; }
457        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
458        if (lw11_f["81"] !== "0780") { lw11_fok = false; }  // operation
459        if (lw11_f["5A"] !== "989209012143658709F5") { lw11_fok = false; }  // iccid
460    }
461    bind.checkData("S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw11_fok ? "1" : "0");
462
463    // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
464    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
465    var sdCla12 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
466    var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2804810204F0", "00", "9000");
467    bind.checkData("S12-C1 SW", "9000", s12.sw);
468    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
469    var lw12T = BindEs10xSingleRequest.parseBerTlv(s12.resp);
470    var lw12Ok0 = lw12T.length === 1 && lw12T[0].tag === "BF28";
471    var lw12_br = lw12Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw12T[0].value) : [];
472    var lw12_brtag = lw12_br.length === 1 ? lw12_br[0].tag : "";
473    var lw12_els = lw12_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw12_br[0].value) : [];
474    bind.checkData("S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw12_brtag === "A0" && lw12_els.length === 1) ? "1" : "0");
475    var lw12_fok = lw12_brtag === "A0" && lw12_els.length > 0;
476    for (var lw12i = 0; lw12i < lw12_els.length; lw12i++) {
477        if (lw12_els[lw12i].tag !== "BF2F") { lw12_fok = false; continue; }
478        var lw12M = BindEs10xSingleRequest.parseBerTlv(lw12_els[lw12i].value);
479        var lw12_f = {};
480        for (var lw12j = 0; lw12j < lw12M.length; lw12j++) {
481            if (lw12_f[lw12M[lw12j].tag] === undefined) { lw12_f[lw12M[lw12j].tag] = lw12M[lw12j].value; }
482        }
483        if (lw12_f["80"] === undefined) { lw12_fok = false; }
484        var lw12AddrHex = lw12_f["0C"];
485        var lw12AddrStr = "";
486        if (typeof lw12AddrHex === "string" && lw12AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw12AddrHex)) {
487            for (var lw12AddrI = 0; lw12AddrI < lw12AddrHex.length; lw12AddrI += 2) {
488                lw12AddrStr += String.fromCharCode(parseInt(lw12AddrHex.substr(lw12AddrI, 2), 16));
489            }
490        }
491        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw12AddrStr)) { lw12_fok = false; }
492        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
493        if (lw12_f["81"] !== "0640") { lw12_fok = false; }  // operation
494        if (lw12_f["5A"] !== "989209012143658709F5") { lw12_fok = false; }  // iccid
495    }
496    bind.checkData("S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields", "1", lw12_fok ? "1" : "0");
497
498    // 步骤 13:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
499    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
500    var sdCla13 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
501    var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", "BF2800", "00", "9000");
502    bind.checkData("S13-C1 SW", "9000", s13.sw);
503    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
504    var lw13T = BindEs10xSingleRequest.parseBerTlv(s13.resp);
505    var lw13Ok0 = lw13T.length === 1 && lw13T[0].tag === "BF28";
506    var lw13_br = lw13Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw13T[0].value) : [];
507    var lw13_brtag = lw13_br.length === 1 ? lw13_br[0].tag : "";
508    var lw13_els = lw13_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw13_br[0].value) : [];
509    bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw13_brtag === "A0" && lw13_els.length === 1) ? "1" : "0");
510    var lw13_fok = lw13_brtag === "A0" && lw13_els.length > 0;
511    for (var lw13i = 0; lw13i < lw13_els.length; lw13i++) {
512        if (lw13_els[lw13i].tag !== "BF2F") { lw13_fok = false; continue; }
513        var lw13M = BindEs10xSingleRequest.parseBerTlv(lw13_els[lw13i].value);
514        var lw13_f = {};
515        for (var lw13j = 0; lw13j < lw13M.length; lw13j++) {
516            if (lw13_f[lw13M[lw13j].tag] === undefined) { lw13_f[lw13M[lw13j].tag] = lw13M[lw13j].value; }
517        }
518        if (lw13_f["80"] === undefined) { lw13_fok = false; }
519        var lw13AddrHex = lw13_f["0C"];
520        var lw13AddrStr = "";
521        if (typeof lw13AddrHex === "string" && lw13AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw13AddrHex)) {
522            for (var lw13AddrI = 0; lw13AddrI < lw13AddrHex.length; lw13AddrI += 2) {
523                lw13AddrStr += String.fromCharCode(parseInt(lw13AddrHex.substr(lw13AddrI, 2), 16));
524            }
525        }
526        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw13AddrStr)) { lw13_fok = false; }
527        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
528        if (lw13_f["81"] !== "0640") { lw13_fok = false; }  // operation
529        if (lw13_f["5A"] !== "989209012143658709F5") { lw13_fok = false; }  // iccid
530    }
531    bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw13_fok ? "1" : "0");
532
533    // 步骤 14:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
534    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
535    var sdCla14 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
536    var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2803810100", "00", "9000");
537    bind.checkData("S14-C1 SW", "9000", s14.sw);
538    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
539    var lw14T = BindEs10xSingleRequest.parseBerTlv(s14.resp);
540    var lw14Ok0 = lw14T.length === 1 && lw14T[0].tag === "BF28";
541    var lw14_br = lw14Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw14T[0].value) : [];
542    var lw14_brtag = lw14_br.length === 1 ? lw14_br[0].tag : "";
543    var lw14_els = lw14_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw14_br[0].value) : [];
544    bind.checkData("S14-C2 R-APDU 二选一 branch/count", "1", (lw14_brtag === "A0" && lw14_els.length === 0) || (lw14_brtag === "81" && lw14_br.length === 1 && lw14_br[0].value === "7F") ? "1" : "0");
545
546    // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
547    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
548    var sdCla15 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
549    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF280481020780", "00", "9000");
550    bind.checkData("S15-C1 SW", "9000", s15.sw);
551    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
552    var lw15T = BindEs10xSingleRequest.parseBerTlv(s15.resp);
553    var lw15Ok0 = lw15T.length === 1 && lw15T[0].tag === "BF28";
554    var lw15_br = lw15Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw15T[0].value) : [];
555    var lw15_brtag = lw15_br.length === 1 ? lw15_br[0].tag : "";
556    var lw15_els = lw15_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw15_br[0].value) : [];
557    bind.checkData("S15-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw15_brtag === "A0" && lw15_els.length === 0) ? "1" : "0");
558
559    // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
560    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
561    var sdCla16 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
562    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF280481020640", "00", "9000");
563    bind.checkData("S16-C1 SW", "9000", s16.sw);
564    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
565    var lw16T = BindEs10xSingleRequest.parseBerTlv(s16.resp);
566    var lw16Ok0 = lw16T.length === 1 && lw16T[0].tag === "BF28";
567    var lw16_br = lw16Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw16T[0].value) : [];
568    var lw16_brtag = lw16_br.length === 1 ? lw16_br[0].tag : "";
569    var lw16_els = lw16_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw16_br[0].value) : [];
570    bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw16_brtag === "A0" && lw16_els.length === 1) ? "1" : "0");
571    var lw16_fok = lw16_brtag === "A0" && lw16_els.length > 0;
572    for (var lw16i = 0; lw16i < lw16_els.length; lw16i++) {
573        if (lw16_els[lw16i].tag !== "BF2F") { lw16_fok = false; continue; }
574        var lw16M = BindEs10xSingleRequest.parseBerTlv(lw16_els[lw16i].value);
575        var lw16_f = {};
576        for (var lw16j = 0; lw16j < lw16M.length; lw16j++) {
577            if (lw16_f[lw16M[lw16j].tag] === undefined) { lw16_f[lw16M[lw16j].tag] = lw16M[lw16j].value; }
578        }
579        if (lw16_f["80"] === undefined) { lw16_fok = false; }
580        var lw16AddrHex = lw16_f["0C"];
581        var lw16AddrStr = "";
582        if (typeof lw16AddrHex === "string" && lw16AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw16AddrHex)) {
583            for (var lw16AddrI = 0; lw16AddrI < lw16AddrHex.length; lw16AddrI += 2) {
584                lw16AddrStr += String.fromCharCode(parseInt(lw16AddrHex.substr(lw16AddrI, 2), 16));
585            }
586        }
587        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw16AddrStr)) { lw16_fok = false; }
588        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
589        if (lw16_f["81"] !== "0640") { lw16_fok = false; }  // operation
590        if (lw16_f["5A"] !== "989209012143658709F5") { lw16_fok = false; }  // iccid
591    }
592    bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw16_fok ? "1" : "0");
593
594    // 步骤 17:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
595    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
596    var sdCla17 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
597    var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF280481020520", "00", "9000");
598    bind.checkData("S17-C1 SW", "9000", s17.sw);
599    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
600    var lw17T = BindEs10xSingleRequest.parseBerTlv(s17.resp);
601    var lw17Ok0 = lw17T.length === 1 && lw17T[0].tag === "BF28";
602    var lw17_br = lw17Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw17T[0].value) : [];
603    var lw17_brtag = lw17_br.length === 1 ? lw17_br[0].tag : "";
604    var lw17_els = lw17_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw17_br[0].value) : [];
605    bind.checkData("S17-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw17_brtag === "A0" && lw17_els.length === 0) ? "1" : "0");
606
607    // 步骤 18:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
608    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
609    var sdCla18 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
610    var s18 = bind.sendApdu(sdCla18, "E2", "91", "00", "BF280481020410", "00", "9000");
611    bind.checkData("S18-C1 SW", "9000", s18.sw);
612    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
613    var lw18T = BindEs10xSingleRequest.parseBerTlv(s18.resp);
614    var lw18Ok0 = lw18T.length === 1 && lw18T[0].tag === "BF28";
615    var lw18_br = lw18Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw18T[0].value) : [];
616    var lw18_brtag = lw18_br.length === 1 ? lw18_br[0].tag : "";
617    var lw18_els = lw18_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw18_br[0].value) : [];
618    bind.checkData("S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw18_brtag === "A0" && lw18_els.length === 0) ? "1" : "0");
619
620    // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
621    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
622    var sdCla19 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
623    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF2804810206C0", "00", "9000");
624    bind.checkData("S19-C1 SW", "9000", s19.sw);
625    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
626    var lw19T = BindEs10xSingleRequest.parseBerTlv(s19.resp);
627    var lw19Ok0 = lw19T.length === 1 && lw19T[0].tag === "BF28";
628    var lw19_br = lw19Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw19T[0].value) : [];
629    var lw19_brtag = lw19_br.length === 1 ? lw19_br[0].tag : "";
630    var lw19_els = lw19_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw19_br[0].value) : [];
631    bind.checkData("S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw19_brtag === "A0" && lw19_els.length === 1) ? "1" : "0");
632    var lw19_fok = lw19_brtag === "A0" && lw19_els.length > 0;
633    for (var lw19i = 0; lw19i < lw19_els.length; lw19i++) {
634        if (lw19_els[lw19i].tag !== "BF2F") { lw19_fok = false; continue; }
635        var lw19M = BindEs10xSingleRequest.parseBerTlv(lw19_els[lw19i].value);
636        var lw19_f = {};
637        for (var lw19j = 0; lw19j < lw19M.length; lw19j++) {
638            if (lw19_f[lw19M[lw19j].tag] === undefined) { lw19_f[lw19M[lw19j].tag] = lw19M[lw19j].value; }
639        }
640        if (lw19_f["80"] === undefined) { lw19_fok = false; }
641        var lw19AddrHex = lw19_f["0C"];
642        var lw19AddrStr = "";
643        if (typeof lw19AddrHex === "string" && lw19AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw19AddrHex)) {
644            for (var lw19AddrI = 0; lw19AddrI < lw19AddrHex.length; lw19AddrI += 2) {
645                lw19AddrStr += String.fromCharCode(parseInt(lw19AddrHex.substr(lw19AddrI, 2), 16));
646            }
647        }
648        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw19AddrStr)) { lw19_fok = false; }
649        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
650        if (lw19_f["81"] !== "0640") { lw19_fok = false; }  // operation
651        if (lw19_f["5A"] !== "989209012143658709F5") { lw19_fok = false; }  // iccid
652    }
653    bind.checkData("S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw19_fok ? "1" : "0");
654
655    // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
656    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
657    var sdCla20 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
658    var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF280481020430", "00", "9000");
659    bind.checkData("S20-C1 SW", "9000", s20.sw);
660    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
661    var lw20T = BindEs10xSingleRequest.parseBerTlv(s20.resp);
662    var lw20Ok0 = lw20T.length === 1 && lw20T[0].tag === "BF28";
663    var lw20_br = lw20Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw20T[0].value) : [];
664    var lw20_brtag = lw20_br.length === 1 ? lw20_br[0].tag : "";
665    var lw20_els = lw20_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw20_br[0].value) : [];
666    bind.checkData("S20-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw20_brtag === "A0" && lw20_els.length === 0) ? "1" : "0");
667
668    // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
669    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
670    var sdCla21 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
671    var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF280481020560", "00", "9000");
672    bind.checkData("S21-C1 SW", "9000", s21.sw);
673    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
674    var lw21T = BindEs10xSingleRequest.parseBerTlv(s21.resp);
675    var lw21Ok0 = lw21T.length === 1 && lw21T[0].tag === "BF28";
676    var lw21_br = lw21Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw21T[0].value) : [];
677    var lw21_brtag = lw21_br.length === 1 ? lw21_br[0].tag : "";
678    var lw21_els = lw21_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw21_br[0].value) : [];
679    bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw21_brtag === "A0" && lw21_els.length === 1) ? "1" : "0");
680    var lw21_fok = lw21_brtag === "A0" && lw21_els.length > 0;
681    for (var lw21i = 0; lw21i < lw21_els.length; lw21i++) {
682        if (lw21_els[lw21i].tag !== "BF2F") { lw21_fok = false; continue; }
683        var lw21M = BindEs10xSingleRequest.parseBerTlv(lw21_els[lw21i].value);
684        var lw21_f = {};
685        for (var lw21j = 0; lw21j < lw21M.length; lw21j++) {
686            if (lw21_f[lw21M[lw21j].tag] === undefined) { lw21_f[lw21M[lw21j].tag] = lw21M[lw21j].value; }
687        }
688        if (lw21_f["80"] === undefined) { lw21_fok = false; }
689        var lw21AddrHex = lw21_f["0C"];
690        var lw21AddrStr = "";
691        if (typeof lw21AddrHex === "string" && lw21AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw21AddrHex)) {
692            for (var lw21AddrI = 0; lw21AddrI < lw21AddrHex.length; lw21AddrI += 2) {
693                lw21AddrStr += String.fromCharCode(parseInt(lw21AddrHex.substr(lw21AddrI, 2), 16));
694            }
695        }
696        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw21AddrStr)) { lw21_fok = false; }
697        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
698        if (lw21_f["81"] !== "0640") { lw21_fok = false; }  // operation
699        if (lw21_f["5A"] !== "989209012143658709F5") { lw21_fok = false; }  // iccid
700    }
701    bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw21_fok ? "1" : "0");
702
703    // 步骤 22:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
704    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
705    var sdCla22 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
706    var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF2804810205E0", "00", "9000");
707    bind.checkData("S22-C1 SW", "9000", s22.sw);
708    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
709    var lw22T = BindEs10xSingleRequest.parseBerTlv(s22.resp);
710    var lw22Ok0 = lw22T.length === 1 && lw22T[0].tag === "BF28";
711    var lw22_br = lw22Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw22T[0].value) : [];
712    var lw22_brtag = lw22_br.length === 1 ? lw22_br[0].tag : "";
713    var lw22_els = lw22_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw22_br[0].value) : [];
714    bind.checkData("S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw22_brtag === "A0" && lw22_els.length === 1) ? "1" : "0");
715    var lw22_fok = lw22_brtag === "A0" && lw22_els.length > 0;
716    for (var lw22i = 0; lw22i < lw22_els.length; lw22i++) {
717        if (lw22_els[lw22i].tag !== "BF2F") { lw22_fok = false; continue; }
718        var lw22M = BindEs10xSingleRequest.parseBerTlv(lw22_els[lw22i].value);
719        var lw22_f = {};
720        for (var lw22j = 0; lw22j < lw22M.length; lw22j++) {
721            if (lw22_f[lw22M[lw22j].tag] === undefined) { lw22_f[lw22M[lw22j].tag] = lw22M[lw22j].value; }
722        }
723        if (lw22_f["80"] === undefined) { lw22_fok = false; }
724        var lw22AddrHex = lw22_f["0C"];
725        var lw22AddrStr = "";
726        if (typeof lw22AddrHex === "string" && lw22AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw22AddrHex)) {
727            for (var lw22AddrI = 0; lw22AddrI < lw22AddrHex.length; lw22AddrI += 2) {
728                lw22AddrStr += String.fromCharCode(parseInt(lw22AddrHex.substr(lw22AddrI, 2), 16));
729            }
730        }
731        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw22AddrStr)) { lw22_fok = false; }
732        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
733        if (lw22_f["81"] !== "0640") { lw22_fok = false; }  // operation
734        if (lw22_f["5A"] !== "989209012143658709F5") { lw22_fok = false; }  // iccid
735    }
736    bind.checkData("S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw22_fok ? "1" : "0");
737
738    // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
739    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
740    var sdCla23 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
741    var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF2804810204F0", "00", "9000");
742    bind.checkData("S23-C1 SW", "9000", s23.sw);
743    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
744    var lw23T = BindEs10xSingleRequest.parseBerTlv(s23.resp);
745    var lw23Ok0 = lw23T.length === 1 && lw23T[0].tag === "BF28";
746    var lw23_br = lw23Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw23T[0].value) : [];
747    var lw23_brtag = lw23_br.length === 1 ? lw23_br[0].tag : "";
748    var lw23_els = lw23_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw23_br[0].value) : [];
749    bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw23_brtag === "A0" && lw23_els.length === 1) ? "1" : "0");
750    var lw23_fok = lw23_brtag === "A0" && lw23_els.length > 0;
751    for (var lw23i = 0; lw23i < lw23_els.length; lw23i++) {
752        if (lw23_els[lw23i].tag !== "BF2F") { lw23_fok = false; continue; }
753        var lw23M = BindEs10xSingleRequest.parseBerTlv(lw23_els[lw23i].value);
754        var lw23_f = {};
755        for (var lw23j = 0; lw23j < lw23M.length; lw23j++) {
756            if (lw23_f[lw23M[lw23j].tag] === undefined) { lw23_f[lw23M[lw23j].tag] = lw23M[lw23j].value; }
757        }
758        if (lw23_f["80"] === undefined) { lw23_fok = false; }
759        var lw23AddrHex = lw23_f["0C"];
760        var lw23AddrStr = "";
761        if (typeof lw23AddrHex === "string" && lw23AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw23AddrHex)) {
762            for (var lw23AddrI = 0; lw23AddrI < lw23AddrHex.length; lw23AddrI += 2) {
763                lw23AddrStr += String.fromCharCode(parseInt(lw23AddrHex.substr(lw23AddrI, 2), 16));
764            }
765        }
766        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw23AddrStr)) { lw23_fok = false; }
767        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
768        if (lw23_f["81"] !== "0520") { lw23_fok = false; }  // operation
769        if (lw23_f["5A"] !== "989209012143658709F5") { lw23_fok = false; }  // iccid
770    }
771    bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields", "1", lw23_fok ? "1" : "0");
772
773    // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
774    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
775    var sdCla24 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
776    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2800", "00", "9000");
777    bind.checkData("S24-C1 SW", "9000", s24.sw);
778    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
779    var lw24T = BindEs10xSingleRequest.parseBerTlv(s24.resp);
780    var lw24Ok0 = lw24T.length === 1 && lw24T[0].tag === "BF28";
781    var lw24_br = lw24Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw24T[0].value) : [];
782    var lw24_brtag = lw24_br.length === 1 ? lw24_br[0].tag : "";
783    var lw24_els = lw24_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw24_br[0].value) : [];
784    bind.checkData("S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw24_brtag === "A0" && lw24_els.length === 1) ? "1" : "0");
785    var lw24_fok = lw24_brtag === "A0" && lw24_els.length > 0;
786    for (var lw24i = 0; lw24i < lw24_els.length; lw24i++) {
787        if (lw24_els[lw24i].tag !== "BF2F") { lw24_fok = false; continue; }
788        var lw24M = BindEs10xSingleRequest.parseBerTlv(lw24_els[lw24i].value);
789        var lw24_f = {};
790        for (var lw24j = 0; lw24j < lw24M.length; lw24j++) {
791            if (lw24_f[lw24M[lw24j].tag] === undefined) { lw24_f[lw24M[lw24j].tag] = lw24M[lw24j].value; }
792        }
793        if (lw24_f["80"] === undefined) { lw24_fok = false; }
794        var lw24AddrHex = lw24_f["0C"];
795        var lw24AddrStr = "";
796        if (typeof lw24AddrHex === "string" && lw24AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw24AddrHex)) {
797            for (var lw24AddrI = 0; lw24AddrI < lw24AddrHex.length; lw24AddrI += 2) {
798                lw24AddrStr += String.fromCharCode(parseInt(lw24AddrHex.substr(lw24AddrI, 2), 16));
799            }
800        }
801        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw24AddrStr)) { lw24_fok = false; }
802        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
803        if (lw24_f["81"] !== "0520") { lw24_fok = false; }  // operation
804        if (lw24_f["5A"] !== "989209012143658709F5") { lw24_fok = false; }  // iccid
805    }
806    bind.checkData("S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw24_fok ? "1" : "0");
807
808    // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
809    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
810    var sdCla25 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
811    var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2803810100", "00", "9000");
812    bind.checkData("S25-C1 SW", "9000", s25.sw);
813    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
814    var lw25T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
815    var lw25Ok0 = lw25T.length === 1 && lw25T[0].tag === "BF28";
816    var lw25_br = lw25Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw25T[0].value) : [];
817    var lw25_brtag = lw25_br.length === 1 ? lw25_br[0].tag : "";
818    var lw25_els = lw25_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw25_br[0].value) : [];
819    bind.checkData("S25-C2 R-APDU 二选一 branch/count", "1", (lw25_brtag === "A0" && lw25_els.length === 0) || (lw25_brtag === "81" && lw25_br.length === 1 && lw25_br[0].value === "7F") ? "1" : "0");
820
821    // 步骤 26:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
822    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
823    var sdCla26 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
824    var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", "BF280481020780", "00", "9000");
825    bind.checkData("S26-C1 SW", "9000", s26.sw);
826    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
827    var lw26T = BindEs10xSingleRequest.parseBerTlv(s26.resp);
828    var lw26Ok0 = lw26T.length === 1 && lw26T[0].tag === "BF28";
829    var lw26_br = lw26Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw26T[0].value) : [];
830    var lw26_brtag = lw26_br.length === 1 ? lw26_br[0].tag : "";
831    var lw26_els = lw26_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw26_br[0].value) : [];
832    bind.checkData("S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw26_brtag === "A0" && lw26_els.length === 0) ? "1" : "0");
833
834    // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
835    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
836    var sdCla27 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
837    var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF280481020640", "00", "9000");
838    bind.checkData("S27-C1 SW", "9000", s27.sw);
839    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
840    var lw27T = BindEs10xSingleRequest.parseBerTlv(s27.resp);
841    var lw27Ok0 = lw27T.length === 1 && lw27T[0].tag === "BF28";
842    var lw27_br = lw27Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw27T[0].value) : [];
843    var lw27_brtag = lw27_br.length === 1 ? lw27_br[0].tag : "";
844    var lw27_els = lw27_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw27_br[0].value) : [];
845    bind.checkData("S27-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw27_brtag === "A0" && lw27_els.length === 0) ? "1" : "0");
846
847    // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
848    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
849    var sdCla28 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
850    var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF280481020520", "00", "9000");
851    bind.checkData("S28-C1 SW", "9000", s28.sw);
852    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
853    var lw28T = BindEs10xSingleRequest.parseBerTlv(s28.resp);
854    var lw28Ok0 = lw28T.length === 1 && lw28T[0].tag === "BF28";
855    var lw28_br = lw28Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw28T[0].value) : [];
856    var lw28_brtag = lw28_br.length === 1 ? lw28_br[0].tag : "";
857    var lw28_els = lw28_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw28_br[0].value) : [];
858    bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw28_brtag === "A0" && lw28_els.length === 1) ? "1" : "0");
859    var lw28_fok = lw28_brtag === "A0" && lw28_els.length > 0;
860    for (var lw28i = 0; lw28i < lw28_els.length; lw28i++) {
861        if (lw28_els[lw28i].tag !== "BF2F") { lw28_fok = false; continue; }
862        var lw28M = BindEs10xSingleRequest.parseBerTlv(lw28_els[lw28i].value);
863        var lw28_f = {};
864        for (var lw28j = 0; lw28j < lw28M.length; lw28j++) {
865            if (lw28_f[lw28M[lw28j].tag] === undefined) { lw28_f[lw28M[lw28j].tag] = lw28M[lw28j].value; }
866        }
867        if (lw28_f["80"] === undefined) { lw28_fok = false; }
868        var lw28AddrHex = lw28_f["0C"];
869        var lw28AddrStr = "";
870        if (typeof lw28AddrHex === "string" && lw28AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw28AddrHex)) {
871            for (var lw28AddrI = 0; lw28AddrI < lw28AddrHex.length; lw28AddrI += 2) {
872                lw28AddrStr += String.fromCharCode(parseInt(lw28AddrHex.substr(lw28AddrI, 2), 16));
873            }
874        }
875        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw28AddrStr)) { lw28_fok = false; }
876        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
877        if (lw28_f["81"] !== "0520") { lw28_fok = false; }  // operation
878        if (lw28_f["5A"] !== "989209012143658709F5") { lw28_fok = false; }  // iccid
879    }
880    bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw28_fok ? "1" : "0");
881
882    // 步骤 29:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
883    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
884    var sdCla29 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
885    var s29 = bind.sendApdu(sdCla29, "E2", "91", "00", "BF280481020410", "00", "9000");
886    bind.checkData("S29-C1 SW", "9000", s29.sw);
887    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
888    var lw29T = BindEs10xSingleRequest.parseBerTlv(s29.resp);
889    var lw29Ok0 = lw29T.length === 1 && lw29T[0].tag === "BF28";
890    var lw29_br = lw29Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw29T[0].value) : [];
891    var lw29_brtag = lw29_br.length === 1 ? lw29_br[0].tag : "";
892    var lw29_els = lw29_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw29_br[0].value) : [];
893    bind.checkData("S29-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw29_brtag === "A0" && lw29_els.length === 0) ? "1" : "0");
894
895    // 步骤 30:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
896    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
897    var sdCla30 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
898    var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2804810206C0", "00", "9000");
899    bind.checkData("S30-C1 SW", "9000", s30.sw);
900    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
901    var lw30T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
902    var lw30Ok0 = lw30T.length === 1 && lw30T[0].tag === "BF28";
903    var lw30_br = lw30Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw30T[0].value) : [];
904    var lw30_brtag = lw30_br.length === 1 ? lw30_br[0].tag : "";
905    var lw30_els = lw30_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw30_br[0].value) : [];
906    bind.checkData("S30-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw30_brtag === "A0" && lw30_els.length === 0) ? "1" : "0");
907
908    // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
909    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
910    var sdCla31 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
911    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF280481020430", "00", "9000");
912    bind.checkData("S31-C1 SW", "9000", s31.sw);
913    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
914    var lw31T = BindEs10xSingleRequest.parseBerTlv(s31.resp);
915    var lw31Ok0 = lw31T.length === 1 && lw31T[0].tag === "BF28";
916    var lw31_br = lw31Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw31T[0].value) : [];
917    var lw31_brtag = lw31_br.length === 1 ? lw31_br[0].tag : "";
918    var lw31_els = lw31_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw31_br[0].value) : [];
919    bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw31_brtag === "A0" && lw31_els.length === 1) ? "1" : "0");
920    var lw31_fok = lw31_brtag === "A0" && lw31_els.length > 0;
921    for (var lw31i = 0; lw31i < lw31_els.length; lw31i++) {
922        if (lw31_els[lw31i].tag !== "BF2F") { lw31_fok = false; continue; }
923        var lw31M = BindEs10xSingleRequest.parseBerTlv(lw31_els[lw31i].value);
924        var lw31_f = {};
925        for (var lw31j = 0; lw31j < lw31M.length; lw31j++) {
926            if (lw31_f[lw31M[lw31j].tag] === undefined) { lw31_f[lw31M[lw31j].tag] = lw31M[lw31j].value; }
927        }
928        if (lw31_f["80"] === undefined) { lw31_fok = false; }
929        var lw31AddrHex = lw31_f["0C"];
930        var lw31AddrStr = "";
931        if (typeof lw31AddrHex === "string" && lw31AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw31AddrHex)) {
932            for (var lw31AddrI = 0; lw31AddrI < lw31AddrHex.length; lw31AddrI += 2) {
933                lw31AddrStr += String.fromCharCode(parseInt(lw31AddrHex.substr(lw31AddrI, 2), 16));
934            }
935        }
936        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw31AddrStr)) { lw31_fok = false; }
937        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
938        if (lw31_f["81"] !== "0520") { lw31_fok = false; }  // operation
939        if (lw31_f["5A"] !== "989209012143658709F5") { lw31_fok = false; }  // iccid
940    }
941    bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw31_fok ? "1" : "0");
942
943    // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
944    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
945    var sdCla32 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
946    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF280481020560", "00", "9000");
947    bind.checkData("S32-C1 SW", "9000", s32.sw);
948    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
949    var lw32T = BindEs10xSingleRequest.parseBerTlv(s32.resp);
950    var lw32Ok0 = lw32T.length === 1 && lw32T[0].tag === "BF28";
951    var lw32_br = lw32Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw32T[0].value) : [];
952    var lw32_brtag = lw32_br.length === 1 ? lw32_br[0].tag : "";
953    var lw32_els = lw32_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw32_br[0].value) : [];
954    bind.checkData("S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw32_brtag === "A0" && lw32_els.length === 1) ? "1" : "0");
955    var lw32_fok = lw32_brtag === "A0" && lw32_els.length > 0;
956    for (var lw32i = 0; lw32i < lw32_els.length; lw32i++) {
957        if (lw32_els[lw32i].tag !== "BF2F") { lw32_fok = false; continue; }
958        var lw32M = BindEs10xSingleRequest.parseBerTlv(lw32_els[lw32i].value);
959        var lw32_f = {};
960        for (var lw32j = 0; lw32j < lw32M.length; lw32j++) {
961            if (lw32_f[lw32M[lw32j].tag] === undefined) { lw32_f[lw32M[lw32j].tag] = lw32M[lw32j].value; }
962        }
963        if (lw32_f["80"] === undefined) { lw32_fok = false; }
964        var lw32AddrHex = lw32_f["0C"];
965        var lw32AddrStr = "";
966        if (typeof lw32AddrHex === "string" && lw32AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw32AddrHex)) {
967            for (var lw32AddrI = 0; lw32AddrI < lw32AddrHex.length; lw32AddrI += 2) {
968                lw32AddrStr += String.fromCharCode(parseInt(lw32AddrHex.substr(lw32AddrI, 2), 16));
969            }
970        }
971        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw32AddrStr)) { lw32_fok = false; }
972        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
973        if (lw32_f["81"] !== "0520") { lw32_fok = false; }  // operation
974        if (lw32_f["5A"] !== "989209012143658709F5") { lw32_fok = false; }  // iccid
975    }
976    bind.checkData("S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw32_fok ? "1" : "0");
977
978    // 步骤 33:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
979    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
980    var sdCla33 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
981    var s33 = bind.sendApdu(sdCla33, "E2", "91", "00", "BF2804810205E0", "00", "9000");
982    bind.checkData("S33-C1 SW", "9000", s33.sw);
983    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
984    var lw33T = BindEs10xSingleRequest.parseBerTlv(s33.resp);
985    var lw33Ok0 = lw33T.length === 1 && lw33T[0].tag === "BF28";
986    var lw33_br = lw33Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw33T[0].value) : [];
987    var lw33_brtag = lw33_br.length === 1 ? lw33_br[0].tag : "";
988    var lw33_els = lw33_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw33_br[0].value) : [];
989    bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw33_brtag === "A0" && lw33_els.length === 1) ? "1" : "0");
990    var lw33_fok = lw33_brtag === "A0" && lw33_els.length > 0;
991    for (var lw33i = 0; lw33i < lw33_els.length; lw33i++) {
992        if (lw33_els[lw33i].tag !== "BF2F") { lw33_fok = false; continue; }
993        var lw33M = BindEs10xSingleRequest.parseBerTlv(lw33_els[lw33i].value);
994        var lw33_f = {};
995        for (var lw33j = 0; lw33j < lw33M.length; lw33j++) {
996            if (lw33_f[lw33M[lw33j].tag] === undefined) { lw33_f[lw33M[lw33j].tag] = lw33M[lw33j].value; }
997        }
998        if (lw33_f["80"] === undefined) { lw33_fok = false; }
999        var lw33AddrHex = lw33_f["0C"];
1000        var lw33AddrStr = "";
1001        if (typeof lw33AddrHex === "string" && lw33AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw33AddrHex)) {
1002            for (var lw33AddrI = 0; lw33AddrI < lw33AddrHex.length; lw33AddrI += 2) {
1003                lw33AddrStr += String.fromCharCode(parseInt(lw33AddrHex.substr(lw33AddrI, 2), 16));
1004            }
1005        }
1006        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw33AddrStr)) { lw33_fok = false; }
1007        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1008        if (lw33_f["81"] !== "0520") { lw33_fok = false; }  // operation
1009        if (lw33_f["5A"] !== "989209012143658709F5") { lw33_fok = false; }  // iccid
1010    }
1011    bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw33_fok ? "1" : "0");
1012
1013    // 步骤 34:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
1014    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1015    var sdCla34 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1016    var s34 = bind.sendApdu(sdCla34, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1017    bind.checkData("S34-C1 SW", "9000", s34.sw);
1018    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1019    var lw34T = BindEs10xSingleRequest.parseBerTlv(s34.resp);
1020    var lw34Ok0 = lw34T.length === 1 && lw34T[0].tag === "BF28";
1021    var lw34_br = lw34Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw34T[0].value) : [];
1022    var lw34_brtag = lw34_br.length === 1 ? lw34_br[0].tag : "";
1023    var lw34_els = lw34_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw34_br[0].value) : [];
1024    bind.checkData("S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw34_brtag === "A0" && lw34_els.length === 1) ? "1" : "0");
1025    var lw34_fok = lw34_brtag === "A0" && lw34_els.length > 0;
1026    for (var lw34i = 0; lw34i < lw34_els.length; lw34i++) {
1027        if (lw34_els[lw34i].tag !== "BF2F") { lw34_fok = false; continue; }
1028        var lw34M = BindEs10xSingleRequest.parseBerTlv(lw34_els[lw34i].value);
1029        var lw34_f = {};
1030        for (var lw34j = 0; lw34j < lw34M.length; lw34j++) {
1031            if (lw34_f[lw34M[lw34j].tag] === undefined) { lw34_f[lw34M[lw34j].tag] = lw34M[lw34j].value; }
1032        }
1033        if (lw34_f["80"] === undefined) { lw34_fok = false; }
1034        var lw34AddrHex = lw34_f["0C"];
1035        var lw34AddrStr = "";
1036        if (typeof lw34AddrHex === "string" && lw34AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw34AddrHex)) {
1037            for (var lw34AddrI = 0; lw34AddrI < lw34AddrHex.length; lw34AddrI += 2) {
1038                lw34AddrStr += String.fromCharCode(parseInt(lw34AddrHex.substr(lw34AddrI, 2), 16));
1039            }
1040        }
1041        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw34AddrStr)) { lw34_fok = false; }
1042        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1043        if (lw34_f["81"] !== "0410") { lw34_fok = false; }  // operation
1044        if (lw34_f["5A"] !== "989209012143658709F5") { lw34_fok = false; }  // iccid
1045    }
1046    bind.checkData("S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields", "1", lw34_fok ? "1" : "0");
1047
1048    // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
1049    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1050    var sdCla35 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1051    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF2800", "00", "9000");
1052    bind.checkData("S35-C1 SW", "9000", s35.sw);
1053    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1054    var lw35T = BindEs10xSingleRequest.parseBerTlv(s35.resp);
1055    var lw35Ok0 = lw35T.length === 1 && lw35T[0].tag === "BF28";
1056    var lw35_br = lw35Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw35T[0].value) : [];
1057    var lw35_brtag = lw35_br.length === 1 ? lw35_br[0].tag : "";
1058    var lw35_els = lw35_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw35_br[0].value) : [];
1059    bind.checkData("S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw35_brtag === "A0" && lw35_els.length === 1) ? "1" : "0");
1060    var lw35_fok = lw35_brtag === "A0" && lw35_els.length > 0;
1061    for (var lw35i = 0; lw35i < lw35_els.length; lw35i++) {
1062        if (lw35_els[lw35i].tag !== "BF2F") { lw35_fok = false; continue; }
1063        var lw35M = BindEs10xSingleRequest.parseBerTlv(lw35_els[lw35i].value);
1064        var lw35_f = {};
1065        for (var lw35j = 0; lw35j < lw35M.length; lw35j++) {
1066            if (lw35_f[lw35M[lw35j].tag] === undefined) { lw35_f[lw35M[lw35j].tag] = lw35M[lw35j].value; }
1067        }
1068        if (lw35_f["80"] === undefined) { lw35_fok = false; }
1069        var lw35AddrHex = lw35_f["0C"];
1070        var lw35AddrStr = "";
1071        if (typeof lw35AddrHex === "string" && lw35AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw35AddrHex)) {
1072            for (var lw35AddrI = 0; lw35AddrI < lw35AddrHex.length; lw35AddrI += 2) {
1073                lw35AddrStr += String.fromCharCode(parseInt(lw35AddrHex.substr(lw35AddrI, 2), 16));
1074            }
1075        }
1076        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw35AddrStr)) { lw35_fok = false; }
1077        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1078        if (lw35_f["81"] !== "0410") { lw35_fok = false; }  // operation
1079        if (lw35_f["5A"] !== "989209012143658709F5") { lw35_fok = false; }  // iccid
1080    }
1081    bind.checkData("S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw35_fok ? "1" : "0");
1082
1083    // 步骤 36:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1084    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1085    var sdCla36 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1086    var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2803810100", "00", "9000");
1087    bind.checkData("S36-C1 SW", "9000", s36.sw);
1088    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1089    var lw36T = BindEs10xSingleRequest.parseBerTlv(s36.resp);
1090    var lw36Ok0 = lw36T.length === 1 && lw36T[0].tag === "BF28";
1091    var lw36_br = lw36Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw36T[0].value) : [];
1092    var lw36_brtag = lw36_br.length === 1 ? lw36_br[0].tag : "";
1093    var lw36_els = lw36_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw36_br[0].value) : [];
1094    bind.checkData("S36-C2 R-APDU 二选一 branch/count", "1", (lw36_brtag === "A0" && lw36_els.length === 0) || (lw36_brtag === "81" && lw36_br.length === 1 && lw36_br[0].value === "7F") ? "1" : "0");
1095
1096    // 步骤 37:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1097    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1098    var sdCla37 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1099    var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF280481020780", "00", "9000");
1100    bind.checkData("S37-C1 SW", "9000", s37.sw);
1101    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1102    var lw37T = BindEs10xSingleRequest.parseBerTlv(s37.resp);
1103    var lw37Ok0 = lw37T.length === 1 && lw37T[0].tag === "BF28";
1104    var lw37_br = lw37Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw37T[0].value) : [];
1105    var lw37_brtag = lw37_br.length === 1 ? lw37_br[0].tag : "";
1106    var lw37_els = lw37_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw37_br[0].value) : [];
1107    bind.checkData("S37-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw37_brtag === "A0" && lw37_els.length === 0) ? "1" : "0");
1108
1109    // 步骤 38:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1110    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1111    var sdCla38 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1112    var s38 = bind.sendApdu(sdCla38, "E2", "91", "00", "BF280481020640", "00", "9000");
1113    bind.checkData("S38-C1 SW", "9000", s38.sw);
1114    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1115    var lw38T = BindEs10xSingleRequest.parseBerTlv(s38.resp);
1116    var lw38Ok0 = lw38T.length === 1 && lw38T[0].tag === "BF28";
1117    var lw38_br = lw38Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw38T[0].value) : [];
1118    var lw38_brtag = lw38_br.length === 1 ? lw38_br[0].tag : "";
1119    var lw38_els = lw38_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw38_br[0].value) : [];
1120    bind.checkData("S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw38_brtag === "A0" && lw38_els.length === 0) ? "1" : "0");
1121
1122    // 步骤 39:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1123    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1124    var sdCla39 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1125    var s39 = bind.sendApdu(sdCla39, "E2", "91", "00", "BF280481020520", "00", "9000");
1126    bind.checkData("S39-C1 SW", "9000", s39.sw);
1127    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1128    var lw39T = BindEs10xSingleRequest.parseBerTlv(s39.resp);
1129    var lw39Ok0 = lw39T.length === 1 && lw39T[0].tag === "BF28";
1130    var lw39_br = lw39Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw39T[0].value) : [];
1131    var lw39_brtag = lw39_br.length === 1 ? lw39_br[0].tag : "";
1132    var lw39_els = lw39_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw39_br[0].value) : [];
1133    bind.checkData("S39-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw39_brtag === "A0" && lw39_els.length === 0) ? "1" : "0");
1134
1135    // 步骤 40:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1136    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1137    var sdCla40 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1138    var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF280481020410", "00", "9000");
1139    bind.checkData("S40-C1 SW", "9000", s40.sw);
1140    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1141    var lw40T = BindEs10xSingleRequest.parseBerTlv(s40.resp);
1142    var lw40Ok0 = lw40T.length === 1 && lw40T[0].tag === "BF28";
1143    var lw40_br = lw40Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw40T[0].value) : [];
1144    var lw40_brtag = lw40_br.length === 1 ? lw40_br[0].tag : "";
1145    var lw40_els = lw40_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw40_br[0].value) : [];
1146    bind.checkData("S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw40_brtag === "A0" && lw40_els.length === 1) ? "1" : "0");
1147    var lw40_fok = lw40_brtag === "A0" && lw40_els.length > 0;
1148    for (var lw40i = 0; lw40i < lw40_els.length; lw40i++) {
1149        if (lw40_els[lw40i].tag !== "BF2F") { lw40_fok = false; continue; }
1150        var lw40M = BindEs10xSingleRequest.parseBerTlv(lw40_els[lw40i].value);
1151        var lw40_f = {};
1152        for (var lw40j = 0; lw40j < lw40M.length; lw40j++) {
1153            if (lw40_f[lw40M[lw40j].tag] === undefined) { lw40_f[lw40M[lw40j].tag] = lw40M[lw40j].value; }
1154        }
1155        if (lw40_f["80"] === undefined) { lw40_fok = false; }
1156        var lw40AddrHex = lw40_f["0C"];
1157        var lw40AddrStr = "";
1158        if (typeof lw40AddrHex === "string" && lw40AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw40AddrHex)) {
1159            for (var lw40AddrI = 0; lw40AddrI < lw40AddrHex.length; lw40AddrI += 2) {
1160                lw40AddrStr += String.fromCharCode(parseInt(lw40AddrHex.substr(lw40AddrI, 2), 16));
1161            }
1162        }
1163        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw40AddrStr)) { lw40_fok = false; }
1164        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1165        if (lw40_f["81"] !== "0410") { lw40_fok = false; }  // operation
1166        if (lw40_f["5A"] !== "989209012143658709F5") { lw40_fok = false; }  // iccid
1167    }
1168    bind.checkData("S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw40_fok ? "1" : "0");
1169
1170    // 步骤 41:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1171    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1172    var sdCla41 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1173    var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1174    bind.checkData("S41-C1 SW", "9000", s41.sw);
1175    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1176    var lw41T = BindEs10xSingleRequest.parseBerTlv(s41.resp);
1177    var lw41Ok0 = lw41T.length === 1 && lw41T[0].tag === "BF28";
1178    var lw41_br = lw41Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw41T[0].value) : [];
1179    var lw41_brtag = lw41_br.length === 1 ? lw41_br[0].tag : "";
1180    var lw41_els = lw41_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw41_br[0].value) : [];
1181    bind.checkData("S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw41_brtag === "A0" && lw41_els.length === 0) ? "1" : "0");
1182
1183    // 步骤 42:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1184    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1185    var sdCla42 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1186    var s42 = bind.sendApdu(sdCla42, "E2", "91", "00", "BF280481020430", "00", "9000");
1187    bind.checkData("S42-C1 SW", "9000", s42.sw);
1188    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1189    var lw42T = BindEs10xSingleRequest.parseBerTlv(s42.resp);
1190    var lw42Ok0 = lw42T.length === 1 && lw42T[0].tag === "BF28";
1191    var lw42_br = lw42Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw42T[0].value) : [];
1192    var lw42_brtag = lw42_br.length === 1 ? lw42_br[0].tag : "";
1193    var lw42_els = lw42_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw42_br[0].value) : [];
1194    bind.checkData("S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw42_brtag === "A0" && lw42_els.length === 1) ? "1" : "0");
1195    var lw42_fok = lw42_brtag === "A0" && lw42_els.length > 0;
1196    for (var lw42i = 0; lw42i < lw42_els.length; lw42i++) {
1197        if (lw42_els[lw42i].tag !== "BF2F") { lw42_fok = false; continue; }
1198        var lw42M = BindEs10xSingleRequest.parseBerTlv(lw42_els[lw42i].value);
1199        var lw42_f = {};
1200        for (var lw42j = 0; lw42j < lw42M.length; lw42j++) {
1201            if (lw42_f[lw42M[lw42j].tag] === undefined) { lw42_f[lw42M[lw42j].tag] = lw42M[lw42j].value; }
1202        }
1203        if (lw42_f["80"] === undefined) { lw42_fok = false; }
1204        var lw42AddrHex = lw42_f["0C"];
1205        var lw42AddrStr = "";
1206        if (typeof lw42AddrHex === "string" && lw42AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw42AddrHex)) {
1207            for (var lw42AddrI = 0; lw42AddrI < lw42AddrHex.length; lw42AddrI += 2) {
1208                lw42AddrStr += String.fromCharCode(parseInt(lw42AddrHex.substr(lw42AddrI, 2), 16));
1209            }
1210        }
1211        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw42AddrStr)) { lw42_fok = false; }
1212        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1213        if (lw42_f["81"] !== "0410") { lw42_fok = false; }  // operation
1214        if (lw42_f["5A"] !== "989209012143658709F5") { lw42_fok = false; }  // iccid
1215    }
1216    bind.checkData("S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw42_fok ? "1" : "0");
1217
1218    // 步骤 43:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1219    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1220    var sdCla43 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1221    var s43 = bind.sendApdu(sdCla43, "E2", "91", "00", "BF280481020560", "00", "9000");
1222    bind.checkData("S43-C1 SW", "9000", s43.sw);
1223    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1224    var lw43T = BindEs10xSingleRequest.parseBerTlv(s43.resp);
1225    var lw43Ok0 = lw43T.length === 1 && lw43T[0].tag === "BF28";
1226    var lw43_br = lw43Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw43T[0].value) : [];
1227    var lw43_brtag = lw43_br.length === 1 ? lw43_br[0].tag : "";
1228    var lw43_els = lw43_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw43_br[0].value) : [];
1229    bind.checkData("S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw43_brtag === "A0" && lw43_els.length === 0) ? "1" : "0");
1230
1231    // 步骤 44:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1232    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1233    var sdCla44 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1234    var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF280481020470", "00", "9000");
1235    bind.checkData("S44-C1 SW", "9000", s44.sw);
1236    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1237    var lw44T = BindEs10xSingleRequest.parseBerTlv(s44.resp);
1238    var lw44Ok0 = lw44T.length === 1 && lw44T[0].tag === "BF28";
1239    var lw44_br = lw44Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw44T[0].value) : [];
1240    var lw44_brtag = lw44_br.length === 1 ? lw44_br[0].tag : "";
1241    var lw44_els = lw44_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw44_br[0].value) : [];
1242    bind.checkData("S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw44_brtag === "A0" && lw44_els.length === 1) ? "1" : "0");
1243    var lw44_fok = lw44_brtag === "A0" && lw44_els.length > 0;
1244    for (var lw44i = 0; lw44i < lw44_els.length; lw44i++) {
1245        if (lw44_els[lw44i].tag !== "BF2F") { lw44_fok = false; continue; }
1246        var lw44M = BindEs10xSingleRequest.parseBerTlv(lw44_els[lw44i].value);
1247        var lw44_f = {};
1248        for (var lw44j = 0; lw44j < lw44M.length; lw44j++) {
1249            if (lw44_f[lw44M[lw44j].tag] === undefined) { lw44_f[lw44M[lw44j].tag] = lw44M[lw44j].value; }
1250        }
1251        if (lw44_f["80"] === undefined) { lw44_fok = false; }
1252        var lw44AddrHex = lw44_f["0C"];
1253        var lw44AddrStr = "";
1254        if (typeof lw44AddrHex === "string" && lw44AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw44AddrHex)) {
1255            for (var lw44AddrI = 0; lw44AddrI < lw44AddrHex.length; lw44AddrI += 2) {
1256                lw44AddrStr += String.fromCharCode(parseInt(lw44AddrHex.substr(lw44AddrI, 2), 16));
1257            }
1258        }
1259        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw44AddrStr)) { lw44_fok = false; }
1260        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1261        if (lw44_f["81"] !== "0410") { lw44_fok = false; }  // operation
1262        if (lw44_f["5A"] !== "989209012143658709F5") { lw44_fok = false; }  // iccid
1263    }
1264    bind.checkData("S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw44_fok ? "1" : "0");
1265
1266    // 步骤 45:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
1267    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1268    var sdCla45 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1269    var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1270    bind.checkData("S45-C1 SW", "9000", s45.sw);
1271    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1272    var lw45T = BindEs10xSingleRequest.parseBerTlv(s45.resp);
1273    var lw45Ok0 = lw45T.length === 1 && lw45T[0].tag === "BF28";
1274    var lw45_br = lw45Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw45T[0].value) : [];
1275    var lw45_brtag = lw45_br.length === 1 ? lw45_br[0].tag : "";
1276    var lw45_els = lw45_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw45_br[0].value) : [];
1277    bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count", "1", (lw45_brtag === "A0" && lw45_els.length === 2) ? "1" : "0");
1278    var lw45_feok = lw45_brtag === "A0" && lw45_els.length === 2;
1279    var lw45_fobs = [];
1280    for (var lw45i = 0; lw45i < lw45_els.length; lw45i++) {
1281        if (lw45_els[lw45i].tag !== "BF2F") { lw45_feok = false; continue; }
1282        var lw45M = BindEs10xSingleRequest.parseBerTlv(lw45_els[lw45i].value);
1283        var lw45_f = {};
1284        for (var lw45j = 0; lw45j < lw45M.length; lw45j++) {
1285            if (lw45_f[lw45M[lw45j].tag] === undefined) { lw45_f[lw45M[lw45j].tag] = lw45M[lw45j].value; }
1286        }
1287        if (lw45_f["80"] === undefined) { lw45_feok = false; }
1288        lw45_fobs.push(lw45_f);
1289    }
1290    var lw45_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1291    for (var lw45k = 0; lw45k < lw45_fexp.length; lw45k++) {
1292        var lw45mc = 0;
1293        for (var lw45m = 0; lw45m < lw45_fobs.length; lw45m++) {
1294            if (lw45_fobs[lw45m]["81"] === lw45_fexp[lw45k].op && lw45_fobs[lw45m]["0C"] === lw45_fexp[lw45k].addr && lw45_fobs[lw45m]["5A"] === lw45_fexp[lw45k].iccid) { lw45mc++; }
1295        }
1296        if (lw45mc !== 1) { lw45_feok = false; }
1297    }
1298    bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields", "1", lw45_feok ? "1" : "0");
1299
1300    // 步骤 46:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
1301    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1302    var sdCla46 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1303    var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF2800", "00", "9000");
1304    bind.checkData("S46-C1 SW", "9000", s46.sw);
1305    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1306    var lw46T = BindEs10xSingleRequest.parseBerTlv(s46.resp);
1307    var lw46Ok0 = lw46T.length === 1 && lw46T[0].tag === "BF28";
1308    var lw46_br = lw46Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw46T[0].value) : [];
1309    var lw46_brtag = lw46_br.length === 1 ? lw46_br[0].tag : "";
1310    var lw46_els = lw46_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw46_br[0].value) : [];
1311    bind.checkData("S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw46_brtag === "A0" && lw46_els.length === 2) ? "1" : "0");
1312    var lw46_feok = lw46_brtag === "A0" && lw46_els.length === 2;
1313    var lw46_fobs = [];
1314    for (var lw46i = 0; lw46i < lw46_els.length; lw46i++) {
1315        if (lw46_els[lw46i].tag !== "BF2F") { lw46_feok = false; continue; }
1316        var lw46M = BindEs10xSingleRequest.parseBerTlv(lw46_els[lw46i].value);
1317        var lw46_f = {};
1318        for (var lw46j = 0; lw46j < lw46M.length; lw46j++) {
1319            if (lw46_f[lw46M[lw46j].tag] === undefined) { lw46_f[lw46M[lw46j].tag] = lw46M[lw46j].value; }
1320        }
1321        if (lw46_f["80"] === undefined) { lw46_feok = false; }
1322        lw46_fobs.push(lw46_f);
1323    }
1324    var lw46_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1325    for (var lw46k = 0; lw46k < lw46_fexp.length; lw46k++) {
1326        var lw46mc = 0;
1327        for (var lw46m = 0; lw46m < lw46_fobs.length; lw46m++) {
1328            if (lw46_fobs[lw46m]["81"] === lw46_fexp[lw46k].op && lw46_fobs[lw46m]["0C"] === lw46_fexp[lw46k].addr && lw46_fobs[lw46m]["5A"] === lw46_fexp[lw46k].iccid) { lw46mc++; }
1329        }
1330        if (lw46mc !== 1) { lw46_feok = false; }
1331    }
1332    bind.checkData("S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw46_feok ? "1" : "0");
1333
1334    // 步骤 47:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1335    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1336    var sdCla47 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1337    var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", "BF2803810100", "00", "9000");
1338    bind.checkData("S47-C1 SW", "9000", s47.sw);
1339    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1340    var lw47T = BindEs10xSingleRequest.parseBerTlv(s47.resp);
1341    var lw47Ok0 = lw47T.length === 1 && lw47T[0].tag === "BF28";
1342    var lw47_br = lw47Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw47T[0].value) : [];
1343    var lw47_brtag = lw47_br.length === 1 ? lw47_br[0].tag : "";
1344    var lw47_els = lw47_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw47_br[0].value) : [];
1345    bind.checkData("S47-C2 R-APDU 二选一 branch/count", "1", (lw47_brtag === "A0" && lw47_els.length === 0) || (lw47_brtag === "81" && lw47_br.length === 1 && lw47_br[0].value === "7F") ? "1" : "0");
1346
1347    // 步骤 48:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1348    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1349    var sdCla48 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1350    var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF280481020780", "00", "9000");
1351    bind.checkData("S48-C1 SW", "9000", s48.sw);
1352    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1353    var lw48T = BindEs10xSingleRequest.parseBerTlv(s48.resp);
1354    var lw48Ok0 = lw48T.length === 1 && lw48T[0].tag === "BF28";
1355    var lw48_br = lw48Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw48T[0].value) : [];
1356    var lw48_brtag = lw48_br.length === 1 ? lw48_br[0].tag : "";
1357    var lw48_els = lw48_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw48_br[0].value) : [];
1358    bind.checkData("S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw48_brtag === "A0" && lw48_els.length === 2) ? "1" : "0");
1359    var lw48_feok = lw48_brtag === "A0" && lw48_els.length === 2;
1360    var lw48_fobs = [];
1361    for (var lw48i = 0; lw48i < lw48_els.length; lw48i++) {
1362        if (lw48_els[lw48i].tag !== "BF2F") { lw48_feok = false; continue; }
1363        var lw48M = BindEs10xSingleRequest.parseBerTlv(lw48_els[lw48i].value);
1364        var lw48_f = {};
1365        for (var lw48j = 0; lw48j < lw48M.length; lw48j++) {
1366            if (lw48_f[lw48M[lw48j].tag] === undefined) { lw48_f[lw48M[lw48j].tag] = lw48M[lw48j].value; }
1367        }
1368        if (lw48_f["80"] === undefined) { lw48_feok = false; }
1369        lw48_fobs.push(lw48_f);
1370    }
1371    var lw48_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1372    for (var lw48k = 0; lw48k < lw48_fexp.length; lw48k++) {
1373        var lw48mc = 0;
1374        for (var lw48m = 0; lw48m < lw48_fobs.length; lw48m++) {
1375            if (lw48_fobs[lw48m]["81"] === lw48_fexp[lw48k].op && lw48_fobs[lw48m]["0C"] === lw48_fexp[lw48k].addr && lw48_fobs[lw48m]["5A"] === lw48_fexp[lw48k].iccid) { lw48mc++; }
1376        }
1377        if (lw48mc !== 1) { lw48_feok = false; }
1378    }
1379    bind.checkData("S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw48_feok ? "1" : "0");
1380
1381    // 步骤 49:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1382    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1383    var sdCla49 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1384    var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF280481020640", "00", "9000");
1385    bind.checkData("S49-C1 SW", "9000", s49.sw);
1386    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1387    var lw49T = BindEs10xSingleRequest.parseBerTlv(s49.resp);
1388    var lw49Ok0 = lw49T.length === 1 && lw49T[0].tag === "BF28";
1389    var lw49_br = lw49Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw49T[0].value) : [];
1390    var lw49_brtag = lw49_br.length === 1 ? lw49_br[0].tag : "";
1391    var lw49_els = lw49_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw49_br[0].value) : [];
1392    bind.checkData("S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw49_brtag === "A0" && lw49_els.length === 0) ? "1" : "0");
1393
1394    // 步骤 50:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1395    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1396    var sdCla50 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1397    var s50 = bind.sendApdu(sdCla50, "E2", "91", "00", "BF280481020520", "00", "9000");
1398    bind.checkData("S50-C1 SW", "9000", s50.sw);
1399    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1400    var lw50T = BindEs10xSingleRequest.parseBerTlv(s50.resp);
1401    var lw50Ok0 = lw50T.length === 1 && lw50T[0].tag === "BF28";
1402    var lw50_br = lw50Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw50T[0].value) : [];
1403    var lw50_brtag = lw50_br.length === 1 ? lw50_br[0].tag : "";
1404    var lw50_els = lw50_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw50_br[0].value) : [];
1405    bind.checkData("S50-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw50_brtag === "A0" && lw50_els.length === 0) ? "1" : "0");
1406
1407    // 步骤 51:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1408    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1409    var sdCla51 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1410    var s51 = bind.sendApdu(sdCla51, "E2", "91", "00", "BF280481020410", "00", "9000");
1411    bind.checkData("S51-C1 SW", "9000", s51.sw);
1412    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1413    var lw51T = BindEs10xSingleRequest.parseBerTlv(s51.resp);
1414    var lw51Ok0 = lw51T.length === 1 && lw51T[0].tag === "BF28";
1415    var lw51_br = lw51Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw51T[0].value) : [];
1416    var lw51_brtag = lw51_br.length === 1 ? lw51_br[0].tag : "";
1417    var lw51_els = lw51_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw51_br[0].value) : [];
1418    bind.checkData("S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw51_brtag === "A0" && lw51_els.length === 0) ? "1" : "0");
1419
1420    // 步骤 52:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1421    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1422    var sdCla52 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1423    var s52 = bind.sendApdu(sdCla52, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1424    bind.checkData("S52-C1 SW", "9000", s52.sw);
1425    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1426    var lw52T = BindEs10xSingleRequest.parseBerTlv(s52.resp);
1427    var lw52Ok0 = lw52T.length === 1 && lw52T[0].tag === "BF28";
1428    var lw52_br = lw52Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw52T[0].value) : [];
1429    var lw52_brtag = lw52_br.length === 1 ? lw52_br[0].tag : "";
1430    var lw52_els = lw52_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw52_br[0].value) : [];
1431    bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw52_brtag === "A0" && lw52_els.length === 2) ? "1" : "0");
1432    var lw52_feok = lw52_brtag === "A0" && lw52_els.length === 2;
1433    var lw52_fobs = [];
1434    for (var lw52i = 0; lw52i < lw52_els.length; lw52i++) {
1435        if (lw52_els[lw52i].tag !== "BF2F") { lw52_feok = false; continue; }
1436        var lw52M = BindEs10xSingleRequest.parseBerTlv(lw52_els[lw52i].value);
1437        var lw52_f = {};
1438        for (var lw52j = 0; lw52j < lw52M.length; lw52j++) {
1439            if (lw52_f[lw52M[lw52j].tag] === undefined) { lw52_f[lw52M[lw52j].tag] = lw52M[lw52j].value; }
1440        }
1441        if (lw52_f["80"] === undefined) { lw52_feok = false; }
1442        lw52_fobs.push(lw52_f);
1443    }
1444    var lw52_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1445    for (var lw52k = 0; lw52k < lw52_fexp.length; lw52k++) {
1446        var lw52mc = 0;
1447        for (var lw52m = 0; lw52m < lw52_fobs.length; lw52m++) {
1448            if (lw52_fobs[lw52m]["81"] === lw52_fexp[lw52k].op && lw52_fobs[lw52m]["0C"] === lw52_fexp[lw52k].addr && lw52_fobs[lw52m]["5A"] === lw52_fexp[lw52k].iccid) { lw52mc++; }
1449        }
1450        if (lw52mc !== 1) { lw52_feok = false; }
1451    }
1452    bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw52_feok ? "1" : "0");
1453
1454    // 步骤 53:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1455    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1456    var sdCla53 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1457    var s53 = bind.sendApdu(sdCla53, "E2", "91", "00", "BF280481020430", "00", "9000");
1458    bind.checkData("S53-C1 SW", "9000", s53.sw);
1459    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1460    var lw53T = BindEs10xSingleRequest.parseBerTlv(s53.resp);
1461    var lw53Ok0 = lw53T.length === 1 && lw53T[0].tag === "BF28";
1462    var lw53_br = lw53Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw53T[0].value) : [];
1463    var lw53_brtag = lw53_br.length === 1 ? lw53_br[0].tag : "";
1464    var lw53_els = lw53_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw53_br[0].value) : [];
1465    bind.checkData("S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw53_brtag === "A0" && lw53_els.length === 0) ? "1" : "0");
1466
1467    // 步骤 54:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1468    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1469    var sdCla54 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1470    var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", "BF280481020560", "00", "9000");
1471    bind.checkData("S54-C1 SW", "9000", s54.sw);
1472    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1473    var lw54T = BindEs10xSingleRequest.parseBerTlv(s54.resp);
1474    var lw54Ok0 = lw54T.length === 1 && lw54T[0].tag === "BF28";
1475    var lw54_br = lw54Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw54T[0].value) : [];
1476    var lw54_brtag = lw54_br.length === 1 ? lw54_br[0].tag : "";
1477    var lw54_els = lw54_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw54_br[0].value) : [];
1478    bind.checkData("S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw54_brtag === "A0" && lw54_els.length === 0) ? "1" : "0");
1479
1480    // 步骤 55:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1481    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1482    var sdCla55 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1483    var s55 = bind.sendApdu(sdCla55, "E2", "91", "00", "BF2804810205E0", "00", "9000");
1484    bind.checkData("S55-C1 SW", "9000", s55.sw);
1485    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1486    var lw55T = BindEs10xSingleRequest.parseBerTlv(s55.resp);
1487    var lw55Ok0 = lw55T.length === 1 && lw55T[0].tag === "BF28";
1488    var lw55_br = lw55Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw55T[0].value) : [];
1489    var lw55_brtag = lw55_br.length === 1 ? lw55_br[0].tag : "";
1490    var lw55_els = lw55_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw55_br[0].value) : [];
1491    bind.checkData("S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw55_brtag === "A0" && lw55_els.length === 2) ? "1" : "0");
1492    var lw55_feok = lw55_brtag === "A0" && lw55_els.length === 2;
1493    var lw55_fobs = [];
1494    for (var lw55i = 0; lw55i < lw55_els.length; lw55i++) {
1495        if (lw55_els[lw55i].tag !== "BF2F") { lw55_feok = false; continue; }
1496        var lw55M = BindEs10xSingleRequest.parseBerTlv(lw55_els[lw55i].value);
1497        var lw55_f = {};
1498        for (var lw55j = 0; lw55j < lw55M.length; lw55j++) {
1499            if (lw55_f[lw55M[lw55j].tag] === undefined) { lw55_f[lw55M[lw55j].tag] = lw55M[lw55j].value; }
1500        }
1501        if (lw55_f["80"] === undefined) { lw55_feok = false; }
1502        lw55_fobs.push(lw55_f);
1503    }
1504    var lw55_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
1505    for (var lw55k = 0; lw55k < lw55_fexp.length; lw55k++) {
1506        var lw55mc = 0;
1507        for (var lw55m = 0; lw55m < lw55_fobs.length; lw55m++) {
1508            if (lw55_fobs[lw55m]["81"] === lw55_fexp[lw55k].op && lw55_fobs[lw55m]["0C"] === lw55_fexp[lw55k].addr && lw55_fobs[lw55m]["5A"] === lw55_fexp[lw55k].iccid) { lw55mc++; }
1509        }
1510        if (lw55mc !== 1) { lw55_feok = false; }
1511    }
1512    bind.checkData("S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw55_feok ? "1" : "0");
1513
1514    // 步骤 56:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
1515    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1516    var sdCla56 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1517    var s56 = bind.sendApdu(sdCla56, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1518    bind.checkData("S56-C1 SW", "9000", s56.sw);
1519    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1520    var lw56T = BindEs10xSingleRequest.parseBerTlv(s56.resp);
1521    var lw56Ok0 = lw56T.length === 1 && lw56T[0].tag === "BF28";
1522    var lw56_br = lw56Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw56T[0].value) : [];
1523    var lw56_brtag = lw56_br.length === 1 ? lw56_br[0].tag : "";
1524    var lw56_els = lw56_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw56_br[0].value) : [];
1525    bind.checkData("S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList branch/count", "1", (lw56_brtag === "A0" && lw56_els.length === 2) ? "1" : "0");
1526    var lw56_feok = lw56_brtag === "A0" && lw56_els.length === 2;
1527    var lw56_fobs = [];
1528    for (var lw56i = 0; lw56i < lw56_els.length; lw56i++) {
1529        if (lw56_els[lw56i].tag !== "BF2F") { lw56_feok = false; continue; }
1530        var lw56M = BindEs10xSingleRequest.parseBerTlv(lw56_els[lw56i].value);
1531        var lw56_f = {};
1532        for (var lw56j = 0; lw56j < lw56M.length; lw56j++) {
1533            if (lw56_f[lw56M[lw56j].tag] === undefined) { lw56_f[lw56M[lw56j].tag] = lw56M[lw56j].value; }
1534        }
1535        if (lw56_f["80"] === undefined) { lw56_feok = false; }
1536        lw56_fobs.push(lw56_f);
1537    }
1538    var lw56_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1539    for (var lw56k = 0; lw56k < lw56_fexp.length; lw56k++) {
1540        var lw56mc = 0;
1541        for (var lw56m = 0; lw56m < lw56_fobs.length; lw56m++) {
1542            if (lw56_fobs[lw56m]["81"] === lw56_fexp[lw56k].op && lw56_fobs[lw56m]["0C"] === lw56_fexp[lw56k].addr && lw56_fobs[lw56m]["5A"] === lw56_fexp[lw56k].iccid) { lw56mc++; }
1543        }
1544        if (lw56mc !== 1) { lw56_feok = false; }
1545    }
1546    bind.checkData("S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList element fields", "1", lw56_feok ? "1" : "0");
1547
1548    // 步骤 57:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
1549    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1550    var sdCla57 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1551    var s57 = bind.sendApdu(sdCla57, "E2", "91", "00", "BF2800", "00", "9000");
1552    bind.checkData("S57-C1 SW", "9000", s57.sw);
1553    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1554    var lw57T = BindEs10xSingleRequest.parseBerTlv(s57.resp);
1555    var lw57Ok0 = lw57T.length === 1 && lw57T[0].tag === "BF28";
1556    var lw57_br = lw57Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw57T[0].value) : [];
1557    var lw57_brtag = lw57_br.length === 1 ? lw57_br[0].tag : "";
1558    var lw57_els = lw57_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw57_br[0].value) : [];
1559    bind.checkData("S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count", "1", (lw57_brtag === "A0" && lw57_els.length === 2) ? "1" : "0");
1560    var lw57_feok = lw57_brtag === "A0" && lw57_els.length === 2;
1561    var lw57_fobs = [];
1562    for (var lw57i = 0; lw57i < lw57_els.length; lw57i++) {
1563        if (lw57_els[lw57i].tag !== "BF2F") { lw57_feok = false; continue; }
1564        var lw57M = BindEs10xSingleRequest.parseBerTlv(lw57_els[lw57i].value);
1565        var lw57_f = {};
1566        for (var lw57j = 0; lw57j < lw57M.length; lw57j++) {
1567            if (lw57_f[lw57M[lw57j].tag] === undefined) { lw57_f[lw57M[lw57j].tag] = lw57M[lw57j].value; }
1568        }
1569        if (lw57_f["80"] === undefined) { lw57_feok = false; }
1570        lw57_fobs.push(lw57_f);
1571    }
1572    var lw57_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1573    for (var lw57k = 0; lw57k < lw57_fexp.length; lw57k++) {
1574        var lw57mc = 0;
1575        for (var lw57m = 0; lw57m < lw57_fobs.length; lw57m++) {
1576            if (lw57_fobs[lw57m]["81"] === lw57_fexp[lw57k].op && lw57_fobs[lw57m]["0C"] === lw57_fexp[lw57k].addr && lw57_fobs[lw57m]["5A"] === lw57_fexp[lw57k].iccid) { lw57mc++; }
1577        }
1578        if (lw57mc !== 1) { lw57_feok = false; }
1579    }
1580    bind.checkData("S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields", "1", lw57_feok ? "1" : "0");
1581
1582    // 步骤 58:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1583    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1584    var sdCla58 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1585    var s58 = bind.sendApdu(sdCla58, "E2", "91", "00", "BF2803810100", "00", "9000");
1586    bind.checkData("S58-C1 SW", "9000", s58.sw);
1587    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1588    var lw58T = BindEs10xSingleRequest.parseBerTlv(s58.resp);
1589    var lw58Ok0 = lw58T.length === 1 && lw58T[0].tag === "BF28";
1590    var lw58_br = lw58Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw58T[0].value) : [];
1591    var lw58_brtag = lw58_br.length === 1 ? lw58_br[0].tag : "";
1592    var lw58_els = lw58_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw58_br[0].value) : [];
1593    bind.checkData("S58-C2 R-APDU 二选一 branch/count", "1", (lw58_brtag === "A0" && lw58_els.length === 0) || (lw58_brtag === "81" && lw58_br.length === 1 && lw58_br[0].value === "7F") ? "1" : "0");
1594
1595    // 步骤 59:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1596    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1597    var sdCla59 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1598    var s59 = bind.sendApdu(sdCla59, "E2", "91", "00", "BF280481020780", "00", "9000");
1599    bind.checkData("S59-C1 SW", "9000", s59.sw);
1600    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1601    var lw59T = BindEs10xSingleRequest.parseBerTlv(s59.resp);
1602    var lw59Ok0 = lw59T.length === 1 && lw59T[0].tag === "BF28";
1603    var lw59_br = lw59Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw59T[0].value) : [];
1604    var lw59_brtag = lw59_br.length === 1 ? lw59_br[0].tag : "";
1605    var lw59_els = lw59_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw59_br[0].value) : [];
1606    bind.checkData("S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含  branch/count", "1", (lw59_brtag === "A0" && lw59_els.length === 1) ? "1" : "0");
1607    var lw59_fok = lw59_brtag === "A0" && lw59_els.length > 0;
1608    for (var lw59i = 0; lw59i < lw59_els.length; lw59i++) {
1609        if (lw59_els[lw59i].tag !== "BF2F") { lw59_fok = false; continue; }
1610        var lw59M = BindEs10xSingleRequest.parseBerTlv(lw59_els[lw59i].value);
1611        var lw59_f = {};
1612        for (var lw59j = 0; lw59j < lw59M.length; lw59j++) {
1613            if (lw59_f[lw59M[lw59j].tag] === undefined) { lw59_f[lw59M[lw59j].tag] = lw59M[lw59j].value; }
1614        }
1615        if (lw59_f["80"] === undefined) { lw59_fok = false; }
1616        var lw59AddrHex = lw59_f["0C"];
1617        var lw59AddrStr = "";
1618        if (typeof lw59AddrHex === "string" && lw59AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw59AddrHex)) {
1619            for (var lw59AddrI = 0; lw59AddrI < lw59AddrHex.length; lw59AddrI += 2) {
1620                lw59AddrStr += String.fromCharCode(parseInt(lw59AddrHex.substr(lw59AddrI, 2), 16));
1621            }
1622        }
1623        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw59AddrStr)) { lw59_fok = false; }
1624        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1625        if (lw59_f["81"] !== "0780") { lw59_fok = false; }  // operation
1626        if (lw59_f["5A"] !== "989209012143658709F5") { lw59_fok = false; }  // iccid
1627    }
1628    bind.checkData("S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含  element fields", "1", lw59_fok ? "1" : "0");
1629
1630    // 步骤 60:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1631    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1632    var sdCla60 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1633    var s60 = bind.sendApdu(sdCla60, "E2", "91", "00", "BF280481020640", "00", "9000");
1634    bind.checkData("S60-C1 SW", "9000", s60.sw);
1635    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1636    var lw60T = BindEs10xSingleRequest.parseBerTlv(s60.resp);
1637    var lw60Ok0 = lw60T.length === 1 && lw60T[0].tag === "BF28";
1638    var lw60_br = lw60Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw60T[0].value) : [];
1639    var lw60_brtag = lw60_br.length === 1 ? lw60_br[0].tag : "";
1640    var lw60_els = lw60_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw60_br[0].value) : [];
1641    bind.checkData("S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw60_brtag === "A0" && lw60_els.length === 1) ? "1" : "0");
1642    var lw60_fok = lw60_brtag === "A0" && lw60_els.length > 0;
1643    for (var lw60i = 0; lw60i < lw60_els.length; lw60i++) {
1644        if (lw60_els[lw60i].tag !== "BF2F") { lw60_fok = false; continue; }
1645        var lw60M = BindEs10xSingleRequest.parseBerTlv(lw60_els[lw60i].value);
1646        var lw60_f = {};
1647        for (var lw60j = 0; lw60j < lw60M.length; lw60j++) {
1648            if (lw60_f[lw60M[lw60j].tag] === undefined) { lw60_f[lw60M[lw60j].tag] = lw60M[lw60j].value; }
1649        }
1650        if (lw60_f["80"] === undefined) { lw60_fok = false; }
1651        var lw60AddrHex = lw60_f["0C"];
1652        var lw60AddrStr = "";
1653        if (typeof lw60AddrHex === "string" && lw60AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw60AddrHex)) {
1654            for (var lw60AddrI = 0; lw60AddrI < lw60AddrHex.length; lw60AddrI += 2) {
1655                lw60AddrStr += String.fromCharCode(parseInt(lw60AddrHex.substr(lw60AddrI, 2), 16));
1656            }
1657        }
1658        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw60AddrStr)) { lw60_fok = false; }
1659        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1660        if (lw60_f["81"] !== "0640") { lw60_fok = false; }  // operation
1661        if (lw60_f["5A"] !== "989209012143658709F5") { lw60_fok = false; }  // iccid
1662    }
1663    bind.checkData("S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw60_fok ? "1" : "0");
1664
1665    // 步骤 61:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1666    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1667    var sdCla61 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1668    var s61 = bind.sendApdu(sdCla61, "E2", "91", "00", "BF280481020520", "00", "9000");
1669    bind.checkData("S61-C1 SW", "9000", s61.sw);
1670    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1671    var lw61T = BindEs10xSingleRequest.parseBerTlv(s61.resp);
1672    var lw61Ok0 = lw61T.length === 1 && lw61T[0].tag === "BF28";
1673    var lw61_br = lw61Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw61T[0].value) : [];
1674    var lw61_brtag = lw61_br.length === 1 ? lw61_br[0].tag : "";
1675    var lw61_els = lw61_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw61_br[0].value) : [];
1676    bind.checkData("S61-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw61_brtag === "A0" && lw61_els.length === 0) ? "1" : "0");
1677
1678    // 步骤 62:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1679    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1680    var sdCla62 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1681    var s62 = bind.sendApdu(sdCla62, "E2", "91", "00", "BF280481020410", "00", "9000");
1682    bind.checkData("S62-C1 SW", "9000", s62.sw);
1683    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1684    var lw62T = BindEs10xSingleRequest.parseBerTlv(s62.resp);
1685    var lw62Ok0 = lw62T.length === 1 && lw62T[0].tag === "BF28";
1686    var lw62_br = lw62Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw62T[0].value) : [];
1687    var lw62_brtag = lw62_br.length === 1 ? lw62_br[0].tag : "";
1688    var lw62_els = lw62_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw62_br[0].value) : [];
1689    bind.checkData("S62-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw62_brtag === "A0" && lw62_els.length === 0) ? "1" : "0");
1690
1691    // 步骤 63:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1692    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1693    var sdCla63 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1694    var s63 = bind.sendApdu(sdCla63, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1695    bind.checkData("S63-C1 SW", "9000", s63.sw);
1696    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1697    var lw63T = BindEs10xSingleRequest.parseBerTlv(s63.resp);
1698    var lw63Ok0 = lw63T.length === 1 && lw63T[0].tag === "BF28";
1699    var lw63_br = lw63Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw63T[0].value) : [];
1700    var lw63_brtag = lw63_br.length === 1 ? lw63_br[0].tag : "";
1701    var lw63_els = lw63_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw63_br[0].value) : [];
1702    bind.checkData("S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count", "1", (lw63_brtag === "A0" && lw63_els.length === 2) ? "1" : "0");
1703    var lw63_feok = lw63_brtag === "A0" && lw63_els.length === 2;
1704    var lw63_fobs = [];
1705    for (var lw63i = 0; lw63i < lw63_els.length; lw63i++) {
1706        if (lw63_els[lw63i].tag !== "BF2F") { lw63_feok = false; continue; }
1707        var lw63M = BindEs10xSingleRequest.parseBerTlv(lw63_els[lw63i].value);
1708        var lw63_f = {};
1709        for (var lw63j = 0; lw63j < lw63M.length; lw63j++) {
1710            if (lw63_f[lw63M[lw63j].tag] === undefined) { lw63_f[lw63M[lw63j].tag] = lw63M[lw63j].value; }
1711        }
1712        if (lw63_f["80"] === undefined) { lw63_feok = false; }
1713        lw63_fobs.push(lw63_f);
1714    }
1715    var lw63_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1716    for (var lw63k = 0; lw63k < lw63_fexp.length; lw63k++) {
1717        var lw63mc = 0;
1718        for (var lw63m = 0; lw63m < lw63_fobs.length; lw63m++) {
1719            if (lw63_fobs[lw63m]["81"] === lw63_fexp[lw63k].op && lw63_fobs[lw63m]["0C"] === lw63_fexp[lw63k].addr && lw63_fobs[lw63m]["5A"] === lw63_fexp[lw63k].iccid) { lw63mc++; }
1720        }
1721        if (lw63mc !== 1) { lw63_feok = false; }
1722    }
1723    bind.checkData("S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields", "1", lw63_feok ? "1" : "0");
1724
1725    // 步骤 64:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1726    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1727    var sdCla64 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1728    var s64 = bind.sendApdu(sdCla64, "E2", "91", "00", "BF280481020430", "00", "9000");
1729    bind.checkData("S64-C1 SW", "9000", s64.sw);
1730    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1731    var lw64T = BindEs10xSingleRequest.parseBerTlv(s64.resp);
1732    var lw64Ok0 = lw64T.length === 1 && lw64T[0].tag === "BF28";
1733    var lw64_br = lw64Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw64T[0].value) : [];
1734    var lw64_brtag = lw64_br.length === 1 ? lw64_br[0].tag : "";
1735    var lw64_els = lw64_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw64_br[0].value) : [];
1736    bind.checkData("S64-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw64_brtag === "A0" && lw64_els.length === 0) ? "1" : "0");
1737
1738    // 步骤 65:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1739    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1740    var sdCla65 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1741    var s65 = bind.sendApdu(sdCla65, "E2", "91", "00", "BF280481020560", "00", "9000");
1742    bind.checkData("S65-C1 SW", "9000", s65.sw);
1743    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1744    var lw65T = BindEs10xSingleRequest.parseBerTlv(s65.resp);
1745    var lw65Ok0 = lw65T.length === 1 && lw65T[0].tag === "BF28";
1746    var lw65_br = lw65Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw65T[0].value) : [];
1747    var lw65_brtag = lw65_br.length === 1 ? lw65_br[0].tag : "";
1748    var lw65_els = lw65_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw65_br[0].value) : [];
1749    bind.checkData("S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw65_brtag === "A0" && lw65_els.length === 1) ? "1" : "0");
1750    var lw65_fok = lw65_brtag === "A0" && lw65_els.length > 0;
1751    for (var lw65i = 0; lw65i < lw65_els.length; lw65i++) {
1752        if (lw65_els[lw65i].tag !== "BF2F") { lw65_fok = false; continue; }
1753        var lw65M = BindEs10xSingleRequest.parseBerTlv(lw65_els[lw65i].value);
1754        var lw65_f = {};
1755        for (var lw65j = 0; lw65j < lw65M.length; lw65j++) {
1756            if (lw65_f[lw65M[lw65j].tag] === undefined) { lw65_f[lw65M[lw65j].tag] = lw65M[lw65j].value; }
1757        }
1758        if (lw65_f["80"] === undefined) { lw65_fok = false; }
1759        var lw65AddrHex = lw65_f["0C"];
1760        var lw65AddrStr = "";
1761        if (typeof lw65AddrHex === "string" && lw65AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw65AddrHex)) {
1762            for (var lw65AddrI = 0; lw65AddrI < lw65AddrHex.length; lw65AddrI += 2) {
1763                lw65AddrStr += String.fromCharCode(parseInt(lw65AddrHex.substr(lw65AddrI, 2), 16));
1764            }
1765        }
1766        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw65AddrStr)) { lw65_fok = false; }
1767        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1768        if (lw65_f["81"] !== "0640") { lw65_fok = false; }  // operation
1769        if (lw65_f["5A"] !== "989209012143658709F5") { lw65_fok = false; }  // iccid
1770    }
1771    bind.checkData("S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw65_fok ? "1" : "0");
1772
1773    // 步骤 66:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
1774    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1775    var sdCla66 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1776    var s66 = bind.sendApdu(sdCla66, "E2", "91", "00", "BF2804810205E0", "00", "9000");
1777    bind.checkData("S66-C1 SW", "9000", s66.sw);
1778    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1779    var lw66T = BindEs10xSingleRequest.parseBerTlv(s66.resp);
1780    var lw66Ok0 = lw66T.length === 1 && lw66T[0].tag === "BF28";
1781    var lw66_br = lw66Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw66T[0].value) : [];
1782    var lw66_brtag = lw66_br.length === 1 ? lw66_br[0].tag : "";
1783    var lw66_els = lw66_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw66_br[0].value) : [];
1784    bind.checkData("S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count", "1", (lw66_brtag === "A0" && lw66_els.length === 2) ? "1" : "0");
1785    var lw66_feok = lw66_brtag === "A0" && lw66_els.length === 2;
1786    var lw66_fobs = [];
1787    for (var lw66i = 0; lw66i < lw66_els.length; lw66i++) {
1788        if (lw66_els[lw66i].tag !== "BF2F") { lw66_feok = false; continue; }
1789        var lw66M = BindEs10xSingleRequest.parseBerTlv(lw66_els[lw66i].value);
1790        var lw66_f = {};
1791        for (var lw66j = 0; lw66j < lw66M.length; lw66j++) {
1792            if (lw66_f[lw66M[lw66j].tag] === undefined) { lw66_f[lw66M[lw66j].tag] = lw66M[lw66j].value; }
1793        }
1794        if (lw66_f["80"] === undefined) { lw66_feok = false; }
1795        lw66_fobs.push(lw66_f);
1796    }
1797    var lw66_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1798    for (var lw66k = 0; lw66k < lw66_fexp.length; lw66k++) {
1799        var lw66mc = 0;
1800        for (var lw66m = 0; lw66m < lw66_fobs.length; lw66m++) {
1801            if (lw66_fobs[lw66m]["81"] === lw66_fexp[lw66k].op && lw66_fobs[lw66m]["0C"] === lw66_fexp[lw66k].addr && lw66_fobs[lw66m]["5A"] === lw66_fexp[lw66k].iccid) { lw66mc++; }
1802        }
1803        if (lw66mc !== 1) { lw66_feok = false; }
1804    }
1805    bind.checkData("S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields", "1", lw66_feok ? "1" : "0");
1806
1807    // 步骤 67:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
1808    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1809    var sdCla67 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1810    var s67 = bind.sendApdu(sdCla67, "E2", "91", "00", "BF2804810204F0", "00", "9000");
1811    bind.checkData("S67-C1 SW", "9000", s67.sw);
1812    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1813    var lw67T = BindEs10xSingleRequest.parseBerTlv(s67.resp);
1814    var lw67Ok0 = lw67T.length === 1 && lw67T[0].tag === "BF28";
1815    var lw67_br = lw67Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw67T[0].value) : [];
1816    var lw67_brtag = lw67_br.length === 1 ? lw67_br[0].tag : "";
1817    var lw67_els = lw67_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw67_br[0].value) : [];
1818    bind.checkData("S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含  branch/count", "1", (lw67_brtag === "A0" && lw67_els.length === 2) ? "1" : "0");
1819    var lw67_feok = lw67_brtag === "A0" && lw67_els.length === 2;
1820    var lw67_fobs = [];
1821    for (var lw67i = 0; lw67i < lw67_els.length; lw67i++) {
1822        if (lw67_els[lw67i].tag !== "BF2F") { lw67_feok = false; continue; }
1823        var lw67M = BindEs10xSingleRequest.parseBerTlv(lw67_els[lw67i].value);
1824        var lw67_f = {};
1825        for (var lw67j = 0; lw67j < lw67M.length; lw67j++) {
1826            if (lw67_f[lw67M[lw67j].tag] === undefined) { lw67_f[lw67M[lw67j].tag] = lw67M[lw67j].value; }
1827        }
1828        if (lw67_f["80"] === undefined) { lw67_feok = false; }
1829        lw67_fobs.push(lw67_f);
1830    }
1831    var lw67_fexp = [{op: "0410", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0520", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1832    for (var lw67k = 0; lw67k < lw67_fexp.length; lw67k++) {
1833        var lw67mc = 0;
1834        for (var lw67m = 0; lw67m < lw67_fobs.length; lw67m++) {
1835            if (lw67_fobs[lw67m]["81"] === lw67_fexp[lw67k].op && lw67_fobs[lw67m]["0C"] === lw67_fexp[lw67k].addr && lw67_fobs[lw67m]["5A"] === lw67_fexp[lw67k].iccid) { lw67mc++; }
1836        }
1837        if (lw67mc !== 1) { lw67_feok = false; }
1838    }
1839    bind.checkData("S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含  element fields", "1", lw67_feok ? "1" : "0");
1840
1841    // 步骤 68:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
1842    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1843    var sdCla68 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1844    var s68 = bind.sendApdu(sdCla68, "E2", "91", "00", "BF2800", "00", "9000");
1845    bind.checkData("S68-C1 SW", "9000", s68.sw);
1846    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1847    var lw68T = BindEs10xSingleRequest.parseBerTlv(s68.resp);
1848    var lw68Ok0 = lw68T.length === 1 && lw68T[0].tag === "BF28";
1849    var lw68_br = lw68Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw68T[0].value) : [];
1850    var lw68_brtag = lw68_br.length === 1 ? lw68_br[0].tag : "";
1851    var lw68_els = lw68_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw68_br[0].value) : [];
1852    bind.checkData("S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  branch/count", "1", (lw68_brtag === "A0" && lw68_els.length === 2) ? "1" : "0");
1853    var lw68_feok = lw68_brtag === "A0" && lw68_els.length === 2;
1854    var lw68_fobs = [];
1855    for (var lw68i = 0; lw68i < lw68_els.length; lw68i++) {
1856        if (lw68_els[lw68i].tag !== "BF2F") { lw68_feok = false; continue; }
1857        var lw68M = BindEs10xSingleRequest.parseBerTlv(lw68_els[lw68i].value);
1858        var lw68_f = {};
1859        for (var lw68j = 0; lw68j < lw68M.length; lw68j++) {
1860            if (lw68_f[lw68M[lw68j].tag] === undefined) { lw68_f[lw68M[lw68j].tag] = lw68M[lw68j].value; }
1861        }
1862        if (lw68_f["80"] === undefined) { lw68_feok = false; }
1863        lw68_fobs.push(lw68_f);
1864    }
1865    var lw68_fexp = [{op: "0410", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0520", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
1866    for (var lw68k = 0; lw68k < lw68_fexp.length; lw68k++) {
1867        var lw68mc = 0;
1868        for (var lw68m = 0; lw68m < lw68_fobs.length; lw68m++) {
1869            if (lw68_fobs[lw68m]["81"] === lw68_fexp[lw68k].op && lw68_fobs[lw68m]["0C"] === lw68_fexp[lw68k].addr && lw68_fobs[lw68m]["5A"] === lw68_fexp[lw68k].iccid) { lw68mc++; }
1870        }
1871        if (lw68mc !== 1) { lw68_feok = false; }
1872    }
1873    bind.checkData("S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  element fields", "1", lw68_feok ? "1" : "0");
1874
1875    // 步骤 69:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1876    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1877    var sdCla69 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1878    var s69 = bind.sendApdu(sdCla69, "E2", "91", "00", "BF2803810100", "00", "9000");
1879    bind.checkData("S69-C1 SW", "9000", s69.sw);
1880    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1881    var lw69T = BindEs10xSingleRequest.parseBerTlv(s69.resp);
1882    var lw69Ok0 = lw69T.length === 1 && lw69T[0].tag === "BF28";
1883    var lw69_br = lw69Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw69T[0].value) : [];
1884    var lw69_brtag = lw69_br.length === 1 ? lw69_br[0].tag : "";
1885    var lw69_els = lw69_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw69_br[0].value) : [];
1886    bind.checkData("S69-C2 R-APDU 二选一 branch/count", "1", (lw69_brtag === "A0" && lw69_els.length === 0) || (lw69_brtag === "81" && lw69_br.length === 1 && lw69_br[0].value === "7F") ? "1" : "0");
1887
1888    // 步骤 70:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1889    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1890    var sdCla70 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1891    var s70 = bind.sendApdu(sdCla70, "E2", "91", "00", "BF280481020780", "00", "9000");
1892    bind.checkData("S70-C1 SW", "9000", s70.sw);
1893    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1894    var lw70T = BindEs10xSingleRequest.parseBerTlv(s70.resp);
1895    var lw70Ok0 = lw70T.length === 1 && lw70T[0].tag === "BF28";
1896    var lw70_br = lw70Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw70T[0].value) : [];
1897    var lw70_brtag = lw70_br.length === 1 ? lw70_br[0].tag : "";
1898    var lw70_els = lw70_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw70_br[0].value) : [];
1899    bind.checkData("S70-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw70_brtag === "A0" && lw70_els.length === 0) ? "1" : "0");
1900
1901    // 步骤 71:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1902    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1903    var sdCla71 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1904    var s71 = bind.sendApdu(sdCla71, "E2", "91", "00", "BF280481020640", "00", "9000");
1905    bind.checkData("S71-C1 SW", "9000", s71.sw);
1906    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1907    var lw71T = BindEs10xSingleRequest.parseBerTlv(s71.resp);
1908    var lw71Ok0 = lw71T.length === 1 && lw71T[0].tag === "BF28";
1909    var lw71_br = lw71Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw71T[0].value) : [];
1910    var lw71_brtag = lw71_br.length === 1 ? lw71_br[0].tag : "";
1911    var lw71_els = lw71_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw71_br[0].value) : [];
1912    bind.checkData("S71-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw71_brtag === "A0" && lw71_els.length === 0) ? "1" : "0");
1913
1914    // 步骤 72:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1915    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1916    var sdCla72 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1917    var s72 = bind.sendApdu(sdCla72, "E2", "91", "00", "BF280481020520", "00", "9000");
1918    bind.checkData("S72-C1 SW", "9000", s72.sw);
1919    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1920    var lw72T = BindEs10xSingleRequest.parseBerTlv(s72.resp);
1921    var lw72Ok0 = lw72T.length === 1 && lw72T[0].tag === "BF28";
1922    var lw72_br = lw72Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw72T[0].value) : [];
1923    var lw72_brtag = lw72_br.length === 1 ? lw72_br[0].tag : "";
1924    var lw72_els = lw72_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw72_br[0].value) : [];
1925    bind.checkData("S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw72_brtag === "A0" && lw72_els.length === 1) ? "1" : "0");
1926    var lw72_fok = lw72_brtag === "A0" && lw72_els.length > 0;
1927    for (var lw72i = 0; lw72i < lw72_els.length; lw72i++) {
1928        if (lw72_els[lw72i].tag !== "BF2F") { lw72_fok = false; continue; }
1929        var lw72M = BindEs10xSingleRequest.parseBerTlv(lw72_els[lw72i].value);
1930        var lw72_f = {};
1931        for (var lw72j = 0; lw72j < lw72M.length; lw72j++) {
1932            if (lw72_f[lw72M[lw72j].tag] === undefined) { lw72_f[lw72M[lw72j].tag] = lw72M[lw72j].value; }
1933        }
1934        if (lw72_f["80"] === undefined) { lw72_fok = false; }
1935        var lw72AddrHex = lw72_f["0C"];
1936        var lw72AddrStr = "";
1937        if (typeof lw72AddrHex === "string" && lw72AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw72AddrHex)) {
1938            for (var lw72AddrI = 0; lw72AddrI < lw72AddrHex.length; lw72AddrI += 2) {
1939                lw72AddrStr += String.fromCharCode(parseInt(lw72AddrHex.substr(lw72AddrI, 2), 16));
1940            }
1941        }
1942        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw72AddrStr)) { lw72_fok = false; }
1943        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1944        if (lw72_f["81"] !== "0520") { lw72_fok = false; }  // operation
1945        if (lw72_f["5A"] !== "989209012143658709F5") { lw72_fok = false; }  // iccid
1946    }
1947    bind.checkData("S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw72_fok ? "1" : "0");
1948
1949    // 步骤 73:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1950    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1951    var sdCla73 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1952    var s73 = bind.sendApdu(sdCla73, "E2", "91", "00", "BF280481020410", "00", "9000");
1953    bind.checkData("S73-C1 SW", "9000", s73.sw);
1954    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1955    var lw73T = BindEs10xSingleRequest.parseBerTlv(s73.resp);
1956    var lw73Ok0 = lw73T.length === 1 && lw73T[0].tag === "BF28";
1957    var lw73_br = lw73Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw73T[0].value) : [];
1958    var lw73_brtag = lw73_br.length === 1 ? lw73_br[0].tag : "";
1959    var lw73_els = lw73_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw73_br[0].value) : [];
1960    bind.checkData("S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw73_brtag === "A0" && lw73_els.length === 1) ? "1" : "0");
1961    var lw73_fok = lw73_brtag === "A0" && lw73_els.length > 0;
1962    for (var lw73i = 0; lw73i < lw73_els.length; lw73i++) {
1963        if (lw73_els[lw73i].tag !== "BF2F") { lw73_fok = false; continue; }
1964        var lw73M = BindEs10xSingleRequest.parseBerTlv(lw73_els[lw73i].value);
1965        var lw73_f = {};
1966        for (var lw73j = 0; lw73j < lw73M.length; lw73j++) {
1967            if (lw73_f[lw73M[lw73j].tag] === undefined) { lw73_f[lw73M[lw73j].tag] = lw73M[lw73j].value; }
1968        }
1969        if (lw73_f["80"] === undefined) { lw73_fok = false; }
1970        var lw73AddrHex = lw73_f["0C"];
1971        var lw73AddrStr = "";
1972        if (typeof lw73AddrHex === "string" && lw73AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw73AddrHex)) {
1973            for (var lw73AddrI = 0; lw73AddrI < lw73AddrHex.length; lw73AddrI += 2) {
1974                lw73AddrStr += String.fromCharCode(parseInt(lw73AddrHex.substr(lw73AddrI, 2), 16));
1975            }
1976        }
1977        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw73AddrStr)) { lw73_fok = false; }
1978        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
1979        if (lw73_f["81"] !== "0410") { lw73_fok = false; }  // operation
1980        if (lw73_f["5A"] !== "989209012143658709F5") { lw73_fok = false; }  // iccid
1981    }
1982    bind.checkData("S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw73_fok ? "1" : "0");
1983
1984    // 步骤 74:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
1985    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1986    var sdCla74 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
1987    var s74 = bind.sendApdu(sdCla74, "E2", "91", "00", "BF2804810206C0", "00", "9000");
1988    bind.checkData("S74-C1 SW", "9000", s74.sw);
1989    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
1990    var lw74T = BindEs10xSingleRequest.parseBerTlv(s74.resp);
1991    var lw74Ok0 = lw74T.length === 1 && lw74T[0].tag === "BF28";
1992    var lw74_br = lw74Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw74T[0].value) : [];
1993    var lw74_brtag = lw74_br.length === 1 ? lw74_br[0].tag : "";
1994    var lw74_els = lw74_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw74_br[0].value) : [];
1995    bind.checkData("S74-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw74_brtag === "A0" && lw74_els.length === 0) ? "1" : "0");
1996
1997    // 步骤 75:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
1998    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
1999    var sdCla75 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2000    var s75 = bind.sendApdu(sdCla75, "E2", "91", "00", "BF280481020430", "00", "9000");
2001    bind.checkData("S75-C1 SW", "9000", s75.sw);
2002    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2003    var lw75T = BindEs10xSingleRequest.parseBerTlv(s75.resp);
2004    var lw75Ok0 = lw75T.length === 1 && lw75T[0].tag === "BF28";
2005    var lw75_br = lw75Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw75T[0].value) : [];
2006    var lw75_brtag = lw75_br.length === 1 ? lw75_br[0].tag : "";
2007    var lw75_els = lw75_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw75_br[0].value) : [];
2008    bind.checkData("S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  branch/count", "1", (lw75_brtag === "A0" && lw75_els.length === 2) ? "1" : "0");
2009    var lw75_feok = lw75_brtag === "A0" && lw75_els.length === 2;
2010    var lw75_fobs = [];
2011    for (var lw75i = 0; lw75i < lw75_els.length; lw75i++) {
2012        if (lw75_els[lw75i].tag !== "BF2F") { lw75_feok = false; continue; }
2013        var lw75M = BindEs10xSingleRequest.parseBerTlv(lw75_els[lw75i].value);
2014        var lw75_f = {};
2015        for (var lw75j = 0; lw75j < lw75M.length; lw75j++) {
2016            if (lw75_f[lw75M[lw75j].tag] === undefined) { lw75_f[lw75M[lw75j].tag] = lw75M[lw75j].value; }
2017        }
2018        if (lw75_f["80"] === undefined) { lw75_feok = false; }
2019        lw75_fobs.push(lw75_f);
2020    }
2021    var lw75_fexp = [{op: "0410", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0520", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2022    for (var lw75k = 0; lw75k < lw75_fexp.length; lw75k++) {
2023        var lw75mc = 0;
2024        for (var lw75m = 0; lw75m < lw75_fobs.length; lw75m++) {
2025            if (lw75_fobs[lw75m]["81"] === lw75_fexp[lw75k].op && lw75_fobs[lw75m]["0C"] === lw75_fexp[lw75k].addr && lw75_fobs[lw75m]["5A"] === lw75_fexp[lw75k].iccid) { lw75mc++; }
2026        }
2027        if (lw75mc !== 1) { lw75_feok = false; }
2028    }
2029    bind.checkData("S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  element fields", "1", lw75_feok ? "1" : "0");
2030
2031    // 步骤 76:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2032    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2033    var sdCla76 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2034    var s76 = bind.sendApdu(sdCla76, "E2", "91", "00", "BF280481020560", "00", "9000");
2035    bind.checkData("S76-C1 SW", "9000", s76.sw);
2036    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2037    var lw76T = BindEs10xSingleRequest.parseBerTlv(s76.resp);
2038    var lw76Ok0 = lw76T.length === 1 && lw76T[0].tag === "BF28";
2039    var lw76_br = lw76Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw76T[0].value) : [];
2040    var lw76_brtag = lw76_br.length === 1 ? lw76_br[0].tag : "";
2041    var lw76_els = lw76_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw76_br[0].value) : [];
2042    bind.checkData("S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw76_brtag === "A0" && lw76_els.length === 1) ? "1" : "0");
2043    var lw76_fok = lw76_brtag === "A0" && lw76_els.length > 0;
2044    for (var lw76i = 0; lw76i < lw76_els.length; lw76i++) {
2045        if (lw76_els[lw76i].tag !== "BF2F") { lw76_fok = false; continue; }
2046        var lw76M = BindEs10xSingleRequest.parseBerTlv(lw76_els[lw76i].value);
2047        var lw76_f = {};
2048        for (var lw76j = 0; lw76j < lw76M.length; lw76j++) {
2049            if (lw76_f[lw76M[lw76j].tag] === undefined) { lw76_f[lw76M[lw76j].tag] = lw76M[lw76j].value; }
2050        }
2051        if (lw76_f["80"] === undefined) { lw76_fok = false; }
2052        var lw76AddrHex = lw76_f["0C"];
2053        var lw76AddrStr = "";
2054        if (typeof lw76AddrHex === "string" && lw76AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw76AddrHex)) {
2055            for (var lw76AddrI = 0; lw76AddrI < lw76AddrHex.length; lw76AddrI += 2) {
2056                lw76AddrStr += String.fromCharCode(parseInt(lw76AddrHex.substr(lw76AddrI, 2), 16));
2057            }
2058        }
2059        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw76AddrStr)) { lw76_fok = false; }
2060        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2061        if (lw76_f["81"] !== "0520") { lw76_fok = false; }  // operation
2062        if (lw76_f["5A"] !== "989209012143658709F5") { lw76_fok = false; }  // iccid
2063    }
2064    bind.checkData("S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw76_fok ? "1" : "0");
2065
2066    // 步骤 77:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2067    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2068    var sdCla77 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2069    var s77 = bind.sendApdu(sdCla77, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2070    bind.checkData("S77-C1 SW", "9000", s77.sw);
2071    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2072    var lw77T = BindEs10xSingleRequest.parseBerTlv(s77.resp);
2073    var lw77Ok0 = lw77T.length === 1 && lw77T[0].tag === "BF28";
2074    var lw77_br = lw77Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw77T[0].value) : [];
2075    var lw77_brtag = lw77_br.length === 1 ? lw77_br[0].tag : "";
2076    var lw77_els = lw77_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw77_br[0].value) : [];
2077    bind.checkData("S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw77_brtag === "A0" && lw77_els.length === 1) ? "1" : "0");
2078    var lw77_fok = lw77_brtag === "A0" && lw77_els.length > 0;
2079    for (var lw77i = 0; lw77i < lw77_els.length; lw77i++) {
2080        if (lw77_els[lw77i].tag !== "BF2F") { lw77_fok = false; continue; }
2081        var lw77M = BindEs10xSingleRequest.parseBerTlv(lw77_els[lw77i].value);
2082        var lw77_f = {};
2083        for (var lw77j = 0; lw77j < lw77M.length; lw77j++) {
2084            if (lw77_f[lw77M[lw77j].tag] === undefined) { lw77_f[lw77M[lw77j].tag] = lw77M[lw77j].value; }
2085        }
2086        if (lw77_f["80"] === undefined) { lw77_fok = false; }
2087        var lw77AddrHex = lw77_f["0C"];
2088        var lw77AddrStr = "";
2089        if (typeof lw77AddrHex === "string" && lw77AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw77AddrHex)) {
2090            for (var lw77AddrI = 0; lw77AddrI < lw77AddrHex.length; lw77AddrI += 2) {
2091                lw77AddrStr += String.fromCharCode(parseInt(lw77AddrHex.substr(lw77AddrI, 2), 16));
2092            }
2093        }
2094        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw77AddrStr)) { lw77_fok = false; }
2095        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2096        if (lw77_f["81"] !== "0520") { lw77_fok = false; }  // operation
2097        if (lw77_f["5A"] !== "989209012143658709F5") { lw77_fok = false; }  // iccid
2098    }
2099    bind.checkData("S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw77_fok ? "1" : "0");
2100
2101    // 步骤 78:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
2102    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2103    var sdCla78 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2104    var s78 = bind.sendApdu(sdCla78, "E2", "91", "00", "BF2804810204F0", "00", "9000");
2105    bind.checkData("S78-C1 SW", "9000", s78.sw);
2106    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2107    var lw78T = BindEs10xSingleRequest.parseBerTlv(s78.resp);
2108    var lw78Ok0 = lw78T.length === 1 && lw78T[0].tag === "BF28";
2109    var lw78_br = lw78Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw78T[0].value) : [];
2110    var lw78_brtag = lw78_br.length === 1 ? lw78_br[0].tag : "";
2111    var lw78_els = lw78_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw78_br[0].value) : [];
2112    bind.checkData("S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含  branch/count", "1", (lw78_brtag === "A0" && lw78_els.length === 2) ? "1" : "0");
2113    var lw78_feok = lw78_brtag === "A0" && lw78_els.length === 2;
2114    var lw78_fobs = [];
2115    for (var lw78i = 0; lw78i < lw78_els.length; lw78i++) {
2116        if (lw78_els[lw78i].tag !== "BF2F") { lw78_feok = false; continue; }
2117        var lw78M = BindEs10xSingleRequest.parseBerTlv(lw78_els[lw78i].value);
2118        var lw78_f = {};
2119        for (var lw78j = 0; lw78j < lw78M.length; lw78j++) {
2120            if (lw78_f[lw78M[lw78j].tag] === undefined) { lw78_f[lw78M[lw78j].tag] = lw78M[lw78j].value; }
2121        }
2122        if (lw78_f["80"] === undefined) { lw78_feok = false; }
2123        lw78_fobs.push(lw78_f);
2124    }
2125    var lw78_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2126    for (var lw78k = 0; lw78k < lw78_fexp.length; lw78k++) {
2127        var lw78mc = 0;
2128        for (var lw78m = 0; lw78m < lw78_fobs.length; lw78m++) {
2129            if (lw78_fobs[lw78m]["81"] === lw78_fexp[lw78k].op && lw78_fobs[lw78m]["0C"] === lw78_fexp[lw78k].addr && lw78_fobs[lw78m]["5A"] === lw78_fexp[lw78k].iccid) { lw78mc++; }
2130        }
2131        if (lw78mc !== 1) { lw78_feok = false; }
2132    }
2133    bind.checkData("S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含  element fields", "1", lw78_feok ? "1" : "0");
2134
2135    // 步骤 79:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
2136    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2137    var sdCla79 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2138    var s79 = bind.sendApdu(sdCla79, "E2", "91", "00", "BF2800", "00", "9000");
2139    bind.checkData("S79-C1 SW", "9000", s79.sw);
2140    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2141    var lw79T = BindEs10xSingleRequest.parseBerTlv(s79.resp);
2142    var lw79Ok0 = lw79T.length === 1 && lw79T[0].tag === "BF28";
2143    var lw79_br = lw79Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw79T[0].value) : [];
2144    var lw79_brtag = lw79_br.length === 1 ? lw79_br[0].tag : "";
2145    var lw79_els = lw79_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw79_br[0].value) : [];
2146    bind.checkData("S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count", "1", (lw79_brtag === "A0" && lw79_els.length === 2) ? "1" : "0");
2147    var lw79_feok = lw79_brtag === "A0" && lw79_els.length === 2;
2148    var lw79_fobs = [];
2149    for (var lw79i = 0; lw79i < lw79_els.length; lw79i++) {
2150        if (lw79_els[lw79i].tag !== "BF2F") { lw79_feok = false; continue; }
2151        var lw79M = BindEs10xSingleRequest.parseBerTlv(lw79_els[lw79i].value);
2152        var lw79_f = {};
2153        for (var lw79j = 0; lw79j < lw79M.length; lw79j++) {
2154            if (lw79_f[lw79M[lw79j].tag] === undefined) { lw79_f[lw79M[lw79j].tag] = lw79M[lw79j].value; }
2155        }
2156        if (lw79_f["80"] === undefined) { lw79_feok = false; }
2157        lw79_fobs.push(lw79_f);
2158    }
2159    var lw79_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2160    for (var lw79k = 0; lw79k < lw79_fexp.length; lw79k++) {
2161        var lw79mc = 0;
2162        for (var lw79m = 0; lw79m < lw79_fobs.length; lw79m++) {
2163            if (lw79_fobs[lw79m]["81"] === lw79_fexp[lw79k].op && lw79_fobs[lw79m]["0C"] === lw79_fexp[lw79k].addr && lw79_fobs[lw79m]["5A"] === lw79_fexp[lw79k].iccid) { lw79mc++; }
2164        }
2165        if (lw79mc !== 1) { lw79_feok = false; }
2166    }
2167    bind.checkData("S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields", "1", lw79_feok ? "1" : "0");
2168
2169    // 步骤 80:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2170    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2171    var sdCla80 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2172    var s80 = bind.sendApdu(sdCla80, "E2", "91", "00", "BF2803810100", "00", "9000");
2173    bind.checkData("S80-C1 SW", "9000", s80.sw);
2174    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2175    var lw80T = BindEs10xSingleRequest.parseBerTlv(s80.resp);
2176    var lw80Ok0 = lw80T.length === 1 && lw80T[0].tag === "BF28";
2177    var lw80_br = lw80Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw80T[0].value) : [];
2178    var lw80_brtag = lw80_br.length === 1 ? lw80_br[0].tag : "";
2179    var lw80_els = lw80_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw80_br[0].value) : [];
2180    bind.checkData("S80-C2 R-APDU 二选一 branch/count", "1", (lw80_brtag === "A0" && lw80_els.length === 0) || (lw80_brtag === "81" && lw80_br.length === 1 && lw80_br[0].value === "7F") ? "1" : "0");
2181
2182    // 步骤 81:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2183    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2184    var sdCla81 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2185    var s81 = bind.sendApdu(sdCla81, "E2", "91", "00", "BF280481020780", "00", "9000");
2186    bind.checkData("S81-C1 SW", "9000", s81.sw);
2187    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2188    var lw81T = BindEs10xSingleRequest.parseBerTlv(s81.resp);
2189    var lw81Ok0 = lw81T.length === 1 && lw81T[0].tag === "BF28";
2190    var lw81_br = lw81Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw81T[0].value) : [];
2191    var lw81_brtag = lw81_br.length === 1 ? lw81_br[0].tag : "";
2192    var lw81_els = lw81_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw81_br[0].value) : [];
2193    bind.checkData("S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw81_brtag === "A0" && lw81_els.length === 1) ? "1" : "0");
2194    var lw81_fok = lw81_brtag === "A0" && lw81_els.length > 0;
2195    for (var lw81i = 0; lw81i < lw81_els.length; lw81i++) {
2196        if (lw81_els[lw81i].tag !== "BF2F") { lw81_fok = false; continue; }
2197        var lw81M = BindEs10xSingleRequest.parseBerTlv(lw81_els[lw81i].value);
2198        var lw81_f = {};
2199        for (var lw81j = 0; lw81j < lw81M.length; lw81j++) {
2200            if (lw81_f[lw81M[lw81j].tag] === undefined) { lw81_f[lw81M[lw81j].tag] = lw81M[lw81j].value; }
2201        }
2202        if (lw81_f["80"] === undefined) { lw81_fok = false; }
2203        var lw81AddrHex = lw81_f["0C"];
2204        var lw81AddrStr = "";
2205        if (typeof lw81AddrHex === "string" && lw81AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw81AddrHex)) {
2206            for (var lw81AddrI = 0; lw81AddrI < lw81AddrHex.length; lw81AddrI += 2) {
2207                lw81AddrStr += String.fromCharCode(parseInt(lw81AddrHex.substr(lw81AddrI, 2), 16));
2208            }
2209        }
2210        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw81AddrStr)) { lw81_fok = false; }
2211        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2212        if (lw81_f["81"] !== "0780") { lw81_fok = false; }  // operation
2213        if (lw81_f["5A"] !== "989209012143658709F5") { lw81_fok = false; }  // iccid
2214    }
2215    bind.checkData("S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT element fields", "1", lw81_fok ? "1" : "0");
2216
2217    // 步骤 82:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2218    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2219    var sdCla82 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2220    var s82 = bind.sendApdu(sdCla82, "E2", "91", "00", "BF280481020640", "00", "9000");
2221    bind.checkData("S82-C1 SW", "9000", s82.sw);
2222    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2223    var lw82T = BindEs10xSingleRequest.parseBerTlv(s82.resp);
2224    var lw82Ok0 = lw82T.length === 1 && lw82T[0].tag === "BF28";
2225    var lw82_br = lw82Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw82T[0].value) : [];
2226    var lw82_brtag = lw82_br.length === 1 ? lw82_br[0].tag : "";
2227    var lw82_els = lw82_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw82_br[0].value) : [];
2228    bind.checkData("S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw82_brtag === "A0" && lw82_els.length === 1) ? "1" : "0");
2229    var lw82_fok = lw82_brtag === "A0" && lw82_els.length > 0;
2230    for (var lw82i = 0; lw82i < lw82_els.length; lw82i++) {
2231        if (lw82_els[lw82i].tag !== "BF2F") { lw82_fok = false; continue; }
2232        var lw82M = BindEs10xSingleRequest.parseBerTlv(lw82_els[lw82i].value);
2233        var lw82_f = {};
2234        for (var lw82j = 0; lw82j < lw82M.length; lw82j++) {
2235            if (lw82_f[lw82M[lw82j].tag] === undefined) { lw82_f[lw82M[lw82j].tag] = lw82M[lw82j].value; }
2236        }
2237        if (lw82_f["80"] === undefined) { lw82_fok = false; }
2238        var lw82AddrHex = lw82_f["0C"];
2239        var lw82AddrStr = "";
2240        if (typeof lw82AddrHex === "string" && lw82AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw82AddrHex)) {
2241            for (var lw82AddrI = 0; lw82AddrI < lw82AddrHex.length; lw82AddrI += 2) {
2242                lw82AddrStr += String.fromCharCode(parseInt(lw82AddrHex.substr(lw82AddrI, 2), 16));
2243            }
2244        }
2245        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw82AddrStr)) { lw82_fok = false; }
2246        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2247        if (lw82_f["81"] !== "0640") { lw82_fok = false; }  // operation
2248        if (lw82_f["5A"] !== "989209012143658709F5") { lw82_fok = false; }  // iccid
2249    }
2250    bind.checkData("S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw82_fok ? "1" : "0");
2251
2252    // 步骤 83:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2253    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2254    var sdCla83 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2255    var s83 = bind.sendApdu(sdCla83, "E2", "91", "00", "BF280481020520", "00", "9000");
2256    bind.checkData("S83-C1 SW", "9000", s83.sw);
2257    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2258    var lw83T = BindEs10xSingleRequest.parseBerTlv(s83.resp);
2259    var lw83Ok0 = lw83T.length === 1 && lw83T[0].tag === "BF28";
2260    var lw83_br = lw83Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw83T[0].value) : [];
2261    var lw83_brtag = lw83_br.length === 1 ? lw83_br[0].tag : "";
2262    var lw83_els = lw83_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw83_br[0].value) : [];
2263    bind.checkData("S83-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw83_brtag === "A0" && lw83_els.length === 0) ? "1" : "0");
2264
2265    // 步骤 84:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2266    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2267    var sdCla84 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2268    var s84 = bind.sendApdu(sdCla84, "E2", "91", "00", "BF280481020410", "00", "9000");
2269    bind.checkData("S84-C1 SW", "9000", s84.sw);
2270    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2271    var lw84T = BindEs10xSingleRequest.parseBerTlv(s84.resp);
2272    var lw84Ok0 = lw84T.length === 1 && lw84T[0].tag === "BF28";
2273    var lw84_br = lw84Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw84T[0].value) : [];
2274    var lw84_brtag = lw84_br.length === 1 ? lw84_br[0].tag : "";
2275    var lw84_els = lw84_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw84_br[0].value) : [];
2276    bind.checkData("S84-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw84_brtag === "A0" && lw84_els.length === 0) ? "1" : "0");
2277
2278    // 步骤 85:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2279    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2280    var sdCla85 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2281    var s85 = bind.sendApdu(sdCla85, "E2", "91", "00", "BF2804810206C0", "00", "9000");
2282    bind.checkData("S85-C1 SW", "9000", s85.sw);
2283    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2284    var lw85T = BindEs10xSingleRequest.parseBerTlv(s85.resp);
2285    var lw85Ok0 = lw85T.length === 1 && lw85T[0].tag === "BF28";
2286    var lw85_br = lw85Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw85T[0].value) : [];
2287    var lw85_brtag = lw85_br.length === 1 ? lw85_br[0].tag : "";
2288    var lw85_els = lw85_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw85_br[0].value) : [];
2289    bind.checkData("S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count", "1", (lw85_brtag === "A0" && lw85_els.length === 2) ? "1" : "0");
2290    var lw85_feok = lw85_brtag === "A0" && lw85_els.length === 2;
2291    var lw85_fobs = [];
2292    for (var lw85i = 0; lw85i < lw85_els.length; lw85i++) {
2293        if (lw85_els[lw85i].tag !== "BF2F") { lw85_feok = false; continue; }
2294        var lw85M = BindEs10xSingleRequest.parseBerTlv(lw85_els[lw85i].value);
2295        var lw85_f = {};
2296        for (var lw85j = 0; lw85j < lw85M.length; lw85j++) {
2297            if (lw85_f[lw85M[lw85j].tag] === undefined) { lw85_f[lw85M[lw85j].tag] = lw85M[lw85j].value; }
2298        }
2299        if (lw85_f["80"] === undefined) { lw85_feok = false; }
2300        lw85_fobs.push(lw85_f);
2301    }
2302    var lw85_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2303    for (var lw85k = 0; lw85k < lw85_fexp.length; lw85k++) {
2304        var lw85mc = 0;
2305        for (var lw85m = 0; lw85m < lw85_fobs.length; lw85m++) {
2306            if (lw85_fobs[lw85m]["81"] === lw85_fexp[lw85k].op && lw85_fobs[lw85m]["0C"] === lw85_fexp[lw85k].addr && lw85_fobs[lw85m]["5A"] === lw85_fexp[lw85k].iccid) { lw85mc++; }
2307        }
2308        if (lw85mc !== 1) { lw85_feok = false; }
2309    }
2310    bind.checkData("S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields", "1", lw85_feok ? "1" : "0");
2311
2312    // 步骤 86:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2313    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2314    var sdCla86 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2315    var s86 = bind.sendApdu(sdCla86, "E2", "91", "00", "BF280481020430", "00", "9000");
2316    bind.checkData("S86-C1 SW", "9000", s86.sw);
2317    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2318    var lw86T = BindEs10xSingleRequest.parseBerTlv(s86.resp);
2319    var lw86Ok0 = lw86T.length === 1 && lw86T[0].tag === "BF28";
2320    var lw86_br = lw86Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw86T[0].value) : [];
2321    var lw86_brtag = lw86_br.length === 1 ? lw86_br[0].tag : "";
2322    var lw86_els = lw86_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw86_br[0].value) : [];
2323    bind.checkData("S86-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw86_brtag === "A0" && lw86_els.length === 0) ? "1" : "0");
2324
2325    // 步骤 87:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2326    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2327    var sdCla87 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2328    var s87 = bind.sendApdu(sdCla87, "E2", "91", "00", "BF280481020560", "00", "9000");
2329    bind.checkData("S87-C1 SW", "9000", s87.sw);
2330    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2331    var lw87T = BindEs10xSingleRequest.parseBerTlv(s87.resp);
2332    var lw87Ok0 = lw87T.length === 1 && lw87T[0].tag === "BF28";
2333    var lw87_br = lw87Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw87T[0].value) : [];
2334    var lw87_brtag = lw87_br.length === 1 ? lw87_br[0].tag : "";
2335    var lw87_els = lw87_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw87_br[0].value) : [];
2336    bind.checkData("S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw87_brtag === "A0" && lw87_els.length === 1) ? "1" : "0");
2337    var lw87_fok = lw87_brtag === "A0" && lw87_els.length > 0;
2338    for (var lw87i = 0; lw87i < lw87_els.length; lw87i++) {
2339        if (lw87_els[lw87i].tag !== "BF2F") { lw87_fok = false; continue; }
2340        var lw87M = BindEs10xSingleRequest.parseBerTlv(lw87_els[lw87i].value);
2341        var lw87_f = {};
2342        for (var lw87j = 0; lw87j < lw87M.length; lw87j++) {
2343            if (lw87_f[lw87M[lw87j].tag] === undefined) { lw87_f[lw87M[lw87j].tag] = lw87M[lw87j].value; }
2344        }
2345        if (lw87_f["80"] === undefined) { lw87_fok = false; }
2346        var lw87AddrHex = lw87_f["0C"];
2347        var lw87AddrStr = "";
2348        if (typeof lw87AddrHex === "string" && lw87AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw87AddrHex)) {
2349            for (var lw87AddrI = 0; lw87AddrI < lw87AddrHex.length; lw87AddrI += 2) {
2350                lw87AddrStr += String.fromCharCode(parseInt(lw87AddrHex.substr(lw87AddrI, 2), 16));
2351            }
2352        }
2353        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw87AddrStr)) { lw87_fok = false; }
2354        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2355        if (lw87_f["81"] !== "0640") { lw87_fok = false; }  // operation
2356        if (lw87_f["5A"] !== "989209012143658709F5") { lw87_fok = false; }  // iccid
2357    }
2358    bind.checkData("S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw87_fok ? "1" : "0");
2359
2360    // 步骤 88:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2361    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2362    var sdCla88 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2363    var s88 = bind.sendApdu(sdCla88, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2364    bind.checkData("S88-C1 SW", "9000", s88.sw);
2365    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2366    var lw88T = BindEs10xSingleRequest.parseBerTlv(s88.resp);
2367    var lw88Ok0 = lw88T.length === 1 && lw88T[0].tag === "BF28";
2368    var lw88_br = lw88Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw88T[0].value) : [];
2369    var lw88_brtag = lw88_br.length === 1 ? lw88_br[0].tag : "";
2370    var lw88_els = lw88_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw88_br[0].value) : [];
2371    bind.checkData("S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count", "1", (lw88_brtag === "A0" && lw88_els.length === 2) ? "1" : "0");
2372    var lw88_feok = lw88_brtag === "A0" && lw88_els.length === 2;
2373    var lw88_fobs = [];
2374    for (var lw88i = 0; lw88i < lw88_els.length; lw88i++) {
2375        if (lw88_els[lw88i].tag !== "BF2F") { lw88_feok = false; continue; }
2376        var lw88M = BindEs10xSingleRequest.parseBerTlv(lw88_els[lw88i].value);
2377        var lw88_f = {};
2378        for (var lw88j = 0; lw88j < lw88M.length; lw88j++) {
2379            if (lw88_f[lw88M[lw88j].tag] === undefined) { lw88_f[lw88M[lw88j].tag] = lw88M[lw88j].value; }
2380        }
2381        if (lw88_f["80"] === undefined) { lw88_feok = false; }
2382        lw88_fobs.push(lw88_f);
2383    }
2384    var lw88_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}];
2385    for (var lw88k = 0; lw88k < lw88_fexp.length; lw88k++) {
2386        var lw88mc = 0;
2387        for (var lw88m = 0; lw88m < lw88_fobs.length; lw88m++) {
2388            if (lw88_fobs[lw88m]["81"] === lw88_fexp[lw88k].op && lw88_fobs[lw88m]["0C"] === lw88_fexp[lw88k].addr && lw88_fobs[lw88m]["5A"] === lw88_fexp[lw88k].iccid) { lw88mc++; }
2389        }
2390        if (lw88mc !== 1) { lw88_feok = false; }
2391    }
2392    bind.checkData("S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields", "1", lw88_feok ? "1" : "0");
2393
2394    // 步骤 89:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
2395    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2396    var sdCla89 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2397    var s89 = bind.sendApdu(sdCla89, "E2", "91", "00", "BF2804810204F0", "00", "9000");
2398    bind.checkData("S89-C1 SW", "9000", s89.sw);
2399    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2400    var lw89T = BindEs10xSingleRequest.parseBerTlv(s89.resp);
2401    var lw89Ok0 = lw89T.length === 1 && lw89T[0].tag === "BF28";
2402    var lw89_br = lw89Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw89T[0].value) : [];
2403    var lw89_brtag = lw89_br.length === 1 ? lw89_br[0].tag : "";
2404    var lw89_els = lw89_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw89_br[0].value) : [];
2405    bind.checkData("S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList branch/count", "1", (lw89_brtag === "A0" && lw89_els.length === 2) ? "1" : "0");
2406    var lw89_feok = lw89_brtag === "A0" && lw89_els.length === 2;
2407    var lw89_fobs = [];
2408    for (var lw89i = 0; lw89i < lw89_els.length; lw89i++) {
2409        if (lw89_els[lw89i].tag !== "BF2F") { lw89_feok = false; continue; }
2410        var lw89M = BindEs10xSingleRequest.parseBerTlv(lw89_els[lw89i].value);
2411        var lw89_f = {};
2412        for (var lw89j = 0; lw89j < lw89M.length; lw89j++) {
2413            if (lw89_f[lw89M[lw89j].tag] === undefined) { lw89_f[lw89M[lw89j].tag] = lw89M[lw89j].value; }
2414        }
2415        if (lw89_f["80"] === undefined) { lw89_feok = false; }
2416        lw89_fobs.push(lw89_f);
2417    }
2418    var lw89_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2419    for (var lw89k = 0; lw89k < lw89_fexp.length; lw89k++) {
2420        var lw89mc = 0;
2421        for (var lw89m = 0; lw89m < lw89_fobs.length; lw89m++) {
2422            if (lw89_fobs[lw89m]["81"] === lw89_fexp[lw89k].op && lw89_fobs[lw89m]["0C"] === lw89_fexp[lw89k].addr && lw89_fobs[lw89m]["5A"] === lw89_fexp[lw89k].iccid) { lw89mc++; }
2423        }
2424        if (lw89mc !== 1) { lw89_feok = false; }
2425    }
2426    bind.checkData("S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList element fields", "1", lw89_feok ? "1" : "0");
2427
2428    // 步骤 90:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
2429    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2430    var sdCla90 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2431    var s90 = bind.sendApdu(sdCla90, "E2", "91", "00", "BF2800", "00", "9000");
2432    bind.checkData("S90-C1 SW", "9000", s90.sw);
2433    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2434    var lw90T = BindEs10xSingleRequest.parseBerTlv(s90.resp);
2435    var lw90Ok0 = lw90T.length === 1 && lw90T[0].tag === "BF28";
2436    var lw90_br = lw90Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw90T[0].value) : [];
2437    var lw90_brtag = lw90_br.length === 1 ? lw90_br[0].tag : "";
2438    var lw90_els = lw90_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw90_br[0].value) : [];
2439    bind.checkData("S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count", "1", (lw90_brtag === "A0" && lw90_els.length === 2) ? "1" : "0");
2440    var lw90_feok = lw90_brtag === "A0" && lw90_els.length === 2;
2441    var lw90_fobs = [];
2442    for (var lw90i = 0; lw90i < lw90_els.length; lw90i++) {
2443        if (lw90_els[lw90i].tag !== "BF2F") { lw90_feok = false; continue; }
2444        var lw90M = BindEs10xSingleRequest.parseBerTlv(lw90_els[lw90i].value);
2445        var lw90_f = {};
2446        for (var lw90j = 0; lw90j < lw90M.length; lw90j++) {
2447            if (lw90_f[lw90M[lw90j].tag] === undefined) { lw90_f[lw90M[lw90j].tag] = lw90M[lw90j].value; }
2448        }
2449        if (lw90_f["80"] === undefined) { lw90_feok = false; }
2450        lw90_fobs.push(lw90_f);
2451    }
2452    var lw90_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2453    for (var lw90k = 0; lw90k < lw90_fexp.length; lw90k++) {
2454        var lw90mc = 0;
2455        for (var lw90m = 0; lw90m < lw90_fobs.length; lw90m++) {
2456            if (lw90_fobs[lw90m]["81"] === lw90_fexp[lw90k].op && lw90_fobs[lw90m]["0C"] === lw90_fexp[lw90k].addr && lw90_fobs[lw90m]["5A"] === lw90_fexp[lw90k].iccid) { lw90mc++; }
2457        }
2458        if (lw90mc !== 1) { lw90_feok = false; }
2459    }
2460    bind.checkData("S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields", "1", lw90_feok ? "1" : "0");
2461
2462    // 步骤 91:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2463    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2464    var sdCla91 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2465    var s91 = bind.sendApdu(sdCla91, "E2", "91", "00", "BF2803810100", "00", "9000");
2466    bind.checkData("S91-C1 SW", "9000", s91.sw);
2467    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2468    var lw91T = BindEs10xSingleRequest.parseBerTlv(s91.resp);
2469    var lw91Ok0 = lw91T.length === 1 && lw91T[0].tag === "BF28";
2470    var lw91_br = lw91Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw91T[0].value) : [];
2471    var lw91_brtag = lw91_br.length === 1 ? lw91_br[0].tag : "";
2472    var lw91_els = lw91_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw91_br[0].value) : [];
2473    bind.checkData("S91-C2 R-APDU 二选一 branch/count", "1", (lw91_brtag === "A0" && lw91_els.length === 0) || (lw91_brtag === "81" && lw91_br.length === 1 && lw91_br[0].value === "7F") ? "1" : "0");
2474
2475    // 步骤 92:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
2476    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2477    var sdCla92 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2478    var s92 = bind.sendApdu(sdCla92, "E2", "91", "00", "BF280481020780", "00", "9000");
2479    bind.checkData("S92-C1 SW", "9000", s92.sw);
2480    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2481    var lw92T = BindEs10xSingleRequest.parseBerTlv(s92.resp);
2482    var lw92Ok0 = lw92T.length === 1 && lw92T[0].tag === "BF28";
2483    var lw92_br = lw92Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw92T[0].value) : [];
2484    var lw92_brtag = lw92_br.length === 1 ? lw92_br[0].tag : "";
2485    var lw92_els = lw92_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw92_br[0].value) : [];
2486    bind.checkData("S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含  branch/count", "1", (lw92_brtag === "A0" && lw92_els.length === 1) ? "1" : "0");
2487    var lw92_fok = lw92_brtag === "A0" && lw92_els.length > 0;
2488    for (var lw92i = 0; lw92i < lw92_els.length; lw92i++) {
2489        if (lw92_els[lw92i].tag !== "BF2F") { lw92_fok = false; continue; }
2490        var lw92M = BindEs10xSingleRequest.parseBerTlv(lw92_els[lw92i].value);
2491        var lw92_f = {};
2492        for (var lw92j = 0; lw92j < lw92M.length; lw92j++) {
2493            if (lw92_f[lw92M[lw92j].tag] === undefined) { lw92_f[lw92M[lw92j].tag] = lw92M[lw92j].value; }
2494        }
2495        if (lw92_f["80"] === undefined) { lw92_fok = false; }
2496        var lw92AddrHex = lw92_f["0C"];
2497        var lw92AddrStr = "";
2498        if (typeof lw92AddrHex === "string" && lw92AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw92AddrHex)) {
2499            for (var lw92AddrI = 0; lw92AddrI < lw92AddrHex.length; lw92AddrI += 2) {
2500                lw92AddrStr += String.fromCharCode(parseInt(lw92AddrHex.substr(lw92AddrI, 2), 16));
2501            }
2502        }
2503        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw92AddrStr)) { lw92_fok = false; }
2504        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS2.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS2.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2505        if (lw92_f["81"] !== "0780") { lw92_fok = false; }  // operation
2506        if (lw92_f["5A"] !== "989209013254769810F9") { lw92_fok = false; }  // iccid
2507    }
2508    bind.checkData("S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含  element fields", "1", lw92_fok ? "1" : "0");
2509
2510    // 步骤 93:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2511    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2512    var sdCla93 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2513    var s93 = bind.sendApdu(sdCla93, "E2", "91", "00", "BF280481020640", "00", "9000");
2514    bind.checkData("S93-C1 SW", "9000", s93.sw);
2515    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2516    var lw93T = BindEs10xSingleRequest.parseBerTlv(s93.resp);
2517    var lw93Ok0 = lw93T.length === 1 && lw93T[0].tag === "BF28";
2518    var lw93_br = lw93Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw93T[0].value) : [];
2519    var lw93_brtag = lw93_br.length === 1 ? lw93_br[0].tag : "";
2520    var lw93_els = lw93_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw93_br[0].value) : [];
2521    bind.checkData("S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw93_brtag === "A0" && lw93_els.length === 1) ? "1" : "0");
2522    var lw93_fok = lw93_brtag === "A0" && lw93_els.length > 0;
2523    for (var lw93i = 0; lw93i < lw93_els.length; lw93i++) {
2524        if (lw93_els[lw93i].tag !== "BF2F") { lw93_fok = false; continue; }
2525        var lw93M = BindEs10xSingleRequest.parseBerTlv(lw93_els[lw93i].value);
2526        var lw93_f = {};
2527        for (var lw93j = 0; lw93j < lw93M.length; lw93j++) {
2528            if (lw93_f[lw93M[lw93j].tag] === undefined) { lw93_f[lw93M[lw93j].tag] = lw93M[lw93j].value; }
2529        }
2530        if (lw93_f["80"] === undefined) { lw93_fok = false; }
2531        var lw93AddrHex = lw93_f["0C"];
2532        var lw93AddrStr = "";
2533        if (typeof lw93AddrHex === "string" && lw93AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw93AddrHex)) {
2534            for (var lw93AddrI = 0; lw93AddrI < lw93AddrHex.length; lw93AddrI += 2) {
2535                lw93AddrStr += String.fromCharCode(parseInt(lw93AddrHex.substr(lw93AddrI, 2), 16));
2536            }
2537        }
2538        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw93AddrStr)) { lw93_fok = false; }
2539        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2540        if (lw93_f["81"] !== "0640") { lw93_fok = false; }  // operation
2541        if (lw93_f["5A"] !== "989209012143658709F5") { lw93_fok = false; }  // iccid
2542    }
2543    bind.checkData("S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw93_fok ? "1" : "0");
2544
2545    // 步骤 94:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2546    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2547    var sdCla94 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2548    var s94 = bind.sendApdu(sdCla94, "E2", "91", "00", "BF280481020520", "00", "9000");
2549    bind.checkData("S94-C1 SW", "9000", s94.sw);
2550    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2551    var lw94T = BindEs10xSingleRequest.parseBerTlv(s94.resp);
2552    var lw94Ok0 = lw94T.length === 1 && lw94T[0].tag === "BF28";
2553    var lw94_br = lw94Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw94T[0].value) : [];
2554    var lw94_brtag = lw94_br.length === 1 ? lw94_br[0].tag : "";
2555    var lw94_els = lw94_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw94_br[0].value) : [];
2556    bind.checkData("S94-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw94_brtag === "A0" && lw94_els.length === 0) ? "1" : "0");
2557
2558    // 步骤 95:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2559    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2560    var sdCla95 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2561    var s95 = bind.sendApdu(sdCla95, "E2", "91", "00", "BF280481020410", "00", "9000");
2562    bind.checkData("S95-C1 SW", "9000", s95.sw);
2563    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2564    var lw95T = BindEs10xSingleRequest.parseBerTlv(s95.resp);
2565    var lw95Ok0 = lw95T.length === 1 && lw95T[0].tag === "BF28";
2566    var lw95_br = lw95Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw95T[0].value) : [];
2567    var lw95_brtag = lw95_br.length === 1 ? lw95_br[0].tag : "";
2568    var lw95_els = lw95_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw95_br[0].value) : [];
2569    bind.checkData("S95-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw95_brtag === "A0" && lw95_els.length === 0) ? "1" : "0");
2570
2571    // 步骤 96:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
2572    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2573    var sdCla96 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2574    var s96 = bind.sendApdu(sdCla96, "E2", "91", "00", "BF2804810206C0", "00", "9000");
2575    bind.checkData("S96-C1 SW", "9000", s96.sw);
2576    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2577    var lw96T = BindEs10xSingleRequest.parseBerTlv(s96.resp);
2578    var lw96Ok0 = lw96T.length === 1 && lw96T[0].tag === "BF28";
2579    var lw96_br = lw96Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw96T[0].value) : [];
2580    var lw96_brtag = lw96_br.length === 1 ? lw96_br[0].tag : "";
2581    var lw96_els = lw96_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw96_br[0].value) : [];
2582    bind.checkData("S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count", "1", (lw96_brtag === "A0" && lw96_els.length === 2) ? "1" : "0");
2583    var lw96_feok = lw96_brtag === "A0" && lw96_els.length === 2;
2584    var lw96_fobs = [];
2585    for (var lw96i = 0; lw96i < lw96_els.length; lw96i++) {
2586        if (lw96_els[lw96i].tag !== "BF2F") { lw96_feok = false; continue; }
2587        var lw96M = BindEs10xSingleRequest.parseBerTlv(lw96_els[lw96i].value);
2588        var lw96_f = {};
2589        for (var lw96j = 0; lw96j < lw96M.length; lw96j++) {
2590            if (lw96_f[lw96M[lw96j].tag] === undefined) { lw96_f[lw96M[lw96j].tag] = lw96M[lw96j].value; }
2591        }
2592        if (lw96_f["80"] === undefined) { lw96_feok = false; }
2593        lw96_fobs.push(lw96_f);
2594    }
2595    var lw96_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2596    for (var lw96k = 0; lw96k < lw96_fexp.length; lw96k++) {
2597        var lw96mc = 0;
2598        for (var lw96m = 0; lw96m < lw96_fobs.length; lw96m++) {
2599            if (lw96_fobs[lw96m]["81"] === lw96_fexp[lw96k].op && lw96_fobs[lw96m]["0C"] === lw96_fexp[lw96k].addr && lw96_fobs[lw96m]["5A"] === lw96_fexp[lw96k].iccid) { lw96mc++; }
2600        }
2601        if (lw96mc !== 1) { lw96_feok = false; }
2602    }
2603    bind.checkData("S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields", "1", lw96_feok ? "1" : "0");
2604
2605    // 步骤 97:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2606    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2607    var sdCla97 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2608    var s97 = bind.sendApdu(sdCla97, "E2", "91", "00", "BF280481020430", "00", "9000");
2609    bind.checkData("S97-C1 SW", "9000", s97.sw);
2610    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2611    var lw97T = BindEs10xSingleRequest.parseBerTlv(s97.resp);
2612    var lw97Ok0 = lw97T.length === 1 && lw97T[0].tag === "BF28";
2613    var lw97_br = lw97Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw97T[0].value) : [];
2614    var lw97_brtag = lw97_br.length === 1 ? lw97_br[0].tag : "";
2615    var lw97_els = lw97_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw97_br[0].value) : [];
2616    bind.checkData("S97-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw97_brtag === "A0" && lw97_els.length === 0) ? "1" : "0");
2617
2618    // 步骤 98:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
2619    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2620    var sdCla98 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2621    var s98 = bind.sendApdu(sdCla98, "E2", "91", "00", "BF280481020560", "00", "9000");
2622    bind.checkData("S98-C1 SW", "9000", s98.sw);
2623    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2624    var lw98T = BindEs10xSingleRequest.parseBerTlv(s98.resp);
2625    var lw98Ok0 = lw98T.length === 1 && lw98T[0].tag === "BF28";
2626    var lw98_br = lw98Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw98T[0].value) : [];
2627    var lw98_brtag = lw98_br.length === 1 ? lw98_br[0].tag : "";
2628    var lw98_els = lw98_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw98_br[0].value) : [];
2629    bind.checkData("S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw98_brtag === "A0" && lw98_els.length === 1) ? "1" : "0");
2630    var lw98_fok = lw98_brtag === "A0" && lw98_els.length > 0;
2631    for (var lw98i = 0; lw98i < lw98_els.length; lw98i++) {
2632        if (lw98_els[lw98i].tag !== "BF2F") { lw98_fok = false; continue; }
2633        var lw98M = BindEs10xSingleRequest.parseBerTlv(lw98_els[lw98i].value);
2634        var lw98_f = {};
2635        for (var lw98j = 0; lw98j < lw98M.length; lw98j++) {
2636            if (lw98_f[lw98M[lw98j].tag] === undefined) { lw98_f[lw98M[lw98j].tag] = lw98M[lw98j].value; }
2637        }
2638        if (lw98_f["80"] === undefined) { lw98_fok = false; }
2639        var lw98AddrHex = lw98_f["0C"];
2640        var lw98AddrStr = "";
2641        if (typeof lw98AddrHex === "string" && lw98AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw98AddrHex)) {
2642            for (var lw98AddrI = 0; lw98AddrI < lw98AddrHex.length; lw98AddrI += 2) {
2643                lw98AddrStr += String.fromCharCode(parseInt(lw98AddrHex.substr(lw98AddrI, 2), 16));
2644            }
2645        }
2646        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw98AddrStr)) { lw98_fok = false; }
2647        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
2648        if (lw98_f["81"] !== "0640") { lw98_fok = false; }  // operation
2649        if (lw98_f["5A"] !== "989209012143658709F5") { lw98_fok = false; }  // iccid
2650    }
2651    bind.checkData("S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw98_fok ? "1" : "0");
2652
2653    // 步骤 99:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
2654    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2655    var sdCla99 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2656    var s99 = bind.sendApdu(sdCla99, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2657    bind.checkData("S99-C1 SW", "9000", s99.sw);
2658    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2659    var lw99T = BindEs10xSingleRequest.parseBerTlv(s99.resp);
2660    var lw99Ok0 = lw99T.length === 1 && lw99T[0].tag === "BF28";
2661    var lw99_br = lw99Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw99T[0].value) : [];
2662    var lw99_brtag = lw99_br.length === 1 ? lw99_br[0].tag : "";
2663    var lw99_els = lw99_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw99_br[0].value) : [];
2664    bind.checkData("S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count", "1", (lw99_brtag === "A0" && lw99_els.length === 2) ? "1" : "0");
2665    var lw99_feok = lw99_brtag === "A0" && lw99_els.length === 2;
2666    var lw99_fobs = [];
2667    for (var lw99i = 0; lw99i < lw99_els.length; lw99i++) {
2668        if (lw99_els[lw99i].tag !== "BF2F") { lw99_feok = false; continue; }
2669        var lw99M = BindEs10xSingleRequest.parseBerTlv(lw99_els[lw99i].value);
2670        var lw99_f = {};
2671        for (var lw99j = 0; lw99j < lw99M.length; lw99j++) {
2672            if (lw99_f[lw99M[lw99j].tag] === undefined) { lw99_f[lw99M[lw99j].tag] = lw99M[lw99j].value; }
2673        }
2674        if (lw99_f["80"] === undefined) { lw99_feok = false; }
2675        lw99_fobs.push(lw99_f);
2676    }
2677    var lw99_fexp = [{op: "0640", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
2678    for (var lw99k = 0; lw99k < lw99_fexp.length; lw99k++) {
2679        var lw99mc = 0;
2680        for (var lw99m = 0; lw99m < lw99_fobs.length; lw99m++) {
2681            if (lw99_fobs[lw99m]["81"] === lw99_fexp[lw99k].op && lw99_fobs[lw99m]["0C"] === lw99_fexp[lw99k].addr && lw99_fobs[lw99m]["5A"] === lw99_fexp[lw99k].iccid) { lw99mc++; }
2682        }
2683        if (lw99mc !== 1) { lw99_feok = false; }
2684    }
2685    bind.checkData("S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields", "1", lw99_feok ? "1" : "0");
2686
2687    // 步骤 100:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2688    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2689    var sdCla100 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2690    var s100 = bind.sendApdu(sdCla100, "E2", "91", "00", "BF2804810204F0", "00", "9000");
2691    bind.checkData("S100-C1 SW", "9000", s100.sw);
2692    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2693    var lw100T = BindEs10xSingleRequest.parseBerTlv(s100.resp);
2694    var lw100Ok0 = lw100T.length === 1 && lw100T[0].tag === "BF28";
2695    var lw100_br = lw100Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw100T[0].value) : [];
2696    var lw100_brtag = lw100_br.length === 1 ? lw100_br[0].tag : "";
2697    var lw100_els = lw100_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw100_br[0].value) : [];
2698    bind.checkData("S100-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw100_brtag === "A0" && lw100_els.length === 0) ? "1" : "0");
2699
2700    // 步骤 101:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_3, RQ57_068_4, RQ57_069)
2701    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2702    var sdCla101 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2703    var s101 = bind.sendApdu(sdCla101, "E2", "91", "00", "BF2800", "00", "9000");
2704    bind.checkData("S101-C1 SW", "9000", s101.sw);
2705    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2706    var lw101T = BindEs10xSingleRequest.parseBerTlv(s101.resp);
2707    var lw101Ok0 = lw101T.length === 1 && lw101T[0].tag === "BF28";
2708    var lw101_br = lw101Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw101T[0].value) : [];
2709    var lw101_brtag = lw101_br.length === 1 ? lw101_br[0].tag : "";
2710    var lw101_els = lw101_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw101_br[0].value) : [];
2711    bind.checkData("S101-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw101_brtag === "A0" && lw101_els.length === 0) ? "1" : "0");
2712
2713    // 步骤 102:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2714    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2715    var sdCla102 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2716    var s102 = bind.sendApdu(sdCla102, "E2", "91", "00", "BF2803810100", "00", "9000");
2717    bind.checkData("S102-C1 SW", "9000", s102.sw);
2718    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2719    var lw102T = BindEs10xSingleRequest.parseBerTlv(s102.resp);
2720    var lw102Ok0 = lw102T.length === 1 && lw102T[0].tag === "BF28";
2721    var lw102_br = lw102Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw102T[0].value) : [];
2722    var lw102_brtag = lw102_br.length === 1 ? lw102_br[0].tag : "";
2723    var lw102_els = lw102_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw102_br[0].value) : [];
2724    bind.checkData("S102-C2 R-APDU 二选一 branch/count", "1", (lw102_brtag === "A0" && lw102_els.length === 0) || (lw102_brtag === "81" && lw102_br.length === 1 && lw102_br[0].value === "7F") ? "1" : "0");
2725
2726    // 步骤 103:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2727    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2728    var sdCla103 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2729    var s103 = bind.sendApdu(sdCla103, "E2", "91", "00", "BF280481020780", "00", "9000");
2730    bind.checkData("S103-C1 SW", "9000", s103.sw);
2731    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2732    var lw103T = BindEs10xSingleRequest.parseBerTlv(s103.resp);
2733    var lw103Ok0 = lw103T.length === 1 && lw103T[0].tag === "BF28";
2734    var lw103_br = lw103Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw103T[0].value) : [];
2735    var lw103_brtag = lw103_br.length === 1 ? lw103_br[0].tag : "";
2736    var lw103_els = lw103_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw103_br[0].value) : [];
2737    bind.checkData("S103-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw103_brtag === "A0" && lw103_els.length === 0) ? "1" : "0");
2738
2739    // 步骤 104:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2740    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2741    var sdCla104 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2742    var s104 = bind.sendApdu(sdCla104, "E2", "91", "00", "BF280481020640", "00", "9000");
2743    bind.checkData("S104-C1 SW", "9000", s104.sw);
2744    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2745    var lw104T = BindEs10xSingleRequest.parseBerTlv(s104.resp);
2746    var lw104Ok0 = lw104T.length === 1 && lw104T[0].tag === "BF28";
2747    var lw104_br = lw104Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw104T[0].value) : [];
2748    var lw104_brtag = lw104_br.length === 1 ? lw104_br[0].tag : "";
2749    var lw104_els = lw104_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw104_br[0].value) : [];
2750    bind.checkData("S104-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw104_brtag === "A0" && lw104_els.length === 0) ? "1" : "0");
2751
2752    // 步骤 105:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2753    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2754    var sdCla105 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2755    var s105 = bind.sendApdu(sdCla105, "E2", "91", "00", "BF280481020520", "00", "9000");
2756    bind.checkData("S105-C1 SW", "9000", s105.sw);
2757    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2758    var lw105T = BindEs10xSingleRequest.parseBerTlv(s105.resp);
2759    var lw105Ok0 = lw105T.length === 1 && lw105T[0].tag === "BF28";
2760    var lw105_br = lw105Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw105T[0].value) : [];
2761    var lw105_brtag = lw105_br.length === 1 ? lw105_br[0].tag : "";
2762    var lw105_els = lw105_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw105_br[0].value) : [];
2763    bind.checkData("S105-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw105_brtag === "A0" && lw105_els.length === 0) ? "1" : "0");
2764
2765    // 步骤 106:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2766    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2767    var sdCla106 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2768    var s106 = bind.sendApdu(sdCla106, "E2", "91", "00", "BF280481020410", "00", "9000");
2769    bind.checkData("S106-C1 SW", "9000", s106.sw);
2770    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2771    var lw106T = BindEs10xSingleRequest.parseBerTlv(s106.resp);
2772    var lw106Ok0 = lw106T.length === 1 && lw106T[0].tag === "BF28";
2773    var lw106_br = lw106Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw106T[0].value) : [];
2774    var lw106_brtag = lw106_br.length === 1 ? lw106_br[0].tag : "";
2775    var lw106_els = lw106_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw106_br[0].value) : [];
2776    bind.checkData("S106-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw106_brtag === "A0" && lw106_els.length === 0) ? "1" : "0");
2777
2778    // 步骤 107:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2779    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2780    var sdCla107 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2781    var s107 = bind.sendApdu(sdCla107, "E2", "91", "00", "BF2804810206C0", "00", "9000");
2782    bind.checkData("S107-C1 SW", "9000", s107.sw);
2783    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2784    var lw107T = BindEs10xSingleRequest.parseBerTlv(s107.resp);
2785    var lw107Ok0 = lw107T.length === 1 && lw107T[0].tag === "BF28";
2786    var lw107_br = lw107Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw107T[0].value) : [];
2787    var lw107_brtag = lw107_br.length === 1 ? lw107_br[0].tag : "";
2788    var lw107_els = lw107_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw107_br[0].value) : [];
2789    bind.checkData("S107-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw107_brtag === "A0" && lw107_els.length === 0) ? "1" : "0");
2790
2791    // 步骤 108:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2792    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2793    var sdCla108 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2794    var s108 = bind.sendApdu(sdCla108, "E2", "91", "00", "BF280481020430", "00", "9000");
2795    bind.checkData("S108-C1 SW", "9000", s108.sw);
2796    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2797    var lw108T = BindEs10xSingleRequest.parseBerTlv(s108.resp);
2798    var lw108Ok0 = lw108T.length === 1 && lw108T[0].tag === "BF28";
2799    var lw108_br = lw108Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw108T[0].value) : [];
2800    var lw108_brtag = lw108_br.length === 1 ? lw108_br[0].tag : "";
2801    var lw108_els = lw108_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw108_br[0].value) : [];
2802    bind.checkData("S108-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw108_brtag === "A0" && lw108_els.length === 0) ? "1" : "0");
2803
2804    // 步骤 109:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2805    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2806    var sdCla109 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2807    var s109 = bind.sendApdu(sdCla109, "E2", "91", "00", "BF280481020560", "00", "9000");
2808    bind.checkData("S109-C1 SW", "9000", s109.sw);
2809    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2810    var lw109T = BindEs10xSingleRequest.parseBerTlv(s109.resp);
2811    var lw109Ok0 = lw109T.length === 1 && lw109T[0].tag === "BF28";
2812    var lw109_br = lw109Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw109T[0].value) : [];
2813    var lw109_brtag = lw109_br.length === 1 ? lw109_br[0].tag : "";
2814    var lw109_els = lw109_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw109_br[0].value) : [];
2815    bind.checkData("S109-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw109_brtag === "A0" && lw109_els.length === 0) ? "1" : "0");
2816
2817    // 步骤 110:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
2818    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
2819    var sdCla110 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
2820    var s110 = bind.sendApdu(sdCla110, "E2", "91", "00", "BF2804810205E0", "00", "9000");
2821    bind.checkData("S110-C1 SW", "9000", s110.sw);
2822    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
2823    var lw110T = BindEs10xSingleRequest.parseBerTlv(s110.resp);
2824    var lw110Ok0 = lw110T.length === 1 && lw110T[0].tag === "BF28";
2825    var lw110_br = lw110Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw110T[0].value) : [];
2826    var lw110_brtag = lw110_br.length === 1 ? lw110_br[0].tag : "";
2827    var lw110_els = lw110_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw110_br[0].value) : [];
2828    bind.checkData("S110-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw110_brtag === "A0" && lw110_els.length === 0) ? "1" : "0");
2829}
2830

完整 unified diff

行级差异:新增 2828 行 / 删除 2494 行(以 -man 为基准,unified 上下文 3 行)。

diff 过长,仅显示前 4000 行(共 5327 行)。
展开 diff(4000 行)
--- -man
+++ -cas
@@ -1,2496 +1,2830 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification + TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification + TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification + TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification + TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address + TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications + TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification + TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications + TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available (extracted verbatim)
-
-function TC_eUICC_ES10b_ListNotification_01_Nominal_Install_Notification()
-{
-	tracenamestr = "测试目的:列举安装通知";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");	
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-			
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0560");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_02_Nominal_Enable_Notification()
-{
-		
-	tracenamestr = "测试目的:列举激活profile通知";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-			
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	stno = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = "00";
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0560");
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_03_Nominal_Disable_Notification()
-{
-		
-	tracenamestr = "测试目的:列举去激活profile通知";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-		
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-			
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	
-	Profile_load_procedure.ES10b_ListNotification();
-	curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-	curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-	curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	stno = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = "00";
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-
-	RecoverCard();
-	
-}
-
-function TC_eUICC_ES10b_ListNotification_04_Nominal_Delete_Notification()
-{
-		
-	tracenamestr = "测试目的:列举删除profile通知";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-		
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = Profile_load_procedure.serverAddress;
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-			
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	stno = 1;
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = "00";
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(Profile_load_procedure.serverAddress,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_05_Nominal_Two_Install_Notifications_PIR_with_different_Notification_Address()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-	//测试入口条件
-	if(!check_Applicability_of_tests_RSP_SGP23_test("C025"))
-		return;
-	
-	tracenamestr = "Remove Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. Do not remove the Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-
-	curDis.TestStepStart("复位;");
-	ResetCard();
-	
-	curDis.TestStepStart("读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.serviceProviderName = SP_NAME1;
-	Profile_load_procedure.profileName = NAME_OP_PROF1;
-	Profile_load_procedure.iconType = "01";
-	Profile_load_procedure.icon = ICON_OP_PROF1;
-	Profile_load_procedure.profileClass = "02";
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.mccMnc = MCC_MNC1;
-	
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-	
-	tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL.Do not remove the Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart("eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF2;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
-	Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
-	Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;	
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
-	Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
-	Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.serviceProviderName = SP_NAME2;
-	Profile_load_procedure.profileName = NAME_OP_PROF2;
-	Profile_load_procedure.iconType = "01";
-	Profile_load_procedure.icon = ICON_OP_PROF2;
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
-	Profile_load_procedure.profileClass = "02";
-	Profile_load_procedure.mccMnc = MCC_MNC2;
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-	
-	
-	tracenamestr = "Install Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0560");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	tracenamestr = "DELETE PROFILE_OPERATIONAL1  , PROFILE_OPERATIONAL2";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
-	var deleProfileRequest = new DeleteProfileRequest();
-	deleProfileRequest.iccid = ICCID_OP_PROF1;
-	deleProfileRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-	
-	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
-	var deleProfileRequest = new DeleteProfileRequest();
-	deleProfileRequest.iccid = ICCID_OP_PROF2;
-	deleProfileRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-	
-	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_06_Nominal_Install_Notification_PIR_and_Enable_Notification()
-{
-	tracenamestr = "Remove Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	
-	tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-
-	curDis.TestStepStart("eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-
-	Profile_load_procedure.serviceProviderName = SP_NAME1;
-	Profile_load_procedure.profileName = NAME_OP_PROF1;
-	Profile_load_procedure.iconType = "01";
-	Profile_load_procedure.icon = ICON_OP_PROF1;
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.profileClass = "02";
-	Profile_load_procedure.mccMnc = MCC_MNC1;
-	
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = "00";
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-
-	tracenamestr = "Install Notification (PIR) and Enable Notification ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-		
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0560");
-		
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();	
-}
-
-function TC_eUICC_ES10b_ListNotification_07_Nominal_Disable_and_Delete_Notifications()
-{
-	tracenamestr = "Remove Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	
-	tracenamestr = "Install PROFILE_OPERATIONAL1 with #METADATA_OP_PROF1_NO_INSTALL. ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-
-	curDis.TestStepStart("eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.serviceProviderName = SP_NAME1;
-	Profile_load_procedure.profileName = NAME_OP_PROF1;
-	Profile_load_procedure.iconType = "01";
-	Profile_load_procedure.icon = ICON_OP_PROF1;
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.profileClass = "02";
-	Profile_load_procedure.mccMnc = MCC_MNC1;
-	
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = "00";
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	tracenamestr = "Remove Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	
-	tracenamestr = "还原卡片删除Enabled状态的PROFILE_OPERATIONAL1";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart("eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送 Terminal Profile命令,进行主动式命令交互;");
-	IniCard_SetUpMenu("",1);
-	
-	counterC = 2000;
-	
-	curDis.TestStepStart("读卡器向卡片发送 Envelope命令,执行策略更新命令;");
-	sSendType = SendTypeByOTA.SMS;
-		
-	KIC = MNO_SCP80_ENC_KEY;
-	KID = MNO_SCP80_AUTH_KEY;
-	KIK = MNO_SCP80_DATA_ENC_KEY;
-	if (UpdatePPRformat == Remote_APDU_format.Compact)
-	{
-		//简单格式更新策略
-		
-		InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
-		
-		var sdatain = "BF2A0499020500";
-		var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
-		
-		sAPDU1 = GetParaAPDU(InstallForPerson);
-		sAPDU2 = GetParaAPDU(storedatapara);
-		sAPDU = sAPDU1 + sAPDU2;
-		
-		SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
-		CardSendMessageToServer(sSendType,1,"029000","00");
-		
-		
-		TerminalResponse("00","9000");
-	}
-	else
-	{
-	
-		numOfCmdTlvs = 0;
-		arrExpandedRemoteCmdObj = new Array();
-		
-		InstallForPerson = new InstallForPersonalizationPara(RESERVED_ISD_P_AID);
-		InstallForPerson.SetAPDU();
-		arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
-		arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(InstallForPerson.apdu);
-		numOfCmdTlvs ++;
-		
-		var sdatain = "BF2A0499020500";
-		
-		var storedatapara =new StoreDataPara("90","00",sdatain,"9000");
-		
-		storedatapara.SetAPDU();
-		arrExpandedRemoteCmdObj[numOfCmdTlvs] = new ExpandedRemoteCommandObject();
-		arrExpandedRemoteCmdObj[numOfCmdTlvs].crtExpandedRemoteApduObj(storedatapara.apdu);
-		numOfCmdTlvs ++;
-		
-		sAPDU = GenExpandedRemoteCmd(arrExpandedRemoteCmdObj);
-		
-		SendMessageToCard_GP(sSendType,"91XX",0,MNO_TAR_PROFILE_OPERATIONAL1,"12210515",sAPDU);
-		
-		var exResPara = new ExpandedRemoteResponsePara(arrExpandedRemoteCmdObj, "9000", "00", sSendType);
-		CardSendMessageToServerExpandedRemoteCmd(exResPara);
-		
-		TerminalResponse("00","9000");
-	}
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DisableProfileRequest;");
-	var disableProRequest = new DisableProfileRequest();
-	disableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	disableProRequest.refreshFlag = "00";
-	disableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(disableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3203800100", respData, "DisableProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	if (debug)
-		respData = "BF2D1CA01AE3185A0A890199900012345678934F060505050505059F70011F";
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(Profile_DISABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
-	var deleProfileRequest = new DeleteProfileRequest();
-	deleProfileRequest.iccid = ICCID_OP_PROF1;
-	deleProfileRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-	
-	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	if (debug)
-		respData = "BF2D02A000";
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	tracenamestr = "Disable and Delete Notifications  ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-		
-	try
-	{		
-		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-		
-	try
-	{		
-		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-		
-	try
-	{		
-		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-		
-	try
-	{		
-		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-		
-	try
-	{		
-		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0410",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-		
-	try
-	{		
-		curStrHandle.CheckData("0520",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10b_ListNotification_08_Nominal_Install_OtherSignedNotification_and_Enable_Notification()
-{
-	tracenamestr = "Remove Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	
-	tracenamestr = "Install PROFILE_OPERATIONAL1. Remove the PIR notification, but do not remove the OtherSignedNotification.  ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-
-	curDis.TestStepStart("eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.serviceProviderName = SP_NAME1;
-	Profile_load_procedure.profileName = NAME_OP_PROF1;
-	Profile_load_procedure.iconType = "01";
-	Profile_load_procedure.icon = ICON_OP_PROF1;
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "04F0";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.profileClass = "02";
-	Profile_load_procedure.mccMnc = MCC_MNC1;
-	
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber;
-	Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	
-	tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = "00";
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-
-	tracenamestr = "Install (OtherSignedNotification) and Enable Notification ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
-	
-	try
-	{	var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
-		if(Max_seqNumber_Of_Notification ==	seqNumber)
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-		}
-		else
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
-		}		
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
-	
-	try
-	{		
-		var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
-		if(Max_seqNumber_Of_Notification ==	seqNumber)
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-		}
-		else
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
-		}	
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-		
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
-	
-	try
-	{		
-		var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
-		if(Max_seqNumber_Of_Notification ==	seqNumber)
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-		}
-		else
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
-		}	
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0560");
-		
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-	Update_Max_seqNumber_Of_Notification(Profile_load_procedure.listNotificationResponse)
-	
-	try
-	{		
-		var seqNumber = parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16);
-		if(Max_seqNumber_Of_Notification ==	seqNumber)
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-		}
-		else
-		{
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification-1,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].seqNumber,16),"seqNumber");						
-			curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-		
-			curStrHandle.CheckData(Max_seqNumber_Of_Notification,parseInt(Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].seqNumber,16),"seqNumber");			
-			curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-			curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-			curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");			
-		}	
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();	
-}
-
-function TC_eUICC_ES10b_ListNotification_09_Nominal_Enable_and_Install_PIR_Notifications()
-{
-	if(!Card_Have_ECC_Cert)
-		return;
-	
-	tracenamestr = "Remove Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	tracenamestr = "Install PROFILE_OPERATIONAL1. Remove both notifications.  ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-
-	curDis.TestStepStart("eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF1;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.serviceProviderName = SP_NAME1;
-	Profile_load_procedure.profileName = NAME_OP_PROF1;
-	Profile_load_procedure.iconType = "01";
-	Profile_load_procedure.icon = ICON_OP_PROF1;
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS1;
-	Profile_load_procedure.profileClass = "02";
-	Profile_load_procedure.mccMnc = MCC_MNC1;
-	
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	tracenamestr = "Enable PROFILE_OPERATIONAL1. Do not remove the Notification. ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行EnableProfileRequest;");
-	var enableProRequest = new EnableProfileRequest();
-	enableProRequest.profileIdentifier = new ChoiceObj(tagOfProfileIdentifier.iccid,ICCID_OP_PROF1);
-	enableProRequest.refreshFlag = "00";
-	enableProRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(enableProRequest.hexData);
-	
-	curStrHandle.CheckData("BF3103800100", respData, "EnableProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData(ICCID_OP_PROF1, proInfoListResponse.profileInfoListOk.arrOfElement[0].iccid, "ICCID");
-		curStrHandle.CheckData(curProfile_ISD_P_AID, proInfoListResponse.profileInfoListOk.arrOfElement[0].isdpAid, "ISD-P AID");
-		curStrHandle.CheckData(Profile_ENABLED, proInfoListResponse.profileInfoListOk.arrOfElement[0].profileState, "profile State");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	tracenamestr = "Install PROFILE_OPERATIONAL2 with #METADATA_OP_PROF2_NO_INSTALL.  ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart("eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	curDis.TestStepStart("读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccInfo1Request;");
-	pkId_CI_ForVerification = pkId_CI_ECDSA_NIST;
-	pkId_CI_ForSigning = pkId_CI_ECDSA_NIST;
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL2_DATA);
-	Profile_load_procedure.ICCID = ICCID_OP_PROF2;
-	Profile_load_procedure.ES10b_GetEUICCInfo1();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccChallengeRequest;");
-	Profile_load_procedure.ES10b_GetEUICCChallenge();
-
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行AuthenticateServerRequest;");
-	Profile_load_procedure.serverAddress = TEST_DP_ADDRESS2;
-	Profile_load_procedure.DPauthInforObj.D_key = SK_S_SM_DP2auth_ECDSA_NIST;
-	Profile_load_procedure.DPauthInforObj.Cert = CERT_S_SM_DP2auth_ECDSA_NIST;	
-	Profile_load_procedure.ES10b_AuthenticateServer();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行PrepareDownloadRequest;");
-	Profile_load_procedure.DPbpInforObj.D_key = SK_S_SM_DP2pb_ECDSA_NIST;
-	Profile_load_procedure.DPbpInforObj.Cert = CERT_S_SM_DP2pb_ECDSA_NIST;
-	Profile_load_procedure.DPbpInforObj.registeredID = DP2pb_prime256v1_OID;
-	Profile_load_procedure.ES10b_PrepareDownload();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行GetEuiccDataRequest(GetEID);");
-	Profile_load_procedure.ES10b_GetEID();
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行BoundProfilePackage;");
-	Profile_load_procedure.serviceProviderName = SP_NAME2;
-	Profile_load_procedure.profileName = NAME_OP_PROF2;
-	Profile_load_procedure.iconType = "01";
-	Profile_load_procedure.icon = ICON_OP_PROF2;
-	Profile_load_procedure.notificationConfigurationInfo = new SequenceOfElement("30");
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0] = new NotificationConfigurationInformation();
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].profileManagementOperation = "0470";
-	Profile_load_procedure.notificationConfigurationInfo.arrOfElement[0].notificationAddress = TEST_DP_ADDRESS2;
-	Profile_load_procedure.profileClass = "02";
-	Profile_load_procedure.mccMnc = MCC_MNC2;
-	Profile_load_procedure.ES10b_LoadBoundProfilePackage();
-	
-	tracenamestr = "Enable and Install (PIR) Notifications  ";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-		
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	
-	try
-	{		
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-		
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0560");
-		
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-	
-	try
-	{		
-		curStrHandle.CheckData("0640",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS1,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF1, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[0].iccid, "ICCID");
-	
-		curStrHandle.CheckData("0780",Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].profileManagementOperation,"profileManagementOperation");
-		curStrHandle.CheckData(TEST_DP_ADDRESS2,Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].notificationAddress,"notificationAddress");
-		curStrHandle.CheckData(ICCID_OP_PROF2, Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[1].iccid, "ICCID");
-	}catch(e){
-		obj.SubLevel(Notification_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	Disable_PROFILE_OPERATIONAL1_Remove_the_Notification();
-	
-	tracenamestr = "DELETE PROFILE_OPERATIONAL1  , PROFILE_OPERATIONAL2";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	curDis.TestStepStart("读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
-	var deleProfileRequest = new DeleteProfileRequest();
-	deleProfileRequest.iccid = ICCID_OP_PROF1;
-	deleProfileRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-	
-	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行DeleteProfileRequest;");
-	var deleProfileRequest = new DeleteProfileRequest();
-	deleProfileRequest.iccid = ICCID_OP_PROF2;
-	deleProfileRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(deleProfileRequest.hexData);
-	
-	curStrHandle.CheckData("BF3303800100", respData, "DeleteProfileResponse");
-	
-	curDis.TestStepStart("读卡器向卡片发送 StoreData命令,执行ProfileInfoListRequest,获取profile状态;");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF2);
-	proInfoListRequest.tagList = "5A4F9F70";
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		curStrHandle.CheckData("00", obj.ToHex(proInfoListResponse.profileInfoListOk.arrOfElement.length),"Profile Info number");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	RecoverCard();	
-	
-	
-}
-
-function TC_eUICC_ES10b_ListNotification_10_Nominal_No_Notifications_available()
-{
-	tracenamestr = "Remove Notification";
-	curDis.TraceStart(sno++,tracenamestr);
-
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	
-	var NotificationLen = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement.length;
-	for(var i=0;i<NotificationLen;i++)
-	{
-	    curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行NotificationSentRequest;");
-	    var parameter = Profile_load_procedure.listNotificationResponse.notificationMetadataList.arrOfElement[i].seqNumber;
-	    Profile_load_procedure.ES10b_RemoveNotificationFromList(parameter);
-	    var deleteNotificationStatus=Profile_load_procedure.notificationSentResponse.deleteNotificationStatus;
-	    curStrHandle.CheckData("00", deleteNotificationStatus, "deleteNotificationStatus");
-	}
-	
-	tracenamestr = "No Notifications available";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	
-	curDis.TestStepStart2(stno++,"复位;");
-	ResetCard();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送Terminal Capability命令;");
-	TS_TERMINAL_CAPABILITY_cmd();
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
-	TS_MANAGE_CHANNEL_OPEN();
-	
-	curLogicChannel = 1;
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
-	TS_SELECT("Select ISD",ISD_R_AID,"9000");
-	
-	var Profile_load_procedure = new RSP_profile_load_procedure_LPAd(PROFILE_OPERATIONAL1_DATA);	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("04F0");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification();
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0780");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0640");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0520");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0410");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("06C0");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0430");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("0560");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,执行ListNotificationRequest;");
-	Profile_load_procedure.ES10b_ListNotification("05E0");
-	curStrHandle.CheckData("BF2802A000", Profile_load_procedure.listNotificationResponse.hexData, "通知检查");
-	
-	RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20260929-120236
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10b.ListNotification,Test Sequence #01-#10 Nominal(E_tc_4214 含 10 个 Test Sequence,全部纳入;schema 单值字段如实合并登记),适用性 M。
+// Test points: ICH-IC1-K1-C1 ATR_present;ICH-IC1-K2-C2 FCP_Template;ICH-IC1-K2-C4 SW
+//   ICH-IC1-K3-C4 SW;ICH-IC1-K4-C4 final SW;ICH-IC2-K1-C4 SW;ICH-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   ICH-IC2-K2-C4 SW;S1-C1 SW
+//   S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count
+//   S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields;S2-C1 SW
+//   S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+//   S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S3-C1 SW
+//   S3-C2 R-APDU 二选一 branch/count;S4-C1 SW
+//   S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+//   S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S5-C1 SW
+//   S5-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S6-C1 SW
+//   S6-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S7-C1 SW
+//   S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S8-C1 SW
+//   S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+//   S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S9-C1 SW
+//   S9-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S10-C1 SW
+//   S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S11-C1 SW
+//   S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count
+//   S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields;S12-C1 SW
+//   S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count
+//   S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields;S13-C1 SW
+//   S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S14-C1 SW
+//   S14-C2 R-APDU 二选一 branch/count;S15-C1 SW
+//   S15-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S16-C1 SW
+//   S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S17-C1 SW
+//   S17-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S18-C1 SW
+//   S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S19-C1 SW
+//   S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S20-C1 SW
+//   S20-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S21-C1 SW
+//   S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S22-C1 SW
+//   S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S23-C1 SW
+//   S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count
+//   S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields;S24-C1 SW
+//   S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S25-C1 SW
+//   S25-C2 R-APDU 二选一 branch/count;S26-C1 SW
+//   S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S27-C1 SW
+//   S27-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S28-C1 SW
+//   S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S29-C1 SW
+//   S29-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S30-C1 SW
+//   S30-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S31-C1 SW
+//   S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S32-C1 SW
+//   S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S33-C1 SW
+//   S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S34-C1 SW
+//   S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count
+//   S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields;S35-C1 SW
+//   S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+//   S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S36-C1 SW
+//   S36-C2 R-APDU 二选一 branch/count;S37-C1 SW
+//   S37-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S38-C1 SW
+//   S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S39-C1 SW
+//   S39-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S40-C1 SW
+//   S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+//   S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S41-C1 SW
+//   S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S42-C1 SW
+//   S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+//   S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S43-C1 SW
+//   S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S44-C1 SW
+//   S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+//   S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S45-C1 SW
+//   S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count
+//   S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields;S46-C1 SW
+//   S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+//   S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S47-C1 SW
+//   S47-C2 R-APDU 二选一 branch/count;S48-C1 SW
+//   S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+//   S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S49-C1 SW
+//   S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S50-C1 SW
+//   S50-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S51-C1 SW
+//   S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S52-C1 SW
+//   S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+//   S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S53-C1 SW
+//   S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S54-C1 SW
+//   S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S55-C1 SW
+//   S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count
+//   S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields;S56-C1 SW
+//   S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList branch/count
+//   S56-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:notificationMetadataList element fields;S57-C1 SW
+//   S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
+//   S57-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S58-C1 SW
+//   S58-C2 R-APDU 二选一 branch/count;S59-C1 SW
+//   S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含  branch/count
+//   S59-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR:notificationMetadataList 恰含  element fields;S60-C1 SW
+//   S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S60-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S61-C1 SW
+//   S61-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S62-C1 SW
+//   S62-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S63-C1 SW
+//   S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
+//   S63-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S64-C1 SW
+//   S64-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S65-C1 SW
+//   S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S65-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S66-C1 SW
+//   S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA branch/count
+//   S66-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_EN1:恰含 #NOTIF_METADATA_INSTA element fields;S67-C1 SW
+//   S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含  branch/count
+//   S67-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:notificationMetadataList 恰含  element fields;S68-C1 SW
+//   S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  branch/count
+//   S68-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  element fields;S69-C1 SW
+//   S69-C2 R-APDU 二选一 branch/count;S70-C1 SW
+//   S70-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S71-C1 SW
+//   S71-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S72-C1 SW
+//   S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S72-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S73-C1 SW
+//   S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count
+//   S73-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields;S74-C1 SW
+//   S74-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S75-C1 SW
+//   S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  branch/count
+//   S75-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1_DE1:恰含 #NOTIF_METADATA_DISABLE1  element fields;S76-C1 SW
+//   S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S76-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S77-C1 SW
+//   S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count
+//   S77-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields;S78-C1 SW
+//   S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含  branch/count
+//   S78-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:notificationMetadataList 恰含  element fields;S79-C1 SW
+//   S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count
+//   S79-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields;S80-C1 SW
+//   S80-C2 R-APDU 二选一 branch/count;S81-C1 SW
+//   S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT branch/count
+//   S81-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1:notificationMetadataList 恰含 #NOT element fields;S82-C1 SW
+//   S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S82-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S83-C1 SW
+//   S83-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S84-C1 SW
+//   S84-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S85-C1 SW
+//   S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count
+//   S85-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields;S86-C1 SW
+//   S86-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S87-C1 SW
+//   S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S87-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S88-C1 SW
+//   S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  branch/count
+//   S88-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_EN1:恰含 #NOTIF_METADATA_INSTALL1  element fields;S89-C1 SW
+//   S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList branch/count
+//   S89-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:notificationMetadataList element fields;S90-C1 SW
+//   S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
+//   S90-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S91-C1 SW
+//   S91-C2 R-APDU 二选一 branch/count;S92-C1 SW
+//   S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含  branch/count
+//   S92-C2 R-APDU 匹配 #R_LIST_NOTIF_IN2_PIR:notificationMetadataList 恰含  element fields;S93-C1 SW
+//   S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S93-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S94-C1 SW
+//   S94-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S95-C1 SW
+//   S95-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S96-C1 SW
+//   S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
+//   S96-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S97-C1 SW
+//   S97-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S98-C1 SW
+//   S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count
+//   S98-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields;S99-C1 SW
+//   S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL branch/count
+//   S99-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1_IN2_PIR:恰含 #NOTIF_METADATA_ENABL element fields;S100-C1 SW
+//   S100-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S101-C1 SW
+//   S101-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S102-C1 SW
+//   S102-C2 R-APDU 二选一 branch/count;S103-C1 SW
+//   S103-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S104-C1 SW
+//   S104-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S105-C1 SW
+//   S105-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S106-C1 SW
+//   S106-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S107-C1 SW
+//   S107-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S108-C1 SW
+//   S108-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S109-C1 SW
+//   S109-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count;S110-C1 SW
+//   S110-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count
+// 本函数由 CaseIR 4.2.14.2.1 编译生成(Q3W0-EXPAND-20260929-R4,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
+// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
+// 适用性 M:编译期门,运行时由 harness 环境前置承担。
+function TC_eUICC_ES10b_ListNotification_01_10_Nominal_E_tc_4214_10_Test_Sequence_schema() {
+    var bind = curBind;
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s111 = bind.resetAndAtr();
+    bind.checkData("ICH-IC1-K1-C1 ATR_present", "1", s111.atr_hex !== "" ? "1" : "0");
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
+    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
+    var s112 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("ICH-IC1-K2-C2 FCP_Template", "1", s112.resp.length > 0 ? "1" : "0");
+    bind.checkData("ICH-IC1-K2-C4 SW", "9000", s112.sw);
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s113 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("ICH-IC1-K3-C4 SW", "9000", s113.sw);
+
+    // IC head inline (initial_conditions → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady114 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("ICH-IC1-K4-C4 final SW", "9000", steady114.final.sw);
+
+    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
+    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s115 = bind.manageChannelOpen("9000");
+    bind.checkData("ICH-IC2-K1-C4 SW", "9000", s115.sw);
+    bind.checkData("ICH-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s115.chan !== null ? "1" : "0");
+
+    // IC head inline (initial_conditions → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
+    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
+    var s116 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
+    // MTD_SELECT expected face is SW-only (K Annex C.2 open-channel procedure step 2: no FCI content assertion in corpus); no fabricated template parse.
+    bind.checkData("ICH-IC2-K2-C4 SW", "9000", s116.sw);
+
+    // 步骤 1:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla1 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s1 = bind.sendApdu(sdCla1, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S1-C1 SW", "9000", s1.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw1T = BindEs10xSingleRequest.parseBerTlv(s1.resp);
+    var lw1Ok0 = lw1T.length === 1 && lw1T[0].tag === "BF28";
+    var lw1_br = lw1Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw1T[0].value) : [];
+    var lw1_brtag = lw1_br.length === 1 ? lw1_br[0].tag : "";
+    var lw1_els = lw1_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw1_br[0].value) : [];
+    bind.checkData("S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN branch/count", "1", (lw1_brtag === "A0" && lw1_els.length === 2) ? "1" : "0");
+    var lw1_fok = lw1_brtag === "A0" && lw1_els.length > 0;
+    for (var lw1i = 0; lw1i < lw1_els.length; lw1i++) {
+        if (lw1_els[lw1i].tag !== "BF2F") { lw1_fok = false; continue; }
+        var lw1M = BindEs10xSingleRequest.parseBerTlv(lw1_els[lw1i].value);
+        var lw1_f = {};
+        for (var lw1j = 0; lw1j < lw1M.length; lw1j++) {
+            if (lw1_f[lw1M[lw1j].tag] === undefined) { lw1_f[lw1M[lw1j].tag] = lw1M[lw1j].value; }
+        }
+        if (lw1_f["80"] === undefined) { lw1_fok = false; }
+        var lw1AddrHex = lw1_f["0C"];
+        var lw1AddrStr = "";
+        if (typeof lw1AddrHex === "string" && lw1AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw1AddrHex)) {
+            for (var lw1AddrI = 0; lw1AddrI < lw1AddrHex.length; lw1AddrI += 2) {
+                lw1AddrStr += String.fromCharCode(parseInt(lw1AddrHex.substr(lw1AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw1AddrStr)) { lw1_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw1_f["81"] !== "0780") { lw1_fok = false; }  // operation
+        if (lw1_f["5A"] !== "989209012143658709F5") { lw1_fok = false; }  // iccid
+    }
+    bind.checkData("S1-C2 R-APDU=DER(ListNotificationResponse) 匹配 #R_LIST_NOTIF_IN1_IN element fields", "1", lw1_fok ? "1" : "0");
+
+    // 步骤 2:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla2 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s2 = bind.sendApdu(sdCla2, "E2", "91", "00", "BF2800", "00", "9000");
+    bind.checkData("S2-C1 SW", "9000", s2.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw2T = BindEs10xSingleRequest.parseBerTlv(s2.resp);
+    var lw2Ok0 = lw2T.length === 1 && lw2T[0].tag === "BF28";
+    var lw2_br = lw2Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw2T[0].value) : [];
+    var lw2_brtag = lw2_br.length === 1 ? lw2_br[0].tag : "";
+    var lw2_els = lw2_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw2_br[0].value) : [];
+    bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw2_brtag === "A0" && lw2_els.length === 2) ? "1" : "0");
+    var lw2_fok = lw2_brtag === "A0" && lw2_els.length > 0;
+    for (var lw2i = 0; lw2i < lw2_els.length; lw2i++) {
+        if (lw2_els[lw2i].tag !== "BF2F") { lw2_fok = false; continue; }
+        var lw2M = BindEs10xSingleRequest.parseBerTlv(lw2_els[lw2i].value);
+        var lw2_f = {};
+        for (var lw2j = 0; lw2j < lw2M.length; lw2j++) {
+            if (lw2_f[lw2M[lw2j].tag] === undefined) { lw2_f[lw2M[lw2j].tag] = lw2M[lw2j].value; }
+        }
+        if (lw2_f["80"] === undefined) { lw2_fok = false; }
+        var lw2AddrHex = lw2_f["0C"];
+        var lw2AddrStr = "";
+        if (typeof lw2AddrHex === "string" && lw2AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw2AddrHex)) {
+            for (var lw2AddrI = 0; lw2AddrI < lw2AddrHex.length; lw2AddrI += 2) {
+                lw2AddrStr += String.fromCharCode(parseInt(lw2AddrHex.substr(lw2AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw2AddrStr)) { lw2_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw2_f["81"] !== "0780") { lw2_fok = false; }  // operation
+        if (lw2_f["5A"] !== "989209012143658709F5") { lw2_fok = false; }  // iccid
+    }
+    bind.checkData("S2-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw2_fok ? "1" : "0");
+
+    // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla3 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF2803810100", "00", "9000");
+    bind.checkData("S3-C1 SW", "9000", s3.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw3T = BindEs10xSingleRequest.parseBerTlv(s3.resp);
+    var lw3Ok0 = lw3T.length === 1 && lw3T[0].tag === "BF28";
+    var lw3_br = lw3Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw3T[0].value) : [];
+    var lw3_brtag = lw3_br.length === 1 ? lw3_br[0].tag : "";
+    var lw3_els = lw3_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw3_br[0].value) : [];
+    bind.checkData("S3-C2 R-APDU 二选一 branch/count", "1", (lw3_brtag === "A0" && lw3_els.length === 0) || (lw3_brtag === "81" && lw3_br.length === 1 && lw3_br[0].value === "7F") ? "1" : "0");
+
+    // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla4 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF280481020780", "00", "9000");
+    bind.checkData("S4-C1 SW", "9000", s4.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw4T = BindEs10xSingleRequest.parseBerTlv(s4.resp);
+    var lw4Ok0 = lw4T.length === 1 && lw4T[0].tag === "BF28";
+    var lw4_br = lw4Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw4T[0].value) : [];
+    var lw4_brtag = lw4_br.length === 1 ? lw4_br[0].tag : "";
+    var lw4_els = lw4_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw4_br[0].value) : [];
+    bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw4_brtag === "A0" && lw4_els.length === 2) ? "1" : "0");
+    var lw4_fok = lw4_brtag === "A0" && lw4_els.length > 0;
+    for (var lw4i = 0; lw4i < lw4_els.length; lw4i++) {
+        if (lw4_els[lw4i].tag !== "BF2F") { lw4_fok = false; continue; }
+        var lw4M = BindEs10xSingleRequest.parseBerTlv(lw4_els[lw4i].value);
+        var lw4_f = {};
+        for (var lw4j = 0; lw4j < lw4M.length; lw4j++) {
+            if (lw4_f[lw4M[lw4j].tag] === undefined) { lw4_f[lw4M[lw4j].tag] = lw4M[lw4j].value; }
+        }
+        if (lw4_f["80"] === undefined) { lw4_fok = false; }
+        var lw4AddrHex = lw4_f["0C"];
+        var lw4AddrStr = "";
+        if (typeof lw4AddrHex === "string" && lw4AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw4AddrHex)) {
+            for (var lw4AddrI = 0; lw4AddrI < lw4AddrHex.length; lw4AddrI += 2) {
+                lw4AddrStr += String.fromCharCode(parseInt(lw4AddrHex.substr(lw4AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw4AddrStr)) { lw4_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw4_f["81"] !== "0780") { lw4_fok = false; }  // operation
+        if (lw4_f["5A"] !== "989209012143658709F5") { lw4_fok = false; }  // iccid
+    }
+    bind.checkData("S4-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw4_fok ? "1" : "0");
+
+    // 步骤 5:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla5 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s5 = bind.sendApdu(sdCla5, "E2", "91", "00", "BF280481020640", "00", "9000");
+    bind.checkData("S5-C1 SW", "9000", s5.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw5T = BindEs10xSingleRequest.parseBerTlv(s5.resp);
+    var lw5Ok0 = lw5T.length === 1 && lw5T[0].tag === "BF28";
+    var lw5_br = lw5Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw5T[0].value) : [];
+    var lw5_brtag = lw5_br.length === 1 ? lw5_br[0].tag : "";
+    var lw5_els = lw5_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw5_br[0].value) : [];
+    bind.checkData("S5-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw5_brtag === "A0" && lw5_els.length === 0) ? "1" : "0");
+
+    // 步骤 6:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla6 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s6 = bind.sendApdu(sdCla6, "E2", "91", "00", "BF280481020520", "00", "9000");
+    bind.checkData("S6-C1 SW", "9000", s6.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw6T = BindEs10xSingleRequest.parseBerTlv(s6.resp);
+    var lw6Ok0 = lw6T.length === 1 && lw6T[0].tag === "BF28";
+    var lw6_br = lw6Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw6T[0].value) : [];
+    var lw6_brtag = lw6_br.length === 1 ? lw6_br[0].tag : "";
+    var lw6_els = lw6_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw6_br[0].value) : [];
+    bind.checkData("S6-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw6_brtag === "A0" && lw6_els.length === 0) ? "1" : "0");
+
+    // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla7 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF280481020410", "00", "9000");
+    bind.checkData("S7-C1 SW", "9000", s7.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw7T = BindEs10xSingleRequest.parseBerTlv(s7.resp);
+    var lw7Ok0 = lw7T.length === 1 && lw7T[0].tag === "BF28";
+    var lw7_br = lw7Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw7T[0].value) : [];
+    var lw7_brtag = lw7_br.length === 1 ? lw7_br[0].tag : "";
+    var lw7_els = lw7_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw7_br[0].value) : [];
+    bind.checkData("S7-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw7_brtag === "A0" && lw7_els.length === 0) ? "1" : "0");
+
+    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla8 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+    bind.checkData("S8-C1 SW", "9000", s8.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw8T = BindEs10xSingleRequest.parseBerTlv(s8.resp);
+    var lw8Ok0 = lw8T.length === 1 && lw8T[0].tag === "BF28";
+    var lw8_br = lw8Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw8T[0].value) : [];
+    var lw8_brtag = lw8_br.length === 1 ? lw8_br[0].tag : "";
+    var lw8_els = lw8_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw8_br[0].value) : [];
+    bind.checkData("S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw8_brtag === "A0" && lw8_els.length === 2) ? "1" : "0");
+    var lw8_fok = lw8_brtag === "A0" && lw8_els.length > 0;
+    for (var lw8i = 0; lw8i < lw8_els.length; lw8i++) {
+        if (lw8_els[lw8i].tag !== "BF2F") { lw8_fok = false; continue; }
+        var lw8M = BindEs10xSingleRequest.parseBerTlv(lw8_els[lw8i].value);
+        var lw8_f = {};
+        for (var lw8j = 0; lw8j < lw8M.length; lw8j++) {
+            if (lw8_f[lw8M[lw8j].tag] === undefined) { lw8_f[lw8M[lw8j].tag] = lw8M[lw8j].value; }
+        }
+        if (lw8_f["80"] === undefined) { lw8_fok = false; }
+        var lw8AddrHex = lw8_f["0C"];
+        var lw8AddrStr = "";
+        if (typeof lw8AddrHex === "string" && lw8AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw8AddrHex)) {
+            for (var lw8AddrI = 0; lw8AddrI < lw8AddrHex.length; lw8AddrI += 2) {
+                lw8AddrStr += String.fromCharCode(parseInt(lw8AddrHex.substr(lw8AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw8AddrStr)) { lw8_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw8_f["81"] !== "0780") { lw8_fok = false; }  // operation
+        if (lw8_f["5A"] !== "989209012143658709F5") { lw8_fok = false; }  // iccid
+    }
+    bind.checkData("S8-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw8_fok ? "1" : "0");
+
+    // 步骤 9:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla9 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s9 = bind.sendApdu(sdCla9, "E2", "91", "00", "BF280481020430", "00", "9000");
+    bind.checkData("S9-C1 SW", "9000", s9.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw9T = BindEs10xSingleRequest.parseBerTlv(s9.resp);
+    var lw9Ok0 = lw9T.length === 1 && lw9T[0].tag === "BF28";
+    var lw9_br = lw9Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw9T[0].value) : [];
+    var lw9_brtag = lw9_br.length === 1 ? lw9_br[0].tag : "";
+    var lw9_els = lw9_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw9_br[0].value) : [];
+    bind.checkData("S9-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw9_brtag === "A0" && lw9_els.length === 0) ? "1" : "0");
+
+    // 步骤 10:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla10 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s10 = bind.sendApdu(sdCla10, "E2", "91", "00", "BF280481020560", "00", "9000");
+    bind.checkData("S10-C1 SW", "9000", s10.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw10T = BindEs10xSingleRequest.parseBerTlv(s10.resp);
+    var lw10Ok0 = lw10T.length === 1 && lw10T[0].tag === "BF28";
+    var lw10_br = lw10Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw10T[0].value) : [];
+    var lw10_brtag = lw10_br.length === 1 ? lw10_br[0].tag : "";
+    var lw10_els = lw10_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw10_br[0].value) : [];
+    bind.checkData("S10-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw10_brtag === "A0" && lw10_els.length === 0) ? "1" : "0");
+
+    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla11 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+    bind.checkData("S11-C1 SW", "9000", s11.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw11T = BindEs10xSingleRequest.parseBerTlv(s11.resp);
+    var lw11Ok0 = lw11T.length === 1 && lw11T[0].tag === "BF28";
+    var lw11_br = lw11Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw11T[0].value) : [];
+    var lw11_brtag = lw11_br.length === 1 ? lw11_br[0].tag : "";
+    var lw11_els = lw11_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw11_br[0].value) : [];
+    bind.checkData("S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList branch/count", "1", (lw11_brtag === "A0" && lw11_els.length === 2) ? "1" : "0");
+    var lw11_fok = lw11_brtag === "A0" && lw11_els.length > 0;
+    for (var lw11i = 0; lw11i < lw11_els.length; lw11i++) {
+        if (lw11_els[lw11i].tag !== "BF2F") { lw11_fok = false; continue; }
+        var lw11M = BindEs10xSingleRequest.parseBerTlv(lw11_els[lw11i].value);
+        var lw11_f = {};
+        for (var lw11j = 0; lw11j < lw11M.length; lw11j++) {
+            if (lw11_f[lw11M[lw11j].tag] === undefined) { lw11_f[lw11M[lw11j].tag] = lw11M[lw11j].value; }
+        }
+        if (lw11_f["80"] === undefined) { lw11_fok = false; }
+        var lw11AddrHex = lw11_f["0C"];
+        var lw11AddrStr = "";
+        if (typeof lw11AddrHex === "string" && lw11AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw11AddrHex)) {
+            for (var lw11AddrI = 0; lw11AddrI < lw11AddrHex.length; lw11AddrI += 2) {
+                lw11AddrStr += String.fromCharCode(parseInt(lw11AddrHex.substr(lw11AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw11AddrStr)) { lw11_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw11_f["81"] !== "0780") { lw11_fok = false; }  // operation
+        if (lw11_f["5A"] !== "989209012143658709F5") { lw11_fok = false; }  // iccid
+    }
+    bind.checkData("S11-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_IN1_PIR:notificationMetadataList element fields", "1", lw11_fok ? "1" : "0");
+
+    // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla12 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S12-C1 SW", "9000", s12.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw12T = BindEs10xSingleRequest.parseBerTlv(s12.resp);
+    var lw12Ok0 = lw12T.length === 1 && lw12T[0].tag === "BF28";
+    var lw12_br = lw12Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw12T[0].value) : [];
+    var lw12_brtag = lw12_br.length === 1 ? lw12_br[0].tag : "";
+    var lw12_els = lw12_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw12_br[0].value) : [];
+    bind.checkData("S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw12_brtag === "A0" && lw12_els.length === 1) ? "1" : "0");
+    var lw12_fok = lw12_brtag === "A0" && lw12_els.length > 0;
+    for (var lw12i = 0; lw12i < lw12_els.length; lw12i++) {
+        if (lw12_els[lw12i].tag !== "BF2F") { lw12_fok = false; continue; }
+        var lw12M = BindEs10xSingleRequest.parseBerTlv(lw12_els[lw12i].value);
+        var lw12_f = {};
+        for (var lw12j = 0; lw12j < lw12M.length; lw12j++) {
+            if (lw12_f[lw12M[lw12j].tag] === undefined) { lw12_f[lw12M[lw12j].tag] = lw12M[lw12j].value; }
+        }
+        if (lw12_f["80"] === undefined) { lw12_fok = false; }
+        var lw12AddrHex = lw12_f["0C"];
+        var lw12AddrStr = "";
+        if (typeof lw12AddrHex === "string" && lw12AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw12AddrHex)) {
+            for (var lw12AddrI = 0; lw12AddrI < lw12AddrHex.length; lw12AddrI += 2) {
+                lw12AddrStr += String.fromCharCode(parseInt(lw12AddrHex.substr(lw12AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw12AddrStr)) { lw12_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw12_f["81"] !== "0640") { lw12_fok = false; }  // operation
+        if (lw12_f["5A"] !== "989209012143658709F5") { lw12_fok = false; }  // iccid
+    }
+    bind.checkData("S12-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:notificationMetadataList 恰含 #NOT element fields", "1", lw12_fok ? "1" : "0");
+
+    // 步骤 13:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla13 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s13 = bind.sendApdu(sdCla13, "E2", "91", "00", "BF2800", "00", "9000");
+    bind.checkData("S13-C1 SW", "9000", s13.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw13T = BindEs10xSingleRequest.parseBerTlv(s13.resp);
+    var lw13Ok0 = lw13T.length === 1 && lw13T[0].tag === "BF28";
+    var lw13_br = lw13Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw13T[0].value) : [];
+    var lw13_brtag = lw13_br.length === 1 ? lw13_br[0].tag : "";
+    var lw13_els = lw13_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw13_br[0].value) : [];
+    bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw13_brtag === "A0" && lw13_els.length === 1) ? "1" : "0");
+    var lw13_fok = lw13_brtag === "A0" && lw13_els.length > 0;
+    for (var lw13i = 0; lw13i < lw13_els.length; lw13i++) {
+        if (lw13_els[lw13i].tag !== "BF2F") { lw13_fok = false; continue; }
+        var lw13M = BindEs10xSingleRequest.parseBerTlv(lw13_els[lw13i].value);
+        var lw13_f = {};
+        for (var lw13j = 0; lw13j < lw13M.length; lw13j++) {
+            if (lw13_f[lw13M[lw13j].tag] === undefined) { lw13_f[lw13M[lw13j].tag] = lw13M[lw13j].value; }
+        }
+        if (lw13_f["80"] === undefined) { lw13_fok = false; }
+        var lw13AddrHex = lw13_f["0C"];
+        var lw13AddrStr = "";
+        if (typeof lw13AddrHex === "string" && lw13AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw13AddrHex)) {
+            for (var lw13AddrI = 0; lw13AddrI < lw13AddrHex.length; lw13AddrI += 2) {
+                lw13AddrStr += String.fromCharCode(parseInt(lw13AddrHex.substr(lw13AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw13AddrStr)) { lw13_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw13_f["81"] !== "0640") { lw13_fok = false; }  // operation
+        if (lw13_f["5A"] !== "989209012143658709F5") { lw13_fok = false; }  // iccid
+    }
+    bind.checkData("S13-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw13_fok ? "1" : "0");
+
+    // 步骤 14:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla14 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s14 = bind.sendApdu(sdCla14, "E2", "91", "00", "BF2803810100", "00", "9000");
+    bind.checkData("S14-C1 SW", "9000", s14.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw14T = BindEs10xSingleRequest.parseBerTlv(s14.resp);
+    var lw14Ok0 = lw14T.length === 1 && lw14T[0].tag === "BF28";
+    var lw14_br = lw14Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw14T[0].value) : [];
+    var lw14_brtag = lw14_br.length === 1 ? lw14_br[0].tag : "";
+    var lw14_els = lw14_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw14_br[0].value) : [];
+    bind.checkData("S14-C2 R-APDU 二选一 branch/count", "1", (lw14_brtag === "A0" && lw14_els.length === 0) || (lw14_brtag === "81" && lw14_br.length === 1 && lw14_br[0].value === "7F") ? "1" : "0");
+
+    // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla15 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF280481020780", "00", "9000");
+    bind.checkData("S15-C1 SW", "9000", s15.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw15T = BindEs10xSingleRequest.parseBerTlv(s15.resp);
+    var lw15Ok0 = lw15T.length === 1 && lw15T[0].tag === "BF28";
+    var lw15_br = lw15Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw15T[0].value) : [];
+    var lw15_brtag = lw15_br.length === 1 ? lw15_br[0].tag : "";
+    var lw15_els = lw15_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw15_br[0].value) : [];
+    bind.checkData("S15-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw15_brtag === "A0" && lw15_els.length === 0) ? "1" : "0");
+
+    // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla16 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF280481020640", "00", "9000");
+    bind.checkData("S16-C1 SW", "9000", s16.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw16T = BindEs10xSingleRequest.parseBerTlv(s16.resp);
+    var lw16Ok0 = lw16T.length === 1 && lw16T[0].tag === "BF28";
+    var lw16_br = lw16Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw16T[0].value) : [];
+    var lw16_brtag = lw16_br.length === 1 ? lw16_br[0].tag : "";
+    var lw16_els = lw16_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw16_br[0].value) : [];
+    bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw16_brtag === "A0" && lw16_els.length === 1) ? "1" : "0");
+    var lw16_fok = lw16_brtag === "A0" && lw16_els.length > 0;
+    for (var lw16i = 0; lw16i < lw16_els.length; lw16i++) {
+        if (lw16_els[lw16i].tag !== "BF2F") { lw16_fok = false; continue; }
+        var lw16M = BindEs10xSingleRequest.parseBerTlv(lw16_els[lw16i].value);
+        var lw16_f = {};
+        for (var lw16j = 0; lw16j < lw16M.length; lw16j++) {
+            if (lw16_f[lw16M[lw16j].tag] === undefined) { lw16_f[lw16M[lw16j].tag] = lw16M[lw16j].value; }
+        }
+        if (lw16_f["80"] === undefined) { lw16_fok = false; }
+        var lw16AddrHex = lw16_f["0C"];
+        var lw16AddrStr = "";
+        if (typeof lw16AddrHex === "string" && lw16AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw16AddrHex)) {
+            for (var lw16AddrI = 0; lw16AddrI < lw16AddrHex.length; lw16AddrI += 2) {
+                lw16AddrStr += String.fromCharCode(parseInt(lw16AddrHex.substr(lw16AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw16AddrStr)) { lw16_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw16_f["81"] !== "0640") { lw16_fok = false; }  // operation
+        if (lw16_f["5A"] !== "989209012143658709F5") { lw16_fok = false; }  // iccid
+    }
+    bind.checkData("S16-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw16_fok ? "1" : "0");
+
+    // 步骤 17:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla17 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s17 = bind.sendApdu(sdCla17, "E2", "91", "00", "BF280481020520", "00", "9000");
+    bind.checkData("S17-C1 SW", "9000", s17.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw17T = BindEs10xSingleRequest.parseBerTlv(s17.resp);
+    var lw17Ok0 = lw17T.length === 1 && lw17T[0].tag === "BF28";
+    var lw17_br = lw17Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw17T[0].value) : [];
+    var lw17_brtag = lw17_br.length === 1 ? lw17_br[0].tag : "";
+    var lw17_els = lw17_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw17_br[0].value) : [];
+    bind.checkData("S17-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw17_brtag === "A0" && lw17_els.length === 0) ? "1" : "0");
+
+    // 步骤 18:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla18 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s18 = bind.sendApdu(sdCla18, "E2", "91", "00", "BF280481020410", "00", "9000");
+    bind.checkData("S18-C1 SW", "9000", s18.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw18T = BindEs10xSingleRequest.parseBerTlv(s18.resp);
+    var lw18Ok0 = lw18T.length === 1 && lw18T[0].tag === "BF28";
+    var lw18_br = lw18Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw18T[0].value) : [];
+    var lw18_brtag = lw18_br.length === 1 ? lw18_br[0].tag : "";
+    var lw18_els = lw18_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw18_br[0].value) : [];
+    bind.checkData("S18-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw18_brtag === "A0" && lw18_els.length === 0) ? "1" : "0");
+
+    // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla19 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+    bind.checkData("S19-C1 SW", "9000", s19.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw19T = BindEs10xSingleRequest.parseBerTlv(s19.resp);
+    var lw19Ok0 = lw19T.length === 1 && lw19T[0].tag === "BF28";
+    var lw19_br = lw19Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw19T[0].value) : [];
+    var lw19_brtag = lw19_br.length === 1 ? lw19_br[0].tag : "";
+    var lw19_els = lw19_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw19_br[0].value) : [];
+    bind.checkData("S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw19_brtag === "A0" && lw19_els.length === 1) ? "1" : "0");
+    var lw19_fok = lw19_brtag === "A0" && lw19_els.length > 0;
+    for (var lw19i = 0; lw19i < lw19_els.length; lw19i++) {
+        if (lw19_els[lw19i].tag !== "BF2F") { lw19_fok = false; continue; }
+        var lw19M = BindEs10xSingleRequest.parseBerTlv(lw19_els[lw19i].value);
+        var lw19_f = {};
+        for (var lw19j = 0; lw19j < lw19M.length; lw19j++) {
+            if (lw19_f[lw19M[lw19j].tag] === undefined) { lw19_f[lw19M[lw19j].tag] = lw19M[lw19j].value; }
+        }
+        if (lw19_f["80"] === undefined) { lw19_fok = false; }
+        var lw19AddrHex = lw19_f["0C"];
+        var lw19AddrStr = "";
+        if (typeof lw19AddrHex === "string" && lw19AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw19AddrHex)) {
+            for (var lw19AddrI = 0; lw19AddrI < lw19AddrHex.length; lw19AddrI += 2) {
+                lw19AddrStr += String.fromCharCode(parseInt(lw19AddrHex.substr(lw19AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw19AddrStr)) { lw19_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw19_f["81"] !== "0640") { lw19_fok = false; }  // operation
+        if (lw19_f["5A"] !== "989209012143658709F5") { lw19_fok = false; }  // iccid
+    }
+    bind.checkData("S19-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw19_fok ? "1" : "0");
+
+    // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla20 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF280481020430", "00", "9000");
+    bind.checkData("S20-C1 SW", "9000", s20.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw20T = BindEs10xSingleRequest.parseBerTlv(s20.resp);
+    var lw20Ok0 = lw20T.length === 1 && lw20T[0].tag === "BF28";
+    var lw20_br = lw20Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw20T[0].value) : [];
+    var lw20_brtag = lw20_br.length === 1 ? lw20_br[0].tag : "";
+    var lw20_els = lw20_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw20_br[0].value) : [];
+    bind.checkData("S20-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw20_brtag === "A0" && lw20_els.length === 0) ? "1" : "0");
+
+    // 步骤 21:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla21 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s21 = bind.sendApdu(sdCla21, "E2", "91", "00", "BF280481020560", "00", "9000");
+    bind.checkData("S21-C1 SW", "9000", s21.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw21T = BindEs10xSingleRequest.parseBerTlv(s21.resp);
+    var lw21Ok0 = lw21T.length === 1 && lw21T[0].tag === "BF28";
+    var lw21_br = lw21Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw21T[0].value) : [];
+    var lw21_brtag = lw21_br.length === 1 ? lw21_br[0].tag : "";
+    var lw21_els = lw21_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw21_br[0].value) : [];
+    bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw21_brtag === "A0" && lw21_els.length === 1) ? "1" : "0");
+    var lw21_fok = lw21_brtag === "A0" && lw21_els.length > 0;
+    for (var lw21i = 0; lw21i < lw21_els.length; lw21i++) {
+        if (lw21_els[lw21i].tag !== "BF2F") { lw21_fok = false; continue; }
+        var lw21M = BindEs10xSingleRequest.parseBerTlv(lw21_els[lw21i].value);
+        var lw21_f = {};
+        for (var lw21j = 0; lw21j < lw21M.length; lw21j++) {
+            if (lw21_f[lw21M[lw21j].tag] === undefined) { lw21_f[lw21M[lw21j].tag] = lw21M[lw21j].value; }
+        }
+        if (lw21_f["80"] === undefined) { lw21_fok = false; }
+        var lw21AddrHex = lw21_f["0C"];
+        var lw21AddrStr = "";
+        if (typeof lw21AddrHex === "string" && lw21AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw21AddrHex)) {
+            for (var lw21AddrI = 0; lw21AddrI < lw21AddrHex.length; lw21AddrI += 2) {
+                lw21AddrStr += String.fromCharCode(parseInt(lw21AddrHex.substr(lw21AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw21AddrStr)) { lw21_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw21_f["81"] !== "0640") { lw21_fok = false; }  // operation
+        if (lw21_f["5A"] !== "989209012143658709F5") { lw21_fok = false; }  // iccid
+    }
+    bind.checkData("S21-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw21_fok ? "1" : "0");
+
+    // 步骤 22:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla22 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s22 = bind.sendApdu(sdCla22, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+    bind.checkData("S22-C1 SW", "9000", s22.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw22T = BindEs10xSingleRequest.parseBerTlv(s22.resp);
+    var lw22Ok0 = lw22T.length === 1 && lw22T[0].tag === "BF28";
+    var lw22_br = lw22Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw22T[0].value) : [];
+    var lw22_brtag = lw22_br.length === 1 ? lw22_br[0].tag : "";
+    var lw22_els = lw22_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw22_br[0].value) : [];
+    bind.checkData("S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 branch/count", "1", (lw22_brtag === "A0" && lw22_els.length === 1) ? "1" : "0");
+    var lw22_fok = lw22_brtag === "A0" && lw22_els.length > 0;
+    for (var lw22i = 0; lw22i < lw22_els.length; lw22i++) {
+        if (lw22_els[lw22i].tag !== "BF2F") { lw22_fok = false; continue; }
+        var lw22M = BindEs10xSingleRequest.parseBerTlv(lw22_els[lw22i].value);
+        var lw22_f = {};
+        for (var lw22j = 0; lw22j < lw22M.length; lw22j++) {
+            if (lw22_f[lw22M[lw22j].tag] === undefined) { lw22_f[lw22M[lw22j].tag] = lw22M[lw22j].value; }
+        }
+        if (lw22_f["80"] === undefined) { lw22_fok = false; }
+        var lw22AddrHex = lw22_f["0C"];
+        var lw22AddrStr = "";
+        if (typeof lw22AddrHex === "string" && lw22AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw22AddrHex)) {
+            for (var lw22AddrI = 0; lw22AddrI < lw22AddrHex.length; lw22AddrI += 2) {
+                lw22AddrStr += String.fromCharCode(parseInt(lw22AddrHex.substr(lw22AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw22AddrStr)) { lw22_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw22_f["81"] !== "0640") { lw22_fok = false; }  // operation
+        if (lw22_f["5A"] !== "989209012143658709F5") { lw22_fok = false; }  // iccid
+    }
+    bind.checkData("S22-C2 R-APDU 匹配 #R_LIST_NOTIF_EN1:恰含 #NOTIF_METADATA_ENABLE1 element fields", "1", lw22_fok ? "1" : "0");
+
+    // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla23 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S23-C1 SW", "9000", s23.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw23T = BindEs10xSingleRequest.parseBerTlv(s23.resp);
+    var lw23Ok0 = lw23T.length === 1 && lw23T[0].tag === "BF28";
+    var lw23_br = lw23Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw23T[0].value) : [];
+    var lw23_brtag = lw23_br.length === 1 ? lw23_br[0].tag : "";
+    var lw23_els = lw23_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw23_br[0].value) : [];
+    bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw23_brtag === "A0" && lw23_els.length === 1) ? "1" : "0");
+    var lw23_fok = lw23_brtag === "A0" && lw23_els.length > 0;
+    for (var lw23i = 0; lw23i < lw23_els.length; lw23i++) {
+        if (lw23_els[lw23i].tag !== "BF2F") { lw23_fok = false; continue; }
+        var lw23M = BindEs10xSingleRequest.parseBerTlv(lw23_els[lw23i].value);
+        var lw23_f = {};
+        for (var lw23j = 0; lw23j < lw23M.length; lw23j++) {
+            if (lw23_f[lw23M[lw23j].tag] === undefined) { lw23_f[lw23M[lw23j].tag] = lw23M[lw23j].value; }
+        }
+        if (lw23_f["80"] === undefined) { lw23_fok = false; }
+        var lw23AddrHex = lw23_f["0C"];
+        var lw23AddrStr = "";
+        if (typeof lw23AddrHex === "string" && lw23AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw23AddrHex)) {
+            for (var lw23AddrI = 0; lw23AddrI < lw23AddrHex.length; lw23AddrI += 2) {
+                lw23AddrStr += String.fromCharCode(parseInt(lw23AddrHex.substr(lw23AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw23AddrStr)) { lw23_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw23_f["81"] !== "0520") { lw23_fok = false; }  // operation
+        if (lw23_f["5A"] !== "989209012143658709F5") { lw23_fok = false; }  // iccid
+    }
+    bind.checkData("S23-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:notificationMetadataList 恰含 #NOT element fields", "1", lw23_fok ? "1" : "0");
+
+    // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla24 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2800", "00", "9000");
+    bind.checkData("S24-C1 SW", "9000", s24.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw24T = BindEs10xSingleRequest.parseBerTlv(s24.resp);
+    var lw24Ok0 = lw24T.length === 1 && lw24T[0].tag === "BF28";
+    var lw24_br = lw24Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw24T[0].value) : [];
+    var lw24_brtag = lw24_br.length === 1 ? lw24_br[0].tag : "";
+    var lw24_els = lw24_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw24_br[0].value) : [];
+    bind.checkData("S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw24_brtag === "A0" && lw24_els.length === 1) ? "1" : "0");
+    var lw24_fok = lw24_brtag === "A0" && lw24_els.length > 0;
+    for (var lw24i = 0; lw24i < lw24_els.length; lw24i++) {
+        if (lw24_els[lw24i].tag !== "BF2F") { lw24_fok = false; continue; }
+        var lw24M = BindEs10xSingleRequest.parseBerTlv(lw24_els[lw24i].value);
+        var lw24_f = {};
+        for (var lw24j = 0; lw24j < lw24M.length; lw24j++) {
+            if (lw24_f[lw24M[lw24j].tag] === undefined) { lw24_f[lw24M[lw24j].tag] = lw24M[lw24j].value; }
+        }
+        if (lw24_f["80"] === undefined) { lw24_fok = false; }
+        var lw24AddrHex = lw24_f["0C"];
+        var lw24AddrStr = "";
+        if (typeof lw24AddrHex === "string" && lw24AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw24AddrHex)) {
+            for (var lw24AddrI = 0; lw24AddrI < lw24AddrHex.length; lw24AddrI += 2) {
+                lw24AddrStr += String.fromCharCode(parseInt(lw24AddrHex.substr(lw24AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw24AddrStr)) { lw24_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw24_f["81"] !== "0520") { lw24_fok = false; }  // operation
+        if (lw24_f["5A"] !== "989209012143658709F5") { lw24_fok = false; }  // iccid
+    }
+    bind.checkData("S24-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw24_fok ? "1" : "0");
+
+    // 步骤 25:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla25 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s25 = bind.sendApdu(sdCla25, "E2", "91", "00", "BF2803810100", "00", "9000");
+    bind.checkData("S25-C1 SW", "9000", s25.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw25T = BindEs10xSingleRequest.parseBerTlv(s25.resp);
+    var lw25Ok0 = lw25T.length === 1 && lw25T[0].tag === "BF28";
+    var lw25_br = lw25Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw25T[0].value) : [];
+    var lw25_brtag = lw25_br.length === 1 ? lw25_br[0].tag : "";
+    var lw25_els = lw25_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw25_br[0].value) : [];
+    bind.checkData("S25-C2 R-APDU 二选一 branch/count", "1", (lw25_brtag === "A0" && lw25_els.length === 0) || (lw25_brtag === "81" && lw25_br.length === 1 && lw25_br[0].value === "7F") ? "1" : "0");
+
+    // 步骤 26:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla26 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s26 = bind.sendApdu(sdCla26, "E2", "91", "00", "BF280481020780", "00", "9000");
+    bind.checkData("S26-C1 SW", "9000", s26.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw26T = BindEs10xSingleRequest.parseBerTlv(s26.resp);
+    var lw26Ok0 = lw26T.length === 1 && lw26T[0].tag === "BF28";
+    var lw26_br = lw26Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw26T[0].value) : [];
+    var lw26_brtag = lw26_br.length === 1 ? lw26_br[0].tag : "";
+    var lw26_els = lw26_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw26_br[0].value) : [];
+    bind.checkData("S26-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw26_brtag === "A0" && lw26_els.length === 0) ? "1" : "0");
+
+    // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla27 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF280481020640", "00", "9000");
+    bind.checkData("S27-C1 SW", "9000", s27.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw27T = BindEs10xSingleRequest.parseBerTlv(s27.resp);
+    var lw27Ok0 = lw27T.length === 1 && lw27T[0].tag === "BF28";
+    var lw27_br = lw27Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw27T[0].value) : [];
+    var lw27_brtag = lw27_br.length === 1 ? lw27_br[0].tag : "";
+    var lw27_els = lw27_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw27_br[0].value) : [];
+    bind.checkData("S27-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw27_brtag === "A0" && lw27_els.length === 0) ? "1" : "0");
+
+    // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla28 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF280481020520", "00", "9000");
+    bind.checkData("S28-C1 SW", "9000", s28.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw28T = BindEs10xSingleRequest.parseBerTlv(s28.resp);
+    var lw28Ok0 = lw28T.length === 1 && lw28T[0].tag === "BF28";
+    var lw28_br = lw28Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw28T[0].value) : [];
+    var lw28_brtag = lw28_br.length === 1 ? lw28_br[0].tag : "";
+    var lw28_els = lw28_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw28_br[0].value) : [];
+    bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw28_brtag === "A0" && lw28_els.length === 1) ? "1" : "0");
+    var lw28_fok = lw28_brtag === "A0" && lw28_els.length > 0;
+    for (var lw28i = 0; lw28i < lw28_els.length; lw28i++) {
+        if (lw28_els[lw28i].tag !== "BF2F") { lw28_fok = false; continue; }
+        var lw28M = BindEs10xSingleRequest.parseBerTlv(lw28_els[lw28i].value);
+        var lw28_f = {};
+        for (var lw28j = 0; lw28j < lw28M.length; lw28j++) {
+            if (lw28_f[lw28M[lw28j].tag] === undefined) { lw28_f[lw28M[lw28j].tag] = lw28M[lw28j].value; }
+        }
+        if (lw28_f["80"] === undefined) { lw28_fok = false; }
+        var lw28AddrHex = lw28_f["0C"];
+        var lw28AddrStr = "";
+        if (typeof lw28AddrHex === "string" && lw28AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw28AddrHex)) {
+            for (var lw28AddrI = 0; lw28AddrI < lw28AddrHex.length; lw28AddrI += 2) {
+                lw28AddrStr += String.fromCharCode(parseInt(lw28AddrHex.substr(lw28AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw28AddrStr)) { lw28_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw28_f["81"] !== "0520") { lw28_fok = false; }  // operation
+        if (lw28_f["5A"] !== "989209012143658709F5") { lw28_fok = false; }  // iccid
+    }
+    bind.checkData("S28-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw28_fok ? "1" : "0");
+
+    // 步骤 29:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla29 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s29 = bind.sendApdu(sdCla29, "E2", "91", "00", "BF280481020410", "00", "9000");
+    bind.checkData("S29-C1 SW", "9000", s29.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw29T = BindEs10xSingleRequest.parseBerTlv(s29.resp);
+    var lw29Ok0 = lw29T.length === 1 && lw29T[0].tag === "BF28";
+    var lw29_br = lw29Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw29T[0].value) : [];
+    var lw29_brtag = lw29_br.length === 1 ? lw29_br[0].tag : "";
+    var lw29_els = lw29_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw29_br[0].value) : [];
+    bind.checkData("S29-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw29_brtag === "A0" && lw29_els.length === 0) ? "1" : "0");
+
+    // 步骤 30:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla30 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s30 = bind.sendApdu(sdCla30, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+    bind.checkData("S30-C1 SW", "9000", s30.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw30T = BindEs10xSingleRequest.parseBerTlv(s30.resp);
+    var lw30Ok0 = lw30T.length === 1 && lw30T[0].tag === "BF28";
+    var lw30_br = lw30Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw30T[0].value) : [];
+    var lw30_brtag = lw30_br.length === 1 ? lw30_br[0].tag : "";
+    var lw30_els = lw30_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw30_br[0].value) : [];
+    bind.checkData("S30-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw30_brtag === "A0" && lw30_els.length === 0) ? "1" : "0");
+
+    // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla31 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF280481020430", "00", "9000");
+    bind.checkData("S31-C1 SW", "9000", s31.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw31T = BindEs10xSingleRequest.parseBerTlv(s31.resp);
+    var lw31Ok0 = lw31T.length === 1 && lw31T[0].tag === "BF28";
+    var lw31_br = lw31Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw31T[0].value) : [];
+    var lw31_brtag = lw31_br.length === 1 ? lw31_br[0].tag : "";
+    var lw31_els = lw31_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw31_br[0].value) : [];
+    bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw31_brtag === "A0" && lw31_els.length === 1) ? "1" : "0");
+    var lw31_fok = lw31_brtag === "A0" && lw31_els.length > 0;
+    for (var lw31i = 0; lw31i < lw31_els.length; lw31i++) {
+        if (lw31_els[lw31i].tag !== "BF2F") { lw31_fok = false; continue; }
+        var lw31M = BindEs10xSingleRequest.parseBerTlv(lw31_els[lw31i].value);
+        var lw31_f = {};
+        for (var lw31j = 0; lw31j < lw31M.length; lw31j++) {
+            if (lw31_f[lw31M[lw31j].tag] === undefined) { lw31_f[lw31M[lw31j].tag] = lw31M[lw31j].value; }
+        }
+        if (lw31_f["80"] === undefined) { lw31_fok = false; }
+        var lw31AddrHex = lw31_f["0C"];
+        var lw31AddrStr = "";
+        if (typeof lw31AddrHex === "string" && lw31AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw31AddrHex)) {
+            for (var lw31AddrI = 0; lw31AddrI < lw31AddrHex.length; lw31AddrI += 2) {
+                lw31AddrStr += String.fromCharCode(parseInt(lw31AddrHex.substr(lw31AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw31AddrStr)) { lw31_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw31_f["81"] !== "0520") { lw31_fok = false; }  // operation
+        if (lw31_f["5A"] !== "989209012143658709F5") { lw31_fok = false; }  // iccid
+    }
+    bind.checkData("S31-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw31_fok ? "1" : "0");
+
+    // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla32 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF280481020560", "00", "9000");
+    bind.checkData("S32-C1 SW", "9000", s32.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw32T = BindEs10xSingleRequest.parseBerTlv(s32.resp);
+    var lw32Ok0 = lw32T.length === 1 && lw32T[0].tag === "BF28";
+    var lw32_br = lw32Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw32T[0].value) : [];
+    var lw32_brtag = lw32_br.length === 1 ? lw32_br[0].tag : "";
+    var lw32_els = lw32_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw32_br[0].value) : [];
+    bind.checkData("S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw32_brtag === "A0" && lw32_els.length === 1) ? "1" : "0");
+    var lw32_fok = lw32_brtag === "A0" && lw32_els.length > 0;
+    for (var lw32i = 0; lw32i < lw32_els.length; lw32i++) {
+        if (lw32_els[lw32i].tag !== "BF2F") { lw32_fok = false; continue; }
+        var lw32M = BindEs10xSingleRequest.parseBerTlv(lw32_els[lw32i].value);
+        var lw32_f = {};
+        for (var lw32j = 0; lw32j < lw32M.length; lw32j++) {
+            if (lw32_f[lw32M[lw32j].tag] === undefined) { lw32_f[lw32M[lw32j].tag] = lw32M[lw32j].value; }
+        }
+        if (lw32_f["80"] === undefined) { lw32_fok = false; }
+        var lw32AddrHex = lw32_f["0C"];
+        var lw32AddrStr = "";
+        if (typeof lw32AddrHex === "string" && lw32AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw32AddrHex)) {
+            for (var lw32AddrI = 0; lw32AddrI < lw32AddrHex.length; lw32AddrI += 2) {
+                lw32AddrStr += String.fromCharCode(parseInt(lw32AddrHex.substr(lw32AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw32AddrStr)) { lw32_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw32_f["81"] !== "0520") { lw32_fok = false; }  // operation
+        if (lw32_f["5A"] !== "989209012143658709F5") { lw32_fok = false; }  // iccid
+    }
+    bind.checkData("S32-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw32_fok ? "1" : "0");
+
+    // 步骤 33:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla33 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s33 = bind.sendApdu(sdCla33, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+    bind.checkData("S33-C1 SW", "9000", s33.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw33T = BindEs10xSingleRequest.parseBerTlv(s33.resp);
+    var lw33Ok0 = lw33T.length === 1 && lw33T[0].tag === "BF28";
+    var lw33_br = lw33Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw33T[0].value) : [];
+    var lw33_brtag = lw33_br.length === 1 ? lw33_br[0].tag : "";
+    var lw33_els = lw33_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw33_br[0].value) : [];
+    bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 branch/count", "1", (lw33_brtag === "A0" && lw33_els.length === 1) ? "1" : "0");
+    var lw33_fok = lw33_brtag === "A0" && lw33_els.length > 0;
+    for (var lw33i = 0; lw33i < lw33_els.length; lw33i++) {
+        if (lw33_els[lw33i].tag !== "BF2F") { lw33_fok = false; continue; }
+        var lw33M = BindEs10xSingleRequest.parseBerTlv(lw33_els[lw33i].value);
+        var lw33_f = {};
+        for (var lw33j = 0; lw33j < lw33M.length; lw33j++) {
+            if (lw33_f[lw33M[lw33j].tag] === undefined) { lw33_f[lw33M[lw33j].tag] = lw33M[lw33j].value; }
+        }
+        if (lw33_f["80"] === undefined) { lw33_fok = false; }
+        var lw33AddrHex = lw33_f["0C"];
+        var lw33AddrStr = "";
+        if (typeof lw33AddrHex === "string" && lw33AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw33AddrHex)) {
+            for (var lw33AddrI = 0; lw33AddrI < lw33AddrHex.length; lw33AddrI += 2) {
+                lw33AddrStr += String.fromCharCode(parseInt(lw33AddrHex.substr(lw33AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw33AddrStr)) { lw33_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw33_f["81"] !== "0520") { lw33_fok = false; }  // operation
+        if (lw33_f["5A"] !== "989209012143658709F5") { lw33_fok = false; }  // iccid
+    }
+    bind.checkData("S33-C2 R-APDU 匹配 #R_LIST_NOTIF_DI1:恰含 #NOTIF_METADATA_DISABLE1 element fields", "1", lw33_fok ? "1" : "0");
+
+    // 步骤 34:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070, RQ31_172)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla34 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s34 = bind.sendApdu(sdCla34, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S34-C1 SW", "9000", s34.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw34T = BindEs10xSingleRequest.parseBerTlv(s34.resp);
+    var lw34Ok0 = lw34T.length === 1 && lw34T[0].tag === "BF28";
+    var lw34_br = lw34Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw34T[0].value) : [];
+    var lw34_brtag = lw34_br.length === 1 ? lw34_br[0].tag : "";
+    var lw34_els = lw34_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw34_br[0].value) : [];
+    bind.checkData("S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT branch/count", "1", (lw34_brtag === "A0" && lw34_els.length === 1) ? "1" : "0");
+    var lw34_fok = lw34_brtag === "A0" && lw34_els.length > 0;
+    for (var lw34i = 0; lw34i < lw34_els.length; lw34i++) {
+        if (lw34_els[lw34i].tag !== "BF2F") { lw34_fok = false; continue; }
+        var lw34M = BindEs10xSingleRequest.parseBerTlv(lw34_els[lw34i].value);
+        var lw34_f = {};
+        for (var lw34j = 0; lw34j < lw34M.length; lw34j++) {
+            if (lw34_f[lw34M[lw34j].tag] === undefined) { lw34_f[lw34M[lw34j].tag] = lw34M[lw34j].value; }
+        }
+        if (lw34_f["80"] === undefined) { lw34_fok = false; }
+        var lw34AddrHex = lw34_f["0C"];
+        var lw34AddrStr = "";
+        if (typeof lw34AddrHex === "string" && lw34AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw34AddrHex)) {
+            for (var lw34AddrI = 0; lw34AddrI < lw34AddrHex.length; lw34AddrI += 2) {
+                lw34AddrStr += String.fromCharCode(parseInt(lw34AddrHex.substr(lw34AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw34AddrStr)) { lw34_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw34_f["81"] !== "0410") { lw34_fok = false; }  // operation
+        if (lw34_f["5A"] !== "989209012143658709F5") { lw34_fok = false; }  // iccid
+    }
+    bind.checkData("S34-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:notificationMetadataList 恰含 #NOT element fields", "1", lw34_fok ? "1" : "0");
+
+    // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla35 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF2800", "00", "9000");
+    bind.checkData("S35-C1 SW", "9000", s35.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw35T = BindEs10xSingleRequest.parseBerTlv(s35.resp);
+    var lw35Ok0 = lw35T.length === 1 && lw35T[0].tag === "BF28";
+    var lw35_br = lw35Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw35T[0].value) : [];
+    var lw35_brtag = lw35_br.length === 1 ? lw35_br[0].tag : "";
+    var lw35_els = lw35_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw35_br[0].value) : [];
+    bind.checkData("S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw35_brtag === "A0" && lw35_els.length === 1) ? "1" : "0");
+    var lw35_fok = lw35_brtag === "A0" && lw35_els.length > 0;
+    for (var lw35i = 0; lw35i < lw35_els.length; lw35i++) {
+        if (lw35_els[lw35i].tag !== "BF2F") { lw35_fok = false; continue; }
+        var lw35M = BindEs10xSingleRequest.parseBerTlv(lw35_els[lw35i].value);
+        var lw35_f = {};
+        for (var lw35j = 0; lw35j < lw35M.length; lw35j++) {
+            if (lw35_f[lw35M[lw35j].tag] === undefined) { lw35_f[lw35M[lw35j].tag] = lw35M[lw35j].value; }
+        }
+        if (lw35_f["80"] === undefined) { lw35_fok = false; }
+        var lw35AddrHex = lw35_f["0C"];
+        var lw35AddrStr = "";
+        if (typeof lw35AddrHex === "string" && lw35AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw35AddrHex)) {
+            for (var lw35AddrI = 0; lw35AddrI < lw35AddrHex.length; lw35AddrI += 2) {
+                lw35AddrStr += String.fromCharCode(parseInt(lw35AddrHex.substr(lw35AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw35AddrStr)) { lw35_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw35_f["81"] !== "0410") { lw35_fok = false; }  // operation
+        if (lw35_f["5A"] !== "989209012143658709F5") { lw35_fok = false; }  // iccid
+    }
+    bind.checkData("S35-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw35_fok ? "1" : "0");
+
+    // 步骤 36:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla36 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s36 = bind.sendApdu(sdCla36, "E2", "91", "00", "BF2803810100", "00", "9000");
+    bind.checkData("S36-C1 SW", "9000", s36.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw36T = BindEs10xSingleRequest.parseBerTlv(s36.resp);
+    var lw36Ok0 = lw36T.length === 1 && lw36T[0].tag === "BF28";
+    var lw36_br = lw36Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw36T[0].value) : [];
+    var lw36_brtag = lw36_br.length === 1 ? lw36_br[0].tag : "";
+    var lw36_els = lw36_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw36_br[0].value) : [];
+    bind.checkData("S36-C2 R-APDU 二选一 branch/count", "1", (lw36_brtag === "A0" && lw36_els.length === 0) || (lw36_brtag === "81" && lw36_br.length === 1 && lw36_br[0].value === "7F") ? "1" : "0");
+
+    // 步骤 37:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla37 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s37 = bind.sendApdu(sdCla37, "E2", "91", "00", "BF280481020780", "00", "9000");
+    bind.checkData("S37-C1 SW", "9000", s37.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw37T = BindEs10xSingleRequest.parseBerTlv(s37.resp);
+    var lw37Ok0 = lw37T.length === 1 && lw37T[0].tag === "BF28";
+    var lw37_br = lw37Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw37T[0].value) : [];
+    var lw37_brtag = lw37_br.length === 1 ? lw37_br[0].tag : "";
+    var lw37_els = lw37_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw37_br[0].value) : [];
+    bind.checkData("S37-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw37_brtag === "A0" && lw37_els.length === 0) ? "1" : "0");
+
+    // 步骤 38:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla38 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s38 = bind.sendApdu(sdCla38, "E2", "91", "00", "BF280481020640", "00", "9000");
+    bind.checkData("S38-C1 SW", "9000", s38.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw38T = BindEs10xSingleRequest.parseBerTlv(s38.resp);
+    var lw38Ok0 = lw38T.length === 1 && lw38T[0].tag === "BF28";
+    var lw38_br = lw38Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw38T[0].value) : [];
+    var lw38_brtag = lw38_br.length === 1 ? lw38_br[0].tag : "";
+    var lw38_els = lw38_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw38_br[0].value) : [];
+    bind.checkData("S38-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw38_brtag === "A0" && lw38_els.length === 0) ? "1" : "0");
+
+    // 步骤 39:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla39 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s39 = bind.sendApdu(sdCla39, "E2", "91", "00", "BF280481020520", "00", "9000");
+    bind.checkData("S39-C1 SW", "9000", s39.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw39T = BindEs10xSingleRequest.parseBerTlv(s39.resp);
+    var lw39Ok0 = lw39T.length === 1 && lw39T[0].tag === "BF28";
+    var lw39_br = lw39Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw39T[0].value) : [];
+    var lw39_brtag = lw39_br.length === 1 ? lw39_br[0].tag : "";
+    var lw39_els = lw39_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw39_br[0].value) : [];
+    bind.checkData("S39-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw39_brtag === "A0" && lw39_els.length === 0) ? "1" : "0");
+
+    // 步骤 40:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla40 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s40 = bind.sendApdu(sdCla40, "E2", "91", "00", "BF280481020410", "00", "9000");
+    bind.checkData("S40-C1 SW", "9000", s40.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw40T = BindEs10xSingleRequest.parseBerTlv(s40.resp);
+    var lw40Ok0 = lw40T.length === 1 && lw40T[0].tag === "BF28";
+    var lw40_br = lw40Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw40T[0].value) : [];
+    var lw40_brtag = lw40_br.length === 1 ? lw40_br[0].tag : "";
+    var lw40_els = lw40_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw40_br[0].value) : [];
+    bind.checkData("S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw40_brtag === "A0" && lw40_els.length === 1) ? "1" : "0");
+    var lw40_fok = lw40_brtag === "A0" && lw40_els.length > 0;
+    for (var lw40i = 0; lw40i < lw40_els.length; lw40i++) {
+        if (lw40_els[lw40i].tag !== "BF2F") { lw40_fok = false; continue; }
+        var lw40M = BindEs10xSingleRequest.parseBerTlv(lw40_els[lw40i].value);
+        var lw40_f = {};
+        for (var lw40j = 0; lw40j < lw40M.length; lw40j++) {
+            if (lw40_f[lw40M[lw40j].tag] === undefined) { lw40_f[lw40M[lw40j].tag] = lw40M[lw40j].value; }
+        }
+        if (lw40_f["80"] === undefined) { lw40_fok = false; }
+        var lw40AddrHex = lw40_f["0C"];
+        var lw40AddrStr = "";
+        if (typeof lw40AddrHex === "string" && lw40AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw40AddrHex)) {
+            for (var lw40AddrI = 0; lw40AddrI < lw40AddrHex.length; lw40AddrI += 2) {
+                lw40AddrStr += String.fromCharCode(parseInt(lw40AddrHex.substr(lw40AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw40AddrStr)) { lw40_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw40_f["81"] !== "0410") { lw40_fok = false; }  // operation
+        if (lw40_f["5A"] !== "989209012143658709F5") { lw40_fok = false; }  // iccid
+    }
+    bind.checkData("S40-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw40_fok ? "1" : "0");
+
+    // 步骤 41:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla41 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s41 = bind.sendApdu(sdCla41, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+    bind.checkData("S41-C1 SW", "9000", s41.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw41T = BindEs10xSingleRequest.parseBerTlv(s41.resp);
+    var lw41Ok0 = lw41T.length === 1 && lw41T[0].tag === "BF28";
+    var lw41_br = lw41Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw41T[0].value) : [];
+    var lw41_brtag = lw41_br.length === 1 ? lw41_br[0].tag : "";
+    var lw41_els = lw41_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw41_br[0].value) : [];
+    bind.checkData("S41-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw41_brtag === "A0" && lw41_els.length === 0) ? "1" : "0");
+
+    // 步骤 42:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla42 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s42 = bind.sendApdu(sdCla42, "E2", "91", "00", "BF280481020430", "00", "9000");
+    bind.checkData("S42-C1 SW", "9000", s42.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw42T = BindEs10xSingleRequest.parseBerTlv(s42.resp);
+    var lw42Ok0 = lw42T.length === 1 && lw42T[0].tag === "BF28";
+    var lw42_br = lw42Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw42T[0].value) : [];
+    var lw42_brtag = lw42_br.length === 1 ? lw42_br[0].tag : "";
+    var lw42_els = lw42_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw42_br[0].value) : [];
+    bind.checkData("S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw42_brtag === "A0" && lw42_els.length === 1) ? "1" : "0");
+    var lw42_fok = lw42_brtag === "A0" && lw42_els.length > 0;
+    for (var lw42i = 0; lw42i < lw42_els.length; lw42i++) {
+        if (lw42_els[lw42i].tag !== "BF2F") { lw42_fok = false; continue; }
+        var lw42M = BindEs10xSingleRequest.parseBerTlv(lw42_els[lw42i].value);
+        var lw42_f = {};
+        for (var lw42j = 0; lw42j < lw42M.length; lw42j++) {
+            if (lw42_f[lw42M[lw42j].tag] === undefined) { lw42_f[lw42M[lw42j].tag] = lw42M[lw42j].value; }
+        }
+        if (lw42_f["80"] === undefined) { lw42_fok = false; }
+        var lw42AddrHex = lw42_f["0C"];
+        var lw42AddrStr = "";
+        if (typeof lw42AddrHex === "string" && lw42AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw42AddrHex)) {
+            for (var lw42AddrI = 0; lw42AddrI < lw42AddrHex.length; lw42AddrI += 2) {
+                lw42AddrStr += String.fromCharCode(parseInt(lw42AddrHex.substr(lw42AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw42AddrStr)) { lw42_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw42_f["81"] !== "0410") { lw42_fok = false; }  // operation
+        if (lw42_f["5A"] !== "989209012143658709F5") { lw42_fok = false; }  // iccid
+    }
+    bind.checkData("S42-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw42_fok ? "1" : "0");
+
+    // 步骤 43:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla43 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s43 = bind.sendApdu(sdCla43, "E2", "91", "00", "BF280481020560", "00", "9000");
+    bind.checkData("S43-C1 SW", "9000", s43.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw43T = BindEs10xSingleRequest.parseBerTlv(s43.resp);
+    var lw43Ok0 = lw43T.length === 1 && lw43T[0].tag === "BF28";
+    var lw43_br = lw43Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw43T[0].value) : [];
+    var lw43_brtag = lw43_br.length === 1 ? lw43_br[0].tag : "";
+    var lw43_els = lw43_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw43_br[0].value) : [];
+    bind.checkData("S43-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw43_brtag === "A0" && lw43_els.length === 0) ? "1" : "0");
+
+    // 步骤 44:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_069, RQ57_070)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla44 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s44 = bind.sendApdu(sdCla44, "E2", "91", "00", "BF280481020470", "00", "9000");
+    bind.checkData("S44-C1 SW", "9000", s44.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw44T = BindEs10xSingleRequest.parseBerTlv(s44.resp);
+    var lw44Ok0 = lw44T.length === 1 && lw44T[0].tag === "BF28";
+    var lw44_br = lw44Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw44T[0].value) : [];
+    var lw44_brtag = lw44_br.length === 1 ? lw44_br[0].tag : "";
+    var lw44_els = lw44_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw44_br[0].value) : [];
+    bind.checkData("S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 branch/count", "1", (lw44_brtag === "A0" && lw44_els.length === 1) ? "1" : "0");
+    var lw44_fok = lw44_brtag === "A0" && lw44_els.length > 0;
+    for (var lw44i = 0; lw44i < lw44_els.length; lw44i++) {
+        if (lw44_els[lw44i].tag !== "BF2F") { lw44_fok = false; continue; }
+        var lw44M = BindEs10xSingleRequest.parseBerTlv(lw44_els[lw44i].value);
+        var lw44_f = {};
+        for (var lw44j = 0; lw44j < lw44M.length; lw44j++) {
+            if (lw44_f[lw44M[lw44j].tag] === undefined) { lw44_f[lw44M[lw44j].tag] = lw44M[lw44j].value; }
+        }
+        if (lw44_f["80"] === undefined) { lw44_fok = false; }
+        var lw44AddrHex = lw44_f["0C"];
+        var lw44AddrStr = "";
+        if (typeof lw44AddrHex === "string" && lw44AddrHex.length % 2 === 0 && /^[0-9A-Fa-f]+$/.test(lw44AddrHex)) {
+            for (var lw44AddrI = 0; lw44AddrI < lw44AddrHex.length; lw44AddrI += 2) {
+                lw44AddrStr += String.fromCharCode(parseInt(lw44AddrHex.substr(lw44AddrI, 2), 16));
+            }
+        }
+        if (!/^[A-Za-z0-9][A-Za-z0-9.-]*\.[A-Za-z]{2,}$/.test(lw44AddrStr)) { lw44_fok = false; }
+        // notificationAddress 结构在场断言(unresolved 语料真空:Annex A 占位 'TESTSMDPPLUS1.EXAMPLE.COM' 禁 equality;REQ 覆盖登记放宽理由): Annex A 占位 FQDN 'TESTSMDPPLUS1.EXAMPLE.COM'(RFC 2606 保留文档域)为语料真空——MUST NOT 作运行时 equality 期望;改结构在场断言(address 非空+合法 FQDN 形态),或经登记的 IUT 环境声明注入真值。放宽理由登记于 REQ 覆盖。
+        if (lw44_f["81"] !== "0410") { lw44_fok = false; }  // operation
+        if (lw44_f["5A"] !== "989209012143658709F5") { lw44_fok = false; }  // iccid
+    }
+    bind.checkData("S44-C2 R-APDU 匹配 #R_LIST_NOTIF_DE1:恰含 #NOTIF_METADATA_DELETE1 element fields", "1", lw44_fok ? "1" : "0");
+
+    // 步骤 45:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020, RQ31_172)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla45 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s45 = bind.sendApdu(sdCla45, "E2", "91", "00", "BF2804810204F0", "00", "9000");
+    bind.checkData("S45-C1 SW", "9000", s45.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw45T = BindEs10xSingleRequest.parseBerTlv(s45.resp);
+    var lw45Ok0 = lw45T.length === 1 && lw45T[0].tag === "BF28";
+    var lw45_br = lw45Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw45T[0].value) : [];
+    var lw45_brtag = lw45_br.length === 1 ? lw45_br[0].tag : "";
+    var lw45_els = lw45_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw45_br[0].value) : [];
+    bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata branch/count", "1", (lw45_brtag === "A0" && lw45_els.length === 2) ? "1" : "0");
+    var lw45_feok = lw45_brtag === "A0" && lw45_els.length === 2;
+    var lw45_fobs = [];
+    for (var lw45i = 0; lw45i < lw45_els.length; lw45i++) {
+        if (lw45_els[lw45i].tag !== "BF2F") { lw45_feok = false; continue; }
+        var lw45M = BindEs10xSingleRequest.parseBerTlv(lw45_els[lw45i].value);
+        var lw45_f = {};
+        for (var lw45j = 0; lw45j < lw45M.length; lw45j++) {
+            if (lw45_f[lw45M[lw45j].tag] === undefined) { lw45_f[lw45M[lw45j].tag] = lw45M[lw45j].value; }
+        }
+        if (lw45_f["80"] === undefined) { lw45_feok = false; }
+        lw45_fobs.push(lw45_f);
+    }
+    var lw45_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+    for (var lw45k = 0; lw45k < lw45_fexp.length; lw45k++) {
+        var lw45mc = 0;
+        for (var lw45m = 0; lw45m < lw45_fobs.length; lw45m++) {
+            if (lw45_fobs[lw45m]["81"] === lw45_fexp[lw45k].op && lw45_fobs[lw45m]["0C"] === lw45_fexp[lw45k].addr && lw45_fobs[lw45m]["5A"] === lw45_fexp[lw45k].iccid) { lw45mc++; }
+        }
+        if (lw45mc !== 1) { lw45_feok = false; }
+    }
+    bind.checkData("S45-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:notificationMetadata element fields", "1", lw45_feok ? "1" : "0");
+
+    // 步骤 46:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_3, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla46 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s46 = bind.sendApdu(sdCla46, "E2", "91", "00", "BF2800", "00", "9000");
+    bind.checkData("S46-C1 SW", "9000", s46.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw46T = BindEs10xSingleRequest.parseBerTlv(s46.resp);
+    var lw46Ok0 = lw46T.length === 1 && lw46T[0].tag === "BF28";
+    var lw46_br = lw46Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw46T[0].value) : [];
+    var lw46_brtag = lw46_br.length === 1 ? lw46_br[0].tag : "";
+    var lw46_els = lw46_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw46_br[0].value) : [];
+    bind.checkData("S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw46_brtag === "A0" && lw46_els.length === 2) ? "1" : "0");
+    var lw46_feok = lw46_brtag === "A0" && lw46_els.length === 2;
+    var lw46_fobs = [];
+    for (var lw46i = 0; lw46i < lw46_els.length; lw46i++) {
+        if (lw46_els[lw46i].tag !== "BF2F") { lw46_feok = false; continue; }
+        var lw46M = BindEs10xSingleRequest.parseBerTlv(lw46_els[lw46i].value);
+        var lw46_f = {};
+        for (var lw46j = 0; lw46j < lw46M.length; lw46j++) {
+            if (lw46_f[lw46M[lw46j].tag] === undefined) { lw46_f[lw46M[lw46j].tag] = lw46M[lw46j].value; }
+        }
+        if (lw46_f["80"] === undefined) { lw46_feok = false; }
+        lw46_fobs.push(lw46_f);
+    }
+    var lw46_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+    for (var lw46k = 0; lw46k < lw46_fexp.length; lw46k++) {
+        var lw46mc = 0;
+        for (var lw46m = 0; lw46m < lw46_fobs.length; lw46m++) {
+            if (lw46_fobs[lw46m]["81"] === lw46_fexp[lw46k].op && lw46_fobs[lw46m]["0C"] === lw46_fexp[lw46k].addr && lw46_fobs[lw46m]["5A"] === lw46_fexp[lw46k].iccid) { lw46mc++; }
+        }
+        if (lw46mc !== 1) { lw46_feok = false; }
+    }
+    bind.checkData("S46-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw46_feok ? "1" : "0");
+
+    // 步骤 47:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla47 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s47 = bind.sendApdu(sdCla47, "E2", "91", "00", "BF2803810100", "00", "9000");
+    bind.checkData("S47-C1 SW", "9000", s47.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw47T = BindEs10xSingleRequest.parseBerTlv(s47.resp);
+    var lw47Ok0 = lw47T.length === 1 && lw47T[0].tag === "BF28";
+    var lw47_br = lw47Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw47T[0].value) : [];
+    var lw47_brtag = lw47_br.length === 1 ? lw47_br[0].tag : "";
+    var lw47_els = lw47_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw47_br[0].value) : [];
+    bind.checkData("S47-C2 R-APDU 二选一 branch/count", "1", (lw47_brtag === "A0" && lw47_els.length === 0) || (lw47_brtag === "81" && lw47_br.length === 1 && lw47_br[0].value === "7F") ? "1" : "0");
+
+    // 步骤 48:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla48 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s48 = bind.sendApdu(sdCla48, "E2", "91", "00", "BF280481020780", "00", "9000");
+    bind.checkData("S48-C1 SW", "9000", s48.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw48T = BindEs10xSingleRequest.parseBerTlv(s48.resp);
+    var lw48Ok0 = lw48T.length === 1 && lw48T[0].tag === "BF28";
+    var lw48_br = lw48Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw48T[0].value) : [];
+    var lw48_brtag = lw48_br.length === 1 ? lw48_br[0].tag : "";
+    var lw48_els = lw48_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw48_br[0].value) : [];
+    bind.checkData("S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw48_brtag === "A0" && lw48_els.length === 2) ? "1" : "0");
+    var lw48_feok = lw48_brtag === "A0" && lw48_els.length === 2;
+    var lw48_fobs = [];
+    for (var lw48i = 0; lw48i < lw48_els.length; lw48i++) {
+        if (lw48_els[lw48i].tag !== "BF2F") { lw48_feok = false; continue; }
+        var lw48M = BindEs10xSingleRequest.parseBerTlv(lw48_els[lw48i].value);
+        var lw48_f = {};
+        for (var lw48j = 0; lw48j < lw48M.length; lw48j++) {
+            if (lw48_f[lw48M[lw48j].tag] === undefined) { lw48_f[lw48M[lw48j].tag] = lw48M[lw48j].value; }
+        }
+        if (lw48_f["80"] === undefined) { lw48_feok = false; }
+        lw48_fobs.push(lw48_f);
+    }
+    var lw48_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+    for (var lw48k = 0; lw48k < lw48_fexp.length; lw48k++) {
+        var lw48mc = 0;
+        for (var lw48m = 0; lw48m < lw48_fobs.length; lw48m++) {
+            if (lw48_fobs[lw48m]["81"] === lw48_fexp[lw48k].op && lw48_fobs[lw48m]["0C"] === lw48_fexp[lw48k].addr && lw48_fobs[lw48m]["5A"] === lw48_fexp[lw48k].iccid) { lw48mc++; }
+        }
+        if (lw48mc !== 1) { lw48_feok = false; }
+    }
+    bind.checkData("S48-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw48_feok ? "1" : "0");
+
+    // 步骤 49:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla49 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s49 = bind.sendApdu(sdCla49, "E2", "91", "00", "BF280481020640", "00", "9000");
+    bind.checkData("S49-C1 SW", "9000", s49.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw49T = BindEs10xSingleRequest.parseBerTlv(s49.resp);
+    var lw49Ok0 = lw49T.length === 1 && lw49T[0].tag === "BF28";
+    var lw49_br = lw49Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw49T[0].value) : [];
+    var lw49_brtag = lw49_br.length === 1 ? lw49_br[0].tag : "";
+    var lw49_els = lw49_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw49_br[0].value) : [];
+    bind.checkData("S49-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw49_brtag === "A0" && lw49_els.length === 0) ? "1" : "0");
+
+    // 步骤 50:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla50 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s50 = bind.sendApdu(sdCla50, "E2", "91", "00", "BF280481020520", "00", "9000");
+    bind.checkData("S50-C1 SW", "9000", s50.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw50T = BindEs10xSingleRequest.parseBerTlv(s50.resp);
+    var lw50Ok0 = lw50T.length === 1 && lw50T[0].tag === "BF28";
+    var lw50_br = lw50Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw50T[0].value) : [];
+    var lw50_brtag = lw50_br.length === 1 ? lw50_br[0].tag : "";
+    var lw50_els = lw50_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw50_br[0].value) : [];
+    bind.checkData("S50-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw50_brtag === "A0" && lw50_els.length === 0) ? "1" : "0");
+
+    // 步骤 51:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla51 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s51 = bind.sendApdu(sdCla51, "E2", "91", "00", "BF280481020410", "00", "9000");
+    bind.checkData("S51-C1 SW", "9000", s51.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw51T = BindEs10xSingleRequest.parseBerTlv(s51.resp);
+    var lw51Ok0 = lw51T.length === 1 && lw51T[0].tag === "BF28";
+    var lw51_br = lw51Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw51T[0].value) : [];
+    var lw51_brtag = lw51_br.length === 1 ? lw51_br[0].tag : "";
+    var lw51_els = lw51_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw51_br[0].value) : [];
+    bind.checkData("S51-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw51_brtag === "A0" && lw51_els.length === 0) ? "1" : "0");
+
+    // 步骤 52:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla52 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s52 = bind.sendApdu(sdCla52, "E2", "91", "00", "BF2804810206C0", "00", "9000");
+    bind.checkData("S52-C1 SW", "9000", s52.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw52T = BindEs10xSingleRequest.parseBerTlv(s52.resp);
+    var lw52Ok0 = lw52T.length === 1 && lw52T[0].tag === "BF28";
+    var lw52_br = lw52Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw52T[0].value) : [];
+    var lw52_brtag = lw52_br.length === 1 ? lw52_br[0].tag : "";
+    var lw52_els = lw52_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw52_br[0].value) : [];
+    bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw52_brtag === "A0" && lw52_els.length === 2) ? "1" : "0");
+    var lw52_feok = lw52_brtag === "A0" && lw52_els.length === 2;
+    var lw52_fobs = [];
+    for (var lw52i = 0; lw52i < lw52_els.length; lw52i++) {
+        if (lw52_els[lw52i].tag !== "BF2F") { lw52_feok = false; continue; }
+        var lw52M = BindEs10xSingleRequest.parseBerTlv(lw52_els[lw52i].value);
+        var lw52_f = {};
+        for (var lw52j = 0; lw52j < lw52M.length; lw52j++) {
+            if (lw52_f[lw52M[lw52j].tag] === undefined) { lw52_f[lw52M[lw52j].tag] = lw52M[lw52j].value; }
+        }
+        if (lw52_f["80"] === undefined) { lw52_feok = false; }
+        lw52_fobs.push(lw52_f);
+    }
+    var lw52_fexp = [{op: "0780", addr: "54455354534D4450504C5553312E4558414D504C452E434F4D", iccid: "989209012143658709F5"}, {op: "0780", addr: "54455354534D4450504C5553322E4558414D504C452E434F4D", iccid: "989209013254769810F9"}];
+    for (var lw52k = 0; lw52k < lw52_fexp.length; lw52k++) {
+        var lw52mc = 0;
+        for (var lw52m = 0; lw52m < lw52_fobs.length; lw52m++) {
+            if (lw52_fobs[lw52m]["81"] === lw52_fexp[lw52k].op && lw52_fobs[lw52m]["0C"] === lw52_fexp[lw52k].addr && lw52_fobs[lw52m]["5A"] === lw52_fexp[lw52k].iccid) { lw52mc++; }
+        }
+        if (lw52mc !== 1) { lw52_feok = false; }
+    }
+    bind.checkData("S52-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I element fields", "1", lw52_feok ? "1" : "0");
+
+    // 步骤 53:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla53 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s53 = bind.sendApdu(sdCla53, "E2", "91", "00", "BF280481020430", "00", "9000");
+    bind.checkData("S53-C1 SW", "9000", s53.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw53T = BindEs10xSingleRequest.parseBerTlv(s53.resp);
+    var lw53Ok0 = lw53T.length === 1 && lw53T[0].tag === "BF28";
+    var lw53_br = lw53Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw53T[0].value) : [];
+    var lw53_brtag = lw53_br.length === 1 ? lw53_br[0].tag : "";
+    var lw53_els = lw53_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw53_br[0].value) : [];
+    bind.checkData("S53-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw53_brtag === "A0" && lw53_els.length === 0) ? "1" : "0");
+
+    // 步骤 54:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_4, RQ57_069)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla54 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s54 = bind.sendApdu(sdCla54, "E2", "91", "00", "BF280481020560", "00", "9000");
+    bind.checkData("S54-C1 SW", "9000", s54.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw54T = BindEs10xSingleRequest.parseBerTlv(s54.resp);
+    var lw54Ok0 = lw54T.length === 1 && lw54T[0].tag === "BF28";
+    var lw54_br = lw54Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw54T[0].value) : [];
+    var lw54_brtag = lw54_br.length === 1 ? lw54_br[0].tag : "";
+    var lw54_els = lw54_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw54_br[0].value) : [];
+    bind.checkData("S54-C2 R-APDU 匹配 #R_LIST_NOTIF_NONE:notificationMetadataList : {} 空 branch/count", "1", (lw54_brtag === "A0" && lw54_els.length === 0) ? "1" : "0");
+
+    // 步骤 55:MTD_STORE_DATA(tc_step;REQ: RQ35_016, RQ57_068, RQ57_068_1, RQ57_068_2, RQ57_069, RQ57_070, RQ25_020)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla55 = s115.chan !== null ? (s115.chan <= 3 ? 128 + s115.chan : 188 + s115.chan).toString(16).toUpperCase() : null;
+    var s55 = bind.sendApdu(sdCla55, "E2", "91", "00", "BF2804810205E0", "00", "9000");
+    bind.checkData("S55-C1 SW", "9000", s55.sw);
+    // notification-list 响应面(TC_eUICC_ES10b.ListNotification,SGP.22 §5.7.9 结构 + vendor ABI 分支锚;断言参数经 spec_pattern 子句注入):
+    var lw55T = BindEs10xSingleRequest.parseBerTlv(s55.resp);
+    var lw55Ok0 = lw55T.length === 1 && lw55T[0].tag === "BF28";
+    var lw55_br = lw55Ok0 ? BindEs10xSingleRequest.parseBerTlv(lw55T[0].value) : [];
+    var lw55_brtag = lw55_br.length === 1 ? lw55_br[0].tag : "";
+    var lw55_els = lw55_brtag === "A0" ? BindEs10xSingleRequest.parseBerTlv(lw55_br[0].value) : [];
+    bind.checkData("S55-C2 R-APDU 匹配 #R_LIST_NOTIF_IN1_PIR_IN2_PIR:恰含 #NOTIF_METADATA_I branch/count", "1", (lw55_brtag === "A0" && lw55_els.length === 2) ? "1" : "0");
+    var lw55_feok = lw55_brtag === "A0" && lw55_els.length === 2;
+    var lw55_fobs = [];
+    for (var lw55i = 0; lw55i < lw55_els.length; lw55i++) {
+        if (lw55_els[lw55i].tag !== "BF2F") { lw55_feok = false; continue; }
+        var lw55M = BindEs10xSingleRequest.parseBerTlv(lw55_els[lw55i].value);
+        var lw55_f = {};
+        for (var lw55j = 0; lw55j < lw55M.length; lw55j++) {
+            if (lw55_f[lw55M[lw55j].tag] === undefined) { lw55_f[lw55M[lw55j].tag] = lw55M[lw55j].value; }
+        }
+        if (lw55_f["80"] === undefined) { lw55_feok = false; }
+        lw55_fobs.push(lw55_f);
+    }