eSIM RSP 测试用例对比站

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

源码对照:4.2.26.2.1

ES10c 设置 Profile 昵称 / TC_eUICC_ES10c.SetNickname

左侧为人工切片入口(-man,来自 原料/切片 的最小可执行脚本),右侧为 Cas 盲生成入口(-cas,仅依据规范生成)。文件按原始编码(多为 GBK)解码为 UTF-8 显示,行号自 1 起;字节级原文与 sha256 见两侧脚本包。完整 unified diff 见本页底部折叠区,以及 报告原文 §4。
-man 入口
Import/TestCase_SGP_23.js
545 行 / 23070 字符 / gb18030
-cas 入口
TC_eUICC_ES10c_SetNickname/Import/TC_eUICC_ES10c_SetNickname.js
519 行 / 39795 字符 / gb18030
默认折行显示长行;取消勾选可横向滚动查看原始行宽
-man 人工切片Import/TestCase_SGP_23.js545 行 / 23070 字符 / gb18030入口函数 @L3
1// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_SetNickname_01 + TC_eUICC_ES10c_SetNickname_02 + TC_eUICC_ES10c_SetNickname_03 + TC_eUICC_ES10c_SetNickname_04 + TC_eUICC_ES10c_SetNickname_05 + TC_eUICC_ES10c_SetNickname_06 + TC_eUICC_ES10c_SetNickname_07 + TC_eUICC_ES10c_SetNickname_08 + TC_eUICC_ES10c_SetNickname_09 (extracted verbatim)
2
3function TC_eUICC_ES10c_SetNickname_01()
4{
5	initial_condition_Start();
6	initial_condition_Install_PROFILE_OPERATIONAL1();
7	
8	tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,添加Nickname";
9	curDis.TraceStart(sno++,tracenamestr);
10	
11	curLogicChannel = 0;
12	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
13	Ini_powerOn_eUICC_LPAe_not_activate();
14	
15	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
16	TS_MANAGE_CHANNEL_OPEN();
17	
18	curLogicChannel = 1;
19	
20	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
21	TS_SELECT("Select ISD",ISD_R_AID,"9000");
22	
23	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
24	var setNicknameRequest = new SetNicknameRequest();
25	setNicknameRequest.iccid = ICCID_OP_PROF1;
26	setNicknameRequest.profileNickname = NICKNAME2;
27	setNicknameRequest.GenHexData();
28	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
29	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
30	
31	
32	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
33	var proInfoListRequest = new ProfileInfoListRequest();
34	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
35	proInfoListRequest.GenHexData();
36	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
37	var proInfoListResponse = new  ProfileInfoListResponse();
38	proInfoListResponse.checkCardResDataFormat(respData);
39	
40	try
41	{
42		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
43		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
44		
45		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
46		
47		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
48		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
49		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
50		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
51		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
52		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
53		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
54		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
55		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
56	}catch(e){
57		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
58	}
59	
60	
61	RecoverCard();
62}
63
64function TC_eUICC_ES10c_SetNickname_02()
65{
66	initial_condition_Start();
67	initial_condition_Install_PROFILE_OPERATIONAL1();
68	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
69	
70	tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,更新其Nickname";
71	curDis.TraceStart(sno++,tracenamestr);
72	
73	curLogicChannel = 0;
74	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
75	Ini_powerOn_eUICC_LPAe_not_activate();
76	
77	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
78	TS_MANAGE_CHANNEL_OPEN();
79	
80	curLogicChannel = 1;
81	
82	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
83	TS_SELECT("Select ISD",ISD_R_AID,"9000");
84	
85	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
86	var setNicknameRequest = new SetNicknameRequest();
87	setNicknameRequest.iccid = ICCID_OP_PROF1;
88	setNicknameRequest.profileNickname = NICKNAME2;
89	setNicknameRequest.GenHexData();
90	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
91	
92	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
93	
94	
95	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
96	var proInfoListRequest = new ProfileInfoListRequest();
97	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
98	proInfoListRequest.GenHexData();
99	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
100	
101	var proInfoListResponse = new  ProfileInfoListResponse();
102	proInfoListResponse.checkCardResDataFormat(respData);
103	
104	try
105	{
106		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
107		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
108		
109		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
110		
111		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
112		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
113		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
114		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
115		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
116		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
117		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
118		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
119		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
120	}catch(e){
121		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
122	}
123	
124	
125	RecoverCard();
126}
127
128function TC_eUICC_ES10c_SetNickname_03()
129{
130	initial_condition_Start();
131	initial_condition_Install_PROFILE_OPERATIONAL1();
132	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
133	
134	tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,删除其Nickname";
135	curDis.TraceStart(sno++,tracenamestr);
136	
137	curLogicChannel = 0;
138	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
139	Ini_powerOn_eUICC_LPAe_not_activate();
140	
141	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
142	TS_MANAGE_CHANNEL_OPEN();
143	
144	curLogicChannel = 1;
145	
146	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
147	TS_SELECT("Select ISD",ISD_R_AID,"9000");
148	
149	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
150	var setNicknameRequest = new SetNicknameRequest();
151	setNicknameRequest.iccid = ICCID_OP_PROF1;
152	setNicknameRequest.profileNickname = "";
153	setNicknameRequest.GenHexData();
154	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
155	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
156	
157	
158	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
159	var proInfoListRequest = new ProfileInfoListRequest();
160	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
161	proInfoListRequest.GenHexData();
162	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
163	
164	var proInfoListResponse = new  ProfileInfoListResponse();
165	proInfoListResponse.checkCardResDataFormat(respData);
166	
167	try
168	{
169		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
170		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
171		
172		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
173		
174		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
175		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
176		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
177		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
178		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
179		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
180		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
181		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
182		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
183	}catch(e){
184		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
185	}
186	
187	RecoverCard();
188}
189
190function TC_eUICC_ES10c_SetNickname_04()
191{
192	initial_condition_Start();
193	initial_condition_Install_PROFILE_OPERATIONAL1();
194	
195	tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,删除Nickname";
196	curDis.TraceStart(sno++,tracenamestr);
197	
198	curLogicChannel = 0;
199	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
200	Ini_powerOn_eUICC_LPAe_not_activate();
201	
202	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
203	TS_MANAGE_CHANNEL_OPEN();
204	
205	curLogicChannel = 1;
206	
207	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
208	TS_SELECT("Select ISD",ISD_R_AID,"9000");
209	
210	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
211	var setNicknameRequest = new SetNicknameRequest();
212	setNicknameRequest.iccid = ICCID_OP_PROF1;
213	setNicknameRequest.profileNickname = "";
214	setNicknameRequest.GenHexData();
215	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
216	
217	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
218	
219	
220	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
221	var proInfoListRequest = new ProfileInfoListRequest();
222	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
223	proInfoListRequest.GenHexData();
224	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
225	
226	var proInfoListResponse = new  ProfileInfoListResponse();
227	proInfoListResponse.checkCardResDataFormat(respData);
228	
229	try
230	{
231		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
232		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
233		
234		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
235		
236		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
237		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
238		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
239		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
240		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
241		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
242		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
243		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
244		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
245	}catch(e){
246		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
247	}
248	
249	
250	RecoverCard();
251}
252
253function TC_eUICC_ES10c_SetNickname_05()
254{
255	initial_condition_Start();
256	initial_condition_Install_PROFILE_OPERATIONAL1();
257	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
258	
259	tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,添加Nickname";
260	curDis.TraceStart(sno++,tracenamestr);
261	
262	curLogicChannel = 0;
263	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
264	Ini_powerOn_eUICC_LPAe_not_activate();
265	
266	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
267	TS_MANAGE_CHANNEL_OPEN();
268	
269	curLogicChannel = 1;
270	
271	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
272	TS_SELECT("Select ISD",ISD_R_AID,"9000");
273	
274	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
275	var setNicknameRequest = new SetNicknameRequest();
276	setNicknameRequest.iccid = ICCID_OP_PROF1;
277	setNicknameRequest.profileNickname = NICKNAME2;
278	setNicknameRequest.GenHexData();
279	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
280	
281	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
282	
283	
284	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
285	var proInfoListRequest = new ProfileInfoListRequest();
286	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
287	proInfoListRequest.GenHexData();
288	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
289	
290	var proInfoListResponse = new  ProfileInfoListResponse();
291	proInfoListResponse.checkCardResDataFormat(respData);
292	
293	try
294	{
295		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
296		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
297		
298		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
299		
300		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
301		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
302		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
303		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
304		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
305		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
306		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
307		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
308		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
309	}catch(e){
310		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
311	}
312	
313	
314	RecoverCard();
315}
316
317function TC_eUICC_ES10c_SetNickname_06()
318{
319	initial_condition_Start();
320	initial_condition_Install_PROFILE_OPERATIONAL1();
321	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
322	
323	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
324	
325	tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,更新其Nickname";
326	curDis.TraceStart(sno++,tracenamestr);
327	
328	curLogicChannel = 0;
329	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
330	Ini_powerOn_eUICC_LPAe_not_activate();
331	
332	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
333	TS_MANAGE_CHANNEL_OPEN();
334	
335	curLogicChannel = 1;
336	
337	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
338	TS_SELECT("Select ISD",ISD_R_AID,"9000");
339	
340	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
341	var setNicknameRequest = new SetNicknameRequest();
342	setNicknameRequest.iccid = ICCID_OP_PROF1;
343	setNicknameRequest.profileNickname = NICKNAME2;
344	setNicknameRequest.GenHexData();
345	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
346	
347	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
348	
349	
350	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
351	var proInfoListRequest = new ProfileInfoListRequest();
352	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
353	proInfoListRequest.GenHexData();
354	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
355	
356	var proInfoListResponse = new  ProfileInfoListResponse();
357	proInfoListResponse.checkCardResDataFormat(respData);
358	
359	try
360	{
361		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
362		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
363		
364		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
365		
366		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
367		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
368		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
369		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
370		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
371		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
372		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
373		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
374		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
375	}catch(e){
376		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
377	}
378	
379	
380	RecoverCard();
381}
382
383function TC_eUICC_ES10c_SetNickname_07()
384{
385	initial_condition_Start();
386	initial_condition_Install_PROFILE_OPERATIONAL1();
387	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
388	
389	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
390	
391	tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,删除其Nickname";
392	curDis.TraceStart(sno++,tracenamestr);
393	
394	curLogicChannel = 0;
395	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
396	Ini_powerOn_eUICC_LPAe_not_activate();
397	
398	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
399	TS_MANAGE_CHANNEL_OPEN();
400	
401	curLogicChannel = 1;
402	
403	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
404	TS_SELECT("Select ISD",ISD_R_AID,"9000");
405	
406	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
407	var setNicknameRequest = new SetNicknameRequest();
408	setNicknameRequest.iccid = ICCID_OP_PROF1;
409	setNicknameRequest.profileNickname = "";
410	setNicknameRequest.GenHexData();
411	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
412	
413	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
414	
415	
416	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
417	var proInfoListRequest = new ProfileInfoListRequest();
418	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
419	proInfoListRequest.GenHexData();
420	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
421	
422	var proInfoListResponse = new  ProfileInfoListResponse();
423	proInfoListResponse.checkCardResDataFormat(respData);
424	
425	try
426	{
427		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
428		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
429		
430		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
431		
432		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
433		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
434		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
435		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
436		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
437		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
438		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
439		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
440		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
441	}catch(e){
442		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
443	}
444	
445	
446	RecoverCard();
447}
448
449function TC_eUICC_ES10c_SetNickname_08()
450{
451	initial_condition_Start();
452	initial_condition_Install_PROFILE_OPERATIONAL1();
453	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
454	
455	tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,删除Nickname";
456	curDis.TraceStart(sno++,tracenamestr);
457	
458	curLogicChannel = 0;
459	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
460	Ini_powerOn_eUICC_LPAe_not_activate();
461	
462	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
463	TS_MANAGE_CHANNEL_OPEN();
464	
465	curLogicChannel = 1;
466	
467	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
468	TS_SELECT("Select ISD",ISD_R_AID,"9000");
469	
470	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
471	var setNicknameRequest = new SetNicknameRequest();
472	setNicknameRequest.iccid = ICCID_OP_PROF1;
473	setNicknameRequest.profileNickname = "";
474	setNicknameRequest.GenHexData();
475	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
476	
477	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
478	
479	
480	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
481	var proInfoListRequest = new ProfileInfoListRequest();
482	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
483	proInfoListRequest.GenHexData();
484	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
485	
486	var proInfoListResponse = new  ProfileInfoListResponse();
487	proInfoListResponse.checkCardResDataFormat(respData);
488	
489	try
490	{
491		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
492		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
493		
494		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
495		
496		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
497		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
498		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
499		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
500		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
501		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
502		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
503		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
504		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
505	}catch(e){
506		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
507	}
508	
509	
510	RecoverCard();
511}
512
513function TC_eUICC_ES10c_SetNickname_09()
514{
515	initial_condition_Start();
516	initial_condition_Install_PROFILE_OPERATIONAL1();
517	
518	tracenamestr = "测试目的:确保方法ES10c.SetNickname在中返回错误在eUICC上不存在目标配置文件的情况下";
519	curDis.TraceStart(sno++,tracenamestr);
520	
521	curLogicChannel = 0;
522	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
523	Ini_powerOn_eUICC_LPAe_not_activate();
524	
525	curDis.TestStepStart2(stno++,"读卡器向卡片发送MANAGE_CHANNEL命令,打开辅助逻辑通道;");
526	TS_MANAGE_CHANNEL_OPEN();
527	
528	curLogicChannel = 1;
529	
530	curDis.TestStepStart2(stno++,"读卡器向卡片发送SELECT命令,选择ISD-R;");
531	TS_SELECT("Select ISD",ISD_R_AID,"9000");
532	
533	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME_ICCID_UNKNOWN");
534	var setNicknameRequest = new SetNicknameRequest();
535	setNicknameRequest.iccid = ICCID_UNKNOWN;
536	setNicknameRequest.profileNickname = NICKNAME2;
537	setNicknameRequest.GenHexData();
538	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
539	
540	curStrHandle.CheckData("BF2903800101", respData,"SetNickname Response");
541	
542	
543	RecoverCard();
544}
545
-cas 盲生成TC_eUICC_ES10c_SetNickname/Import/TC_eUICC_ES10c_SetNickname.js519 行 / 39795 字符 / gb18030入口函数 @L35
1// Author: 卡思Cas智能体
2// Date: 20261004-021957
3// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.SetNickname,Test Sequence #01-#09 (Nominal: Add/Update/Remove/Remove-non-existing × Disabled/Enabled;Error: ICCID not found),适用性 M。
4// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
5//   IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
6//   IC2-IC2-K2-C4 SW;S3-C1 SW;S3-C2 setNicknameResult ok;S4-C1 SW;S4-C2 profileNickname Nickname 2
7//   IC5-IC1-K1-C1 ATR_present;IC5-IC1-K2-C2 FCP_Template;IC5-IC1-K2-C4 SW;IC5-IC1-K3-C4 SW
8//   IC5-IC1-K4-C4 final SW;IC6-IC2-K1-C4 SW;IC6-IC2-K1-C3 CHANNEL_NUMBER extracted;IC6-IC2-K2-C4 SW
9//   S7-C1 SW;S7-C2 setNicknameResult ok;S8-C1 SW;S8-C2 profileNickname Nickname 2
10//   IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW
11//   IC9-IC1-K4-C4 final SW;IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted
12//   IC10-IC2-K2-C4 SW;S11-C1 SW;S11-C2 setNicknameResult ok;S12-C1 SW;S12-C2 profileNickname absent
13//   IC13-IC1-K1-C1 ATR_present;IC13-IC1-K2-C2 FCP_Template;IC13-IC1-K2-C4 SW;IC13-IC1-K3-C4 SW
14//   IC13-IC1-K4-C4 final SW;IC14-IC2-K1-C4 SW;IC14-IC2-K1-C3 CHANNEL_NUMBER extracted
15//   IC14-IC2-K2-C4 SW;S15-C1 SW;S15-C2 setNicknameResult ok;S16-C1 SW;S16-C2 profileNickname absent
16//   IC17-IC1-K1-C1 ATR_present;IC17-IC1-K2-C2 FCP_Template;IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW
17//   IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW;IC18-IC2-K1-C3 CHANNEL_NUMBER extracted
18//   IC18-IC2-K2-C4 SW;S19-C1 SW;S19-C2 setNicknameResult ok;S20-C1 SW
19//   S20-C2 profileNickname Nickname 2;IC21-IC1-K1-C1 ATR_present;IC21-IC1-K2-C2 FCP_Template
20//   IC21-IC1-K2-C4 SW;IC21-IC1-K3-C4 SW;IC21-IC1-K4-C4 final SW;IC22-IC2-K1-C4 SW
21//   IC22-IC2-K1-C3 CHANNEL_NUMBER extracted;IC22-IC2-K2-C4 SW;S23-C1 SW;S23-C2 setNicknameResult ok
22//   S24-C1 SW;S24-C2 profileNickname Nickname 2;IC25-IC1-K1-C1 ATR_present
23//   IC25-IC1-K2-C2 FCP_Template;IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW
24//   IC26-IC2-K1-C4 SW;IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S27-C1 SW
25//   S27-C2 setNicknameResult ok;S28-C1 SW;S28-C2 profileNickname absent;IC29-IC1-K1-C1 ATR_present
26//   IC29-IC1-K2-C2 FCP_Template;IC29-IC1-K2-C4 SW;IC29-IC1-K3-C4 SW;IC29-IC1-K4-C4 final SW
27//   IC30-IC2-K1-C4 SW;IC30-IC2-K1-C3 CHANNEL_NUMBER extracted;IC30-IC2-K2-C4 SW;S31-C1 SW
28//   S31-C2 setNicknameResult ok;S32-C1 SW;S32-C2 profileNickname absent;IC33-IC1-K1-C1 ATR_present
29//   IC33-IC1-K2-C2 FCP_Template;IC33-IC1-K2-C4 SW;IC33-IC1-K3-C4 SW;IC33-IC1-K4-C4 final SW
30//   IC34-IC2-K1-C4 SW;IC34-IC2-K1-C3 CHANNEL_NUMBER extracted;IC34-IC2-K2-C4 SW;S35-C1 SW
31//   S35-C2 setNicknameResult iccidNotFound
32// 本函数由 CaseIR 4.2.26.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA5,SGP.23 v1.16 × SGP.22 v2.7):字节权威=CaseIR,非誊录黄金脚本。
33// Value-free template: every data byte is injected from CaseIR fields; no scaffold globals (see docs/speconly/compile-symbol-migration.md).
34// 适用性 M:编译期门,运行时由 harness 环境前置承担。
35function TC_eUICC_ES10c_SetNickname_01_09_merged() {
36    var bind = curBind;
37    // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已装载到 eUICC: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
38    // S1/S4-IC PROF1 Disabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
39    // S2/S3-IC PROF1 Disabled;Nickname = #NICKNAME1(Nickname 1,F_annexA_constants): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
40    // S5/S8-IC PROF1 Enabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
41    // S9-IC PROF1 Disabled;#ICCID_UNKNOWN(0x98 92 01 0A 21 43 65 87 09 F8,F_annexA_constants)标识的 Profile 不存在: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
42
43    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
44    var s36 = bind.resetAndAtr();
45    bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s36.atr_hex !== "" ? "1" : "0");
46
47    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
48    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
49    var s37 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
50    bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s37.resp.length > 0 ? "1" : "0");
51    bind.checkData("IC1-IC1-K2-C4 SW", "9000", s37.sw);
52
53    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
54    var s38 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
55    bind.checkData("IC1-IC1-K3-C4 SW", "9000", s38.sw);
56
57    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
58    var steady39 = bind.runToSteadyState(function () {
59        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
60    });
61    bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady39.final.sw);
62
63    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
64    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
65    var s40 = bind.manageChannelOpen("9000");
66    bind.checkData("IC2-IC2-K1-C4 SW", "9000", s40.sw);
67    bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s40.chan !== null ? "1" : "0");
68
69    // IC ref inline @E 步骤 2(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
70    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
71    var s41 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
72    // 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.
73    bind.checkData("IC2-IC2-K2-C4 SW", "9000", s41.sw);
74
75    // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
76    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
77    var sdCla3 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
78    var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
79    bind.checkData("S3-C1 SW", "9000", s3.sw);
80    var r2w3 = BindGecaProc.parseGecaResponse(s3.resp, {outer: "BF29", required: ["80"]});
81    bind.checkData("S3-C2 setNicknameResult ok", "00", (r2w3.ok && r2w3.fields["80"] === "00") ? "00" : (r2w3.fields["80"] || "absent"));
82
83    // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
84    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
85    var sdCla4 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
86    var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
87    bind.checkData("S4-C1 SW", "9000", s4.sw);
88    // Inline ASCII->hex helper (UTF8String expected values; values enter as
89    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
90    function __asciiHex(text) {
91        var out = "";
92        for (var i = 0; i < text.length; i++) {
93            var c = text.charCodeAt(i).toString(16).toUpperCase();
94            out += (c.length === 1 ? "0" + c : c);
95        }
96        return out;
97    }
98    var r2p4 = BindEs10xProcProfile.walkChoiceList(s4.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
99    var r2e4 = (r2p4.elements.length === 1) ? r2p4.elements[0].fields : null;
100    var r2v4 = __asciiHex("Nickname 2");
101    bind.checkData("S4-C2 profileNickname Nickname 2", r2v4, r2e4 === null ? "absent" : (r2e4["90"] === undefined ? "absent" : r2e4["90"]));
102
103    // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
104    var s42 = bind.resetAndAtr();
105    bind.checkData("IC5-IC1-K1-C1 ATR_present", "1", s42.atr_hex !== "" ? "1" : "0");
106
107    // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
108    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
109    var s43 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
110    bind.checkData("IC5-IC1-K2-C2 FCP_Template", "1", s43.resp.length > 0 ? "1" : "0");
111    bind.checkData("IC5-IC1-K2-C4 SW", "9000", s43.sw);
112
113    // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
114    var s44 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
115    bind.checkData("IC5-IC1-K3-C4 SW", "9000", s44.sw);
116
117    // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
118    var steady45 = bind.runToSteadyState(function () {
119        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
120    });
121    bind.checkData("IC5-IC1-K4-C4 final SW", "9000", steady45.final.sw);
122
123    // IC ref inline @E 步骤 6(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
124    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
125    var s46 = bind.manageChannelOpen("9000");
126    bind.checkData("IC6-IC2-K1-C4 SW", "9000", s46.sw);
127    bind.checkData("IC6-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s46.chan !== null ? "1" : "0");
128
129    // IC ref inline @E 步骤 6(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
130    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
131    var s47 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
132    // 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.
133    bind.checkData("IC6-IC2-K2-C4 SW", "9000", s47.sw);
134
135    // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
136    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
137    var sdCla7 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
138    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
139    bind.checkData("S7-C1 SW", "9000", s7.sw);
140    var r2w7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF29", required: ["80"]});
141    bind.checkData("S7-C2 setNicknameResult ok", "00", (r2w7.ok && r2w7.fields["80"] === "00") ? "00" : (r2w7.fields["80"] || "absent"));
142
143    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
144    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
145    var sdCla8 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
146    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
147    bind.checkData("S8-C1 SW", "9000", s8.sw);
148    // Inline ASCII->hex helper (UTF8String expected values; values enter as
149    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
150    function __asciiHex(text) {
151        var out = "";
152        for (var i = 0; i < text.length; i++) {
153            var c = text.charCodeAt(i).toString(16).toUpperCase();
154            out += (c.length === 1 ? "0" + c : c);
155        }
156        return out;
157    }
158    var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
159    var r2e8 = (r2p8.elements.length === 1) ? r2p8.elements[0].fields : null;
160    var r2v8 = __asciiHex("Nickname 2");
161    bind.checkData("S8-C2 profileNickname Nickname 2", r2v8, r2e8 === null ? "absent" : (r2e8["90"] === undefined ? "absent" : r2e8["90"]));
162
163    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
164    var s48 = bind.resetAndAtr();
165    bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s48.atr_hex !== "" ? "1" : "0");
166
167    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
168    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
169    var s49 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
170    bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s49.resp.length > 0 ? "1" : "0");
171    bind.checkData("IC9-IC1-K2-C4 SW", "9000", s49.sw);
172
173    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
174    var s50 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
175    bind.checkData("IC9-IC1-K3-C4 SW", "9000", s50.sw);
176
177    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
178    var steady51 = bind.runToSteadyState(function () {
179        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
180    });
181    bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady51.final.sw);
182
183    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
184    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
185    var s52 = bind.manageChannelOpen("9000");
186    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s52.sw);
187    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s52.chan !== null ? "1" : "0");
188
189    // IC ref inline @E 步骤 10(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
190    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
191    var s53 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
192    // 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.
193    bind.checkData("IC10-IC2-K2-C4 SW", "9000", s53.sw);
194
195    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
196    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
197    var sdCla11 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
198    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
199    bind.checkData("S11-C1 SW", "9000", s11.sw);
200    var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF29", required: ["80"]});
201    bind.checkData("S11-C2 setNicknameResult ok", "00", (r2w11.ok && r2w11.fields["80"] === "00") ? "00" : (r2w11.fields["80"] || "absent"));
202
203    // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
204    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
205    var sdCla12 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
206    var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
207    bind.checkData("S12-C1 SW", "9000", s12.sw);
208    var r2p12 = BindEs10xProcProfile.walkChoiceList(s12.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
209    var r2e12 = (r2p12.elements.length === 1) ? r2p12.elements[0].fields : null;
210    bind.checkData("S12-C2 profileNickname absent", "absent", r2e12 === null ? "no_element" : (r2e12["90"] === undefined ? "absent" : r2e12["90"]));
211
212    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
213    var s54 = bind.resetAndAtr();
214    bind.checkData("IC13-IC1-K1-C1 ATR_present", "1", s54.atr_hex !== "" ? "1" : "0");
215
216    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
217    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
218    var s55 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
219    bind.checkData("IC13-IC1-K2-C2 FCP_Template", "1", s55.resp.length > 0 ? "1" : "0");
220    bind.checkData("IC13-IC1-K2-C4 SW", "9000", s55.sw);
221
222    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
223    var s56 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
224    bind.checkData("IC13-IC1-K3-C4 SW", "9000", s56.sw);
225
226    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
227    var steady57 = bind.runToSteadyState(function () {
228        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
229    });
230    bind.checkData("IC13-IC1-K4-C4 final SW", "9000", steady57.final.sw);
231
232    // IC ref inline @E 步骤 14(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
233    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
234    var s58 = bind.manageChannelOpen("9000");
235    bind.checkData("IC14-IC2-K1-C4 SW", "9000", s58.sw);
236    bind.checkData("IC14-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s58.chan !== null ? "1" : "0");
237
238    // IC ref inline @E 步骤 14(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
239    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
240    var s59 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
241    // 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.
242    bind.checkData("IC14-IC2-K2-C4 SW", "9000", s59.sw);
243
244    // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
245    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
246    var sdCla15 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
247    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
248    bind.checkData("S15-C1 SW", "9000", s15.sw);
249    var r2w15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF29", required: ["80"]});
250    bind.checkData("S15-C2 setNicknameResult ok", "00", (r2w15.ok && r2w15.fields["80"] === "00") ? "00" : (r2w15.fields["80"] || "absent"));
251
252    // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
253    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
254    var sdCla16 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
255    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
256    bind.checkData("S16-C1 SW", "9000", s16.sw);
257    var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
258    var r2e16 = (r2p16.elements.length === 1) ? r2p16.elements[0].fields : null;
259    bind.checkData("S16-C2 profileNickname absent", "absent", r2e16 === null ? "no_element" : (r2e16["90"] === undefined ? "absent" : r2e16["90"]));
260
261    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
262    var s60 = bind.resetAndAtr();
263    bind.checkData("IC17-IC1-K1-C1 ATR_present", "1", s60.atr_hex !== "" ? "1" : "0");
264
265    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
266    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
267    var s61 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
268    bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s61.resp.length > 0 ? "1" : "0");
269    bind.checkData("IC17-IC1-K2-C4 SW", "9000", s61.sw);
270
271    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
272    var s62 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
273    bind.checkData("IC17-IC1-K3-C4 SW", "9000", s62.sw);
274
275    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
276    var steady63 = bind.runToSteadyState(function () {
277        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
278    });
279    bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady63.final.sw);
280
281    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
282    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
283    var s64 = bind.manageChannelOpen("9000");
284    bind.checkData("IC18-IC2-K1-C4 SW", "9000", s64.sw);
285    bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s64.chan !== null ? "1" : "0");
286
287    // IC ref inline @E 步骤 18(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
288    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
289    var s65 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
290    // 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.
291    bind.checkData("IC18-IC2-K2-C4 SW", "9000", s65.sw);
292
293    // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
294    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
295    var sdCla19 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
296    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
297    bind.checkData("S19-C1 SW", "9000", s19.sw);
298    var r2w19 = BindGecaProc.parseGecaResponse(s19.resp, {outer: "BF29", required: ["80"]});
299    bind.checkData("S19-C2 setNicknameResult ok", "00", (r2w19.ok && r2w19.fields["80"] === "00") ? "00" : (r2w19.fields["80"] || "absent"));
300
301    // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
302    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
303    var sdCla20 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
304    var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
305    bind.checkData("S20-C1 SW", "9000", s20.sw);
306    // Inline ASCII->hex helper (UTF8String expected values; values enter as
307    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
308    function __asciiHex(text) {
309        var out = "";
310        for (var i = 0; i < text.length; i++) {
311            var c = text.charCodeAt(i).toString(16).toUpperCase();
312            out += (c.length === 1 ? "0" + c : c);
313        }
314        return out;
315    }
316    var r2p20 = BindEs10xProcProfile.walkChoiceList(s20.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
317    var r2e20 = (r2p20.elements.length === 1) ? r2p20.elements[0].fields : null;
318    var r2v20 = __asciiHex("Nickname 2");
319    bind.checkData("S20-C2 profileNickname Nickname 2", r2v20, r2e20 === null ? "absent" : (r2e20["90"] === undefined ? "absent" : r2e20["90"]));
320
321    // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
322    var s66 = bind.resetAndAtr();
323    bind.checkData("IC21-IC1-K1-C1 ATR_present", "1", s66.atr_hex !== "" ? "1" : "0");
324
325    // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
326    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
327    var s67 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
328    bind.checkData("IC21-IC1-K2-C2 FCP_Template", "1", s67.resp.length > 0 ? "1" : "0");
329    bind.checkData("IC21-IC1-K2-C4 SW", "9000", s67.sw);
330
331    // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
332    var s68 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
333    bind.checkData("IC21-IC1-K3-C4 SW", "9000", s68.sw);
334
335    // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
336    var steady69 = bind.runToSteadyState(function () {
337        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
338    });
339    bind.checkData("IC21-IC1-K4-C4 final SW", "9000", steady69.final.sw);
340
341    // IC ref inline @E 步骤 22(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
342    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
343    var s70 = bind.manageChannelOpen("9000");
344    bind.checkData("IC22-IC2-K1-C4 SW", "9000", s70.sw);
345    bind.checkData("IC22-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s70.chan !== null ? "1" : "0");
346
347    // IC ref inline @E 步骤 22(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
348    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
349    var s71 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
350    // 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.
351    bind.checkData("IC22-IC2-K2-C4 SW", "9000", s71.sw);
352
353    // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
354    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
355    var sdCla23 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
356    var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
357    bind.checkData("S23-C1 SW", "9000", s23.sw);
358    var r2w23 = BindGecaProc.parseGecaResponse(s23.resp, {outer: "BF29", required: ["80"]});
359    bind.checkData("S23-C2 setNicknameResult ok", "00", (r2w23.ok && r2w23.fields["80"] === "00") ? "00" : (r2w23.fields["80"] || "absent"));
360
361    // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
362    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
363    var sdCla24 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
364    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
365    bind.checkData("S24-C1 SW", "9000", s24.sw);
366    // Inline ASCII->hex helper (UTF8String expected values; values enter as
367    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
368    function __asciiHex(text) {
369        var out = "";
370        for (var i = 0; i < text.length; i++) {
371            var c = text.charCodeAt(i).toString(16).toUpperCase();
372            out += (c.length === 1 ? "0" + c : c);
373        }
374        return out;
375    }
376    var r2p24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
377    var r2e24 = (r2p24.elements.length === 1) ? r2p24.elements[0].fields : null;
378    var r2v24 = __asciiHex("Nickname 2");
379    bind.checkData("S24-C2 profileNickname Nickname 2", r2v24, r2e24 === null ? "absent" : (r2e24["90"] === undefined ? "absent" : r2e24["90"]));
380
381    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
382    var s72 = bind.resetAndAtr();
383    bind.checkData("IC25-IC1-K1-C1 ATR_present", "1", s72.atr_hex !== "" ? "1" : "0");
384
385    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
386    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
387    var s73 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
388    bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s73.resp.length > 0 ? "1" : "0");
389    bind.checkData("IC25-IC1-K2-C4 SW", "9000", s73.sw);
390
391    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
392    var s74 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
393    bind.checkData("IC25-IC1-K3-C4 SW", "9000", s74.sw);
394
395    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
396    var steady75 = bind.runToSteadyState(function () {
397        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
398    });
399    bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady75.final.sw);
400
401    // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
402    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
403    var s76 = bind.manageChannelOpen("9000");
404    bind.checkData("IC26-IC2-K1-C4 SW", "9000", s76.sw);
405    bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s76.chan !== null ? "1" : "0");
406
407    // IC ref inline @E 步骤 26(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
408    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
409    var s77 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
410    // 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.
411    bind.checkData("IC26-IC2-K2-C4 SW", "9000", s77.sw);
412
413    // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
414    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
415    var sdCla27 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
416    var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
417    bind.checkData("S27-C1 SW", "9000", s27.sw);
418    var r2w27 = BindGecaProc.parseGecaResponse(s27.resp, {outer: "BF29", required: ["80"]});
419    bind.checkData("S27-C2 setNicknameResult ok", "00", (r2w27.ok && r2w27.fields["80"] === "00") ? "00" : (r2w27.fields["80"] || "absent"));
420
421    // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
422    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
423    var sdCla28 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
424    var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
425    bind.checkData("S28-C1 SW", "9000", s28.sw);
426    var r2p28 = BindEs10xProcProfile.walkChoiceList(s28.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
427    var r2e28 = (r2p28.elements.length === 1) ? r2p28.elements[0].fields : null;
428    bind.checkData("S28-C2 profileNickname absent", "absent", r2e28 === null ? "no_element" : (r2e28["90"] === undefined ? "absent" : r2e28["90"]));
429
430    // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
431    var s78 = bind.resetAndAtr();
432    bind.checkData("IC29-IC1-K1-C1 ATR_present", "1", s78.atr_hex !== "" ? "1" : "0");
433
434    // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
435    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
436    var s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
437    bind.checkData("IC29-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
438    bind.checkData("IC29-IC1-K2-C4 SW", "9000", s79.sw);
439
440    // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
441    var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
442    bind.checkData("IC29-IC1-K3-C4 SW", "9000", s80.sw);
443
444    // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
445    var steady81 = bind.runToSteadyState(function () {
446        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
447    });
448    bind.checkData("IC29-IC1-K4-C4 final SW", "9000", steady81.final.sw);
449
450    // IC ref inline @E 步骤 30(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
451    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
452    var s82 = bind.manageChannelOpen("9000");
453    bind.checkData("IC30-IC2-K1-C4 SW", "9000", s82.sw);
454    bind.checkData("IC30-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
455
456    // IC ref inline @E 步骤 30(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
457    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
458    var s83 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
459    // 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.
460    bind.checkData("IC30-IC2-K2-C4 SW", "9000", s83.sw);
461
462    // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
463    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
464    var sdCla31 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
465    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
466    bind.checkData("S31-C1 SW", "9000", s31.sw);
467    var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF29", required: ["80"]});
468    bind.checkData("S31-C2 setNicknameResult ok", "00", (r2w31.ok && r2w31.fields["80"] === "00") ? "00" : (r2w31.fields["80"] || "absent"));
469
470    // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
471    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
472    var sdCla32 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
473    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
474    bind.checkData("S32-C1 SW", "9000", s32.sw);
475    var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
476    var r2e32 = (r2p32.elements.length === 1) ? r2p32.elements[0].fields : null;
477    bind.checkData("S32-C2 profileNickname absent", "absent", r2e32 === null ? "no_element" : (r2e32["90"] === undefined ? "absent" : r2e32["90"]));
478
479    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
480    var s84 = bind.resetAndAtr();
481    bind.checkData("IC33-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
482
483    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 2):SELECT_MF(K 语料机械展开)
484    // FCP outer tag not materialized from clause: tag-face asserted only when corpus fixes the tag byte (e.g. TS 102 221 FCP '62').
485    var s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
486    bind.checkData("IC33-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
487    bind.checkData("IC33-IC1-K2-C4 SW", "9000", s85.sw);
488
489    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
490    var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
491    bind.checkData("IC33-IC1-K3-C4 SW", "9000", s86.sw);
492
493    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
494    var steady87 = bind.runToSteadyState(function () {
495        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
496    });
497    bind.checkData("IC33-IC1-K4-C4 final SW", "9000", steady87.final.sw);
498
499    // IC ref inline @E 步骤 34(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 1):MANAGE_CHANNEL_OPEN(K 语料机械展开)
500    // CHANNEL_NUMBER extraction and dynamic CLA rebinding are CasBind internal state (chaining rule; no generated-code re-implementation).
501    var s88 = bind.manageChannelOpen("9000");
502    bind.checkData("IC34-IC2-K1-C4 SW", "9000", s88.sw);
503    bind.checkData("IC34-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
504
505    // IC ref inline @E 步骤 34(IC2 → PROC_OPEN_LOGICAL_CHANNEL_AND_SELECT_ISDR, K row 2):MTD_SELECT(K 语料机械展开)
506    // CLA = bound channel (cla_rule) and <L> length binding are CasBind internal state (chaining rule; no generated-code re-implementation).
507    var s89 = bind.sendApdu(null, "A4", "04", "00", "A0000005591010FFFFFFFF8900000100", null, "9000");
508    // 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.
509    bind.checkData("IC34-IC2-K2-C4 SW", "9000", s89.sw);
510
511    // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ57_173, RQ57_178)
512    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
513    var sdCla35 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
514    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF29185A0A9892010A2143658709F8900A4E69636B6E616D652032", "00", "9000");
515    bind.checkData("S35-C1 SW", "9000", s35.sw);
516    var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF29", required: ["80"]});
517    bind.checkData("S35-C2 setNicknameResult iccidNotFound", "01", (r2w35.ok && r2w35.fields["80"] === "01") ? "01" : (r2w35.fields["80"] || "absent"));
518}
519

完整 unified diff

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

展开 diff(1065 行)
--- -man
+++ -cas
@@ -1,545 +1,519 @@
-// slice of Import\TestCase_SGP_23.js - cases: TC_eUICC_ES10c_SetNickname_01 + TC_eUICC_ES10c_SetNickname_02 + TC_eUICC_ES10c_SetNickname_03 + TC_eUICC_ES10c_SetNickname_04 + TC_eUICC_ES10c_SetNickname_05 + TC_eUICC_ES10c_SetNickname_06 + TC_eUICC_ES10c_SetNickname_07 + TC_eUICC_ES10c_SetNickname_08 + TC_eUICC_ES10c_SetNickname_09 (extracted verbatim)
-
-function TC_eUICC_ES10c_SetNickname_01()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,添加Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = NICKNAME2;
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_02()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-	
-	tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,更新其Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = NICKNAME2;
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_03()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-	
-	tracenamestr = "测试目的:Operational Profile(未激活)有Nickname,删除其Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = "";
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_04()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	tracenamestr = "测试目的:Operational Profile(未激活)没有Nickname,删除Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = "";
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.disabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_05()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-	
-	tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,添加Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = NICKNAME2;
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_06()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-	
-	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-	
-	tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,更新其Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = NICKNAME2;
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData(NICKNAME2, profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_07()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-	
-	initial_condition_set_Profile_Nickname("The Nickname of the PROFILE_OPERATIONAL1 is equal to #NICKNAME1", ICCID_OP_PROF1, NICKNAME1)
-	
-	tracenamestr = "测试目的:Operational Profile(已激活)有Nickname,删除其Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = "";
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_08()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	initial_condition_Enable_Profile("Enable Profile1", ICCID_OP_PROF1)
-	
-	tracenamestr = "测试目的:Operational Profile(已激活)没有Nickname,删除Nickname";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,Remove NICKNAME");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_OP_PROF1;
-	setNicknameRequest.profileNickname = "";
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	
-	curStrHandle.CheckData("BF2903800100", respData,"SetNickname Response");
-	
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,GET_PROFILE_INFO,检查Profile1的Nickname");
-	var proInfoListRequest = new ProfileInfoListRequest();
-	proInfoListRequest.searchCriteria = new ChoiceObj(tagOfsearchCriteria_ProfileInfo.iccid,ICCID_OP_PROF1);
-	proInfoListRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(proInfoListRequest.hexData);
-	
-	var proInfoListResponse = new  ProfileInfoListResponse();
-	proInfoListResponse.checkCardResDataFormat(respData);
-	
-	try
-	{
-		var num = proInfoListResponse.profileInfoListOk.arrOfElement.length;
-		curStrHandle.CheckData("1", num.toString(), "ProfileInfo Num");
-		
-		var profileInfoObj = proInfoListResponse.profileInfoListOk.arrOfElement[0];
-		
-		curStrHandle.CheckData(ICCID_OP_PROF1, profileInfoObj.iccid, "iccid");
-		curStrHandle.CheckData(ISD_P_AID1, profileInfoObj.isdpAid, "isdpAid");
-		curStrHandle.CheckData(ProfileState.enabled, profileInfoObj.profileState, "profileState");
-		curStrHandle.CheckData("不存在", profileInfoObj.profileNickname, "profileNickname");
-		curStrHandle.CheckData(SP_NAME1, profileInfoObj.serviceProviderName, "serviceProviderName");
-		curStrHandle.CheckData(NAME_OP_PROF1, profileInfoObj.profileName, "profileName");
-		curStrHandle.CheckData(IconType.png, profileInfoObj.iconType, "iconType");
-		curStrHandle.CheckData(ICON_OP_PROF1, profileInfoObj.icon, "icon");
-		curStrHandle.CheckData(ProfileClass.operational, profileInfoObj.profileClass, "profileClass");
-	}catch(e){
-		obj.SubLevel(ProfileInfoListResponse_Data_Error, level_of_SubLevel.error);
-	}
-	
-	
-	RecoverCard();
-}
-
-function TC_eUICC_ES10c_SetNickname_09()
-{
-	initial_condition_Start();
-	initial_condition_Install_PROFILE_OPERATIONAL1();
-	
-	tracenamestr = "测试目的:确保方法ES10c.SetNickname在中返回错误在eUICC上不存在目标配置文件的情况下";
-	curDis.TraceStart(sno++,tracenamestr);
-	
-	curLogicChannel = 0;
-	curDis.TestStepStart2(stno++,"eUICC卡片初始化;");
-	Ini_powerOn_eUICC_LPAe_not_activate();
-	
-	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");
-	
-	curDis.TestStepStart2(stno++,"读卡器向卡片发送 StoreData命令,SET_NICKNAME_ICCID_UNKNOWN");
-	var setNicknameRequest = new SetNicknameRequest();
-	setNicknameRequest.iccid = ICCID_UNKNOWN;
-	setNicknameRequest.profileNickname = NICKNAME2;
-	setNicknameRequest.GenHexData();
-	var respData = LPAd_Transport_data_to_eUICC(setNicknameRequest.hexData);
-	
-	curStrHandle.CheckData("BF2903800101", respData,"SetNickname Response");
-	
-	
-	RecoverCard();
+// Author: 卡思Cas智能体
+// Date: 20261004-021957
+// Function: (purpose 原文未由 SGP.23 该 TC 提供,corpus vacuum 登记)TC_eUICC_ES10c.SetNickname,Test Sequence #01-#09 (Nominal: Add/Update/Remove/Remove-non-existing × Disabled/Enabled;Error: ICCID not found),适用性 M。
+// Test points: IC1-IC1-K1-C1 ATR_present;IC1-IC1-K2-C2 FCP_Template;IC1-IC1-K2-C4 SW
+//   IC1-IC1-K3-C4 SW;IC1-IC1-K4-C4 final SW;IC2-IC2-K1-C4 SW;IC2-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC2-IC2-K2-C4 SW;S3-C1 SW;S3-C2 setNicknameResult ok;S4-C1 SW;S4-C2 profileNickname Nickname 2
+//   IC5-IC1-K1-C1 ATR_present;IC5-IC1-K2-C2 FCP_Template;IC5-IC1-K2-C4 SW;IC5-IC1-K3-C4 SW
+//   IC5-IC1-K4-C4 final SW;IC6-IC2-K1-C4 SW;IC6-IC2-K1-C3 CHANNEL_NUMBER extracted;IC6-IC2-K2-C4 SW
+//   S7-C1 SW;S7-C2 setNicknameResult ok;S8-C1 SW;S8-C2 profileNickname Nickname 2
+//   IC9-IC1-K1-C1 ATR_present;IC9-IC1-K2-C2 FCP_Template;IC9-IC1-K2-C4 SW;IC9-IC1-K3-C4 SW
+//   IC9-IC1-K4-C4 final SW;IC10-IC2-K1-C4 SW;IC10-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC10-IC2-K2-C4 SW;S11-C1 SW;S11-C2 setNicknameResult ok;S12-C1 SW;S12-C2 profileNickname absent
+//   IC13-IC1-K1-C1 ATR_present;IC13-IC1-K2-C2 FCP_Template;IC13-IC1-K2-C4 SW;IC13-IC1-K3-C4 SW
+//   IC13-IC1-K4-C4 final SW;IC14-IC2-K1-C4 SW;IC14-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC14-IC2-K2-C4 SW;S15-C1 SW;S15-C2 setNicknameResult ok;S16-C1 SW;S16-C2 profileNickname absent
+//   IC17-IC1-K1-C1 ATR_present;IC17-IC1-K2-C2 FCP_Template;IC17-IC1-K2-C4 SW;IC17-IC1-K3-C4 SW
+//   IC17-IC1-K4-C4 final SW;IC18-IC2-K1-C4 SW;IC18-IC2-K1-C3 CHANNEL_NUMBER extracted
+//   IC18-IC2-K2-C4 SW;S19-C1 SW;S19-C2 setNicknameResult ok;S20-C1 SW
+//   S20-C2 profileNickname Nickname 2;IC21-IC1-K1-C1 ATR_present;IC21-IC1-K2-C2 FCP_Template
+//   IC21-IC1-K2-C4 SW;IC21-IC1-K3-C4 SW;IC21-IC1-K4-C4 final SW;IC22-IC2-K1-C4 SW
+//   IC22-IC2-K1-C3 CHANNEL_NUMBER extracted;IC22-IC2-K2-C4 SW;S23-C1 SW;S23-C2 setNicknameResult ok
+//   S24-C1 SW;S24-C2 profileNickname Nickname 2;IC25-IC1-K1-C1 ATR_present
+//   IC25-IC1-K2-C2 FCP_Template;IC25-IC1-K2-C4 SW;IC25-IC1-K3-C4 SW;IC25-IC1-K4-C4 final SW
+//   IC26-IC2-K1-C4 SW;IC26-IC2-K1-C3 CHANNEL_NUMBER extracted;IC26-IC2-K2-C4 SW;S27-C1 SW
+//   S27-C2 setNicknameResult ok;S28-C1 SW;S28-C2 profileNickname absent;IC29-IC1-K1-C1 ATR_present
+//   IC29-IC1-K2-C2 FCP_Template;IC29-IC1-K2-C4 SW;IC29-IC1-K3-C4 SW;IC29-IC1-K4-C4 final SW
+//   IC30-IC2-K1-C4 SW;IC30-IC2-K1-C3 CHANNEL_NUMBER extracted;IC30-IC2-K2-C4 SW;S31-C1 SW
+//   S31-C2 setNicknameResult ok;S32-C1 SW;S32-C2 profileNickname absent;IC33-IC1-K1-C1 ATR_present
+//   IC33-IC1-K2-C2 FCP_Template;IC33-IC1-K2-C4 SW;IC33-IC1-K3-C4 SW;IC33-IC1-K4-C4 final SW
+//   IC34-IC2-K1-C4 SW;IC34-IC2-K1-C3 CHANNEL_NUMBER extracted;IC34-IC2-K2-C4 SW;S35-C1 SW
+//   S35-C2 setNicknameResult iccidNotFound
+// 本函数由 CaseIR 4.2.26.2.1 编译生成(fullwave-blindgen-live-70-W1-laneA5,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_ES10c_SetNickname_01_09_merged() {
+    var bind = curBind;
+    // GIC-1 卡态编排:PROFILE_OPERATIONAL1 已装载到 eUICC: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S1/S4-IC PROF1 Disabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S2/S3-IC PROF1 Disabled;Nickname = #NICKNAME1(Nickname 1,F_annexA_constants): declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S5/S8-IC PROF1 Enabled;Nickname 为空: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+    // S9-IC PROF1 Disabled;#ICCID_UNKNOWN(0x98 92 01 0A 21 43 65 87 09 F8,F_annexA_constants)标识的 Profile 不存在: declared unexpanded (non-PROC row or K corpus vacuum; see CaseIR open_items).
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s36 = bind.resetAndAtr();
+    bind.checkData("IC1-IC1-K1-C1 ATR_present", "1", s36.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 1(IC1 → 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 s37 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC1-IC1-K2-C2 FCP_Template", "1", s37.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC1-IC1-K2-C4 SW", "9000", s37.sw);
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s38 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC1-IC1-K3-C4 SW", "9000", s38.sw);
+
+    // IC ref inline @E 步骤 1(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady39 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC1-IC1-K4-C4 final SW", "9000", steady39.final.sw);
+
+    // IC ref inline @E 步骤 2(IC2 → 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 s40 = bind.manageChannelOpen("9000");
+    bind.checkData("IC2-IC2-K1-C4 SW", "9000", s40.sw);
+    bind.checkData("IC2-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s40.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 2(IC2 → 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 s41 = 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("IC2-IC2-K2-C4 SW", "9000", s41.sw);
+
+    // 步骤 3:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla3 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
+    var s3 = bind.sendApdu(sdCla3, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+    bind.checkData("S3-C1 SW", "9000", s3.sw);
+    var r2w3 = BindGecaProc.parseGecaResponse(s3.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S3-C2 setNicknameResult ok", "00", (r2w3.ok && r2w3.fields["80"] === "00") ? "00" : (r2w3.fields["80"] || "absent"));
+
+    // 步骤 4:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla4 = s40.chan !== null ? (s40.chan <= 3 ? 128 + s40.chan : 188 + s40.chan).toString(16).toUpperCase() : null;
+    var s4 = bind.sendApdu(sdCla4, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S4-C1 SW", "9000", s4.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2p4 = BindEs10xProcProfile.walkChoiceList(s4.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e4 = (r2p4.elements.length === 1) ? r2p4.elements[0].fields : null;
+    var r2v4 = __asciiHex("Nickname 2");
+    bind.checkData("S4-C2 profileNickname Nickname 2", r2v4, r2e4 === null ? "absent" : (r2e4["90"] === undefined ? "absent" : r2e4["90"]));
+
+    // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s42 = bind.resetAndAtr();
+    bind.checkData("IC5-IC1-K1-C1 ATR_present", "1", s42.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 5(IC1 → 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 s43 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC5-IC1-K2-C2 FCP_Template", "1", s43.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC5-IC1-K2-C4 SW", "9000", s43.sw);
+
+    // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s44 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC5-IC1-K3-C4 SW", "9000", s44.sw);
+
+    // IC ref inline @E 步骤 5(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady45 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC5-IC1-K4-C4 final SW", "9000", steady45.final.sw);
+
+    // IC ref inline @E 步骤 6(IC2 → 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 s46 = bind.manageChannelOpen("9000");
+    bind.checkData("IC6-IC2-K1-C4 SW", "9000", s46.sw);
+    bind.checkData("IC6-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s46.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 6(IC2 → 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 s47 = 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("IC6-IC2-K2-C4 SW", "9000", s47.sw);
+
+    // 步骤 7:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla7 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
+    var s7 = bind.sendApdu(sdCla7, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+    bind.checkData("S7-C1 SW", "9000", s7.sw);
+    var r2w7 = BindGecaProc.parseGecaResponse(s7.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S7-C2 setNicknameResult ok", "00", (r2w7.ok && r2w7.fields["80"] === "00") ? "00" : (r2w7.fields["80"] || "absent"));
+
+    // 步骤 8:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla8 = s46.chan !== null ? (s46.chan <= 3 ? 128 + s46.chan : 188 + s46.chan).toString(16).toUpperCase() : null;
+    var s8 = bind.sendApdu(sdCla8, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S8-C1 SW", "9000", s8.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2p8 = BindEs10xProcProfile.walkChoiceList(s8.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e8 = (r2p8.elements.length === 1) ? r2p8.elements[0].fields : null;
+    var r2v8 = __asciiHex("Nickname 2");
+    bind.checkData("S8-C2 profileNickname Nickname 2", r2v8, r2e8 === null ? "absent" : (r2e8["90"] === undefined ? "absent" : r2e8["90"]));
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s48 = bind.resetAndAtr();
+    bind.checkData("IC9-IC1-K1-C1 ATR_present", "1", s48.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 9(IC1 → 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 s49 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC9-IC1-K2-C2 FCP_Template", "1", s49.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC9-IC1-K2-C4 SW", "9000", s49.sw);
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s50 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC9-IC1-K3-C4 SW", "9000", s50.sw);
+
+    // IC ref inline @E 步骤 9(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady51 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC9-IC1-K4-C4 final SW", "9000", steady51.final.sw);
+
+    // IC ref inline @E 步骤 10(IC2 → 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 s52 = bind.manageChannelOpen("9000");
+    bind.checkData("IC10-IC2-K1-C4 SW", "9000", s52.sw);
+    bind.checkData("IC10-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s52.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 10(IC2 → 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 s53 = 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("IC10-IC2-K2-C4 SW", "9000", s53.sw);
+
+    // 步骤 11:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla11 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s11 = bind.sendApdu(sdCla11, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+    bind.checkData("S11-C1 SW", "9000", s11.sw);
+    var r2w11 = BindGecaProc.parseGecaResponse(s11.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S11-C2 setNicknameResult ok", "00", (r2w11.ok && r2w11.fields["80"] === "00") ? "00" : (r2w11.fields["80"] || "absent"));
+
+    // 步骤 12:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla12 = s52.chan !== null ? (s52.chan <= 3 ? 128 + s52.chan : 188 + s52.chan).toString(16).toUpperCase() : null;
+    var s12 = bind.sendApdu(sdCla12, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S12-C1 SW", "9000", s12.sw);
+    var r2p12 = BindEs10xProcProfile.walkChoiceList(s12.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e12 = (r2p12.elements.length === 1) ? r2p12.elements[0].fields : null;
+    bind.checkData("S12-C2 profileNickname absent", "absent", r2e12 === null ? "no_element" : (r2e12["90"] === undefined ? "absent" : r2e12["90"]));
+
+    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s54 = bind.resetAndAtr();
+    bind.checkData("IC13-IC1-K1-C1 ATR_present", "1", s54.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 13(IC1 → 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 s55 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC13-IC1-K2-C2 FCP_Template", "1", s55.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC13-IC1-K2-C4 SW", "9000", s55.sw);
+
+    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s56 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC13-IC1-K3-C4 SW", "9000", s56.sw);
+
+    // IC ref inline @E 步骤 13(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady57 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC13-IC1-K4-C4 final SW", "9000", steady57.final.sw);
+
+    // IC ref inline @E 步骤 14(IC2 → 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 s58 = bind.manageChannelOpen("9000");
+    bind.checkData("IC14-IC2-K1-C4 SW", "9000", s58.sw);
+    bind.checkData("IC14-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s58.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 14(IC2 → 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 s59 = 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("IC14-IC2-K2-C4 SW", "9000", s59.sw);
+
+    // 步骤 15:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla15 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
+    var s15 = bind.sendApdu(sdCla15, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+    bind.checkData("S15-C1 SW", "9000", s15.sw);
+    var r2w15 = BindGecaProc.parseGecaResponse(s15.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S15-C2 setNicknameResult ok", "00", (r2w15.ok && r2w15.fields["80"] === "00") ? "00" : (r2w15.fields["80"] || "absent"));
+
+    // 步骤 16:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla16 = s58.chan !== null ? (s58.chan <= 3 ? 128 + s58.chan : 188 + s58.chan).toString(16).toUpperCase() : null;
+    var s16 = bind.sendApdu(sdCla16, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S16-C1 SW", "9000", s16.sw);
+    var r2p16 = BindEs10xProcProfile.walkChoiceList(s16.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e16 = (r2p16.elements.length === 1) ? r2p16.elements[0].fields : null;
+    bind.checkData("S16-C2 profileNickname absent", "absent", r2e16 === null ? "no_element" : (r2e16["90"] === undefined ? "absent" : r2e16["90"]));
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s60 = bind.resetAndAtr();
+    bind.checkData("IC17-IC1-K1-C1 ATR_present", "1", s60.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 17(IC1 → 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 s61 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC17-IC1-K2-C2 FCP_Template", "1", s61.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC17-IC1-K2-C4 SW", "9000", s61.sw);
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s62 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC17-IC1-K3-C4 SW", "9000", s62.sw);
+
+    // IC ref inline @E 步骤 17(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady63 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC17-IC1-K4-C4 final SW", "9000", steady63.final.sw);
+
+    // IC ref inline @E 步骤 18(IC2 → 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 s64 = bind.manageChannelOpen("9000");
+    bind.checkData("IC18-IC2-K1-C4 SW", "9000", s64.sw);
+    bind.checkData("IC18-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s64.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 18(IC2 → 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 s65 = 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("IC18-IC2-K2-C4 SW", "9000", s65.sw);
+
+    // 步骤 19:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla19 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
+    var s19 = bind.sendApdu(sdCla19, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+    bind.checkData("S19-C1 SW", "9000", s19.sw);
+    var r2w19 = BindGecaProc.parseGecaResponse(s19.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S19-C2 setNicknameResult ok", "00", (r2w19.ok && r2w19.fields["80"] === "00") ? "00" : (r2w19.fields["80"] || "absent"));
+
+    // 步骤 20:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla20 = s64.chan !== null ? (s64.chan <= 3 ? 128 + s64.chan : 188 + s64.chan).toString(16).toUpperCase() : null;
+    var s20 = bind.sendApdu(sdCla20, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S20-C1 SW", "9000", s20.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2p20 = BindEs10xProcProfile.walkChoiceList(s20.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e20 = (r2p20.elements.length === 1) ? r2p20.elements[0].fields : null;
+    var r2v20 = __asciiHex("Nickname 2");
+    bind.checkData("S20-C2 profileNickname Nickname 2", r2v20, r2e20 === null ? "absent" : (r2e20["90"] === undefined ? "absent" : r2e20["90"]));
+
+    // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s66 = bind.resetAndAtr();
+    bind.checkData("IC21-IC1-K1-C1 ATR_present", "1", s66.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 21(IC1 → 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 s67 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC21-IC1-K2-C2 FCP_Template", "1", s67.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC21-IC1-K2-C4 SW", "9000", s67.sw);
+
+    // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s68 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC21-IC1-K3-C4 SW", "9000", s68.sw);
+
+    // IC ref inline @E 步骤 21(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady69 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC21-IC1-K4-C4 final SW", "9000", steady69.final.sw);
+
+    // IC ref inline @E 步骤 22(IC2 → 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 s70 = bind.manageChannelOpen("9000");
+    bind.checkData("IC22-IC2-K1-C4 SW", "9000", s70.sw);
+    bind.checkData("IC22-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s70.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 22(IC2 → 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 s71 = 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("IC22-IC2-K2-C4 SW", "9000", s71.sw);
+
+    // 步骤 23:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla23 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
+    var s23 = bind.sendApdu(sdCla23, "E2", "91", "00", "BF29185A0A989209012143658709F5900A4E69636B6E616D652032", "00", "9000");
+    bind.checkData("S23-C1 SW", "9000", s23.sw);
+    var r2w23 = BindGecaProc.parseGecaResponse(s23.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S23-C2 setNicknameResult ok", "00", (r2w23.ok && r2w23.fields["80"] === "00") ? "00" : (r2w23.fields["80"] || "absent"));
+
+    // 步骤 24:MTD_STORE_DATA(tc_step;REQ: RQ57_174)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla24 = s70.chan !== null ? (s70.chan <= 3 ? 128 + s70.chan : 188 + s70.chan).toString(16).toUpperCase() : null;
+    var s24 = bind.sendApdu(sdCla24, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S24-C1 SW", "9000", s24.sw);
+    // Inline ASCII->hex helper (UTF8String expected values; values enter as
+    // ASCII literals traced to CaseIR check text / F_annexA_constants rows).
+    function __asciiHex(text) {
+        var out = "";
+        for (var i = 0; i < text.length; i++) {
+            var c = text.charCodeAt(i).toString(16).toUpperCase();
+            out += (c.length === 1 ? "0" + c : c);
+        }
+        return out;
+    }
+    var r2p24 = BindEs10xProcProfile.walkChoiceList(s24.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e24 = (r2p24.elements.length === 1) ? r2p24.elements[0].fields : null;
+    var r2v24 = __asciiHex("Nickname 2");
+    bind.checkData("S24-C2 profileNickname Nickname 2", r2v24, r2e24 === null ? "absent" : (r2e24["90"] === undefined ? "absent" : r2e24["90"]));
+
+    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s72 = bind.resetAndAtr();
+    bind.checkData("IC25-IC1-K1-C1 ATR_present", "1", s72.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 25(IC1 → 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 s73 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC25-IC1-K2-C2 FCP_Template", "1", s73.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC25-IC1-K2-C4 SW", "9000", s73.sw);
+
+    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s74 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC25-IC1-K3-C4 SW", "9000", s74.sw);
+
+    // IC ref inline @E 步骤 25(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady75 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC25-IC1-K4-C4 final SW", "9000", steady75.final.sw);
+
+    // IC ref inline @E 步骤 26(IC2 → 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 s76 = bind.manageChannelOpen("9000");
+    bind.checkData("IC26-IC2-K1-C4 SW", "9000", s76.sw);
+    bind.checkData("IC26-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s76.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 26(IC2 → 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 s77 = 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("IC26-IC2-K2-C4 SW", "9000", s77.sw);
+
+    // 步骤 27:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla27 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
+    var s27 = bind.sendApdu(sdCla27, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+    bind.checkData("S27-C1 SW", "9000", s27.sw);
+    var r2w27 = BindGecaProc.parseGecaResponse(s27.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S27-C2 setNicknameResult ok", "00", (r2w27.ok && r2w27.fields["80"] === "00") ? "00" : (r2w27.fields["80"] || "absent"));
+
+    // 步骤 28:MTD_STORE_DATA(tc_step;REQ: RQ57_175)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla28 = s76.chan !== null ? (s76.chan <= 3 ? 128 + s76.chan : 188 + s76.chan).toString(16).toUpperCase() : null;
+    var s28 = bind.sendApdu(sdCla28, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S28-C1 SW", "9000", s28.sw);
+    var r2p28 = BindEs10xProcProfile.walkChoiceList(s28.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e28 = (r2p28.elements.length === 1) ? r2p28.elements[0].fields : null;
+    bind.checkData("S28-C2 profileNickname absent", "absent", r2e28 === null ? "no_element" : (r2e28["90"] === undefined ? "absent" : r2e28["90"]));
+
+    // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s78 = bind.resetAndAtr();
+    bind.checkData("IC29-IC1-K1-C1 ATR_present", "1", s78.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 29(IC1 → 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 s79 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC29-IC1-K2-C2 FCP_Template", "1", s79.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC29-IC1-K2-C4 SW", "9000", s79.sw);
+
+    // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s80 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC29-IC1-K3-C4 SW", "9000", s80.sw);
+
+    // IC ref inline @E 步骤 29(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady81 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC29-IC1-K4-C4 final SW", "9000", steady81.final.sw);
+
+    // IC ref inline @E 步骤 30(IC2 → 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 s82 = bind.manageChannelOpen("9000");
+    bind.checkData("IC30-IC2-K1-C4 SW", "9000", s82.sw);
+    bind.checkData("IC30-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s82.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 30(IC2 → 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 s83 = 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("IC30-IC2-K2-C4 SW", "9000", s83.sw);
+
+    // 步骤 31:MTD_STORE_DATA(tc_step;REQ: RQ57_177, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla31 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+    var s31 = bind.sendApdu(sdCla31, "E2", "91", "00", "BF290E5A0A989209012143658709F59000", "00", "9000");
+    bind.checkData("S31-C1 SW", "9000", s31.sw);
+    var r2w31 = BindGecaProc.parseGecaResponse(s31.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S31-C2 setNicknameResult ok", "00", (r2w31.ok && r2w31.fields["80"] === "00") ? "00" : (r2w31.fields["80"] || "absent"));
+
+    // 步骤 32:MTD_STORE_DATA(tc_step;REQ: RQ57_176)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla32 = s82.chan !== null ? (s82.chan <= 3 ? 128 + s82.chan : 188 + s82.chan).toString(16).toUpperCase() : null;
+    var s32 = bind.sendApdu(sdCla32, "E2", "91", "00", "BF2D0EA00C5A0A989209012143658709F5", "00", "9000");
+    bind.checkData("S32-C1 SW", "9000", s32.sw);
+    var r2p32 = BindEs10xProcProfile.walkChoiceList(s32.resp, {respTag: "BF2D", okTag: "A0", errTag: "81"});
+    var r2e32 = (r2p32.elements.length === 1) ? r2p32.elements[0].fields : null;
+    bind.checkData("S32-C2 profileNickname absent", "absent", r2e32 === null ? "no_element" : (r2e32["90"] === undefined ? "absent" : r2e32["90"]));
+
+    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 1):RESET(K 语料机械展开)
+    var s84 = bind.resetAndAtr();
+    bind.checkData("IC33-IC1-K1-C1 ATR_present", "1", s84.atr_hex !== "" ? "1" : "0");
+
+    // IC ref inline @E 步骤 33(IC1 → 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 s85 = bind.sendApdu("00", "A4", "00", "04", "3F00", "00", "9000");
+    bind.checkData("IC33-IC1-K2-C2 FCP_Template", "1", s85.resp.length > 0 ? "1" : "0");
+    bind.checkData("IC33-IC1-K2-C4 SW", "9000", s85.sw);
+
+    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 3):TERMINAL_CAPABILITY_LPAd(K 语料机械展开)
+    var s86 = bind.sendApdu("80", "AA", "00", "00", "A9058100830107", null, "9000");
+    bind.checkData("IC33-IC1-K3-C4 SW", "9000", s86.sw);
+
+    // IC ref inline @E 步骤 33(IC1 → PROC_EUICC_INITIALIZATION_SEQUENCE, K row 4):TERMINAL_PROFILE(K 语料机械展开)
+    var steady87 = bind.runToSteadyState(function () {
+        return bind.sendTerminalProfile("FFFFFFFF7F9D00DFBF00001FE2000000C7EB0000000168005000000000000200", "9000");
+    });
+    bind.checkData("IC33-IC1-K4-C4 final SW", "9000", steady87.final.sw);
+
+    // IC ref inline @E 步骤 34(IC2 → 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 s88 = bind.manageChannelOpen("9000");
+    bind.checkData("IC34-IC2-K1-C4 SW", "9000", s88.sw);
+    bind.checkData("IC34-IC2-K1-C3 CHANNEL_NUMBER extracted", "1", s88.chan !== null ? "1" : "0");
+
+    // IC ref inline @E 步骤 34(IC2 → 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 s89 = 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("IC34-IC2-K2-C4 SW", "9000", s89.sw);
+
+    // 步骤 35:MTD_STORE_DATA(tc_step;REQ: RQ57_173, RQ57_178)
+    // <L> length binding and the conditional 61XX + GET RESPONSE chain (D.4.2) are CasBind internal state (chaining rule).
+    var sdCla35 = s88.chan !== null ? (s88.chan <= 3 ? 128 + s88.chan : 188 + s88.chan).toString(16).toUpperCase() : null;
+    var s35 = bind.sendApdu(sdCla35, "E2", "91", "00", "BF29185A0A9892010A2143658709F8900A4E69636B6E616D652032", "00", "9000");
+    bind.checkData("S35-C1 SW", "9000", s35.sw);
+    var r2w35 = BindGecaProc.parseGecaResponse(s35.resp, {outer: "BF29", required: ["80"]});
+    bind.checkData("S35-C2 setNicknameResult iccidNotFound", "01", (r2w35.ok && r2w35.fields["80"] === "01") ? "01" : (r2w35.fields["80"] || "absent"));
 }