| 
									
										
										
										
											2022-08-10 14:05:14 +02:00
										 |  |  | // generated by "go run gen.go". DO NOT EDIT. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | package ccitt | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Each decodeTable is represented by an array of [2]int16's: a binary tree. | 
					
						
							|  |  |  | // Each array element (other than element 0, which means invalid) is a branch | 
					
						
							|  |  |  | // node in that tree. The root node is always element 1 (the second element). | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // To walk the tree, look at the next bit in the bit stream, using it to select | 
					
						
							|  |  |  | // the first or second element of the [2]int16. If that int16 is 0, we have an | 
					
						
							|  |  |  | // invalid code. If it is positive, go to that branch node. If it is negative, | 
					
						
							|  |  |  | // then we have a leaf node, whose value is the bitwise complement (the ^ | 
					
						
							|  |  |  | // operator) of that int16. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Comments above each decodeTable also show the same structure visually. The | 
					
						
							|  |  |  | // "b123" lines show the 123'rd branch node. The "=XXXXX" lines show an invalid | 
					
						
							|  |  |  | // code. The "=v1234" lines show a leaf node with value 1234. When reading the | 
					
						
							|  |  |  | // bit stream, a 0 or 1 bit means to go up or down, as you move left to right. | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // For example, in modeDecodeTable, branch node b005 is three steps up from the | 
					
						
							|  |  |  | // root node, meaning that we have already seen "000". If the next bit is "0" | 
					
						
							|  |  |  | // then we move to branch node b006. Otherwise, the next bit is "1", and we | 
					
						
							|  |  |  | // move to the leaf node v0000 (also known as the modePass constant). Indeed, | 
					
						
							|  |  |  | // the bits that encode modePass are "0001". | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // Tables 1, 2 and 3 come from the "ITU-T Recommendation T.6: FACSIMILE CODING | 
					
						
							|  |  |  | // SCHEMES AND CODING CONTROL FUNCTIONS FOR GROUP 4 FACSIMILE APPARATUS" | 
					
						
							|  |  |  | // specification: | 
					
						
							|  |  |  | // | 
					
						
							|  |  |  | // https://www.itu.int/rec/dologin_pub.asp?lang=e&id=T-REC-T.6-198811-I!!PDF-E&type=items | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // modeDecodeTable represents Table 1 and the End-of-Line code. | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2022-09-28 18:30:40 +01:00
										 |  |  | //	                   +=XXXXX | 
					
						
							|  |  |  | //	b009             +-+ | 
					
						
							|  |  |  | //	                 | +=v0009 | 
					
						
							|  |  |  | //	b007           +-+ | 
					
						
							|  |  |  | //	               | | +=v0008 | 
					
						
							|  |  |  | //	b010           | +-+ | 
					
						
							|  |  |  | //	               |   +=v0005 | 
					
						
							|  |  |  | //	b006         +-+ | 
					
						
							|  |  |  | //	             | | +=v0007 | 
					
						
							|  |  |  | //	b008         | +-+ | 
					
						
							|  |  |  | //	             |   +=v0004 | 
					
						
							|  |  |  | //	b005       +-+ | 
					
						
							|  |  |  | //	           | +=v0000 | 
					
						
							|  |  |  | //	b003     +-+ | 
					
						
							|  |  |  | //	         | +=v0001 | 
					
						
							|  |  |  | //	b002   +-+ | 
					
						
							|  |  |  | //	       | | +=v0006 | 
					
						
							|  |  |  | //	b004   | +-+ | 
					
						
							|  |  |  | //	       |   +=v0003 | 
					
						
							|  |  |  | //	b001 +-+ | 
					
						
							|  |  |  | //	       +=v0002 | 
					
						
							| 
									
										
										
										
											2022-08-10 14:05:14 +02:00
										 |  |  | var modeDecodeTable = [...][2]int16{ | 
					
						
							|  |  |  | 	0:  {0, 0}, | 
					
						
							|  |  |  | 	1:  {2, ^2}, | 
					
						
							|  |  |  | 	2:  {3, 4}, | 
					
						
							|  |  |  | 	3:  {5, ^1}, | 
					
						
							|  |  |  | 	4:  {^6, ^3}, | 
					
						
							|  |  |  | 	5:  {6, ^0}, | 
					
						
							|  |  |  | 	6:  {7, 8}, | 
					
						
							|  |  |  | 	7:  {9, 10}, | 
					
						
							|  |  |  | 	8:  {^7, ^4}, | 
					
						
							| 
									
										
										
										
											2022-09-28 18:30:40 +01:00
										 |  |  | 	9:  {0, ^9}, | 
					
						
							| 
									
										
										
										
											2022-08-10 14:05:14 +02:00
										 |  |  | 	10: {^8, ^5}, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // whiteDecodeTable represents Tables 2 and 3 for a white run. | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2022-09-28 18:30:40 +01:00
										 |  |  | //	                     +=XXXXX | 
					
						
							|  |  |  | //	b059               +-+ | 
					
						
							|  |  |  | //	                   | |     +=v1792 | 
					
						
							|  |  |  | //	b096               | |   +-+ | 
					
						
							|  |  |  | //	                   | |   | | +=v1984 | 
					
						
							|  |  |  | //	b100               | |   | +-+ | 
					
						
							|  |  |  | //	                   | |   |   +=v2048 | 
					
						
							|  |  |  | //	b094               | | +-+ | 
					
						
							|  |  |  | //	                   | | | |   +=v2112 | 
					
						
							|  |  |  | //	b101               | | | | +-+ | 
					
						
							|  |  |  | //	                   | | | | | +=v2176 | 
					
						
							|  |  |  | //	b097               | | | +-+ | 
					
						
							|  |  |  | //	                   | | |   | +=v2240 | 
					
						
							|  |  |  | //	b102               | | |   +-+ | 
					
						
							|  |  |  | //	                   | | |     +=v2304 | 
					
						
							|  |  |  | //	b085               | +-+ | 
					
						
							|  |  |  | //	                   |   |   +=v1856 | 
					
						
							|  |  |  | //	b098               |   | +-+ | 
					
						
							|  |  |  | //	                   |   | | +=v1920 | 
					
						
							|  |  |  | //	b095               |   +-+ | 
					
						
							|  |  |  | //	                   |     |   +=v2368 | 
					
						
							|  |  |  | //	b103               |     | +-+ | 
					
						
							|  |  |  | //	                   |     | | +=v2432 | 
					
						
							|  |  |  | //	b099               |     +-+ | 
					
						
							|  |  |  | //	                   |       | +=v2496 | 
					
						
							|  |  |  | //	b104               |       +-+ | 
					
						
							|  |  |  | //	                   |         +=v2560 | 
					
						
							|  |  |  | //	b040             +-+ | 
					
						
							|  |  |  | //	                 | | +=v0029 | 
					
						
							|  |  |  | //	b060             | +-+ | 
					
						
							|  |  |  | //	                 |   +=v0030 | 
					
						
							|  |  |  | //	b026           +-+ | 
					
						
							|  |  |  | //	               | |   +=v0045 | 
					
						
							|  |  |  | //	b061           | | +-+ | 
					
						
							|  |  |  | //	               | | | +=v0046 | 
					
						
							|  |  |  | //	b041           | +-+ | 
					
						
							|  |  |  | //	               |   +=v0022 | 
					
						
							|  |  |  | //	b016         +-+ | 
					
						
							|  |  |  | //	             | |   +=v0023 | 
					
						
							|  |  |  | //	b042         | | +-+ | 
					
						
							|  |  |  | //	             | | | | +=v0047 | 
					
						
							|  |  |  | //	b062         | | | +-+ | 
					
						
							|  |  |  | //	             | | |   +=v0048 | 
					
						
							|  |  |  | //	b027         | +-+ | 
					
						
							|  |  |  | //	             |   +=v0013 | 
					
						
							|  |  |  | //	b008       +-+ | 
					
						
							|  |  |  | //	           | |     +=v0020 | 
					
						
							|  |  |  | //	b043       | |   +-+ | 
					
						
							|  |  |  | //	           | |   | | +=v0033 | 
					
						
							|  |  |  | //	b063       | |   | +-+ | 
					
						
							|  |  |  | //	           | |   |   +=v0034 | 
					
						
							|  |  |  | //	b028       | | +-+ | 
					
						
							|  |  |  | //	           | | | |   +=v0035 | 
					
						
							|  |  |  | //	b064       | | | | +-+ | 
					
						
							|  |  |  | //	           | | | | | +=v0036 | 
					
						
							|  |  |  | //	b044       | | | +-+ | 
					
						
							|  |  |  | //	           | | |   | +=v0037 | 
					
						
							|  |  |  | //	b065       | | |   +-+ | 
					
						
							|  |  |  | //	           | | |     +=v0038 | 
					
						
							|  |  |  | //	b017       | +-+ | 
					
						
							|  |  |  | //	           |   |   +=v0019 | 
					
						
							|  |  |  | //	b045       |   | +-+ | 
					
						
							|  |  |  | //	           |   | | | +=v0031 | 
					
						
							|  |  |  | //	b066       |   | | +-+ | 
					
						
							|  |  |  | //	           |   | |   +=v0032 | 
					
						
							|  |  |  | //	b029       |   +-+ | 
					
						
							|  |  |  | //	           |     +=v0001 | 
					
						
							|  |  |  | //	b004     +-+ | 
					
						
							|  |  |  | //	         | |     +=v0012 | 
					
						
							|  |  |  | //	b030     | |   +-+ | 
					
						
							|  |  |  | //	         | |   | |   +=v0053 | 
					
						
							|  |  |  | //	b067     | |   | | +-+ | 
					
						
							|  |  |  | //	         | |   | | | +=v0054 | 
					
						
							|  |  |  | //	b046     | |   | +-+ | 
					
						
							|  |  |  | //	         | |   |   +=v0026 | 
					
						
							|  |  |  | //	b018     | | +-+ | 
					
						
							|  |  |  | //	         | | | |     +=v0039 | 
					
						
							|  |  |  | //	b068     | | | |   +-+ | 
					
						
							|  |  |  | //	         | | | |   | +=v0040 | 
					
						
							|  |  |  | //	b047     | | | | +-+ | 
					
						
							|  |  |  | //	         | | | | | | +=v0041 | 
					
						
							|  |  |  | //	b069     | | | | | +-+ | 
					
						
							|  |  |  | //	         | | | | |   +=v0042 | 
					
						
							|  |  |  | //	b031     | | | +-+ | 
					
						
							|  |  |  | //	         | | |   |   +=v0043 | 
					
						
							|  |  |  | //	b070     | | |   | +-+ | 
					
						
							|  |  |  | //	         | | |   | | +=v0044 | 
					
						
							|  |  |  | //	b048     | | |   +-+ | 
					
						
							|  |  |  | //	         | | |     +=v0021 | 
					
						
							|  |  |  | //	b009     | +-+ | 
					
						
							|  |  |  | //	         |   |     +=v0028 | 
					
						
							|  |  |  | //	b049     |   |   +-+ | 
					
						
							|  |  |  | //	         |   |   | | +=v0061 | 
					
						
							|  |  |  | //	b071     |   |   | +-+ | 
					
						
							|  |  |  | //	         |   |   |   +=v0062 | 
					
						
							|  |  |  | //	b032     |   | +-+ | 
					
						
							|  |  |  | //	         |   | | |   +=v0063 | 
					
						
							|  |  |  | //	b072     |   | | | +-+ | 
					
						
							|  |  |  | //	         |   | | | | +=v0000 | 
					
						
							|  |  |  | //	b050     |   | | +-+ | 
					
						
							|  |  |  | //	         |   | |   | +=v0320 | 
					
						
							|  |  |  | //	b073     |   | |   +-+ | 
					
						
							|  |  |  | //	         |   | |     +=v0384 | 
					
						
							|  |  |  | //	b019     |   +-+ | 
					
						
							|  |  |  | //	         |     +=v0010 | 
					
						
							|  |  |  | //	b002   +-+ | 
					
						
							|  |  |  | //	       | |     +=v0011 | 
					
						
							|  |  |  | //	b020   | |   +-+ | 
					
						
							|  |  |  | //	       | |   | |   +=v0027 | 
					
						
							|  |  |  | //	b051   | |   | | +-+ | 
					
						
							|  |  |  | //	       | |   | | | | +=v0059 | 
					
						
							|  |  |  | //	b074   | |   | | | +-+ | 
					
						
							|  |  |  | //	       | |   | | |   +=v0060 | 
					
						
							|  |  |  | //	b033   | |   | +-+ | 
					
						
							|  |  |  | //	       | |   |   |     +=v1472 | 
					
						
							|  |  |  | //	b086   | |   |   |   +-+ | 
					
						
							|  |  |  | //	       | |   |   |   | +=v1536 | 
					
						
							|  |  |  | //	b075   | |   |   | +-+ | 
					
						
							|  |  |  | //	       | |   |   | | | +=v1600 | 
					
						
							|  |  |  | //	b087   | |   |   | | +-+ | 
					
						
							|  |  |  | //	       | |   |   | |   +=v1728 | 
					
						
							|  |  |  | //	b052   | |   |   +-+ | 
					
						
							|  |  |  | //	       | |   |     +=v0018 | 
					
						
							|  |  |  | //	b010   | | +-+ | 
					
						
							|  |  |  | //	       | | | |     +=v0024 | 
					
						
							|  |  |  | //	b053   | | | |   +-+ | 
					
						
							|  |  |  | //	       | | | |   | | +=v0049 | 
					
						
							|  |  |  | //	b076   | | | |   | +-+ | 
					
						
							|  |  |  | //	       | | | |   |   +=v0050 | 
					
						
							|  |  |  | //	b034   | | | | +-+ | 
					
						
							|  |  |  | //	       | | | | | |   +=v0051 | 
					
						
							|  |  |  | //	b077   | | | | | | +-+ | 
					
						
							|  |  |  | //	       | | | | | | | +=v0052 | 
					
						
							|  |  |  | //	b054   | | | | | +-+ | 
					
						
							|  |  |  | //	       | | | | |   +=v0025 | 
					
						
							|  |  |  | //	b021   | | | +-+ | 
					
						
							|  |  |  | //	       | | |   |     +=v0055 | 
					
						
							|  |  |  | //	b078   | | |   |   +-+ | 
					
						
							|  |  |  | //	       | | |   |   | +=v0056 | 
					
						
							|  |  |  | //	b055   | | |   | +-+ | 
					
						
							|  |  |  | //	       | | |   | | | +=v0057 | 
					
						
							|  |  |  | //	b079   | | |   | | +-+ | 
					
						
							|  |  |  | //	       | | |   | |   +=v0058 | 
					
						
							|  |  |  | //	b035   | | |   +-+ | 
					
						
							|  |  |  | //	       | | |     +=v0192 | 
					
						
							|  |  |  | //	b005   | +-+ | 
					
						
							|  |  |  | //	       |   |     +=v1664 | 
					
						
							|  |  |  | //	b036   |   |   +-+ | 
					
						
							|  |  |  | //	       |   |   | |   +=v0448 | 
					
						
							|  |  |  | //	b080   |   |   | | +-+ | 
					
						
							|  |  |  | //	       |   |   | | | +=v0512 | 
					
						
							|  |  |  | //	b056   |   |   | +-+ | 
					
						
							|  |  |  | //	       |   |   |   |   +=v0704 | 
					
						
							|  |  |  | //	b088   |   |   |   | +-+ | 
					
						
							|  |  |  | //	       |   |   |   | | +=v0768 | 
					
						
							|  |  |  | //	b081   |   |   |   +-+ | 
					
						
							|  |  |  | //	       |   |   |     +=v0640 | 
					
						
							|  |  |  | //	b022   |   | +-+ | 
					
						
							|  |  |  | //	       |   | | |     +=v0576 | 
					
						
							|  |  |  | //	b082   |   | | |   +-+ | 
					
						
							|  |  |  | //	       |   | | |   | | +=v0832 | 
					
						
							|  |  |  | //	b089   |   | | |   | +-+ | 
					
						
							|  |  |  | //	       |   | | |   |   +=v0896 | 
					
						
							|  |  |  | //	b057   |   | | | +-+ | 
					
						
							|  |  |  | //	       |   | | | | |   +=v0960 | 
					
						
							|  |  |  | //	b090   |   | | | | | +-+ | 
					
						
							|  |  |  | //	       |   | | | | | | +=v1024 | 
					
						
							|  |  |  | //	b083   |   | | | | +-+ | 
					
						
							|  |  |  | //	       |   | | | |   | +=v1088 | 
					
						
							|  |  |  | //	b091   |   | | | |   +-+ | 
					
						
							|  |  |  | //	       |   | | | |     +=v1152 | 
					
						
							|  |  |  | //	b037   |   | | +-+ | 
					
						
							|  |  |  | //	       |   | |   |     +=v1216 | 
					
						
							|  |  |  | //	b092   |   | |   |   +-+ | 
					
						
							|  |  |  | //	       |   | |   |   | +=v1280 | 
					
						
							|  |  |  | //	b084   |   | |   | +-+ | 
					
						
							|  |  |  | //	       |   | |   | | | +=v1344 | 
					
						
							|  |  |  | //	b093   |   | |   | | +-+ | 
					
						
							|  |  |  | //	       |   | |   | |   +=v1408 | 
					
						
							|  |  |  | //	b058   |   | |   +-+ | 
					
						
							|  |  |  | //	       |   | |     +=v0256 | 
					
						
							|  |  |  | //	b011   |   +-+ | 
					
						
							|  |  |  | //	       |     +=v0002 | 
					
						
							|  |  |  | //	b001 +-+ | 
					
						
							|  |  |  | //	       |     +=v0003 | 
					
						
							|  |  |  | //	b012   |   +-+ | 
					
						
							|  |  |  | //	       |   | | +=v0128 | 
					
						
							|  |  |  | //	b023   |   | +-+ | 
					
						
							|  |  |  | //	       |   |   +=v0008 | 
					
						
							|  |  |  | //	b006   | +-+ | 
					
						
							|  |  |  | //	       | | |   +=v0009 | 
					
						
							|  |  |  | //	b024   | | | +-+ | 
					
						
							|  |  |  | //	       | | | | | +=v0016 | 
					
						
							|  |  |  | //	b038   | | | | +-+ | 
					
						
							|  |  |  | //	       | | | |   +=v0017 | 
					
						
							|  |  |  | //	b013   | | +-+ | 
					
						
							|  |  |  | //	       | |   +=v0004 | 
					
						
							|  |  |  | //	b003   +-+ | 
					
						
							|  |  |  | //	         |   +=v0005 | 
					
						
							|  |  |  | //	b014     | +-+ | 
					
						
							|  |  |  | //	         | | |   +=v0014 | 
					
						
							|  |  |  | //	b039     | | | +-+ | 
					
						
							|  |  |  | //	         | | | | +=v0015 | 
					
						
							|  |  |  | //	b025     | | +-+ | 
					
						
							|  |  |  | //	         | |   +=v0064 | 
					
						
							|  |  |  | //	b007     +-+ | 
					
						
							|  |  |  | //	           | +=v0006 | 
					
						
							|  |  |  | //	b015       +-+ | 
					
						
							|  |  |  | //	             +=v0007 | 
					
						
							| 
									
										
										
										
											2022-08-10 14:05:14 +02:00
										 |  |  | var whiteDecodeTable = [...][2]int16{ | 
					
						
							|  |  |  | 	0:   {0, 0}, | 
					
						
							|  |  |  | 	1:   {2, 3}, | 
					
						
							|  |  |  | 	2:   {4, 5}, | 
					
						
							|  |  |  | 	3:   {6, 7}, | 
					
						
							|  |  |  | 	4:   {8, 9}, | 
					
						
							|  |  |  | 	5:   {10, 11}, | 
					
						
							|  |  |  | 	6:   {12, 13}, | 
					
						
							|  |  |  | 	7:   {14, 15}, | 
					
						
							|  |  |  | 	8:   {16, 17}, | 
					
						
							|  |  |  | 	9:   {18, 19}, | 
					
						
							|  |  |  | 	10:  {20, 21}, | 
					
						
							|  |  |  | 	11:  {22, ^2}, | 
					
						
							|  |  |  | 	12:  {^3, 23}, | 
					
						
							|  |  |  | 	13:  {24, ^4}, | 
					
						
							|  |  |  | 	14:  {^5, 25}, | 
					
						
							|  |  |  | 	15:  {^6, ^7}, | 
					
						
							|  |  |  | 	16:  {26, 27}, | 
					
						
							|  |  |  | 	17:  {28, 29}, | 
					
						
							|  |  |  | 	18:  {30, 31}, | 
					
						
							|  |  |  | 	19:  {32, ^10}, | 
					
						
							|  |  |  | 	20:  {^11, 33}, | 
					
						
							|  |  |  | 	21:  {34, 35}, | 
					
						
							|  |  |  | 	22:  {36, 37}, | 
					
						
							|  |  |  | 	23:  {^128, ^8}, | 
					
						
							|  |  |  | 	24:  {^9, 38}, | 
					
						
							|  |  |  | 	25:  {39, ^64}, | 
					
						
							|  |  |  | 	26:  {40, 41}, | 
					
						
							|  |  |  | 	27:  {42, ^13}, | 
					
						
							|  |  |  | 	28:  {43, 44}, | 
					
						
							|  |  |  | 	29:  {45, ^1}, | 
					
						
							|  |  |  | 	30:  {^12, 46}, | 
					
						
							|  |  |  | 	31:  {47, 48}, | 
					
						
							|  |  |  | 	32:  {49, 50}, | 
					
						
							|  |  |  | 	33:  {51, 52}, | 
					
						
							|  |  |  | 	34:  {53, 54}, | 
					
						
							|  |  |  | 	35:  {55, ^192}, | 
					
						
							|  |  |  | 	36:  {^1664, 56}, | 
					
						
							|  |  |  | 	37:  {57, 58}, | 
					
						
							|  |  |  | 	38:  {^16, ^17}, | 
					
						
							|  |  |  | 	39:  {^14, ^15}, | 
					
						
							|  |  |  | 	40:  {59, 60}, | 
					
						
							|  |  |  | 	41:  {61, ^22}, | 
					
						
							|  |  |  | 	42:  {^23, 62}, | 
					
						
							|  |  |  | 	43:  {^20, 63}, | 
					
						
							|  |  |  | 	44:  {64, 65}, | 
					
						
							|  |  |  | 	45:  {^19, 66}, | 
					
						
							|  |  |  | 	46:  {67, ^26}, | 
					
						
							|  |  |  | 	47:  {68, 69}, | 
					
						
							|  |  |  | 	48:  {70, ^21}, | 
					
						
							|  |  |  | 	49:  {^28, 71}, | 
					
						
							|  |  |  | 	50:  {72, 73}, | 
					
						
							|  |  |  | 	51:  {^27, 74}, | 
					
						
							|  |  |  | 	52:  {75, ^18}, | 
					
						
							|  |  |  | 	53:  {^24, 76}, | 
					
						
							|  |  |  | 	54:  {77, ^25}, | 
					
						
							|  |  |  | 	55:  {78, 79}, | 
					
						
							|  |  |  | 	56:  {80, 81}, | 
					
						
							|  |  |  | 	57:  {82, 83}, | 
					
						
							|  |  |  | 	58:  {84, ^256}, | 
					
						
							|  |  |  | 	59:  {0, 85}, | 
					
						
							|  |  |  | 	60:  {^29, ^30}, | 
					
						
							|  |  |  | 	61:  {^45, ^46}, | 
					
						
							|  |  |  | 	62:  {^47, ^48}, | 
					
						
							|  |  |  | 	63:  {^33, ^34}, | 
					
						
							|  |  |  | 	64:  {^35, ^36}, | 
					
						
							|  |  |  | 	65:  {^37, ^38}, | 
					
						
							|  |  |  | 	66:  {^31, ^32}, | 
					
						
							|  |  |  | 	67:  {^53, ^54}, | 
					
						
							|  |  |  | 	68:  {^39, ^40}, | 
					
						
							|  |  |  | 	69:  {^41, ^42}, | 
					
						
							|  |  |  | 	70:  {^43, ^44}, | 
					
						
							|  |  |  | 	71:  {^61, ^62}, | 
					
						
							|  |  |  | 	72:  {^63, ^0}, | 
					
						
							|  |  |  | 	73:  {^320, ^384}, | 
					
						
							|  |  |  | 	74:  {^59, ^60}, | 
					
						
							|  |  |  | 	75:  {86, 87}, | 
					
						
							|  |  |  | 	76:  {^49, ^50}, | 
					
						
							|  |  |  | 	77:  {^51, ^52}, | 
					
						
							|  |  |  | 	78:  {^55, ^56}, | 
					
						
							|  |  |  | 	79:  {^57, ^58}, | 
					
						
							|  |  |  | 	80:  {^448, ^512}, | 
					
						
							|  |  |  | 	81:  {88, ^640}, | 
					
						
							|  |  |  | 	82:  {^576, 89}, | 
					
						
							|  |  |  | 	83:  {90, 91}, | 
					
						
							|  |  |  | 	84:  {92, 93}, | 
					
						
							|  |  |  | 	85:  {94, 95}, | 
					
						
							|  |  |  | 	86:  {^1472, ^1536}, | 
					
						
							|  |  |  | 	87:  {^1600, ^1728}, | 
					
						
							|  |  |  | 	88:  {^704, ^768}, | 
					
						
							|  |  |  | 	89:  {^832, ^896}, | 
					
						
							|  |  |  | 	90:  {^960, ^1024}, | 
					
						
							|  |  |  | 	91:  {^1088, ^1152}, | 
					
						
							|  |  |  | 	92:  {^1216, ^1280}, | 
					
						
							|  |  |  | 	93:  {^1344, ^1408}, | 
					
						
							|  |  |  | 	94:  {96, 97}, | 
					
						
							|  |  |  | 	95:  {98, 99}, | 
					
						
							|  |  |  | 	96:  {^1792, 100}, | 
					
						
							|  |  |  | 	97:  {101, 102}, | 
					
						
							|  |  |  | 	98:  {^1856, ^1920}, | 
					
						
							|  |  |  | 	99:  {103, 104}, | 
					
						
							|  |  |  | 	100: {^1984, ^2048}, | 
					
						
							|  |  |  | 	101: {^2112, ^2176}, | 
					
						
							|  |  |  | 	102: {^2240, ^2304}, | 
					
						
							|  |  |  | 	103: {^2368, ^2432}, | 
					
						
							|  |  |  | 	104: {^2496, ^2560}, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // blackDecodeTable represents Tables 2 and 3 for a black run. | 
					
						
							|  |  |  | // | 
					
						
							| 
									
										
										
										
											2022-09-28 18:30:40 +01:00
										 |  |  | //	                     +=XXXXX | 
					
						
							|  |  |  | //	b017               +-+ | 
					
						
							|  |  |  | //	                   | |     +=v1792 | 
					
						
							|  |  |  | //	b042               | |   +-+ | 
					
						
							|  |  |  | //	                   | |   | | +=v1984 | 
					
						
							|  |  |  | //	b063               | |   | +-+ | 
					
						
							|  |  |  | //	                   | |   |   +=v2048 | 
					
						
							|  |  |  | //	b029               | | +-+ | 
					
						
							|  |  |  | //	                   | | | |   +=v2112 | 
					
						
							|  |  |  | //	b064               | | | | +-+ | 
					
						
							|  |  |  | //	                   | | | | | +=v2176 | 
					
						
							|  |  |  | //	b043               | | | +-+ | 
					
						
							|  |  |  | //	                   | | |   | +=v2240 | 
					
						
							|  |  |  | //	b065               | | |   +-+ | 
					
						
							|  |  |  | //	                   | | |     +=v2304 | 
					
						
							|  |  |  | //	b022               | +-+ | 
					
						
							|  |  |  | //	                   |   |   +=v1856 | 
					
						
							|  |  |  | //	b044               |   | +-+ | 
					
						
							|  |  |  | //	                   |   | | +=v1920 | 
					
						
							|  |  |  | //	b030               |   +-+ | 
					
						
							|  |  |  | //	                   |     |   +=v2368 | 
					
						
							|  |  |  | //	b066               |     | +-+ | 
					
						
							|  |  |  | //	                   |     | | +=v2432 | 
					
						
							|  |  |  | //	b045               |     +-+ | 
					
						
							|  |  |  | //	                   |       | +=v2496 | 
					
						
							|  |  |  | //	b067               |       +-+ | 
					
						
							|  |  |  | //	                   |         +=v2560 | 
					
						
							|  |  |  | //	b013             +-+ | 
					
						
							|  |  |  | //	                 | |     +=v0018 | 
					
						
							|  |  |  | //	b031             | |   +-+ | 
					
						
							|  |  |  | //	                 | |   | |   +=v0052 | 
					
						
							|  |  |  | //	b068             | |   | | +-+ | 
					
						
							|  |  |  | //	                 | |   | | | | +=v0640 | 
					
						
							|  |  |  | //	b095             | |   | | | +-+ | 
					
						
							|  |  |  | //	                 | |   | | |   +=v0704 | 
					
						
							|  |  |  | //	b046             | |   | +-+ | 
					
						
							|  |  |  | //	                 | |   |   |   +=v0768 | 
					
						
							|  |  |  | //	b096             | |   |   | +-+ | 
					
						
							|  |  |  | //	                 | |   |   | | +=v0832 | 
					
						
							|  |  |  | //	b069             | |   |   +-+ | 
					
						
							|  |  |  | //	                 | |   |     +=v0055 | 
					
						
							|  |  |  | //	b023             | | +-+ | 
					
						
							|  |  |  | //	                 | | | |     +=v0056 | 
					
						
							|  |  |  | //	b070             | | | |   +-+ | 
					
						
							|  |  |  | //	                 | | | |   | | +=v1280 | 
					
						
							|  |  |  | //	b097             | | | |   | +-+ | 
					
						
							|  |  |  | //	                 | | | |   |   +=v1344 | 
					
						
							|  |  |  | //	b047             | | | | +-+ | 
					
						
							|  |  |  | //	                 | | | | | |   +=v1408 | 
					
						
							|  |  |  | //	b098             | | | | | | +-+ | 
					
						
							|  |  |  | //	                 | | | | | | | +=v1472 | 
					
						
							|  |  |  | //	b071             | | | | | +-+ | 
					
						
							|  |  |  | //	                 | | | | |   +=v0059 | 
					
						
							|  |  |  | //	b032             | | | +-+ | 
					
						
							|  |  |  | //	                 | | |   |   +=v0060 | 
					
						
							|  |  |  | //	b072             | | |   | +-+ | 
					
						
							|  |  |  | //	                 | | |   | | | +=v1536 | 
					
						
							|  |  |  | //	b099             | | |   | | +-+ | 
					
						
							|  |  |  | //	                 | | |   | |   +=v1600 | 
					
						
							|  |  |  | //	b048             | | |   +-+ | 
					
						
							|  |  |  | //	                 | | |     +=v0024 | 
					
						
							|  |  |  | //	b018             | +-+ | 
					
						
							|  |  |  | //	                 |   |     +=v0025 | 
					
						
							|  |  |  | //	b049             |   |   +-+ | 
					
						
							|  |  |  | //	                 |   |   | |   +=v1664 | 
					
						
							|  |  |  | //	b100             |   |   | | +-+ | 
					
						
							|  |  |  | //	                 |   |   | | | +=v1728 | 
					
						
							|  |  |  | //	b073             |   |   | +-+ | 
					
						
							|  |  |  | //	                 |   |   |   +=v0320 | 
					
						
							|  |  |  | //	b033             |   | +-+ | 
					
						
							|  |  |  | //	                 |   | | |   +=v0384 | 
					
						
							|  |  |  | //	b074             |   | | | +-+ | 
					
						
							|  |  |  | //	                 |   | | | | +=v0448 | 
					
						
							|  |  |  | //	b050             |   | | +-+ | 
					
						
							|  |  |  | //	                 |   | |   |   +=v0512 | 
					
						
							|  |  |  | //	b101             |   | |   | +-+ | 
					
						
							|  |  |  | //	                 |   | |   | | +=v0576 | 
					
						
							|  |  |  | //	b075             |   | |   +-+ | 
					
						
							|  |  |  | //	                 |   | |     +=v0053 | 
					
						
							|  |  |  | //	b024             |   +-+ | 
					
						
							|  |  |  | //	                 |     |     +=v0054 | 
					
						
							|  |  |  | //	b076             |     |   +-+ | 
					
						
							|  |  |  | //	                 |     |   | | +=v0896 | 
					
						
							|  |  |  | //	b102             |     |   | +-+ | 
					
						
							|  |  |  | //	                 |     |   |   +=v0960 | 
					
						
							|  |  |  | //	b051             |     | +-+ | 
					
						
							|  |  |  | //	                 |     | | |   +=v1024 | 
					
						
							|  |  |  | //	b103             |     | | | +-+ | 
					
						
							|  |  |  | //	                 |     | | | | +=v1088 | 
					
						
							|  |  |  | //	b077             |     | | +-+ | 
					
						
							|  |  |  | //	                 |     | |   | +=v1152 | 
					
						
							|  |  |  | //	b104             |     | |   +-+ | 
					
						
							|  |  |  | //	                 |     | |     +=v1216 | 
					
						
							|  |  |  | //	b034             |     +-+ | 
					
						
							|  |  |  | //	                 |       +=v0064 | 
					
						
							|  |  |  | //	b010           +-+ | 
					
						
							|  |  |  | //	               | |   +=v0013 | 
					
						
							|  |  |  | //	b019           | | +-+ | 
					
						
							|  |  |  | //	               | | | |     +=v0023 | 
					
						
							|  |  |  | //	b052           | | | |   +-+ | 
					
						
							|  |  |  | //	               | | | |   | | +=v0050 | 
					
						
							|  |  |  | //	b078           | | | |   | +-+ | 
					
						
							|  |  |  | //	               | | | |   |   +=v0051 | 
					
						
							|  |  |  | //	b035           | | | | +-+ | 
					
						
							|  |  |  | //	               | | | | | |   +=v0044 | 
					
						
							|  |  |  | //	b079           | | | | | | +-+ | 
					
						
							|  |  |  | //	               | | | | | | | +=v0045 | 
					
						
							|  |  |  | //	b053           | | | | | +-+ | 
					
						
							|  |  |  | //	               | | | | |   | +=v0046 | 
					
						
							|  |  |  | //	b080           | | | | |   +-+ | 
					
						
							|  |  |  | //	               | | | | |     +=v0047 | 
					
						
							|  |  |  | //	b025           | | | +-+ | 
					
						
							|  |  |  | //	               | | |   |     +=v0057 | 
					
						
							|  |  |  | //	b081           | | |   |   +-+ | 
					
						
							|  |  |  | //	               | | |   |   | +=v0058 | 
					
						
							|  |  |  | //	b054           | | |   | +-+ | 
					
						
							|  |  |  | //	               | | |   | | | +=v0061 | 
					
						
							|  |  |  | //	b082           | | |   | | +-+ | 
					
						
							|  |  |  | //	               | | |   | |   +=v0256 | 
					
						
							|  |  |  | //	b036           | | |   +-+ | 
					
						
							|  |  |  | //	               | | |     +=v0016 | 
					
						
							|  |  |  | //	b014           | +-+ | 
					
						
							|  |  |  | //	               |   |     +=v0017 | 
					
						
							|  |  |  | //	b037           |   |   +-+ | 
					
						
							|  |  |  | //	               |   |   | |   +=v0048 | 
					
						
							|  |  |  | //	b083           |   |   | | +-+ | 
					
						
							|  |  |  | //	               |   |   | | | +=v0049 | 
					
						
							|  |  |  | //	b055           |   |   | +-+ | 
					
						
							|  |  |  | //	               |   |   |   | +=v0062 | 
					
						
							|  |  |  | //	b084           |   |   |   +-+ | 
					
						
							|  |  |  | //	               |   |   |     +=v0063 | 
					
						
							|  |  |  | //	b026           |   | +-+ | 
					
						
							|  |  |  | //	               |   | | |     +=v0030 | 
					
						
							|  |  |  | //	b085           |   | | |   +-+ | 
					
						
							|  |  |  | //	               |   | | |   | +=v0031 | 
					
						
							|  |  |  | //	b056           |   | | | +-+ | 
					
						
							|  |  |  | //	               |   | | | | | +=v0032 | 
					
						
							|  |  |  | //	b086           |   | | | | +-+ | 
					
						
							|  |  |  | //	               |   | | | |   +=v0033 | 
					
						
							|  |  |  | //	b038           |   | | +-+ | 
					
						
							|  |  |  | //	               |   | |   |   +=v0040 | 
					
						
							|  |  |  | //	b087           |   | |   | +-+ | 
					
						
							|  |  |  | //	               |   | |   | | +=v0041 | 
					
						
							|  |  |  | //	b057           |   | |   +-+ | 
					
						
							|  |  |  | //	               |   | |     +=v0022 | 
					
						
							|  |  |  | //	b020           |   +-+ | 
					
						
							|  |  |  | //	               |     +=v0014 | 
					
						
							|  |  |  | //	b008         +-+ | 
					
						
							|  |  |  | //	             | |   +=v0010 | 
					
						
							|  |  |  | //	b015         | | +-+ | 
					
						
							|  |  |  | //	             | | | +=v0011 | 
					
						
							|  |  |  | //	b011         | +-+ | 
					
						
							|  |  |  | //	             |   |     +=v0015 | 
					
						
							|  |  |  | //	b027         |   |   +-+ | 
					
						
							|  |  |  | //	             |   |   | |     +=v0128 | 
					
						
							|  |  |  | //	b088         |   |   | |   +-+ | 
					
						
							|  |  |  | //	             |   |   | |   | +=v0192 | 
					
						
							|  |  |  | //	b058         |   |   | | +-+ | 
					
						
							|  |  |  | //	             |   |   | | | | +=v0026 | 
					
						
							|  |  |  | //	b089         |   |   | | | +-+ | 
					
						
							|  |  |  | //	             |   |   | | |   +=v0027 | 
					
						
							|  |  |  | //	b039         |   |   | +-+ | 
					
						
							|  |  |  | //	             |   |   |   |   +=v0028 | 
					
						
							|  |  |  | //	b090         |   |   |   | +-+ | 
					
						
							|  |  |  | //	             |   |   |   | | +=v0029 | 
					
						
							|  |  |  | //	b059         |   |   |   +-+ | 
					
						
							|  |  |  | //	             |   |   |     +=v0019 | 
					
						
							|  |  |  | //	b021         |   | +-+ | 
					
						
							|  |  |  | //	             |   | | |     +=v0020 | 
					
						
							|  |  |  | //	b060         |   | | |   +-+ | 
					
						
							|  |  |  | //	             |   | | |   | | +=v0034 | 
					
						
							|  |  |  | //	b091         |   | | |   | +-+ | 
					
						
							|  |  |  | //	             |   | | |   |   +=v0035 | 
					
						
							|  |  |  | //	b040         |   | | | +-+ | 
					
						
							|  |  |  | //	             |   | | | | |   +=v0036 | 
					
						
							|  |  |  | //	b092         |   | | | | | +-+ | 
					
						
							|  |  |  | //	             |   | | | | | | +=v0037 | 
					
						
							|  |  |  | //	b061         |   | | | | +-+ | 
					
						
							|  |  |  | //	             |   | | | |   | +=v0038 | 
					
						
							|  |  |  | //	b093         |   | | | |   +-+ | 
					
						
							|  |  |  | //	             |   | | | |     +=v0039 | 
					
						
							|  |  |  | //	b028         |   | | +-+ | 
					
						
							|  |  |  | //	             |   | |   |   +=v0021 | 
					
						
							|  |  |  | //	b062         |   | |   | +-+ | 
					
						
							|  |  |  | //	             |   | |   | | | +=v0042 | 
					
						
							|  |  |  | //	b094         |   | |   | | +-+ | 
					
						
							|  |  |  | //	             |   | |   | |   +=v0043 | 
					
						
							|  |  |  | //	b041         |   | |   +-+ | 
					
						
							|  |  |  | //	             |   | |     +=v0000 | 
					
						
							|  |  |  | //	b016         |   +-+ | 
					
						
							|  |  |  | //	             |     +=v0012 | 
					
						
							|  |  |  | //	b006       +-+ | 
					
						
							|  |  |  | //	           | |   +=v0009 | 
					
						
							|  |  |  | //	b012       | | +-+ | 
					
						
							|  |  |  | //	           | | | +=v0008 | 
					
						
							|  |  |  | //	b009       | +-+ | 
					
						
							|  |  |  | //	           |   +=v0007 | 
					
						
							|  |  |  | //	b004     +-+ | 
					
						
							|  |  |  | //	         | | +=v0006 | 
					
						
							|  |  |  | //	b007     | +-+ | 
					
						
							|  |  |  | //	         |   +=v0005 | 
					
						
							|  |  |  | //	b002   +-+ | 
					
						
							|  |  |  | //	       | | +=v0001 | 
					
						
							|  |  |  | //	b005   | +-+ | 
					
						
							|  |  |  | //	       |   +=v0004 | 
					
						
							|  |  |  | //	b001 +-+ | 
					
						
							|  |  |  | //	       | +=v0003 | 
					
						
							|  |  |  | //	b003   +-+ | 
					
						
							|  |  |  | //	         +=v0002 | 
					
						
							| 
									
										
										
										
											2022-08-10 14:05:14 +02:00
										 |  |  | var blackDecodeTable = [...][2]int16{ | 
					
						
							|  |  |  | 	0:   {0, 0}, | 
					
						
							|  |  |  | 	1:   {2, 3}, | 
					
						
							|  |  |  | 	2:   {4, 5}, | 
					
						
							|  |  |  | 	3:   {^3, ^2}, | 
					
						
							|  |  |  | 	4:   {6, 7}, | 
					
						
							|  |  |  | 	5:   {^1, ^4}, | 
					
						
							|  |  |  | 	6:   {8, 9}, | 
					
						
							|  |  |  | 	7:   {^6, ^5}, | 
					
						
							|  |  |  | 	8:   {10, 11}, | 
					
						
							|  |  |  | 	9:   {12, ^7}, | 
					
						
							|  |  |  | 	10:  {13, 14}, | 
					
						
							|  |  |  | 	11:  {15, 16}, | 
					
						
							|  |  |  | 	12:  {^9, ^8}, | 
					
						
							|  |  |  | 	13:  {17, 18}, | 
					
						
							|  |  |  | 	14:  {19, 20}, | 
					
						
							|  |  |  | 	15:  {^10, ^11}, | 
					
						
							|  |  |  | 	16:  {21, ^12}, | 
					
						
							|  |  |  | 	17:  {0, 22}, | 
					
						
							|  |  |  | 	18:  {23, 24}, | 
					
						
							|  |  |  | 	19:  {^13, 25}, | 
					
						
							|  |  |  | 	20:  {26, ^14}, | 
					
						
							|  |  |  | 	21:  {27, 28}, | 
					
						
							|  |  |  | 	22:  {29, 30}, | 
					
						
							|  |  |  | 	23:  {31, 32}, | 
					
						
							|  |  |  | 	24:  {33, 34}, | 
					
						
							|  |  |  | 	25:  {35, 36}, | 
					
						
							|  |  |  | 	26:  {37, 38}, | 
					
						
							|  |  |  | 	27:  {^15, 39}, | 
					
						
							|  |  |  | 	28:  {40, 41}, | 
					
						
							|  |  |  | 	29:  {42, 43}, | 
					
						
							|  |  |  | 	30:  {44, 45}, | 
					
						
							|  |  |  | 	31:  {^18, 46}, | 
					
						
							|  |  |  | 	32:  {47, 48}, | 
					
						
							|  |  |  | 	33:  {49, 50}, | 
					
						
							|  |  |  | 	34:  {51, ^64}, | 
					
						
							|  |  |  | 	35:  {52, 53}, | 
					
						
							|  |  |  | 	36:  {54, ^16}, | 
					
						
							|  |  |  | 	37:  {^17, 55}, | 
					
						
							|  |  |  | 	38:  {56, 57}, | 
					
						
							|  |  |  | 	39:  {58, 59}, | 
					
						
							|  |  |  | 	40:  {60, 61}, | 
					
						
							|  |  |  | 	41:  {62, ^0}, | 
					
						
							|  |  |  | 	42:  {^1792, 63}, | 
					
						
							|  |  |  | 	43:  {64, 65}, | 
					
						
							|  |  |  | 	44:  {^1856, ^1920}, | 
					
						
							|  |  |  | 	45:  {66, 67}, | 
					
						
							|  |  |  | 	46:  {68, 69}, | 
					
						
							|  |  |  | 	47:  {70, 71}, | 
					
						
							|  |  |  | 	48:  {72, ^24}, | 
					
						
							|  |  |  | 	49:  {^25, 73}, | 
					
						
							|  |  |  | 	50:  {74, 75}, | 
					
						
							|  |  |  | 	51:  {76, 77}, | 
					
						
							|  |  |  | 	52:  {^23, 78}, | 
					
						
							|  |  |  | 	53:  {79, 80}, | 
					
						
							|  |  |  | 	54:  {81, 82}, | 
					
						
							|  |  |  | 	55:  {83, 84}, | 
					
						
							|  |  |  | 	56:  {85, 86}, | 
					
						
							|  |  |  | 	57:  {87, ^22}, | 
					
						
							|  |  |  | 	58:  {88, 89}, | 
					
						
							|  |  |  | 	59:  {90, ^19}, | 
					
						
							|  |  |  | 	60:  {^20, 91}, | 
					
						
							|  |  |  | 	61:  {92, 93}, | 
					
						
							|  |  |  | 	62:  {^21, 94}, | 
					
						
							|  |  |  | 	63:  {^1984, ^2048}, | 
					
						
							|  |  |  | 	64:  {^2112, ^2176}, | 
					
						
							|  |  |  | 	65:  {^2240, ^2304}, | 
					
						
							|  |  |  | 	66:  {^2368, ^2432}, | 
					
						
							|  |  |  | 	67:  {^2496, ^2560}, | 
					
						
							|  |  |  | 	68:  {^52, 95}, | 
					
						
							|  |  |  | 	69:  {96, ^55}, | 
					
						
							|  |  |  | 	70:  {^56, 97}, | 
					
						
							|  |  |  | 	71:  {98, ^59}, | 
					
						
							|  |  |  | 	72:  {^60, 99}, | 
					
						
							|  |  |  | 	73:  {100, ^320}, | 
					
						
							|  |  |  | 	74:  {^384, ^448}, | 
					
						
							|  |  |  | 	75:  {101, ^53}, | 
					
						
							|  |  |  | 	76:  {^54, 102}, | 
					
						
							|  |  |  | 	77:  {103, 104}, | 
					
						
							|  |  |  | 	78:  {^50, ^51}, | 
					
						
							|  |  |  | 	79:  {^44, ^45}, | 
					
						
							|  |  |  | 	80:  {^46, ^47}, | 
					
						
							|  |  |  | 	81:  {^57, ^58}, | 
					
						
							|  |  |  | 	82:  {^61, ^256}, | 
					
						
							|  |  |  | 	83:  {^48, ^49}, | 
					
						
							|  |  |  | 	84:  {^62, ^63}, | 
					
						
							|  |  |  | 	85:  {^30, ^31}, | 
					
						
							|  |  |  | 	86:  {^32, ^33}, | 
					
						
							|  |  |  | 	87:  {^40, ^41}, | 
					
						
							|  |  |  | 	88:  {^128, ^192}, | 
					
						
							|  |  |  | 	89:  {^26, ^27}, | 
					
						
							|  |  |  | 	90:  {^28, ^29}, | 
					
						
							|  |  |  | 	91:  {^34, ^35}, | 
					
						
							|  |  |  | 	92:  {^36, ^37}, | 
					
						
							|  |  |  | 	93:  {^38, ^39}, | 
					
						
							|  |  |  | 	94:  {^42, ^43}, | 
					
						
							|  |  |  | 	95:  {^640, ^704}, | 
					
						
							|  |  |  | 	96:  {^768, ^832}, | 
					
						
							|  |  |  | 	97:  {^1280, ^1344}, | 
					
						
							|  |  |  | 	98:  {^1408, ^1472}, | 
					
						
							|  |  |  | 	99:  {^1536, ^1600}, | 
					
						
							|  |  |  | 	100: {^1664, ^1728}, | 
					
						
							|  |  |  | 	101: {^512, ^576}, | 
					
						
							|  |  |  | 	102: {^896, ^960}, | 
					
						
							|  |  |  | 	103: {^1024, ^1088}, | 
					
						
							|  |  |  | 	104: {^1152, ^1216}, | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const maxCodeLength = 13 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Each encodeTable is represented by an array of bitStrings. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // bitString is a pair of uint32 values representing a bit code. | 
					
						
							|  |  |  | // The nBits low bits of bits make up the actual bit code. | 
					
						
							|  |  |  | // Eg. bitString{0x0004, 8} represents the bitcode "00000100". | 
					
						
							|  |  |  | type bitString struct { | 
					
						
							|  |  |  | 	bits  uint32 | 
					
						
							|  |  |  | 	nBits uint32 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // modeEncodeTable represents Table 1 and the End-of-Line code. | 
					
						
							|  |  |  | var modeEncodeTable = [...]bitString{ | 
					
						
							| 
									
										
										
										
											2022-09-28 18:30:40 +01:00
										 |  |  | 	0: {0x0001, 4}, // "0001" | 
					
						
							|  |  |  | 	1: {0x0001, 3}, // "001" | 
					
						
							|  |  |  | 	2: {0x0001, 1}, // "1" | 
					
						
							|  |  |  | 	3: {0x0003, 3}, // "011" | 
					
						
							|  |  |  | 	4: {0x0003, 6}, // "000011" | 
					
						
							|  |  |  | 	5: {0x0003, 7}, // "0000011" | 
					
						
							|  |  |  | 	6: {0x0002, 3}, // "010" | 
					
						
							|  |  |  | 	7: {0x0002, 6}, // "000010" | 
					
						
							|  |  |  | 	8: {0x0002, 7}, // "0000010" | 
					
						
							|  |  |  | 	9: {0x0001, 7}, // "0000001" | 
					
						
							| 
									
										
										
										
											2022-08-10 14:05:14 +02:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // whiteEncodeTable2 represents Table 2 for a white run. | 
					
						
							|  |  |  | var whiteEncodeTable2 = [...]bitString{ | 
					
						
							|  |  |  | 	0:  {0x0035, 8}, // "00110101" | 
					
						
							|  |  |  | 	1:  {0x0007, 6}, // "000111" | 
					
						
							|  |  |  | 	2:  {0x0007, 4}, // "0111" | 
					
						
							|  |  |  | 	3:  {0x0008, 4}, // "1000" | 
					
						
							|  |  |  | 	4:  {0x000b, 4}, // "1011" | 
					
						
							|  |  |  | 	5:  {0x000c, 4}, // "1100" | 
					
						
							|  |  |  | 	6:  {0x000e, 4}, // "1110" | 
					
						
							|  |  |  | 	7:  {0x000f, 4}, // "1111" | 
					
						
							|  |  |  | 	8:  {0x0013, 5}, // "10011" | 
					
						
							|  |  |  | 	9:  {0x0014, 5}, // "10100" | 
					
						
							|  |  |  | 	10: {0x0007, 5}, // "00111" | 
					
						
							|  |  |  | 	11: {0x0008, 5}, // "01000" | 
					
						
							|  |  |  | 	12: {0x0008, 6}, // "001000" | 
					
						
							|  |  |  | 	13: {0x0003, 6}, // "000011" | 
					
						
							|  |  |  | 	14: {0x0034, 6}, // "110100" | 
					
						
							|  |  |  | 	15: {0x0035, 6}, // "110101" | 
					
						
							|  |  |  | 	16: {0x002a, 6}, // "101010" | 
					
						
							|  |  |  | 	17: {0x002b, 6}, // "101011" | 
					
						
							|  |  |  | 	18: {0x0027, 7}, // "0100111" | 
					
						
							|  |  |  | 	19: {0x000c, 7}, // "0001100" | 
					
						
							|  |  |  | 	20: {0x0008, 7}, // "0001000" | 
					
						
							|  |  |  | 	21: {0x0017, 7}, // "0010111" | 
					
						
							|  |  |  | 	22: {0x0003, 7}, // "0000011" | 
					
						
							|  |  |  | 	23: {0x0004, 7}, // "0000100" | 
					
						
							|  |  |  | 	24: {0x0028, 7}, // "0101000" | 
					
						
							|  |  |  | 	25: {0x002b, 7}, // "0101011" | 
					
						
							|  |  |  | 	26: {0x0013, 7}, // "0010011" | 
					
						
							|  |  |  | 	27: {0x0024, 7}, // "0100100" | 
					
						
							|  |  |  | 	28: {0x0018, 7}, // "0011000" | 
					
						
							|  |  |  | 	29: {0x0002, 8}, // "00000010" | 
					
						
							|  |  |  | 	30: {0x0003, 8}, // "00000011" | 
					
						
							|  |  |  | 	31: {0x001a, 8}, // "00011010" | 
					
						
							|  |  |  | 	32: {0x001b, 8}, // "00011011" | 
					
						
							|  |  |  | 	33: {0x0012, 8}, // "00010010" | 
					
						
							|  |  |  | 	34: {0x0013, 8}, // "00010011" | 
					
						
							|  |  |  | 	35: {0x0014, 8}, // "00010100" | 
					
						
							|  |  |  | 	36: {0x0015, 8}, // "00010101" | 
					
						
							|  |  |  | 	37: {0x0016, 8}, // "00010110" | 
					
						
							|  |  |  | 	38: {0x0017, 8}, // "00010111" | 
					
						
							|  |  |  | 	39: {0x0028, 8}, // "00101000" | 
					
						
							|  |  |  | 	40: {0x0029, 8}, // "00101001" | 
					
						
							|  |  |  | 	41: {0x002a, 8}, // "00101010" | 
					
						
							|  |  |  | 	42: {0x002b, 8}, // "00101011" | 
					
						
							|  |  |  | 	43: {0x002c, 8}, // "00101100" | 
					
						
							|  |  |  | 	44: {0x002d, 8}, // "00101101" | 
					
						
							|  |  |  | 	45: {0x0004, 8}, // "00000100" | 
					
						
							|  |  |  | 	46: {0x0005, 8}, // "00000101" | 
					
						
							|  |  |  | 	47: {0x000a, 8}, // "00001010" | 
					
						
							|  |  |  | 	48: {0x000b, 8}, // "00001011" | 
					
						
							|  |  |  | 	49: {0x0052, 8}, // "01010010" | 
					
						
							|  |  |  | 	50: {0x0053, 8}, // "01010011" | 
					
						
							|  |  |  | 	51: {0x0054, 8}, // "01010100" | 
					
						
							|  |  |  | 	52: {0x0055, 8}, // "01010101" | 
					
						
							|  |  |  | 	53: {0x0024, 8}, // "00100100" | 
					
						
							|  |  |  | 	54: {0x0025, 8}, // "00100101" | 
					
						
							|  |  |  | 	55: {0x0058, 8}, // "01011000" | 
					
						
							|  |  |  | 	56: {0x0059, 8}, // "01011001" | 
					
						
							|  |  |  | 	57: {0x005a, 8}, // "01011010" | 
					
						
							|  |  |  | 	58: {0x005b, 8}, // "01011011" | 
					
						
							|  |  |  | 	59: {0x004a, 8}, // "01001010" | 
					
						
							|  |  |  | 	60: {0x004b, 8}, // "01001011" | 
					
						
							|  |  |  | 	61: {0x0032, 8}, // "00110010" | 
					
						
							|  |  |  | 	62: {0x0033, 8}, // "00110011" | 
					
						
							|  |  |  | 	63: {0x0034, 8}, // "00110100" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // whiteEncodeTable3 represents Table 3 for a white run. | 
					
						
							|  |  |  | var whiteEncodeTable3 = [...]bitString{ | 
					
						
							|  |  |  | 	0:  {0x001b, 5},  // "11011" | 
					
						
							|  |  |  | 	1:  {0x0012, 5},  // "10010" | 
					
						
							|  |  |  | 	2:  {0x0017, 6},  // "010111" | 
					
						
							|  |  |  | 	3:  {0x0037, 7},  // "0110111" | 
					
						
							|  |  |  | 	4:  {0x0036, 8},  // "00110110" | 
					
						
							|  |  |  | 	5:  {0x0037, 8},  // "00110111" | 
					
						
							|  |  |  | 	6:  {0x0064, 8},  // "01100100" | 
					
						
							|  |  |  | 	7:  {0x0065, 8},  // "01100101" | 
					
						
							|  |  |  | 	8:  {0x0068, 8},  // "01101000" | 
					
						
							|  |  |  | 	9:  {0x0067, 8},  // "01100111" | 
					
						
							|  |  |  | 	10: {0x00cc, 9},  // "011001100" | 
					
						
							|  |  |  | 	11: {0x00cd, 9},  // "011001101" | 
					
						
							|  |  |  | 	12: {0x00d2, 9},  // "011010010" | 
					
						
							|  |  |  | 	13: {0x00d3, 9},  // "011010011" | 
					
						
							|  |  |  | 	14: {0x00d4, 9},  // "011010100" | 
					
						
							|  |  |  | 	15: {0x00d5, 9},  // "011010101" | 
					
						
							|  |  |  | 	16: {0x00d6, 9},  // "011010110" | 
					
						
							|  |  |  | 	17: {0x00d7, 9},  // "011010111" | 
					
						
							|  |  |  | 	18: {0x00d8, 9},  // "011011000" | 
					
						
							|  |  |  | 	19: {0x00d9, 9},  // "011011001" | 
					
						
							|  |  |  | 	20: {0x00da, 9},  // "011011010" | 
					
						
							|  |  |  | 	21: {0x00db, 9},  // "011011011" | 
					
						
							|  |  |  | 	22: {0x0098, 9},  // "010011000" | 
					
						
							|  |  |  | 	23: {0x0099, 9},  // "010011001" | 
					
						
							|  |  |  | 	24: {0x009a, 9},  // "010011010" | 
					
						
							|  |  |  | 	25: {0x0018, 6},  // "011000" | 
					
						
							|  |  |  | 	26: {0x009b, 9},  // "010011011" | 
					
						
							|  |  |  | 	27: {0x0008, 11}, // "00000001000" | 
					
						
							|  |  |  | 	28: {0x000c, 11}, // "00000001100" | 
					
						
							|  |  |  | 	29: {0x000d, 11}, // "00000001101" | 
					
						
							|  |  |  | 	30: {0x0012, 12}, // "000000010010" | 
					
						
							|  |  |  | 	31: {0x0013, 12}, // "000000010011" | 
					
						
							|  |  |  | 	32: {0x0014, 12}, // "000000010100" | 
					
						
							|  |  |  | 	33: {0x0015, 12}, // "000000010101" | 
					
						
							|  |  |  | 	34: {0x0016, 12}, // "000000010110" | 
					
						
							|  |  |  | 	35: {0x0017, 12}, // "000000010111" | 
					
						
							|  |  |  | 	36: {0x001c, 12}, // "000000011100" | 
					
						
							|  |  |  | 	37: {0x001d, 12}, // "000000011101" | 
					
						
							|  |  |  | 	38: {0x001e, 12}, // "000000011110" | 
					
						
							|  |  |  | 	39: {0x001f, 12}, // "000000011111" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // blackEncodeTable2 represents Table 2 for a black run. | 
					
						
							|  |  |  | var blackEncodeTable2 = [...]bitString{ | 
					
						
							|  |  |  | 	0:  {0x0037, 10}, // "0000110111" | 
					
						
							|  |  |  | 	1:  {0x0002, 3},  // "010" | 
					
						
							|  |  |  | 	2:  {0x0003, 2},  // "11" | 
					
						
							|  |  |  | 	3:  {0x0002, 2},  // "10" | 
					
						
							|  |  |  | 	4:  {0x0003, 3},  // "011" | 
					
						
							|  |  |  | 	5:  {0x0003, 4},  // "0011" | 
					
						
							|  |  |  | 	6:  {0x0002, 4},  // "0010" | 
					
						
							|  |  |  | 	7:  {0x0003, 5},  // "00011" | 
					
						
							|  |  |  | 	8:  {0x0005, 6},  // "000101" | 
					
						
							|  |  |  | 	9:  {0x0004, 6},  // "000100" | 
					
						
							|  |  |  | 	10: {0x0004, 7},  // "0000100" | 
					
						
							|  |  |  | 	11: {0x0005, 7},  // "0000101" | 
					
						
							|  |  |  | 	12: {0x0007, 7},  // "0000111" | 
					
						
							|  |  |  | 	13: {0x0004, 8},  // "00000100" | 
					
						
							|  |  |  | 	14: {0x0007, 8},  // "00000111" | 
					
						
							|  |  |  | 	15: {0x0018, 9},  // "000011000" | 
					
						
							|  |  |  | 	16: {0x0017, 10}, // "0000010111" | 
					
						
							|  |  |  | 	17: {0x0018, 10}, // "0000011000" | 
					
						
							|  |  |  | 	18: {0x0008, 10}, // "0000001000" | 
					
						
							|  |  |  | 	19: {0x0067, 11}, // "00001100111" | 
					
						
							|  |  |  | 	20: {0x0068, 11}, // "00001101000" | 
					
						
							|  |  |  | 	21: {0x006c, 11}, // "00001101100" | 
					
						
							|  |  |  | 	22: {0x0037, 11}, // "00000110111" | 
					
						
							|  |  |  | 	23: {0x0028, 11}, // "00000101000" | 
					
						
							|  |  |  | 	24: {0x0017, 11}, // "00000010111" | 
					
						
							|  |  |  | 	25: {0x0018, 11}, // "00000011000" | 
					
						
							|  |  |  | 	26: {0x00ca, 12}, // "000011001010" | 
					
						
							|  |  |  | 	27: {0x00cb, 12}, // "000011001011" | 
					
						
							|  |  |  | 	28: {0x00cc, 12}, // "000011001100" | 
					
						
							|  |  |  | 	29: {0x00cd, 12}, // "000011001101" | 
					
						
							|  |  |  | 	30: {0x0068, 12}, // "000001101000" | 
					
						
							|  |  |  | 	31: {0x0069, 12}, // "000001101001" | 
					
						
							|  |  |  | 	32: {0x006a, 12}, // "000001101010" | 
					
						
							|  |  |  | 	33: {0x006b, 12}, // "000001101011" | 
					
						
							|  |  |  | 	34: {0x00d2, 12}, // "000011010010" | 
					
						
							|  |  |  | 	35: {0x00d3, 12}, // "000011010011" | 
					
						
							|  |  |  | 	36: {0x00d4, 12}, // "000011010100" | 
					
						
							|  |  |  | 	37: {0x00d5, 12}, // "000011010101" | 
					
						
							|  |  |  | 	38: {0x00d6, 12}, // "000011010110" | 
					
						
							|  |  |  | 	39: {0x00d7, 12}, // "000011010111" | 
					
						
							|  |  |  | 	40: {0x006c, 12}, // "000001101100" | 
					
						
							|  |  |  | 	41: {0x006d, 12}, // "000001101101" | 
					
						
							|  |  |  | 	42: {0x00da, 12}, // "000011011010" | 
					
						
							|  |  |  | 	43: {0x00db, 12}, // "000011011011" | 
					
						
							|  |  |  | 	44: {0x0054, 12}, // "000001010100" | 
					
						
							|  |  |  | 	45: {0x0055, 12}, // "000001010101" | 
					
						
							|  |  |  | 	46: {0x0056, 12}, // "000001010110" | 
					
						
							|  |  |  | 	47: {0x0057, 12}, // "000001010111" | 
					
						
							|  |  |  | 	48: {0x0064, 12}, // "000001100100" | 
					
						
							|  |  |  | 	49: {0x0065, 12}, // "000001100101" | 
					
						
							|  |  |  | 	50: {0x0052, 12}, // "000001010010" | 
					
						
							|  |  |  | 	51: {0x0053, 12}, // "000001010011" | 
					
						
							|  |  |  | 	52: {0x0024, 12}, // "000000100100" | 
					
						
							|  |  |  | 	53: {0x0037, 12}, // "000000110111" | 
					
						
							|  |  |  | 	54: {0x0038, 12}, // "000000111000" | 
					
						
							|  |  |  | 	55: {0x0027, 12}, // "000000100111" | 
					
						
							|  |  |  | 	56: {0x0028, 12}, // "000000101000" | 
					
						
							|  |  |  | 	57: {0x0058, 12}, // "000001011000" | 
					
						
							|  |  |  | 	58: {0x0059, 12}, // "000001011001" | 
					
						
							|  |  |  | 	59: {0x002b, 12}, // "000000101011" | 
					
						
							|  |  |  | 	60: {0x002c, 12}, // "000000101100" | 
					
						
							|  |  |  | 	61: {0x005a, 12}, // "000001011010" | 
					
						
							|  |  |  | 	62: {0x0066, 12}, // "000001100110" | 
					
						
							|  |  |  | 	63: {0x0067, 12}, // "000001100111" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // blackEncodeTable3 represents Table 3 for a black run. | 
					
						
							|  |  |  | var blackEncodeTable3 = [...]bitString{ | 
					
						
							|  |  |  | 	0:  {0x000f, 10}, // "0000001111" | 
					
						
							|  |  |  | 	1:  {0x00c8, 12}, // "000011001000" | 
					
						
							|  |  |  | 	2:  {0x00c9, 12}, // "000011001001" | 
					
						
							|  |  |  | 	3:  {0x005b, 12}, // "000001011011" | 
					
						
							|  |  |  | 	4:  {0x0033, 12}, // "000000110011" | 
					
						
							|  |  |  | 	5:  {0x0034, 12}, // "000000110100" | 
					
						
							|  |  |  | 	6:  {0x0035, 12}, // "000000110101" | 
					
						
							|  |  |  | 	7:  {0x006c, 13}, // "0000001101100" | 
					
						
							|  |  |  | 	8:  {0x006d, 13}, // "0000001101101" | 
					
						
							|  |  |  | 	9:  {0x004a, 13}, // "0000001001010" | 
					
						
							|  |  |  | 	10: {0x004b, 13}, // "0000001001011" | 
					
						
							|  |  |  | 	11: {0x004c, 13}, // "0000001001100" | 
					
						
							|  |  |  | 	12: {0x004d, 13}, // "0000001001101" | 
					
						
							|  |  |  | 	13: {0x0072, 13}, // "0000001110010" | 
					
						
							|  |  |  | 	14: {0x0073, 13}, // "0000001110011" | 
					
						
							|  |  |  | 	15: {0x0074, 13}, // "0000001110100" | 
					
						
							|  |  |  | 	16: {0x0075, 13}, // "0000001110101" | 
					
						
							|  |  |  | 	17: {0x0076, 13}, // "0000001110110" | 
					
						
							|  |  |  | 	18: {0x0077, 13}, // "0000001110111" | 
					
						
							|  |  |  | 	19: {0x0052, 13}, // "0000001010010" | 
					
						
							|  |  |  | 	20: {0x0053, 13}, // "0000001010011" | 
					
						
							|  |  |  | 	21: {0x0054, 13}, // "0000001010100" | 
					
						
							|  |  |  | 	22: {0x0055, 13}, // "0000001010101" | 
					
						
							|  |  |  | 	23: {0x005a, 13}, // "0000001011010" | 
					
						
							|  |  |  | 	24: {0x005b, 13}, // "0000001011011" | 
					
						
							|  |  |  | 	25: {0x0064, 13}, // "0000001100100" | 
					
						
							|  |  |  | 	26: {0x0065, 13}, // "0000001100101" | 
					
						
							|  |  |  | 	27: {0x0008, 11}, // "00000001000" | 
					
						
							|  |  |  | 	28: {0x000c, 11}, // "00000001100" | 
					
						
							|  |  |  | 	29: {0x000d, 11}, // "00000001101" | 
					
						
							|  |  |  | 	30: {0x0012, 12}, // "000000010010" | 
					
						
							|  |  |  | 	31: {0x0013, 12}, // "000000010011" | 
					
						
							|  |  |  | 	32: {0x0014, 12}, // "000000010100" | 
					
						
							|  |  |  | 	33: {0x0015, 12}, // "000000010101" | 
					
						
							|  |  |  | 	34: {0x0016, 12}, // "000000010110" | 
					
						
							|  |  |  | 	35: {0x0017, 12}, // "000000010111" | 
					
						
							|  |  |  | 	36: {0x001c, 12}, // "000000011100" | 
					
						
							|  |  |  | 	37: {0x001d, 12}, // "000000011101" | 
					
						
							|  |  |  | 	38: {0x001e, 12}, // "000000011110" | 
					
						
							|  |  |  | 	39: {0x001f, 12}, // "000000011111" | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // COPY PASTE table.go BEGIN | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | const ( | 
					
						
							|  |  |  | 	modePass = iota // Pass | 
					
						
							|  |  |  | 	modeH           // Horizontal | 
					
						
							|  |  |  | 	modeV0          // Vertical-0 | 
					
						
							|  |  |  | 	modeVR1         // Vertical-Right-1 | 
					
						
							|  |  |  | 	modeVR2         // Vertical-Right-2 | 
					
						
							|  |  |  | 	modeVR3         // Vertical-Right-3 | 
					
						
							|  |  |  | 	modeVL1         // Vertical-Left-1 | 
					
						
							|  |  |  | 	modeVL2         // Vertical-Left-2 | 
					
						
							|  |  |  | 	modeVL3         // Vertical-Left-3 | 
					
						
							|  |  |  | 	modeExt         // Extension | 
					
						
							|  |  |  | ) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // COPY PASTE table.go END |