xref: /aosp_15_r20/tools/dexter/testdata/expected/invoke-polymorphic.verbose_cfg (revision f0dffb02cdb5c647d21204e89a92a1ffae2dad87)
1*f0dffb02SXin Li
2*f0dffb02SXin Limethod Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
3*f0dffb02SXin Li{
4*f0dffb02SXin Li............................. begin block 1 .............................
5*f0dffb02SXin Li	    0| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup
6*f0dffb02SXin Li.............................. end block 1 ..............................
7*f0dffb02SXin Li............................. begin block 2 .............................
8*f0dffb02SXin Li	    3| move-result-object v0
9*f0dffb02SXin Li	    4| invoke-virtual {v0,v2,v3,v4}, java.lang.invoke.MethodHandles$Lookup.findStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
10*f0dffb02SXin Li.............................. end block 2 ..............................
11*f0dffb02SXin Li............................. begin block 3 .............................
12*f0dffb02SXin Li	    7| move-result-object v1
13*f0dffb02SXin Li	    8| return-object v1
14*f0dffb02SXin Li.............................. end block 3 ..............................
15*f0dffb02SXin Li}
16*f0dffb02SXin Li
17*f0dffb02SXin Limethod Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
18*f0dffb02SXin Li{
19*f0dffb02SXin Li............................. begin block 1 .............................
20*f0dffb02SXin Li	    0| invoke-static {}, java.lang.invoke.MethodHandles.publicLookup():java.lang.invoke.MethodHandles$Lookup
21*f0dffb02SXin Li.............................. end block 1 ..............................
22*f0dffb02SXin Li............................. begin block 2 .............................
23*f0dffb02SXin Li	    3| move-result-object v0
24*f0dffb02SXin Li	    4| invoke-virtual {v0,v2,v3,v4}, java.lang.invoke.MethodHandles$Lookup.findVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
25*f0dffb02SXin Li.............................. end block 2 ..............................
26*f0dffb02SXin Li............................. begin block 3 .............................
27*f0dffb02SXin Li	    7| move-result-object v1
28*f0dffb02SXin Li	    8| return-object v1
29*f0dffb02SXin Li.............................. end block 3 ..............................
30*f0dffb02SXin Li}
31*f0dffb02SXin Li
32*f0dffb02SXin Limethod Main.getLongCompareToHandle():java.lang.invoke.MethodHandle
33*f0dffb02SXin Li{
34*f0dffb02SXin Li............................. begin block 1 .............................
35*f0dffb02SXin Li	    0| new-instance v0, java.lang.Long
36*f0dffb02SXin Li.............................. end block 1 ..............................
37*f0dffb02SXin Li............................. begin block 2 .............................
38*f0dffb02SXin Li	    2| const-wide v1:v2, #+0 (0x0000000000000000 | 0.00000)
39*f0dffb02SXin Li	    7| invoke-direct {v0,v1,v2}, java.lang.Long.<init>(long):void
40*f0dffb02SXin Li.............................. end block 2 ..............................
41*f0dffb02SXin Li............................. begin block 3 .............................
42*f0dffb02SXin Li	   10| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class
43*f0dffb02SXin Li.............................. end block 3 ..............................
44*f0dffb02SXin Li............................. begin block 4 .............................
45*f0dffb02SXin Li	   13| move-result-object v0
46*f0dffb02SXin Li	   14| sget-object v1, java.lang.Integer.TYPE
47*f0dffb02SXin Li.............................. end block 4 ..............................
48*f0dffb02SXin Li............................. begin block 5 .............................
49*f0dffb02SXin Li	   16| invoke-static {v1,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType
50*f0dffb02SXin Li.............................. end block 5 ..............................
51*f0dffb02SXin Li............................. begin block 6 .............................
52*f0dffb02SXin Li	   19| move-result-object v2
53*f0dffb02SXin Li	   20| const-string v3, "compareTo"
54*f0dffb02SXin Li.............................. end block 6 ..............................
55*f0dffb02SXin Li............................. begin block 7 .............................
56*f0dffb02SXin Li	   22| invoke-static {v0,v3,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
57*f0dffb02SXin Li.............................. end block 7 ..............................
58*f0dffb02SXin Li............................. begin block 8 .............................
59*f0dffb02SXin Li	   25| move-result-object v0
60*f0dffb02SXin Li	   26| return-object v0
61*f0dffb02SXin Li.............................. end block 8 ..............................
62*f0dffb02SXin Li}
63*f0dffb02SXin Li
64*f0dffb02SXin Limethod Main.getStringConcatHandle():java.lang.invoke.MethodHandle
65*f0dffb02SXin Li{
66*f0dffb02SXin Li............................. begin block 1 .............................
67*f0dffb02SXin Li	    0| const-string v0, "concat"
68*f0dffb02SXin Li.............................. end block 1 ..............................
69*f0dffb02SXin Li............................. begin block 2 .............................
70*f0dffb02SXin Li	    2| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class
71*f0dffb02SXin Li.............................. end block 2 ..............................
72*f0dffb02SXin Li............................. begin block 3 .............................
73*f0dffb02SXin Li	    5| move-result-object v1
74*f0dffb02SXin Li	    6| invoke-static {v1,v1}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType
75*f0dffb02SXin Li.............................. end block 3 ..............................
76*f0dffb02SXin Li............................. begin block 4 .............................
77*f0dffb02SXin Li	    9| move-result-object v2
78*f0dffb02SXin Li	   10| invoke-static {v1,v0,v2}, Main.getHandleForVirtual(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
79*f0dffb02SXin Li.............................. end block 4 ..............................
80*f0dffb02SXin Li............................. begin block 5 .............................
81*f0dffb02SXin Li	   13| move-result-object v0
82*f0dffb02SXin Li	   14| return-object v0
83*f0dffb02SXin Li.............................. end block 5 ..............................
84*f0dffb02SXin Li}
85*f0dffb02SXin Li
86*f0dffb02SXin Limethod Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle
87*f0dffb02SXin Li{
88*f0dffb02SXin Li............................. begin block 1 .............................
89*f0dffb02SXin Li	    0| sget-object v0, java.lang.Long.TYPE
90*f0dffb02SXin Li.............................. end block 1 ..............................
91*f0dffb02SXin Li............................. begin block 2 .............................
92*f0dffb02SXin Li	    2| const-string v1, "valueOf"
93*f0dffb02SXin Li.............................. end block 2 ..............................
94*f0dffb02SXin Li............................. begin block 3 .............................
95*f0dffb02SXin Li	    4| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class
96*f0dffb02SXin Li.............................. end block 3 ..............................
97*f0dffb02SXin Li............................. begin block 4 .............................
98*f0dffb02SXin Li	    7| move-result-object v2
99*f0dffb02SXin Li	    8| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType
100*f0dffb02SXin Li.............................. end block 4 ..............................
101*f0dffb02SXin Li............................. begin block 5 .............................
102*f0dffb02SXin Li	   11| move-result-object v3
103*f0dffb02SXin Li	   12| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
104*f0dffb02SXin Li.............................. end block 5 ..............................
105*f0dffb02SXin Li............................. begin block 6 .............................
106*f0dffb02SXin Li	   15| move-result-object v0
107*f0dffb02SXin Li	   16| return-object v0
108*f0dffb02SXin Li.............................. end block 6 ..............................
109*f0dffb02SXin Li}
110*f0dffb02SXin Li
111*f0dffb02SXin Limethod Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle
112*f0dffb02SXin Li{
113*f0dffb02SXin Li............................. begin block 1 .............................
114*f0dffb02SXin Li	    0| new-instance v0, java.lang.Object
115*f0dffb02SXin Li.............................. end block 1 ..............................
116*f0dffb02SXin Li............................. begin block 2 .............................
117*f0dffb02SXin Li	    2| invoke-direct {v0}, java.lang.Object.<init>():void
118*f0dffb02SXin Li.............................. end block 2 ..............................
119*f0dffb02SXin Li............................. begin block 3 .............................
120*f0dffb02SXin Li	    5| invoke-virtual {v0}, java.lang.Object.getClass():java.lang.Class
121*f0dffb02SXin Li.............................. end block 3 ..............................
122*f0dffb02SXin Li............................. begin block 4 .............................
123*f0dffb02SXin Li	    8| move-result-object v0
124*f0dffb02SXin Li	    9| const-string v1, "valueOf"
125*f0dffb02SXin Li.............................. end block 4 ..............................
126*f0dffb02SXin Li............................. begin block 5 .............................
127*f0dffb02SXin Li	   11| invoke-virtual {v1}, java.lang.Object.getClass():java.lang.Class
128*f0dffb02SXin Li.............................. end block 5 ..............................
129*f0dffb02SXin Li............................. begin block 6 .............................
130*f0dffb02SXin Li	   14| move-result-object v2
131*f0dffb02SXin Li	   15| invoke-static {v2,v0}, java.lang.invoke.MethodType.methodType(java.lang.Class, java.lang.Class):java.lang.invoke.MethodType
132*f0dffb02SXin Li.............................. end block 6 ..............................
133*f0dffb02SXin Li............................. begin block 7 .............................
134*f0dffb02SXin Li	   18| move-result-object v3
135*f0dffb02SXin Li	   19| invoke-static {v2,v1,v3}, Main.getHandleForStatic(java.lang.Class, java.lang.String, java.lang.invoke.MethodType):java.lang.invoke.MethodHandle
136*f0dffb02SXin Li.............................. end block 7 ..............................
137*f0dffb02SXin Li............................. begin block 8 .............................
138*f0dffb02SXin Li	   22| move-result-object v0
139*f0dffb02SXin Li	   23| return-object v0
140*f0dffb02SXin Li.............................. end block 8 ..............................
141*f0dffb02SXin Li}
142*f0dffb02SXin Li
143*f0dffb02SXin Limethod Main.main(java.lang.String[]):void
144*f0dffb02SXin Li{
145*f0dffb02SXin Li............................. begin block 1 .............................
146*f0dffb02SXin Li	    0| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle
147*f0dffb02SXin Li.............................. end block 1 ..............................
148*f0dffb02SXin Li............................. begin block 2 .............................
149*f0dffb02SXin Li	    3| move-result-object v0
150*f0dffb02SXin Li	    4| const-string v1, "[String1]"
151*f0dffb02SXin Li.............................. end block 2 ..............................
152*f0dffb02SXin Li............................. begin block 3 .............................
153*f0dffb02SXin Li	    6| const-string v2, "+[String2]"
154*f0dffb02SXin Li.............................. end block 3 ..............................
155*f0dffb02SXin Li............................. begin block 4 .............................
156*f0dffb02SXin Li	    8| invoke-polymorphic {v0,v1,v2}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (java.lang.String, java.lang.String):java.lang.String
157*f0dffb02SXin Li.............................. end block 4 ..............................
158*f0dffb02SXin Li............................. begin block 5 .............................
159*f0dffb02SXin Li	   12| move-result-object v3
160*f0dffb02SXin Li	   13| sget-object v4, java.lang.System.out
161*f0dffb02SXin Li.............................. end block 5 ..............................
162*f0dffb02SXin Li............................. begin block 6 .............................
163*f0dffb02SXin Li	   15| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void
164*f0dffb02SXin Li.............................. end block 6 ..............................
165*f0dffb02SXin Li............................. begin block 7 .............................
166*f0dffb02SXin Li	   18| invoke-static {}, Main.getStringValueOfObjectHandle():java.lang.invoke.MethodHandle
167*f0dffb02SXin Li.............................. end block 7 ..............................
168*f0dffb02SXin Li............................. begin block 8 .............................
169*f0dffb02SXin Li	   21| move-result-object v0
170*f0dffb02SXin Li	   22| const-string v1, "[String1]"
171*f0dffb02SXin Li.............................. end block 8 ..............................
172*f0dffb02SXin Li............................. begin block 9 .............................
173*f0dffb02SXin Li	   24| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (java.lang.Object):java.lang.String
174*f0dffb02SXin Li.............................. end block 9 ..............................
175*f0dffb02SXin Li............................. begin block 10 .............................
176*f0dffb02SXin Li	   28| move-result-object v3
177*f0dffb02SXin Li	   29| sget-object v4, java.lang.System.out
178*f0dffb02SXin Li.............................. end block 10 ..............................
179*f0dffb02SXin Li............................. begin block 11 .............................
180*f0dffb02SXin Li	   31| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void
181*f0dffb02SXin Li.............................. end block 11 ..............................
182*f0dffb02SXin Li............................. begin block 12 .............................
183*f0dffb02SXin Li	   34| invoke-static {}, Main.getStringConcatHandle():java.lang.invoke.MethodHandle
184*f0dffb02SXin Li.............................. end block 12 ..............................
185*f0dffb02SXin Li............................. begin block 13 .............................
186*f0dffb02SXin Li	   37| move-result-object v0
187*f0dffb02SXin Li	   38| const-string v1, "[String1]"
188*f0dffb02SXin Li.............................. end block 13 ..............................
189*f0dffb02SXin Li............................. begin block 14 .............................
190*f0dffb02SXin Li	   40| const-string v2, "+[String2]"
191*f0dffb02SXin Li.............................. end block 14 ..............................
192*f0dffb02SXin Li............................. begin block 15 .............................
193*f0dffb02SXin Li	   42| invoke-polymorphic {v0,v1,v2}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Object, java.lang.Object):java.lang.String
194*f0dffb02SXin Li.............................. end block 15 ..............................
195*f0dffb02SXin Li............................. begin block 16 .............................
196*f0dffb02SXin Li	   46| move-result-object v3
197*f0dffb02SXin Li	   47| sget-object v4, java.lang.System.out
198*f0dffb02SXin Li.............................. end block 16 ..............................
199*f0dffb02SXin Li............................. begin block 17 .............................
200*f0dffb02SXin Li	   49| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void
201*f0dffb02SXin Li.............................. end block 17 ..............................
202*f0dffb02SXin Li............................. begin block 18 .............................
203*f0dffb02SXin Li	   52| invoke-static {}, Main.getStringValueOfLongHandle():java.lang.invoke.MethodHandle
204*f0dffb02SXin Li.............................. end block 18 ..............................
205*f0dffb02SXin Li............................. begin block 19 .............................
206*f0dffb02SXin Li	   55| move-result-object v0
207*f0dffb02SXin Li	   56| const-wide v1:v2, #+42 (0x000000000000002a | 2.07508e-322)
208*f0dffb02SXin Li	   61| invoke-polymorphic {v0,v1,v2}, java.lang.invoke.MethodHandle.invokeExact(java.lang.Object[]):java.lang.Object, (long):java.lang.String
209*f0dffb02SXin Li.............................. end block 19 ..............................
210*f0dffb02SXin Li............................. begin block 20 .............................
211*f0dffb02SXin Li	   65| move-result-object v3
212*f0dffb02SXin Li	   66| sget-object v4, java.lang.System.out
213*f0dffb02SXin Li.............................. end block 20 ..............................
214*f0dffb02SXin Li............................. begin block 21 .............................
215*f0dffb02SXin Li	   68| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void
216*f0dffb02SXin Li.............................. end block 21 ..............................
217*f0dffb02SXin Li............................. begin block 22 .............................
218*f0dffb02SXin Li	   71| const v1, #+40 (0x00000028 | 5.60519e-44)
219*f0dffb02SXin Li	   74| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (int):java.lang.String
220*f0dffb02SXin Li.............................. end block 22 ..............................
221*f0dffb02SXin Li............................. begin block 23 .............................
222*f0dffb02SXin Li	   78| move-result-object v3
223*f0dffb02SXin Li	   79| sget-object v4, java.lang.System.out
224*f0dffb02SXin Li.............................. end block 23 ..............................
225*f0dffb02SXin Li............................. begin block 24 .............................
226*f0dffb02SXin Li	   81| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void
227*f0dffb02SXin Li.............................. end block 24 ..............................
228*f0dffb02SXin Li............................. begin block 25 .............................
229*f0dffb02SXin Li	   84| new-instance v1, java.lang.Long
230*f0dffb02SXin Li.............................. end block 25 ..............................
231*f0dffb02SXin Li............................. begin block 26 .............................
232*f0dffb02SXin Li	   86| const-wide v2:v3, #+43 (0x000000000000002b | 2.12448e-322)
233*f0dffb02SXin Li	   91| invoke-direct {v1,v2,v3}, java.lang.Long.<init>(long):void
234*f0dffb02SXin Li.............................. end block 26 ..............................
235*f0dffb02SXin Li............................. begin block 27 .............................
236*f0dffb02SXin Li	   94| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long):java.lang.String
237*f0dffb02SXin Li.............................. end block 27 ..............................
238*f0dffb02SXin Li............................. begin block 28 .............................
239*f0dffb02SXin Li	   98| move-result-object v3
240*f0dffb02SXin Li	   99| sget-object v4, java.lang.System.out
241*f0dffb02SXin Li.............................. end block 28 ..............................
242*f0dffb02SXin Li............................. begin block 29 .............................
243*f0dffb02SXin Li	  101| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void
244*f0dffb02SXin Li.............................. end block 29 ..............................
245*f0dffb02SXin Li............................. begin block 30 .............................
246*f0dffb02SXin Li	  104| new-instance v1, java.lang.Integer
247*f0dffb02SXin Li.............................. end block 30 ..............................
248*f0dffb02SXin Li............................. begin block 31 .............................
249*f0dffb02SXin Li	  106| const v2, #+44 (0x0000002c | 6.16571e-44)
250*f0dffb02SXin Li	  109| invoke-direct {v1,v2}, java.lang.Integer.<init>(int):void
251*f0dffb02SXin Li.............................. end block 31 ..............................
252*f0dffb02SXin Li............................. begin block 32 .............................
253*f0dffb02SXin Li	  112| invoke-polymorphic {v0,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Integer):java.lang.String
254*f0dffb02SXin Li.............................. end block 32 ..............................
255*f0dffb02SXin Li............................. begin block 33 .............................
256*f0dffb02SXin Li	  116| move-result-object v3
257*f0dffb02SXin Li	  117| sget-object v4, java.lang.System.out
258*f0dffb02SXin Li.............................. end block 33 ..............................
259*f0dffb02SXin Li............................. begin block 34 .............................
260*f0dffb02SXin Li	  119| invoke-virtual {v4,v3}, java.io.PrintStream.println(java.lang.String):void
261*f0dffb02SXin Li.............................. end block 34 ..............................
262*f0dffb02SXin Li............................. begin block 35 .............................
263*f0dffb02SXin Li	  122| invoke-static {}, Main.getLongCompareToHandle():java.lang.invoke.MethodHandle
264*f0dffb02SXin Li.............................. end block 35 ..............................
265*f0dffb02SXin Li............................. begin block 36 .............................
266*f0dffb02SXin Li	  125| move-result-object v0
267*f0dffb02SXin Li	  126| new-instance v1, java.lang.Long
268*f0dffb02SXin Li.............................. end block 36 ..............................
269*f0dffb02SXin Li............................. begin block 37 .............................
270*f0dffb02SXin Li	  128| const-wide v2:v3, #+43 (0x000000000000002b | 2.12448e-322)
271*f0dffb02SXin Li	  133| invoke-direct {v1,v2,v3}, java.lang.Long.<init>(long):void
272*f0dffb02SXin Li.............................. end block 37 ..............................
273*f0dffb02SXin Li............................. begin block 38 .............................
274*f0dffb02SXin Li	  136| invoke-polymorphic {v0,v1,v1}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, java.lang.Long):int
275*f0dffb02SXin Li.............................. end block 38 ..............................
276*f0dffb02SXin Li............................. begin block 39 .............................
277*f0dffb02SXin Li	  140| move-result v3
278*f0dffb02SXin Li	  141| sget-object v4, java.lang.System.out
279*f0dffb02SXin Li.............................. end block 39 ..............................
280*f0dffb02SXin Li............................. begin block 40 .............................
281*f0dffb02SXin Li	  143| invoke-virtual {v4,v3}, java.io.PrintStream.println(int):void
282*f0dffb02SXin Li.............................. end block 40 ..............................
283*f0dffb02SXin Li............................. begin block 41 .............................
284*f0dffb02SXin Li	  146| const-wide v2:v3, #+44 (0x000000000000002c | 2.17389e-322)
285*f0dffb02SXin Li	  151| invoke-polymorphic {v0,v1,v2,v3}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int
286*f0dffb02SXin Li.............................. end block 41 ..............................
287*f0dffb02SXin Li............................. begin block 42 .............................
288*f0dffb02SXin Li	  155| move-result v3
289*f0dffb02SXin Li	  156| sget-object v4, java.lang.System.out
290*f0dffb02SXin Li.............................. end block 42 ..............................
291*f0dffb02SXin Li............................. begin block 43 .............................
292*f0dffb02SXin Li	  158| invoke-virtual {v4,v3}, java.io.PrintStream.println(int):void
293*f0dffb02SXin Li.............................. end block 43 ..............................
294*f0dffb02SXin Li............................. begin block 44 .............................
295*f0dffb02SXin Li	  161| invoke-polymorphic/range {v7..v12}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int
296*f0dffb02SXin Li.............................. end block 44 ..............................
297*f0dffb02SXin Li............................. begin block 45 .............................
298*f0dffb02SXin Li	  165| invoke-polymorphic/range {v3..v43}, java.lang.invoke.MethodHandle.invoke(java.lang.Object[]):java.lang.Object, (java.lang.Long, long):int
299*f0dffb02SXin Li.............................. end block 45 ..............................
300*f0dffb02SXin Li............................. begin block 46 .............................
301*f0dffb02SXin Li	  169| return-void
302*f0dffb02SXin Li.............................. end block 46 ..............................
303*f0dffb02SXin Li}
304