1//! This file was generated automatically by the Snowball to Go compiler
2//! http://snowballstem.org/
3
4package russian
5
6import (
7	snowballRuntime "github.com/blevesearch/snowballstem"
8)
9
10var A_0 = []*snowballRuntime.Among{
11	{Str: "\u0432\u0448\u0438\u0441\u044C", A: -1, B: 1, F: nil},
12	{Str: "\u044B\u0432\u0448\u0438\u0441\u044C", A: 0, B: 2, F: nil},
13	{Str: "\u0438\u0432\u0448\u0438\u0441\u044C", A: 0, B: 2, F: nil},
14	{Str: "\u0432", A: -1, B: 1, F: nil},
15	{Str: "\u044B\u0432", A: 3, B: 2, F: nil},
16	{Str: "\u0438\u0432", A: 3, B: 2, F: nil},
17	{Str: "\u0432\u0448\u0438", A: -1, B: 1, F: nil},
18	{Str: "\u044B\u0432\u0448\u0438", A: 6, B: 2, F: nil},
19	{Str: "\u0438\u0432\u0448\u0438", A: 6, B: 2, F: nil},
20}
21
22var A_1 = []*snowballRuntime.Among{
23	{Str: "\u0435\u043C\u0443", A: -1, B: 1, F: nil},
24	{Str: "\u043E\u043C\u0443", A: -1, B: 1, F: nil},
25	{Str: "\u044B\u0445", A: -1, B: 1, F: nil},
26	{Str: "\u0438\u0445", A: -1, B: 1, F: nil},
27	{Str: "\u0443\u044E", A: -1, B: 1, F: nil},
28	{Str: "\u044E\u044E", A: -1, B: 1, F: nil},
29	{Str: "\u0435\u044E", A: -1, B: 1, F: nil},
30	{Str: "\u043E\u044E", A: -1, B: 1, F: nil},
31	{Str: "\u044F\u044F", A: -1, B: 1, F: nil},
32	{Str: "\u0430\u044F", A: -1, B: 1, F: nil},
33	{Str: "\u044B\u0435", A: -1, B: 1, F: nil},
34	{Str: "\u0435\u0435", A: -1, B: 1, F: nil},
35	{Str: "\u0438\u0435", A: -1, B: 1, F: nil},
36	{Str: "\u043E\u0435", A: -1, B: 1, F: nil},
37	{Str: "\u044B\u043C\u0438", A: -1, B: 1, F: nil},
38	{Str: "\u0438\u043C\u0438", A: -1, B: 1, F: nil},
39	{Str: "\u044B\u0439", A: -1, B: 1, F: nil},
40	{Str: "\u0435\u0439", A: -1, B: 1, F: nil},
41	{Str: "\u0438\u0439", A: -1, B: 1, F: nil},
42	{Str: "\u043E\u0439", A: -1, B: 1, F: nil},
43	{Str: "\u044B\u043C", A: -1, B: 1, F: nil},
44	{Str: "\u0435\u043C", A: -1, B: 1, F: nil},
45	{Str: "\u0438\u043C", A: -1, B: 1, F: nil},
46	{Str: "\u043E\u043C", A: -1, B: 1, F: nil},
47	{Str: "\u0435\u0433\u043E", A: -1, B: 1, F: nil},
48	{Str: "\u043E\u0433\u043E", A: -1, B: 1, F: nil},
49}
50
51var A_2 = []*snowballRuntime.Among{
52	{Str: "\u0432\u0448", A: -1, B: 1, F: nil},
53	{Str: "\u044B\u0432\u0448", A: 0, B: 2, F: nil},
54	{Str: "\u0438\u0432\u0448", A: 0, B: 2, F: nil},
55	{Str: "\u0449", A: -1, B: 1, F: nil},
56	{Str: "\u044E\u0449", A: 3, B: 1, F: nil},
57	{Str: "\u0443\u044E\u0449", A: 4, B: 2, F: nil},
58	{Str: "\u0435\u043C", A: -1, B: 1, F: nil},
59	{Str: "\u043D\u043D", A: -1, B: 1, F: nil},
60}
61
62var A_3 = []*snowballRuntime.Among{
63	{Str: "\u0441\u044C", A: -1, B: 1, F: nil},
64	{Str: "\u0441\u044F", A: -1, B: 1, F: nil},
65}
66
67var A_4 = []*snowballRuntime.Among{
68	{Str: "\u044B\u0442", A: -1, B: 2, F: nil},
69	{Str: "\u044E\u0442", A: -1, B: 1, F: nil},
70	{Str: "\u0443\u044E\u0442", A: 1, B: 2, F: nil},
71	{Str: "\u044F\u0442", A: -1, B: 2, F: nil},
72	{Str: "\u0435\u0442", A: -1, B: 1, F: nil},
73	{Str: "\u0443\u0435\u0442", A: 4, B: 2, F: nil},
74	{Str: "\u0438\u0442", A: -1, B: 2, F: nil},
75	{Str: "\u043D\u044B", A: -1, B: 1, F: nil},
76	{Str: "\u0435\u043D\u044B", A: 7, B: 2, F: nil},
77	{Str: "\u0442\u044C", A: -1, B: 1, F: nil},
78	{Str: "\u044B\u0442\u044C", A: 9, B: 2, F: nil},
79	{Str: "\u0438\u0442\u044C", A: 9, B: 2, F: nil},
80	{Str: "\u0435\u0448\u044C", A: -1, B: 1, F: nil},
81	{Str: "\u0438\u0448\u044C", A: -1, B: 2, F: nil},
82	{Str: "\u044E", A: -1, B: 2, F: nil},
83	{Str: "\u0443\u044E", A: 14, B: 2, F: nil},
84	{Str: "\u043B\u0430", A: -1, B: 1, F: nil},
85	{Str: "\u044B\u043B\u0430", A: 16, B: 2, F: nil},
86	{Str: "\u0438\u043B\u0430", A: 16, B: 2, F: nil},
87	{Str: "\u043D\u0430", A: -1, B: 1, F: nil},
88	{Str: "\u0435\u043D\u0430", A: 19, B: 2, F: nil},
89	{Str: "\u0435\u0442\u0435", A: -1, B: 1, F: nil},
90	{Str: "\u0438\u0442\u0435", A: -1, B: 2, F: nil},
91	{Str: "\u0439\u0442\u0435", A: -1, B: 1, F: nil},
92	{Str: "\u0443\u0439\u0442\u0435", A: 23, B: 2, F: nil},
93	{Str: "\u0435\u0439\u0442\u0435", A: 23, B: 2, F: nil},
94	{Str: "\u043B\u0438", A: -1, B: 1, F: nil},
95	{Str: "\u044B\u043B\u0438", A: 26, B: 2, F: nil},
96	{Str: "\u0438\u043B\u0438", A: 26, B: 2, F: nil},
97	{Str: "\u0439", A: -1, B: 1, F: nil},
98	{Str: "\u0443\u0439", A: 29, B: 2, F: nil},
99	{Str: "\u0435\u0439", A: 29, B: 2, F: nil},
100	{Str: "\u043B", A: -1, B: 1, F: nil},
101	{Str: "\u044B\u043B", A: 32, B: 2, F: nil},
102	{Str: "\u0438\u043B", A: 32, B: 2, F: nil},
103	{Str: "\u044B\u043C", A: -1, B: 2, F: nil},
104	{Str: "\u0435\u043C", A: -1, B: 1, F: nil},
105	{Str: "\u0438\u043C", A: -1, B: 2, F: nil},
106	{Str: "\u043D", A: -1, B: 1, F: nil},
107	{Str: "\u0435\u043D", A: 38, B: 2, F: nil},
108	{Str: "\u043B\u043E", A: -1, B: 1, F: nil},
109	{Str: "\u044B\u043B\u043E", A: 40, B: 2, F: nil},
110	{Str: "\u0438\u043B\u043E", A: 40, B: 2, F: nil},
111	{Str: "\u043D\u043E", A: -1, B: 1, F: nil},
112	{Str: "\u0435\u043D\u043E", A: 43, B: 2, F: nil},
113	{Str: "\u043D\u043D\u043E", A: 43, B: 1, F: nil},
114}
115
116var A_5 = []*snowballRuntime.Among{
117	{Str: "\u0443", A: -1, B: 1, F: nil},
118	{Str: "\u044F\u0445", A: -1, B: 1, F: nil},
119	{Str: "\u0438\u044F\u0445", A: 1, B: 1, F: nil},
120	{Str: "\u0430\u0445", A: -1, B: 1, F: nil},
121	{Str: "\u044B", A: -1, B: 1, F: nil},
122	{Str: "\u044C", A: -1, B: 1, F: nil},
123	{Str: "\u044E", A: -1, B: 1, F: nil},
124	{Str: "\u044C\u044E", A: 6, B: 1, F: nil},
125	{Str: "\u0438\u044E", A: 6, B: 1, F: nil},
126	{Str: "\u044F", A: -1, B: 1, F: nil},
127	{Str: "\u044C\u044F", A: 9, B: 1, F: nil},
128	{Str: "\u0438\u044F", A: 9, B: 1, F: nil},
129	{Str: "\u0430", A: -1, B: 1, F: nil},
130	{Str: "\u0435\u0432", A: -1, B: 1, F: nil},
131	{Str: "\u043E\u0432", A: -1, B: 1, F: nil},
132	{Str: "\u0435", A: -1, B: 1, F: nil},
133	{Str: "\u044C\u0435", A: 15, B: 1, F: nil},
134	{Str: "\u0438\u0435", A: 15, B: 1, F: nil},
135	{Str: "\u0438", A: -1, B: 1, F: nil},
136	{Str: "\u0435\u0438", A: 18, B: 1, F: nil},
137	{Str: "\u0438\u0438", A: 18, B: 1, F: nil},
138	{Str: "\u044F\u043C\u0438", A: 18, B: 1, F: nil},
139	{Str: "\u0438\u044F\u043C\u0438", A: 21, B: 1, F: nil},
140	{Str: "\u0430\u043C\u0438", A: 18, B: 1, F: nil},
141	{Str: "\u0439", A: -1, B: 1, F: nil},
142	{Str: "\u0435\u0439", A: 24, B: 1, F: nil},
143	{Str: "\u0438\u0435\u0439", A: 25, B: 1, F: nil},
144	{Str: "\u0438\u0439", A: 24, B: 1, F: nil},
145	{Str: "\u043E\u0439", A: 24, B: 1, F: nil},
146	{Str: "\u044F\u043C", A: -1, B: 1, F: nil},
147	{Str: "\u0438\u044F\u043C", A: 29, B: 1, F: nil},
148	{Str: "\u0430\u043C", A: -1, B: 1, F: nil},
149	{Str: "\u0435\u043C", A: -1, B: 1, F: nil},
150	{Str: "\u0438\u0435\u043C", A: 32, B: 1, F: nil},
151	{Str: "\u043E\u043C", A: -1, B: 1, F: nil},
152	{Str: "\u043E", A: -1, B: 1, F: nil},
153}
154
155var A_6 = []*snowballRuntime.Among{
156	{Str: "\u043E\u0441\u0442", A: -1, B: 1, F: nil},
157	{Str: "\u043E\u0441\u0442\u044C", A: -1, B: 1, F: nil},
158}
159
160var A_7 = []*snowballRuntime.Among{
161	{Str: "\u0435\u0439\u0448", A: -1, B: 1, F: nil},
162	{Str: "\u044C", A: -1, B: 3, F: nil},
163	{Str: "\u0435\u0439\u0448\u0435", A: -1, B: 1, F: nil},
164	{Str: "\u043D", A: -1, B: 2, F: nil},
165}
166
167var G_v = []byte{33, 65, 8, 232}
168
169type Context struct {
170	i_p2 int
171	i_pV int
172}
173
174func r_mark_regions(env *snowballRuntime.Env, ctx interface{}) bool {
175	context := ctx.(*Context)
176	_ = context
177	// (, line 57
178	context.i_pV = env.Limit
179	context.i_p2 = env.Limit
180	// do, line 61
181	var v_1 = env.Cursor
182lab0:
183	for {
184		// (, line 61
185		// gopast, line 62
186	golab1:
187		for {
188		lab2:
189			for {
190				if !env.InGrouping(G_v, 1072, 1103) {
191					break lab2
192				}
193				break golab1
194			}
195			if env.Cursor >= env.Limit {
196				break lab0
197			}
198			env.NextChar()
199		}
200		// setmark pV, line 62
201		context.i_pV = env.Cursor
202		// gopast, line 62
203	golab3:
204		for {
205		lab4:
206			for {
207				if !env.OutGrouping(G_v, 1072, 1103) {
208					break lab4
209				}
210				break golab3
211			}
212			if env.Cursor >= env.Limit {
213				break lab0
214			}
215			env.NextChar()
216		}
217		// gopast, line 63
218	golab5:
219		for {
220		lab6:
221			for {
222				if !env.InGrouping(G_v, 1072, 1103) {
223					break lab6
224				}
225				break golab5
226			}
227			if env.Cursor >= env.Limit {
228				break lab0
229			}
230			env.NextChar()
231		}
232		// gopast, line 63
233	golab7:
234		for {
235		lab8:
236			for {
237				if !env.OutGrouping(G_v, 1072, 1103) {
238					break lab8
239				}
240				break golab7
241			}
242			if env.Cursor >= env.Limit {
243				break lab0
244			}
245			env.NextChar()
246		}
247		// setmark p2, line 63
248		context.i_p2 = env.Cursor
249		break lab0
250	}
251	env.Cursor = v_1
252	return true
253}
254
255func r_R2(env *snowballRuntime.Env, ctx interface{}) bool {
256	context := ctx.(*Context)
257	_ = context
258	if !(context.i_p2 <= env.Cursor) {
259		return false
260	}
261	return true
262}
263
264func r_perfective_gerund(env *snowballRuntime.Env, ctx interface{}) bool {
265	context := ctx.(*Context)
266	_ = context
267	var among_var int32
268	// (, line 71
269	// [, line 72
270	env.Ket = env.Cursor
271	// substring, line 72
272	among_var = env.FindAmongB(A_0, context)
273	if among_var == 0 {
274		return false
275	}
276	// ], line 72
277	env.Bra = env.Cursor
278	if among_var == 0 {
279		return false
280	} else if among_var == 1 {
281		// (, line 76
282		// or, line 76
283	lab0:
284		for {
285			var v_1 = env.Limit - env.Cursor
286		lab1:
287			for {
288				// literal, line 76
289				if !env.EqSB("\u0430") {
290					break lab1
291				}
292				break lab0
293			}
294			env.Cursor = env.Limit - v_1
295			// literal, line 76
296			if !env.EqSB("\u044F") {
297				return false
298			}
299			break lab0
300		}
301		// delete, line 76
302		if !env.SliceDel() {
303			return false
304		}
305	} else if among_var == 2 {
306		// (, line 83
307		// delete, line 83
308		if !env.SliceDel() {
309			return false
310		}
311	}
312	return true
313}
314
315func r_adjective(env *snowballRuntime.Env, ctx interface{}) bool {
316	context := ctx.(*Context)
317	_ = context
318	var among_var int32
319	// (, line 87
320	// [, line 88
321	env.Ket = env.Cursor
322	// substring, line 88
323	among_var = env.FindAmongB(A_1, context)
324	if among_var == 0 {
325		return false
326	}
327	// ], line 88
328	env.Bra = env.Cursor
329	if among_var == 0 {
330		return false
331	} else if among_var == 1 {
332		// (, line 97
333		// delete, line 97
334		if !env.SliceDel() {
335			return false
336		}
337	}
338	return true
339}
340
341func r_adjectival(env *snowballRuntime.Env, ctx interface{}) bool {
342	context := ctx.(*Context)
343	_ = context
344	var among_var int32
345	// (, line 101
346	// call adjective, line 102
347	if !r_adjective(env, context) {
348		return false
349	}
350	// try, line 109
351	var v_1 = env.Limit - env.Cursor
352lab0:
353	for {
354		// (, line 109
355		// [, line 110
356		env.Ket = env.Cursor
357		// substring, line 110
358		among_var = env.FindAmongB(A_2, context)
359		if among_var == 0 {
360			env.Cursor = env.Limit - v_1
361			break lab0
362		}
363		// ], line 110
364		env.Bra = env.Cursor
365		if among_var == 0 {
366			env.Cursor = env.Limit - v_1
367			break lab0
368		} else if among_var == 1 {
369			// (, line 115
370			// or, line 115
371		lab1:
372			for {
373				var v_2 = env.Limit - env.Cursor
374			lab2:
375				for {
376					// literal, line 115
377					if !env.EqSB("\u0430") {
378						break lab2
379					}
380					break lab1
381				}
382				env.Cursor = env.Limit - v_2
383				// literal, line 115
384				if !env.EqSB("\u044F") {
385					env.Cursor = env.Limit - v_1
386					break lab0
387				}
388				break lab1
389			}
390			// delete, line 115
391			if !env.SliceDel() {
392				return false
393			}
394		} else if among_var == 2 {
395			// (, line 122
396			// delete, line 122
397			if !env.SliceDel() {
398				return false
399			}
400		}
401		break lab0
402	}
403	return true
404}
405
406func r_reflexive(env *snowballRuntime.Env, ctx interface{}) bool {
407	context := ctx.(*Context)
408	_ = context
409	var among_var int32
410	// (, line 128
411	// [, line 129
412	env.Ket = env.Cursor
413	// substring, line 129
414	among_var = env.FindAmongB(A_3, context)
415	if among_var == 0 {
416		return false
417	}
418	// ], line 129
419	env.Bra = env.Cursor
420	if among_var == 0 {
421		return false
422	} else if among_var == 1 {
423		// (, line 132
424		// delete, line 132
425		if !env.SliceDel() {
426			return false
427		}
428	}
429	return true
430}
431
432func r_verb(env *snowballRuntime.Env, ctx interface{}) bool {
433	context := ctx.(*Context)
434	_ = context
435	var among_var int32
436	// (, line 136
437	// [, line 137
438	env.Ket = env.Cursor
439	// substring, line 137
440	among_var = env.FindAmongB(A_4, context)
441	if among_var == 0 {
442		return false
443	}
444	// ], line 137
445	env.Bra = env.Cursor
446	if among_var == 0 {
447		return false
448	} else if among_var == 1 {
449		// (, line 143
450		// or, line 143
451	lab0:
452		for {
453			var v_1 = env.Limit - env.Cursor
454		lab1:
455			for {
456				// literal, line 143
457				if !env.EqSB("\u0430") {
458					break lab1
459				}
460				break lab0
461			}
462			env.Cursor = env.Limit - v_1
463			// literal, line 143
464			if !env.EqSB("\u044F") {
465				return false
466			}
467			break lab0
468		}
469		// delete, line 143
470		if !env.SliceDel() {
471			return false
472		}
473	} else if among_var == 2 {
474		// (, line 151
475		// delete, line 151
476		if !env.SliceDel() {
477			return false
478		}
479	}
480	return true
481}
482
483func r_noun(env *snowballRuntime.Env, ctx interface{}) bool {
484	context := ctx.(*Context)
485	_ = context
486	var among_var int32
487	// (, line 159
488	// [, line 160
489	env.Ket = env.Cursor
490	// substring, line 160
491	among_var = env.FindAmongB(A_5, context)
492	if among_var == 0 {
493		return false
494	}
495	// ], line 160
496	env.Bra = env.Cursor
497	if among_var == 0 {
498		return false
499	} else if among_var == 1 {
500		// (, line 167
501		// delete, line 167
502		if !env.SliceDel() {
503			return false
504		}
505	}
506	return true
507}
508
509func r_derivational(env *snowballRuntime.Env, ctx interface{}) bool {
510	context := ctx.(*Context)
511	_ = context
512	var among_var int32
513	// (, line 175
514	// [, line 176
515	env.Ket = env.Cursor
516	// substring, line 176
517	among_var = env.FindAmongB(A_6, context)
518	if among_var == 0 {
519		return false
520	}
521	// ], line 176
522	env.Bra = env.Cursor
523	// call R2, line 176
524	if !r_R2(env, context) {
525		return false
526	}
527	if among_var == 0 {
528		return false
529	} else if among_var == 1 {
530		// (, line 179
531		// delete, line 179
532		if !env.SliceDel() {
533			return false
534		}
535	}
536	return true
537}
538
539func r_tidy_up(env *snowballRuntime.Env, ctx interface{}) bool {
540	context := ctx.(*Context)
541	_ = context
542	var among_var int32
543	// (, line 183
544	// [, line 184
545	env.Ket = env.Cursor
546	// substring, line 184
547	among_var = env.FindAmongB(A_7, context)
548	if among_var == 0 {
549		return false
550	}
551	// ], line 184
552	env.Bra = env.Cursor
553	if among_var == 0 {
554		return false
555	} else if among_var == 1 {
556		// (, line 188
557		// delete, line 188
558		if !env.SliceDel() {
559			return false
560		}
561		// [, line 189
562		env.Ket = env.Cursor
563		// literal, line 189
564		if !env.EqSB("\u043D") {
565			return false
566		}
567		// ], line 189
568		env.Bra = env.Cursor
569		// literal, line 189
570		if !env.EqSB("\u043D") {
571			return false
572		}
573		// delete, line 189
574		if !env.SliceDel() {
575			return false
576		}
577	} else if among_var == 2 {
578		// (, line 192
579		// literal, line 192
580		if !env.EqSB("\u043D") {
581			return false
582		}
583		// delete, line 192
584		if !env.SliceDel() {
585			return false
586		}
587	} else if among_var == 3 {
588		// (, line 194
589		// delete, line 194
590		if !env.SliceDel() {
591			return false
592		}
593	}
594	return true
595}
596
597func Stem(env *snowballRuntime.Env) bool {
598	var context = &Context{
599		i_p2: 0,
600		i_pV: 0,
601	}
602	_ = context
603	// (, line 199
604	// do, line 201
605	var v_1 = env.Cursor
606lab0:
607	for {
608		// call mark_regions, line 201
609		if !r_mark_regions(env, context) {
610			break lab0
611		}
612		break lab0
613	}
614	env.Cursor = v_1
615	// backwards, line 202
616	env.LimitBackward = env.Cursor
617	env.Cursor = env.Limit
618	// setlimit, line 202
619	var v_2 = env.Limit - env.Cursor
620	// tomark, line 202
621	if env.Cursor < context.i_pV {
622		return false
623	}
624	env.Cursor = context.i_pV
625	var v_3 = env.LimitBackward
626	env.LimitBackward = env.Cursor
627	env.Cursor = env.Limit - v_2
628	// (, line 202
629	// do, line 203
630	var v_4 = env.Limit - env.Cursor
631lab1:
632	for {
633		// (, line 203
634		// or, line 204
635	lab2:
636		for {
637			var v_5 = env.Limit - env.Cursor
638		lab3:
639			for {
640				// call perfective_gerund, line 204
641				if !r_perfective_gerund(env, context) {
642					break lab3
643				}
644				break lab2
645			}
646			env.Cursor = env.Limit - v_5
647			// (, line 205
648			// try, line 205
649			var v_6 = env.Limit - env.Cursor
650		lab4:
651			for {
652				// call reflexive, line 205
653				if !r_reflexive(env, context) {
654					env.Cursor = env.Limit - v_6
655					break lab4
656				}
657				break lab4
658			}
659			// or, line 206
660		lab5:
661			for {
662				var v_7 = env.Limit - env.Cursor
663			lab6:
664				for {
665					// call adjectival, line 206
666					if !r_adjectival(env, context) {
667						break lab6
668					}
669					break lab5
670				}
671				env.Cursor = env.Limit - v_7
672			lab7:
673				for {
674					// call verb, line 206
675					if !r_verb(env, context) {
676						break lab7
677					}
678					break lab5
679				}
680				env.Cursor = env.Limit - v_7
681				// call noun, line 206
682				if !r_noun(env, context) {
683					break lab1
684				}
685				break lab5
686			}
687			break lab2
688		}
689		break lab1
690	}
691	env.Cursor = env.Limit - v_4
692	// try, line 209
693	var v_8 = env.Limit - env.Cursor
694lab8:
695	for {
696		// (, line 209
697		// [, line 209
698		env.Ket = env.Cursor
699		// literal, line 209
700		if !env.EqSB("\u0438") {
701			env.Cursor = env.Limit - v_8
702			break lab8
703		}
704		// ], line 209
705		env.Bra = env.Cursor
706		// delete, line 209
707		if !env.SliceDel() {
708			return false
709		}
710		break lab8
711	}
712	// do, line 212
713	var v_9 = env.Limit - env.Cursor
714lab9:
715	for {
716		// call derivational, line 212
717		if !r_derivational(env, context) {
718			break lab9
719		}
720		break lab9
721	}
722	env.Cursor = env.Limit - v_9
723	// do, line 213
724	var v_10 = env.Limit - env.Cursor
725lab10:
726	for {
727		// call tidy_up, line 213
728		if !r_tidy_up(env, context) {
729			break lab10
730		}
731		break lab10
732	}
733	env.Cursor = env.Limit - v_10
734	env.LimitBackward = v_3
735	env.Cursor = env.LimitBackward
736	return true
737}
738