table.go

  1// generated by "go run gen.go". DO NOT EDIT.
  2
  3package ccitt
  4
  5// Each decodeTable is represented by an array of [2]int16's: a binary tree.
  6// Each array element (other than element 0, which means invalid) is a branch
  7// node in that tree. The root node is always element 1 (the second element).
  8//
  9// To walk the tree, look at the next bit in the bit stream, using it to select
 10// the first or second element of the [2]int16. If that int16 is 0, we have an
 11// invalid code. If it is positive, go to that branch node. If it is negative,
 12// then we have a leaf node, whose value is the bitwise complement (the ^
 13// operator) of that int16.
 14//
 15// Comments above each decodeTable also show the same structure visually. The
 16// "b123" lines show the 123'rd branch node. The "=XXXXX" lines show an invalid
 17// code. The "=v1234" lines show a leaf node with value 1234. When reading the
 18// bit stream, a 0 or 1 bit means to go up or down, as you move left to right.
 19//
 20// For example, in modeDecodeTable, branch node b005 is three steps up from the
 21// root node, meaning that we have already seen "000". If the next bit is "0"
 22// then we move to branch node b006. Otherwise, the next bit is "1", and we
 23// move to the leaf node v0000 (also known as the modePass constant). Indeed,
 24// the bits that encode modePass are "0001".
 25//
 26// Tables 1, 2 and 3 come from the "ITU-T Recommendation T.6: FACSIMILE CODING
 27// SCHEMES AND CODING CONTROL FUNCTIONS FOR GROUP 4 FACSIMILE APPARATUS"
 28// specification:
 29//
 30// https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-T.6-198811-I!!PDF-E&type=items
 31
 32// modeDecodeTable represents Table 1 and the End-of-Line code.
 33//
 34//                              +=XXXXX
 35// b015                       +-+
 36//                            | +=v0010
 37// b014                     +-+
 38//                          | +=XXXXX
 39// b013                   +-+
 40//                        | +=XXXXX
 41// b012                 +-+
 42//                      | +=XXXXX
 43// b011               +-+
 44//                    | +=XXXXX
 45// b009             +-+
 46//                  | +=v0009
 47// b007           +-+
 48//                | | +=v0008
 49// b010           | +-+
 50//                |   +=v0005
 51// b006         +-+
 52//              | | +=v0007
 53// b008         | +-+
 54//              |   +=v0004
 55// b005       +-+
 56//            | +=v0000
 57// b003     +-+
 58//          | +=v0001
 59// b002   +-+
 60//        | | +=v0006
 61// b004   | +-+
 62//        |   +=v0003
 63// b001 +-+
 64//        +=v0002
 65var modeDecodeTable = [...][2]int16{
 66	0:  {0, 0},
 67	1:  {2, ^2},
 68	2:  {3, 4},
 69	3:  {5, ^1},
 70	4:  {^6, ^3},
 71	5:  {6, ^0},
 72	6:  {7, 8},
 73	7:  {9, 10},
 74	8:  {^7, ^4},
 75	9:  {11, ^9},
 76	10: {^8, ^5},
 77	11: {12, 0},
 78	12: {13, 0},
 79	13: {14, 0},
 80	14: {15, 0},
 81	15: {0, ^10},
 82}
 83
 84// whiteDecodeTable represents Tables 2 and 3 for a white run.
 85//
 86//                      +=XXXXX
 87// b059               +-+
 88//                    | |     +=v1792
 89// b096               | |   +-+
 90//                    | |   | | +=v1984
 91// b100               | |   | +-+
 92//                    | |   |   +=v2048
 93// b094               | | +-+
 94//                    | | | |   +=v2112
 95// b101               | | | | +-+
 96//                    | | | | | +=v2176
 97// b097               | | | +-+
 98//                    | | |   | +=v2240
 99// b102               | | |   +-+
100//                    | | |     +=v2304
101// b085               | +-+
102//                    |   |   +=v1856
103// b098               |   | +-+
104//                    |   | | +=v1920
105// b095               |   +-+
106//                    |     |   +=v2368
107// b103               |     | +-+
108//                    |     | | +=v2432
109// b099               |     +-+
110//                    |       | +=v2496
111// b104               |       +-+
112//                    |         +=v2560
113// b040             +-+
114//                  | | +=v0029
115// b060             | +-+
116//                  |   +=v0030
117// b026           +-+
118//                | |   +=v0045
119// b061           | | +-+
120//                | | | +=v0046
121// b041           | +-+
122//                |   +=v0022
123// b016         +-+
124//              | |   +=v0023
125// b042         | | +-+
126//              | | | | +=v0047
127// b062         | | | +-+
128//              | | |   +=v0048
129// b027         | +-+
130//              |   +=v0013
131// b008       +-+
132//            | |     +=v0020
133// b043       | |   +-+
134//            | |   | | +=v0033
135// b063       | |   | +-+
136//            | |   |   +=v0034
137// b028       | | +-+
138//            | | | |   +=v0035
139// b064       | | | | +-+
140//            | | | | | +=v0036
141// b044       | | | +-+
142//            | | |   | +=v0037
143// b065       | | |   +-+
144//            | | |     +=v0038
145// b017       | +-+
146//            |   |   +=v0019
147// b045       |   | +-+
148//            |   | | | +=v0031
149// b066       |   | | +-+
150//            |   | |   +=v0032
151// b029       |   +-+
152//            |     +=v0001
153// b004     +-+
154//          | |     +=v0012
155// b030     | |   +-+
156//          | |   | |   +=v0053
157// b067     | |   | | +-+
158//          | |   | | | +=v0054
159// b046     | |   | +-+
160//          | |   |   +=v0026
161// b018     | | +-+
162//          | | | |     +=v0039
163// b068     | | | |   +-+
164//          | | | |   | +=v0040
165// b047     | | | | +-+
166//          | | | | | | +=v0041
167// b069     | | | | | +-+
168//          | | | | |   +=v0042
169// b031     | | | +-+
170//          | | |   |   +=v0043
171// b070     | | |   | +-+
172//          | | |   | | +=v0044
173// b048     | | |   +-+
174//          | | |     +=v0021
175// b009     | +-+
176//          |   |     +=v0028
177// b049     |   |   +-+
178//          |   |   | | +=v0061
179// b071     |   |   | +-+
180//          |   |   |   +=v0062
181// b032     |   | +-+
182//          |   | | |   +=v0063
183// b072     |   | | | +-+
184//          |   | | | | +=v0000
185// b050     |   | | +-+
186//          |   | |   | +=v0320
187// b073     |   | |   +-+
188//          |   | |     +=v0384
189// b019     |   +-+
190//          |     +=v0010
191// b002   +-+
192//        | |     +=v0011
193// b020   | |   +-+
194//        | |   | |   +=v0027
195// b051   | |   | | +-+
196//        | |   | | | | +=v0059
197// b074   | |   | | | +-+
198//        | |   | | |   +=v0060
199// b033   | |   | +-+
200//        | |   |   |     +=v1472
201// b086   | |   |   |   +-+
202//        | |   |   |   | +=v1536
203// b075   | |   |   | +-+
204//        | |   |   | | | +=v1600
205// b087   | |   |   | | +-+
206//        | |   |   | |   +=v1728
207// b052   | |   |   +-+
208//        | |   |     +=v0018
209// b010   | | +-+
210//        | | | |     +=v0024
211// b053   | | | |   +-+
212//        | | | |   | | +=v0049
213// b076   | | | |   | +-+
214//        | | | |   |   +=v0050
215// b034   | | | | +-+
216//        | | | | | |   +=v0051
217// b077   | | | | | | +-+
218//        | | | | | | | +=v0052
219// b054   | | | | | +-+
220//        | | | | |   +=v0025
221// b021   | | | +-+
222//        | | |   |     +=v0055
223// b078   | | |   |   +-+
224//        | | |   |   | +=v0056
225// b055   | | |   | +-+
226//        | | |   | | | +=v0057
227// b079   | | |   | | +-+
228//        | | |   | |   +=v0058
229// b035   | | |   +-+
230//        | | |     +=v0192
231// b005   | +-+
232//        |   |     +=v1664
233// b036   |   |   +-+
234//        |   |   | |   +=v0448
235// b080   |   |   | | +-+
236//        |   |   | | | +=v0512
237// b056   |   |   | +-+
238//        |   |   |   |   +=v0704
239// b088   |   |   |   | +-+
240//        |   |   |   | | +=v0768
241// b081   |   |   |   +-+
242//        |   |   |     +=v0640
243// b022   |   | +-+
244//        |   | | |     +=v0576
245// b082   |   | | |   +-+
246//        |   | | |   | | +=v0832
247// b089   |   | | |   | +-+
248//        |   | | |   |   +=v0896
249// b057   |   | | | +-+
250//        |   | | | | |   +=v0960
251// b090   |   | | | | | +-+
252//        |   | | | | | | +=v1024
253// b083   |   | | | | +-+
254//        |   | | | |   | +=v1088
255// b091   |   | | | |   +-+
256//        |   | | | |     +=v1152
257// b037   |   | | +-+
258//        |   | |   |     +=v1216
259// b092   |   | |   |   +-+
260//        |   | |   |   | +=v1280
261// b084   |   | |   | +-+
262//        |   | |   | | | +=v1344
263// b093   |   | |   | | +-+
264//        |   | |   | |   +=v1408
265// b058   |   | |   +-+
266//        |   | |     +=v0256
267// b011   |   +-+
268//        |     +=v0002
269// b001 +-+
270//        |     +=v0003
271// b012   |   +-+
272//        |   | | +=v0128
273// b023   |   | +-+
274//        |   |   +=v0008
275// b006   | +-+
276//        | | |   +=v0009
277// b024   | | | +-+
278//        | | | | | +=v0016
279// b038   | | | | +-+
280//        | | | |   +=v0017
281// b013   | | +-+
282//        | |   +=v0004
283// b003   +-+
284//          |   +=v0005
285// b014     | +-+
286//          | | |   +=v0014
287// b039     | | | +-+
288//          | | | | +=v0015
289// b025     | | +-+
290//          | |   +=v0064
291// b007     +-+
292//            | +=v0006
293// b015       +-+
294//              +=v0007
295var whiteDecodeTable = [...][2]int16{
296	0:   {0, 0},
297	1:   {2, 3},
298	2:   {4, 5},
299	3:   {6, 7},
300	4:   {8, 9},
301	5:   {10, 11},
302	6:   {12, 13},
303	7:   {14, 15},
304	8:   {16, 17},
305	9:   {18, 19},
306	10:  {20, 21},
307	11:  {22, ^2},
308	12:  {^3, 23},
309	13:  {24, ^4},
310	14:  {^5, 25},
311	15:  {^6, ^7},
312	16:  {26, 27},
313	17:  {28, 29},
314	18:  {30, 31},
315	19:  {32, ^10},
316	20:  {^11, 33},
317	21:  {34, 35},
318	22:  {36, 37},
319	23:  {^128, ^8},
320	24:  {^9, 38},
321	25:  {39, ^64},
322	26:  {40, 41},
323	27:  {42, ^13},
324	28:  {43, 44},
325	29:  {45, ^1},
326	30:  {^12, 46},
327	31:  {47, 48},
328	32:  {49, 50},
329	33:  {51, 52},
330	34:  {53, 54},
331	35:  {55, ^192},
332	36:  {^1664, 56},
333	37:  {57, 58},
334	38:  {^16, ^17},
335	39:  {^14, ^15},
336	40:  {59, 60},
337	41:  {61, ^22},
338	42:  {^23, 62},
339	43:  {^20, 63},
340	44:  {64, 65},
341	45:  {^19, 66},
342	46:  {67, ^26},
343	47:  {68, 69},
344	48:  {70, ^21},
345	49:  {^28, 71},
346	50:  {72, 73},
347	51:  {^27, 74},
348	52:  {75, ^18},
349	53:  {^24, 76},
350	54:  {77, ^25},
351	55:  {78, 79},
352	56:  {80, 81},
353	57:  {82, 83},
354	58:  {84, ^256},
355	59:  {0, 85},
356	60:  {^29, ^30},
357	61:  {^45, ^46},
358	62:  {^47, ^48},
359	63:  {^33, ^34},
360	64:  {^35, ^36},
361	65:  {^37, ^38},
362	66:  {^31, ^32},
363	67:  {^53, ^54},
364	68:  {^39, ^40},
365	69:  {^41, ^42},
366	70:  {^43, ^44},
367	71:  {^61, ^62},
368	72:  {^63, ^0},
369	73:  {^320, ^384},
370	74:  {^59, ^60},
371	75:  {86, 87},
372	76:  {^49, ^50},
373	77:  {^51, ^52},
374	78:  {^55, ^56},
375	79:  {^57, ^58},
376	80:  {^448, ^512},
377	81:  {88, ^640},
378	82:  {^576, 89},
379	83:  {90, 91},
380	84:  {92, 93},
381	85:  {94, 95},
382	86:  {^1472, ^1536},
383	87:  {^1600, ^1728},
384	88:  {^704, ^768},
385	89:  {^832, ^896},
386	90:  {^960, ^1024},
387	91:  {^1088, ^1152},
388	92:  {^1216, ^1280},
389	93:  {^1344, ^1408},
390	94:  {96, 97},
391	95:  {98, 99},
392	96:  {^1792, 100},
393	97:  {101, 102},
394	98:  {^1856, ^1920},
395	99:  {103, 104},
396	100: {^1984, ^2048},
397	101: {^2112, ^2176},
398	102: {^2240, ^2304},
399	103: {^2368, ^2432},
400	104: {^2496, ^2560},
401}
402
403// blackDecodeTable represents Tables 2 and 3 for a black run.
404//
405//                      +=XXXXX
406// b017               +-+
407//                    | |     +=v1792
408// b042               | |   +-+
409//                    | |   | | +=v1984
410// b063               | |   | +-+
411//                    | |   |   +=v2048
412// b029               | | +-+
413//                    | | | |   +=v2112
414// b064               | | | | +-+
415//                    | | | | | +=v2176
416// b043               | | | +-+
417//                    | | |   | +=v2240
418// b065               | | |   +-+
419//                    | | |     +=v2304
420// b022               | +-+
421//                    |   |   +=v1856
422// b044               |   | +-+
423//                    |   | | +=v1920
424// b030               |   +-+
425//                    |     |   +=v2368
426// b066               |     | +-+
427//                    |     | | +=v2432
428// b045               |     +-+
429//                    |       | +=v2496
430// b067               |       +-+
431//                    |         +=v2560
432// b013             +-+
433//                  | |     +=v0018
434// b031             | |   +-+
435//                  | |   | |   +=v0052
436// b068             | |   | | +-+
437//                  | |   | | | | +=v0640
438// b095             | |   | | | +-+
439//                  | |   | | |   +=v0704
440// b046             | |   | +-+
441//                  | |   |   |   +=v0768
442// b096             | |   |   | +-+
443//                  | |   |   | | +=v0832
444// b069             | |   |   +-+
445//                  | |   |     +=v0055
446// b023             | | +-+
447//                  | | | |     +=v0056
448// b070             | | | |   +-+
449//                  | | | |   | | +=v1280
450// b097             | | | |   | +-+
451//                  | | | |   |   +=v1344
452// b047             | | | | +-+
453//                  | | | | | |   +=v1408
454// b098             | | | | | | +-+
455//                  | | | | | | | +=v1472
456// b071             | | | | | +-+
457//                  | | | | |   +=v0059
458// b032             | | | +-+
459//                  | | |   |   +=v0060
460// b072             | | |   | +-+
461//                  | | |   | | | +=v1536
462// b099             | | |   | | +-+
463//                  | | |   | |   +=v1600
464// b048             | | |   +-+
465//                  | | |     +=v0024
466// b018             | +-+
467//                  |   |     +=v0025
468// b049             |   |   +-+
469//                  |   |   | |   +=v1664
470// b100             |   |   | | +-+
471//                  |   |   | | | +=v1728
472// b073             |   |   | +-+
473//                  |   |   |   +=v0320
474// b033             |   | +-+
475//                  |   | | |   +=v0384
476// b074             |   | | | +-+
477//                  |   | | | | +=v0448
478// b050             |   | | +-+
479//                  |   | |   |   +=v0512
480// b101             |   | |   | +-+
481//                  |   | |   | | +=v0576
482// b075             |   | |   +-+
483//                  |   | |     +=v0053
484// b024             |   +-+
485//                  |     |     +=v0054
486// b076             |     |   +-+
487//                  |     |   | | +=v0896
488// b102             |     |   | +-+
489//                  |     |   |   +=v0960
490// b051             |     | +-+
491//                  |     | | |   +=v1024
492// b103             |     | | | +-+
493//                  |     | | | | +=v1088
494// b077             |     | | +-+
495//                  |     | |   | +=v1152
496// b104             |     | |   +-+
497//                  |     | |     +=v1216
498// b034             |     +-+
499//                  |       +=v0064
500// b010           +-+
501//                | |   +=v0013
502// b019           | | +-+
503//                | | | |     +=v0023
504// b052           | | | |   +-+
505//                | | | |   | | +=v0050
506// b078           | | | |   | +-+
507//                | | | |   |   +=v0051
508// b035           | | | | +-+
509//                | | | | | |   +=v0044
510// b079           | | | | | | +-+
511//                | | | | | | | +=v0045
512// b053           | | | | | +-+
513//                | | | | |   | +=v0046
514// b080           | | | | |   +-+
515//                | | | | |     +=v0047
516// b025           | | | +-+
517//                | | |   |     +=v0057
518// b081           | | |   |   +-+
519//                | | |   |   | +=v0058
520// b054           | | |   | +-+
521//                | | |   | | | +=v0061
522// b082           | | |   | | +-+
523//                | | |   | |   +=v0256
524// b036           | | |   +-+
525//                | | |     +=v0016
526// b014           | +-+
527//                |   |     +=v0017
528// b037           |   |   +-+
529//                |   |   | |   +=v0048
530// b083           |   |   | | +-+
531//                |   |   | | | +=v0049
532// b055           |   |   | +-+
533//                |   |   |   | +=v0062
534// b084           |   |   |   +-+
535//                |   |   |     +=v0063
536// b026           |   | +-+
537//                |   | | |     +=v0030
538// b085           |   | | |   +-+
539//                |   | | |   | +=v0031
540// b056           |   | | | +-+
541//                |   | | | | | +=v0032
542// b086           |   | | | | +-+
543//                |   | | | |   +=v0033
544// b038           |   | | +-+
545//                |   | |   |   +=v0040
546// b087           |   | |   | +-+
547//                |   | |   | | +=v0041
548// b057           |   | |   +-+
549//                |   | |     +=v0022
550// b020           |   +-+
551//                |     +=v0014
552// b008         +-+
553//              | |   +=v0010
554// b015         | | +-+
555//              | | | +=v0011
556// b011         | +-+
557//              |   |     +=v0015
558// b027         |   |   +-+
559//              |   |   | |     +=v0128
560// b088         |   |   | |   +-+
561//              |   |   | |   | +=v0192
562// b058         |   |   | | +-+
563//              |   |   | | | | +=v0026
564// b089         |   |   | | | +-+
565//              |   |   | | |   +=v0027
566// b039         |   |   | +-+
567//              |   |   |   |   +=v0028
568// b090         |   |   |   | +-+
569//              |   |   |   | | +=v0029
570// b059         |   |   |   +-+
571//              |   |   |     +=v0019
572// b021         |   | +-+
573//              |   | | |     +=v0020
574// b060         |   | | |   +-+
575//              |   | | |   | | +=v0034
576// b091         |   | | |   | +-+
577//              |   | | |   |   +=v0035
578// b040         |   | | | +-+
579//              |   | | | | |   +=v0036
580// b092         |   | | | | | +-+
581//              |   | | | | | | +=v0037
582// b061         |   | | | | +-+
583//              |   | | | |   | +=v0038
584// b093         |   | | | |   +-+
585//              |   | | | |     +=v0039
586// b028         |   | | +-+
587//              |   | |   |   +=v0021
588// b062         |   | |   | +-+
589//              |   | |   | | | +=v0042
590// b094         |   | |   | | +-+
591//              |   | |   | |   +=v0043
592// b041         |   | |   +-+
593//              |   | |     +=v0000
594// b016         |   +-+
595//              |     +=v0012
596// b006       +-+
597//            | |   +=v0009
598// b012       | | +-+
599//            | | | +=v0008
600// b009       | +-+
601//            |   +=v0007
602// b004     +-+
603//          | | +=v0006
604// b007     | +-+
605//          |   +=v0005
606// b002   +-+
607//        | | +=v0001
608// b005   | +-+
609//        |   +=v0004
610// b001 +-+
611//        | +=v0003
612// b003   +-+
613//          +=v0002
614var blackDecodeTable = [...][2]int16{
615	0:   {0, 0},
616	1:   {2, 3},
617	2:   {4, 5},
618	3:   {^3, ^2},
619	4:   {6, 7},
620	5:   {^1, ^4},
621	6:   {8, 9},
622	7:   {^6, ^5},
623	8:   {10, 11},
624	9:   {12, ^7},
625	10:  {13, 14},
626	11:  {15, 16},
627	12:  {^9, ^8},
628	13:  {17, 18},
629	14:  {19, 20},
630	15:  {^10, ^11},
631	16:  {21, ^12},
632	17:  {0, 22},
633	18:  {23, 24},
634	19:  {^13, 25},
635	20:  {26, ^14},
636	21:  {27, 28},
637	22:  {29, 30},
638	23:  {31, 32},
639	24:  {33, 34},
640	25:  {35, 36},
641	26:  {37, 38},
642	27:  {^15, 39},
643	28:  {40, 41},
644	29:  {42, 43},
645	30:  {44, 45},
646	31:  {^18, 46},
647	32:  {47, 48},
648	33:  {49, 50},
649	34:  {51, ^64},
650	35:  {52, 53},
651	36:  {54, ^16},
652	37:  {^17, 55},
653	38:  {56, 57},
654	39:  {58, 59},
655	40:  {60, 61},
656	41:  {62, ^0},
657	42:  {^1792, 63},
658	43:  {64, 65},
659	44:  {^1856, ^1920},
660	45:  {66, 67},
661	46:  {68, 69},
662	47:  {70, 71},
663	48:  {72, ^24},
664	49:  {^25, 73},
665	50:  {74, 75},
666	51:  {76, 77},
667	52:  {^23, 78},
668	53:  {79, 80},
669	54:  {81, 82},
670	55:  {83, 84},
671	56:  {85, 86},
672	57:  {87, ^22},
673	58:  {88, 89},
674	59:  {90, ^19},
675	60:  {^20, 91},
676	61:  {92, 93},
677	62:  {^21, 94},
678	63:  {^1984, ^2048},
679	64:  {^2112, ^2176},
680	65:  {^2240, ^2304},
681	66:  {^2368, ^2432},
682	67:  {^2496, ^2560},
683	68:  {^52, 95},
684	69:  {96, ^55},
685	70:  {^56, 97},
686	71:  {98, ^59},
687	72:  {^60, 99},
688	73:  {100, ^320},
689	74:  {^384, ^448},
690	75:  {101, ^53},
691	76:  {^54, 102},
692	77:  {103, 104},
693	78:  {^50, ^51},
694	79:  {^44, ^45},
695	80:  {^46, ^47},
696	81:  {^57, ^58},
697	82:  {^61, ^256},
698	83:  {^48, ^49},
699	84:  {^62, ^63},
700	85:  {^30, ^31},
701	86:  {^32, ^33},
702	87:  {^40, ^41},
703	88:  {^128, ^192},
704	89:  {^26, ^27},
705	90:  {^28, ^29},
706	91:  {^34, ^35},
707	92:  {^36, ^37},
708	93:  {^38, ^39},
709	94:  {^42, ^43},
710	95:  {^640, ^704},
711	96:  {^768, ^832},
712	97:  {^1280, ^1344},
713	98:  {^1408, ^1472},
714	99:  {^1536, ^1600},
715	100: {^1664, ^1728},
716	101: {^512, ^576},
717	102: {^896, ^960},
718	103: {^1024, ^1088},
719	104: {^1152, ^1216},
720}
721
722const maxCodeLength = 13
723
724// Each encodeTable is represented by an array of bitStrings.
725
726// bitString is a pair of uint32 values representing a bit code.
727// The nBits low bits of bits make up the actual bit code.
728// Eg. bitString{0x0004, 8} represents the bitcode "00000100".
729type bitString struct {
730	bits  uint32
731	nBits uint32
732}
733
734// modeEncodeTable represents Table 1 and the End-of-Line code.
735var modeEncodeTable = [...]bitString{
736	0:  {0x0001, 4},  // "0001"
737	1:  {0x0001, 3},  // "001"
738	2:  {0x0001, 1},  // "1"
739	3:  {0x0003, 3},  // "011"
740	4:  {0x0003, 6},  // "000011"
741	5:  {0x0003, 7},  // "0000011"
742	6:  {0x0002, 3},  // "010"
743	7:  {0x0002, 6},  // "000010"
744	8:  {0x0002, 7},  // "0000010"
745	9:  {0x0001, 7},  // "0000001"
746	10: {0x0001, 12}, // "000000000001"
747}
748
749// whiteEncodeTable2 represents Table 2 for a white run.
750var whiteEncodeTable2 = [...]bitString{
751	0:  {0x0035, 8}, // "00110101"
752	1:  {0x0007, 6}, // "000111"
753	2:  {0x0007, 4}, // "0111"
754	3:  {0x0008, 4}, // "1000"
755	4:  {0x000b, 4}, // "1011"
756	5:  {0x000c, 4}, // "1100"
757	6:  {0x000e, 4}, // "1110"
758	7:  {0x000f, 4}, // "1111"
759	8:  {0x0013, 5}, // "10011"
760	9:  {0x0014, 5}, // "10100"
761	10: {0x0007, 5}, // "00111"
762	11: {0x0008, 5}, // "01000"
763	12: {0x0008, 6}, // "001000"
764	13: {0x0003, 6}, // "000011"
765	14: {0x0034, 6}, // "110100"
766	15: {0x0035, 6}, // "110101"
767	16: {0x002a, 6}, // "101010"
768	17: {0x002b, 6}, // "101011"
769	18: {0x0027, 7}, // "0100111"
770	19: {0x000c, 7}, // "0001100"
771	20: {0x0008, 7}, // "0001000"
772	21: {0x0017, 7}, // "0010111"
773	22: {0x0003, 7}, // "0000011"
774	23: {0x0004, 7}, // "0000100"
775	24: {0x0028, 7}, // "0101000"
776	25: {0x002b, 7}, // "0101011"
777	26: {0x0013, 7}, // "0010011"
778	27: {0x0024, 7}, // "0100100"
779	28: {0x0018, 7}, // "0011000"
780	29: {0x0002, 8}, // "00000010"
781	30: {0x0003, 8}, // "00000011"
782	31: {0x001a, 8}, // "00011010"
783	32: {0x001b, 8}, // "00011011"
784	33: {0x0012, 8}, // "00010010"
785	34: {0x0013, 8}, // "00010011"
786	35: {0x0014, 8}, // "00010100"
787	36: {0x0015, 8}, // "00010101"
788	37: {0x0016, 8}, // "00010110"
789	38: {0x0017, 8}, // "00010111"
790	39: {0x0028, 8}, // "00101000"
791	40: {0x0029, 8}, // "00101001"
792	41: {0x002a, 8}, // "00101010"
793	42: {0x002b, 8}, // "00101011"
794	43: {0x002c, 8}, // "00101100"
795	44: {0x002d, 8}, // "00101101"
796	45: {0x0004, 8}, // "00000100"
797	46: {0x0005, 8}, // "00000101"
798	47: {0x000a, 8}, // "00001010"
799	48: {0x000b, 8}, // "00001011"
800	49: {0x0052, 8}, // "01010010"
801	50: {0x0053, 8}, // "01010011"
802	51: {0x0054, 8}, // "01010100"
803	52: {0x0055, 8}, // "01010101"
804	53: {0x0024, 8}, // "00100100"
805	54: {0x0025, 8}, // "00100101"
806	55: {0x0058, 8}, // "01011000"
807	56: {0x0059, 8}, // "01011001"
808	57: {0x005a, 8}, // "01011010"
809	58: {0x005b, 8}, // "01011011"
810	59: {0x004a, 8}, // "01001010"
811	60: {0x004b, 8}, // "01001011"
812	61: {0x0032, 8}, // "00110010"
813	62: {0x0033, 8}, // "00110011"
814	63: {0x0034, 8}, // "00110100"
815}
816
817// whiteEncodeTable3 represents Table 3 for a white run.
818var whiteEncodeTable3 = [...]bitString{
819	0:  {0x001b, 5},  // "11011"
820	1:  {0x0012, 5},  // "10010"
821	2:  {0x0017, 6},  // "010111"
822	3:  {0x0037, 7},  // "0110111"
823	4:  {0x0036, 8},  // "00110110"
824	5:  {0x0037, 8},  // "00110111"
825	6:  {0x0064, 8},  // "01100100"
826	7:  {0x0065, 8},  // "01100101"
827	8:  {0x0068, 8},  // "01101000"
828	9:  {0x0067, 8},  // "01100111"
829	10: {0x00cc, 9},  // "011001100"
830	11: {0x00cd, 9},  // "011001101"
831	12: {0x00d2, 9},  // "011010010"
832	13: {0x00d3, 9},  // "011010011"
833	14: {0x00d4, 9},  // "011010100"
834	15: {0x00d5, 9},  // "011010101"
835	16: {0x00d6, 9},  // "011010110"
836	17: {0x00d7, 9},  // "011010111"
837	18: {0x00d8, 9},  // "011011000"
838	19: {0x00d9, 9},  // "011011001"
839	20: {0x00da, 9},  // "011011010"
840	21: {0x00db, 9},  // "011011011"
841	22: {0x0098, 9},  // "010011000"
842	23: {0x0099, 9},  // "010011001"
843	24: {0x009a, 9},  // "010011010"
844	25: {0x0018, 6},  // "011000"
845	26: {0x009b, 9},  // "010011011"
846	27: {0x0008, 11}, // "00000001000"
847	28: {0x000c, 11}, // "00000001100"
848	29: {0x000d, 11}, // "00000001101"
849	30: {0x0012, 12}, // "000000010010"
850	31: {0x0013, 12}, // "000000010011"
851	32: {0x0014, 12}, // "000000010100"
852	33: {0x0015, 12}, // "000000010101"
853	34: {0x0016, 12}, // "000000010110"
854	35: {0x0017, 12}, // "000000010111"
855	36: {0x001c, 12}, // "000000011100"
856	37: {0x001d, 12}, // "000000011101"
857	38: {0x001e, 12}, // "000000011110"
858	39: {0x001f, 12}, // "000000011111"
859}
860
861// blackEncodeTable2 represents Table 2 for a black run.
862var blackEncodeTable2 = [...]bitString{
863	0:  {0x0037, 10}, // "0000110111"
864	1:  {0x0002, 3},  // "010"
865	2:  {0x0003, 2},  // "11"
866	3:  {0x0002, 2},  // "10"
867	4:  {0x0003, 3},  // "011"
868	5:  {0x0003, 4},  // "0011"
869	6:  {0x0002, 4},  // "0010"
870	7:  {0x0003, 5},  // "00011"
871	8:  {0x0005, 6},  // "000101"
872	9:  {0x0004, 6},  // "000100"
873	10: {0x0004, 7},  // "0000100"
874	11: {0x0005, 7},  // "0000101"
875	12: {0x0007, 7},  // "0000111"
876	13: {0x0004, 8},  // "00000100"
877	14: {0x0007, 8},  // "00000111"
878	15: {0x0018, 9},  // "000011000"
879	16: {0x0017, 10}, // "0000010111"
880	17: {0x0018, 10}, // "0000011000"
881	18: {0x0008, 10}, // "0000001000"
882	19: {0x0067, 11}, // "00001100111"
883	20: {0x0068, 11}, // "00001101000"
884	21: {0x006c, 11}, // "00001101100"
885	22: {0x0037, 11}, // "00000110111"
886	23: {0x0028, 11}, // "00000101000"
887	24: {0x0017, 11}, // "00000010111"
888	25: {0x0018, 11}, // "00000011000"
889	26: {0x00ca, 12}, // "000011001010"
890	27: {0x00cb, 12}, // "000011001011"
891	28: {0x00cc, 12}, // "000011001100"
892	29: {0x00cd, 12}, // "000011001101"
893	30: {0x0068, 12}, // "000001101000"
894	31: {0x0069, 12}, // "000001101001"
895	32: {0x006a, 12}, // "000001101010"
896	33: {0x006b, 12}, // "000001101011"
897	34: {0x00d2, 12}, // "000011010010"
898	35: {0x00d3, 12}, // "000011010011"
899	36: {0x00d4, 12}, // "000011010100"
900	37: {0x00d5, 12}, // "000011010101"
901	38: {0x00d6, 12}, // "000011010110"
902	39: {0x00d7, 12}, // "000011010111"
903	40: {0x006c, 12}, // "000001101100"
904	41: {0x006d, 12}, // "000001101101"
905	42: {0x00da, 12}, // "000011011010"
906	43: {0x00db, 12}, // "000011011011"
907	44: {0x0054, 12}, // "000001010100"
908	45: {0x0055, 12}, // "000001010101"
909	46: {0x0056, 12}, // "000001010110"
910	47: {0x0057, 12}, // "000001010111"
911	48: {0x0064, 12}, // "000001100100"
912	49: {0x0065, 12}, // "000001100101"
913	50: {0x0052, 12}, // "000001010010"
914	51: {0x0053, 12}, // "000001010011"
915	52: {0x0024, 12}, // "000000100100"
916	53: {0x0037, 12}, // "000000110111"
917	54: {0x0038, 12}, // "000000111000"
918	55: {0x0027, 12}, // "000000100111"
919	56: {0x0028, 12}, // "000000101000"
920	57: {0x0058, 12}, // "000001011000"
921	58: {0x0059, 12}, // "000001011001"
922	59: {0x002b, 12}, // "000000101011"
923	60: {0x002c, 12}, // "000000101100"
924	61: {0x005a, 12}, // "000001011010"
925	62: {0x0066, 12}, // "000001100110"
926	63: {0x0067, 12}, // "000001100111"
927}
928
929// blackEncodeTable3 represents Table 3 for a black run.
930var blackEncodeTable3 = [...]bitString{
931	0:  {0x000f, 10}, // "0000001111"
932	1:  {0x00c8, 12}, // "000011001000"
933	2:  {0x00c9, 12}, // "000011001001"
934	3:  {0x005b, 12}, // "000001011011"
935	4:  {0x0033, 12}, // "000000110011"
936	5:  {0x0034, 12}, // "000000110100"
937	6:  {0x0035, 12}, // "000000110101"
938	7:  {0x006c, 13}, // "0000001101100"
939	8:  {0x006d, 13}, // "0000001101101"
940	9:  {0x004a, 13}, // "0000001001010"
941	10: {0x004b, 13}, // "0000001001011"
942	11: {0x004c, 13}, // "0000001001100"
943	12: {0x004d, 13}, // "0000001001101"
944	13: {0x0072, 13}, // "0000001110010"
945	14: {0x0073, 13}, // "0000001110011"
946	15: {0x0074, 13}, // "0000001110100"
947	16: {0x0075, 13}, // "0000001110101"
948	17: {0x0076, 13}, // "0000001110110"
949	18: {0x0077, 13}, // "0000001110111"
950	19: {0x0052, 13}, // "0000001010010"
951	20: {0x0053, 13}, // "0000001010011"
952	21: {0x0054, 13}, // "0000001010100"
953	22: {0x0055, 13}, // "0000001010101"
954	23: {0x005a, 13}, // "0000001011010"
955	24: {0x005b, 13}, // "0000001011011"
956	25: {0x0064, 13}, // "0000001100100"
957	26: {0x0065, 13}, // "0000001100101"
958	27: {0x0008, 11}, // "00000001000"
959	28: {0x000c, 11}, // "00000001100"
960	29: {0x000d, 11}, // "00000001101"
961	30: {0x0012, 12}, // "000000010010"
962	31: {0x0013, 12}, // "000000010011"
963	32: {0x0014, 12}, // "000000010100"
964	33: {0x0015, 12}, // "000000010101"
965	34: {0x0016, 12}, // "000000010110"
966	35: {0x0017, 12}, // "000000010111"
967	36: {0x001c, 12}, // "000000011100"
968	37: {0x001d, 12}, // "000000011101"
969	38: {0x001e, 12}, // "000000011110"
970	39: {0x001f, 12}, // "000000011111"
971}
972
973// COPY PASTE table.go BEGIN
974
975const (
976	modePass = iota // Pass
977	modeH           // Horizontal
978	modeV0          // Vertical-0
979	modeVR1         // Vertical-Right-1
980	modeVR2         // Vertical-Right-2
981	modeVR3         // Vertical-Right-3
982	modeVL1         // Vertical-Left-1
983	modeVL2         // Vertical-Left-2
984	modeVL3         // Vertical-Left-3
985	modeExt         // Extension
986	modeEOL         // End-of-Line
987)
988
989// COPY PASTE table.go END