File Coverage

blib/lib/GD/Barcode/QRcode.pm
Criterion Covered Total %
statement 207 842 24.5
branch 24 2058 1.1
condition 11 2964 0.3
subroutine 10 15 66.6
pod 3 4 75.0
total 255 5883 4.3


line stmt bran cond sub pod time code
1             # GD::Barcode::QRcode 1.20 Edited (^^;;; by Hippo2000
2             # based on QRcode image CGI version 0.50 (C)2000-2002,Y.Swetake
3 1     1   190166 use strict;
  1         7  
  1         26  
4 1     1   4 use warnings;
  1         1  
  1         33  
5              
6             package GD::Barcode::QRcode;
7              
8 1     1   373 use parent qw(Exporter);
  1         248  
  1         4  
9 1     1   47 use vars qw($VERSION @ISA $errStr);
  1         2  
  1         1802  
10             @ISA = qw(GD::Barcode Exporter);
11             $VERSION = '1.99_04';
12              
13             sub new {
14 1     1 1 78 my ( $sClass, $sTxt, $rhPrm ) = @_;
15 1         2 $errStr = '';
16 1         2 my $oSelf = {};
17 1         2 bless $oSelf, $sClass;
18 1 50       3 return if ( $errStr = $oSelf->init( $sTxt, $rhPrm ) );
19 1         6 return $oSelf;
20             }
21              
22             sub init {
23 1     1 0 3 my ( $oSelf, $sTxt, $rhPrm ) = @_;
24              
25             #CalcCd
26 1         8 $oSelf->{text} = $sTxt;
27 1   50     7 $oSelf->{Ecc} = $rhPrm->{Ecc} || ' ';
28 1         4 $oSelf->{Ecc} =~ tr/LMHQ/M/c; #Not /LMQH/ => M
29 1   50     5 $oSelf->{Version} = $rhPrm->{Version} || 0;
30 1   50     5 $oSelf->{ModuleSize} = $rhPrm->{ModuleSize} || 1;
31 1         3 $oSelf->{ModuleSize} = int( $oSelf->{ModuleSize} );
32              
33 1         2 my $iDatCnt = 0;
34 1         3 my @aDatVal;
35             my @aDatBit;
36 1         0 my $raPlusWords;
37 1         0 my $iWordsPos;
38 1         2 $aDatBit[$iDatCnt] = 4;
39              
40             # Determin Data Type(8Bit, AlphaNumeric, Numeric .. not supported Kanji-Mode)
41 1 50       12 if ( $oSelf->{text} =~ /\D/ ) {
42 0 0       0 if ( $oSelf->{text} =~ /[^0-9A-Z \$\*\%\+\-\.\/\:]/ ) {
43              
44             # --- 8bit byte mode
45 0         0 ( $iDatCnt, $raPlusWords ) =
46             $oSelf->_cnv8bit( $iDatCnt, \@aDatVal, \@aDatBit, );
47             }
48             else {
49             # ---- alphanumeric mode
50 0         0 ( $iDatCnt, $raPlusWords ) =
51             $oSelf->_cnvAlphaNumeric( $iDatCnt, \@aDatVal, \@aDatBit );
52             }
53             }
54             else {
55             # ---- numeric mode
56 1         5 ( $iDatCnt, $raPlusWords ) =
57             $oSelf->_cnvNumeric( $iDatCnt, \@aDatVal, \@aDatBit );
58             }
59 1         2 my $iTotalBits = 0;
60 1         4 for ( my $i = 0 ; $i < $iDatCnt ; ++$i ) {
61 5         9 $iTotalBits += $aDatBit[$i];
62             }
63              
64             # Calc version(=Size)
65 1         1 my ( $iMaxDatBits, $iCdNumPlus, $iMaxCodeWords, $iRemainBits );
66 1         6 ( $iMaxDatBits, $iCdNumPlus, $iMaxCodeWords, $iRemainBits ) =
67             $oSelf->_calcVersion( $iTotalBits, $raPlusWords );
68 1         2 $iTotalBits += $iCdNumPlus;
69              
70 1         2 $aDatBit[ $oSelf->{WordsPos} ] += $iCdNumPlus;
71 1         3 $oSelf->{MaxModules} = 17 + ( $oSelf->{Version} * 4 );
72 1         3 my $iBitCnt = ( $iMaxCodeWords * 8 ) + $iRemainBits;
73 1         2 my $iMaxDatWords = ( $iMaxDatBits / 8 );
74              
75             # ---- read version ECC data file.
76 1         2 my ( $sMatX, $sMatY, $sMasks, $sFmtInfX2, $sFmtInfY2, $sRsEccCodeWord,
77             $sRso );
78             my $sRec =
79             do( 'GD/Barcode/QRcode/qrv'
80             . sprintf( '%02d', $oSelf->{Version} )
81             . $oSelf->{Ecc}
82 1         339 . '.dat' );
83              
84 1         21 ( $sMatX, $sMatY, $sMasks, $sFmtInfX2, $sFmtInfY2, $sRsEccCodeWord, $sRso )
85             = unpack( ( "a$iBitCnt" x 3 ) . ( 'a15' x 2 ) . 'a1a128',
86             pack( 'H*', $sRec ) );
87              
88 1         3 my $iRsEccWords = ord($sRsEccCodeWord);
89 1         10 my @aMatrixX = unpack( "C*", $sMatX );
90 1         8 my @aMatrixY = unpack( "C*", $sMatY );
91 1         21 my @aMask = unpack( "C*", $sMasks );
92 1         5 my @aRsBlockOrder = unpack( "C*", $sRso );
93 1         3 my @aFmtInfX2 = unpack( "C*", $sFmtInfX2 );
94 1         3 my @aFmtInfY2 = unpack( "C*", $sFmtInfY2 );
95              
96 1         341 $sRec =
97             do( 'GD/Barcode/QRcode/rsc' . sprintf( '%02d', $iRsEccWords ) . '.dat' );
98 1         80 my @aRsCalTbl = unpack( "a$iRsEccWords" x 256, pack( 'H*', $sRec ) );
99              
100             # ---- set teminator
101 1 50       6 if ( $iTotalBits <= ( $iMaxDatBits - 4 ) ) {
    0          
    0          
102 1         2 $aDatVal[$iDatCnt] = 0;
103 1         2 $aDatBit[$iDatCnt] = 4;
104             }
105             elsif ( $iTotalBits < $iMaxDatBits ) {
106 0         0 $aDatVal[$iDatCnt] = 0;
107 0         0 $aDatBit[$iDatCnt] = $iMaxDatBits - $iTotalBits;
108             }
109             elsif ( $iTotalBits > $iMaxDatBits ) {
110 0         0 die "Overflow error. version $oSelf->{Version}\n"
111             . "total bits: $iTotalBits max bits: $iMaxDatBits\n";
112             }
113 1         2 my $iCodeWords = 0;
114 1         2 my @aCodeWords;
115 1         2 $aCodeWords[0] = 0;
116 1         2 my $iRestBits = 8;
117 1         5 for ( my $i = 0 ; $i <= $iDatCnt ; ++$i ) {
118 6         7 my $sBuff = $aDatVal[$i];
119 6         7 my $iBuffBit = $aDatBit[$i];
120              
121 6         6 my $iFlg = 1;
122 6         10 while ($iFlg) {
123 10 100       15 if ( $iRestBits > $iBuffBit ) {
124 5         7 $aCodeWords[$iCodeWords] =
125             ( ( $aCodeWords[$iCodeWords] << $iBuffBit ) | $sBuff );
126 5         6 $iRestBits -= $iBuffBit;
127 5         12 $iFlg = 0;
128             }
129             else {
130 5         5 $iBuffBit -= $iRestBits;
131 5         7 $aCodeWords[$iCodeWords] =
132             ( ( $aCodeWords[$iCodeWords] << $iRestBits ) |
133             ( $sBuff >> $iBuffBit ) );
134 5 100       7 if ( $iBuffBit == 0 ) {
135 1         2 $iFlg = 0;
136             }
137             else {
138 4         5 $sBuff = ( $sBuff & ( ( 1 << $iBuffBit ) - 1 ) );
139 4         5 $iFlg = 1;
140             }
141 5         5 $iCodeWords++;
142 5 50       9 if ( $iCodeWords < $iMaxDatWords - 1 ) {
143 5         6 $aCodeWords[$iCodeWords] = 0;
144             }
145 5         8 $iRestBits = 8;
146             }
147             }
148             }
149 1 50       2 if ( $iRestBits != 8 ) {
150 1         2 $aCodeWords[$iCodeWords] <<= $iRestBits;
151             }
152             else {
153 0         0 --$iCodeWords;
154             }
155              
156             # Padding data
157 1 50       3 if ( $iCodeWords < $iMaxDatWords - 1 ) {
158 1         1 my $iFlg = 1;
159 1         3 while ( $iCodeWords < ( $iMaxDatWords - 1 ) ) {
160 10 100       16 $aCodeWords[ ++$iCodeWords ] = ( $iFlg == 1 ) ? 0xEC : 0x11;
161 10         14 $iFlg *= -1;
162             }
163             }
164              
165             # ---- RS-ECC prepare
166 1         2 my $iRsBlock = 0;
167 1         1 my @aRsTmp = ();
168 1         2 my $j = 0;
169              
170             # Divide RS-Blocks
171 1         3 for ( my $i = 0 ; $i < $iMaxDatWords ; ++$i ) {
172 16         22 $aRsTmp[$iRsBlock] .= chr( $aCodeWords[$i] );
173 16 100       27 if ( ++$j >= $aRsBlockOrder[$iRsBlock] - $iRsEccWords ) {
174 1         2 $j = 0;
175 1         3 ++$iRsBlock;
176             }
177             }
178              
179             # RS-ECC main
180 1         3 for ( $iRsBlock = 0 ; $iRsBlock <= scalar(@aRsBlockOrder) ; $iRsBlock++ ) {
181 2         3 my $sRsCodeWords = $aRsBlockOrder[$iRsBlock];
182 2   100     15 $sRsCodeWords ||= 0;
183 2         6 $sRsCodeWords =~ s/\n//g;
184 2   100     8 my $sRsTmp = ( $aRsTmp[$iRsBlock] || '' ) . ( chr(0) x $iRsEccWords );
185              
186 2         12 for ( $j = ( $sRsCodeWords - $iRsEccWords ) ; $j > 0 ; $j-- ) {
187 16         21 my $iFirst = ord( substr( $sRsTmp, 0, 1 ) );
188 16 50       21 if ( $iFirst != 0 ) {
189 16         30 $sRsTmp = substr( $sRsTmp, 1 ) ^ $aRsCalTbl[$iFirst];
190             }
191             else {
192 0         0 $sRsTmp = substr( $sRsTmp, 1 );
193             }
194             }
195 2         8 push( @aCodeWords, unpack( "C*", $sRsTmp ) );
196             }
197              
198             # ---- put data
199             # ---- flash matrix
200 1         2 my @aCont;
201 1         3 $oSelf->{Cont} = \@aCont;
202 1         4 for ( my $i = 0 ; $i < $oSelf->{MaxModules} ; $i++ ) {
203 21         79 $aCont[$i] = [ (0) x $oSelf->{MaxModules} ];
204             }
205 1         6 for ( my $i = 0 ; $i < $iMaxCodeWords ; $i++ ) {
206 26         31 my $iCodeWord = $aCodeWords[$i];
207 26         36 for ( my $j = 7 ; $j >= 0 ; $j-- ) {
208 208         221 my $iCodeWordBitNum = ( $i * 8 ) + $j;
209 208         246 $aCont[ $aMatrixX[$iCodeWordBitNum] ][ $aMatrixY[$iCodeWordBitNum] ]
210             = ( ( 255 * ( $iCodeWord & 1 ) ) ^ $aMask[$iCodeWordBitNum] );
211 208         314 $iCodeWord >>= 1;
212             }
213             }
214 1         10 for ( my $iMatrixRemain = $iRemainBits ; $iMatrixRemain ; $iMatrixRemain-- )
215             {
216 0         0 my $iRemainBitTmp = $iMatrixRemain + ( $iMaxCodeWords * 8 );
217 0         0 $aCont[ $aMatrixX[$iRemainBitTmp] ][ $aMatrixY[$iRemainBitTmp] ] =
218             ( 255 ^ $aMask[$iRemainBitTmp] );
219             }
220              
221             # ---- mask select
222 1         2 my $sHorMst = '';
223 1         2 my $sVerMst = '';
224 1         4 for ( my $i = 0 ; $i < $oSelf->{MaxModules} ; ++$i ) {
225 21         29 for ( $j = 0 ; $j < $oSelf->{MaxModules} ; ++$j ) {
226 441         505 $sHorMst .= chr( $aCont[$j][$i] );
227 441         670 $sVerMst .= chr( $aCont[$i][$j] );
228             }
229             }
230 1         6 my $iMask = $oSelf->_calcMask( $sHorMst, $sVerMst );
231 1         4 $oSelf->{MaskCont} = ( 1 << $iMask );
232              
233             # ---- format information
234 1         9 my %hFmtInf = (
235             'M' => [
236             '101010000010010', '101000100100101',
237             '101111001111100', '101101101001011',
238             '100010111111001', '100000011001110',
239             '100111110010111', '100101010100000',
240             ],
241             'L' => [
242             '111011111000100', '111001011110011',
243             '111110110101010', '111100010011101',
244             '110011000101111', '110001100011000',
245             '110110001000001', '110100101110110',
246             ],
247             'H' => [
248             '001011010001001', '001001110111110',
249             '001110011100111', '001100111010000',
250             '000011101100010', '000001001010101',
251             '000110100001100', '000100000111011',
252             ],
253             'Q' => [
254             '011010101011111', '011000001101000',
255             '011111100110001', '011101000000110',
256             '010010010110100', '010000110000011',
257             '010111011011010', '010101111101101',
258             ],
259             );
260 1         4 my @aFmtInfX1 = ( 0, 1, 2, 3, 4, 5, 7, 8, 8, 8, 8, 8, 8, 8, 8 );
261 1         3 my @aFmtInfY1 = ( 8, 8, 8, 8, 8, 8, 8, 8, 7, 5, 4, 3, 2, 1, 0 );
262 1         7 my @aContWk = split //, $hFmtInf{ $oSelf->{Ecc} }->[$iMask];
263 1         5 for ( my $i = 0 ; $i < 15 ; ++$i ) {
264 15         22 $aCont[ $aFmtInfX1[$i] ][ $aFmtInfY1[$i] ] = $aContWk[$i] * 255;
265 15         24 $aCont[ $aFmtInfX2[$i] ][ $aFmtInfY2[$i] ] = $aContWk[$i] * 255;
266             }
267 1         30 return '';
268             }
269              
270             sub barcode {
271 0     0 1 0 my ($oSelf) = @_;
272 0         0 my $sBarL;
273 0         0 my $iModSize = $oSelf->{ModuleSize};
274 0         0 my $sBlack = '1' x $iModSize;
275 0         0 my $sWhite = '0' x $iModSize;
276              
277 0         0 my $sPtn = '';
278             $sPtn =
279 0         0 ( ( $sWhite x ( $oSelf->{MaxModules} + 8 ) ) . "\n" ) x ( 4 * $iModSize );
280 0         0 my @aCont = @{ $oSelf->{Cont} };
  0         0  
281              
282 0         0 for ( my $iY = 0 ; $iY < $oSelf->{MaxModules} ; ++$iY ) {
283 0         0 $sBarL = $sWhite x 4;
284 0         0 for ( my $iX = 0 ; $iX < $oSelf->{MaxModules} ; ++$iX ) {
285             $sBarL .=
286             ( ( _calcFrm( $oSelf->{Version}, $iY, $iX ) )
287 0 0 0     0 || ( ( $aCont[$iX][$iY] & $oSelf->{MaskCont} ) ) )
288             ? $sBlack
289             : $sWhite;
290             }
291 0         0 $sBarL .= ( $sWhite x 4 ) . "\n";
292 0         0 $sPtn .= $sBarL x $iModSize;
293             }
294             $sPtn .=
295 0         0 ( $sWhite x ( $oSelf->{MaxModules} + 8 ) . "\n" ) x ( 4 * $iModSize );
296 0         0 return $sPtn;
297             }
298              
299             sub plot {
300 0     0 1 0 my ( $oSelf, %hParam ) = @_;
301 0         0 my $iUnitSize = $oSelf->{ModuleSize};
302             my $oOutImg = GD::Image->new(
303             ( $oSelf->{MaxModules} + 8 ) * $iUnitSize,
304 0         0 ( $oSelf->{MaxModules} + 8 ) * $iUnitSize
305             );
306 0         0 my $cWhite = $oOutImg->colorAllocate( 255, 255, 255 ); #For BackColor
307 0         0 my $cBlack = $oOutImg->colorAllocate( 0, 0, 0 );
308 0         0 my @aCont = @{ $oSelf->{Cont} };
  0         0  
309 0         0 for ( my $iY = 0 ; $iY < $oSelf->{MaxModules} ; ++$iY ) {
310 0         0 for ( my $iX = 0 ; $iX < $oSelf->{MaxModules} ; ++$iX ) {
311 0 0 0     0 if ( ( _calcFrm( $oSelf->{Version}, $iY, $iX ) )
312             || ( ( $aCont[$iX][$iY] & $oSelf->{MaskCont} ) ) )
313             {
314 0 0       0 if ( $oSelf->{ModuleSize} <= 1 ) {
315 0         0 $oOutImg->setPixel( $iX + 4, $iY + 4, $cBlack );
316             }
317             else {
318             $oOutImg->filledRectangle(
319             ( $iX + 4 ) * $iUnitSize,
320             ( $iY + 4 ) * $iUnitSize,
321             ( $iX + 4 + 1 ) * $oSelf->{ModuleSize} - 1,
322 0         0 ( $iY + 4 + 1 ) * $oSelf->{ModuleSize} - 1,
323             $cBlack
324             );
325             }
326             }
327             }
328             }
329 0         0 return $oOutImg;
330             }
331              
332             sub _calcVersion {
333 1     1   2 my ( $oSelf, $iTtlBits, $raPlusWords ) = @_;
334              
335 1         28 my %hMaxDatBits = (
336             'M' => [
337             0, 128, 224, 352, 512, 688, 864, 992,
338             1232, 1456, 1728, 2032, 2320, 2672, 2920, 3320,
339             3624, 4056, 4504, 5016, 5352, 5712, 6256, 6880,
340             7312, 8000, 8496, 9024, 9544, 10136, 10984, 11640,
341             12328, 13048, 13800, 14496, 15312, 15936, 16816, 17728,
342             18672,
343             ],
344             'L' => [
345             0, 152, 272, 440, 640, 864, 1088, 1248,
346             1552, 1856, 2192, 2592, 2960, 3424, 3688, 4184,
347             4712, 5176, 5768, 6360, 6888, 7456, 8048, 8752,
348             9392, 10208, 10960, 11744, 12248, 13048, 13880, 14744,
349             15640, 16568, 17528, 18448, 19472, 20528, 21616, 22496,
350             23648,
351             ],
352             'H' => [
353             0, 72, 128, 208, 288, 368, 480, 528, 688, 800,
354             976, 1120, 1264, 1440, 1576, 1784, 2024, 2264, 2504, 2728,
355             3080, 3248, 3536, 3712, 4112, 4304, 4768, 5024, 5288, 5608,
356             5960, 6344, 6760, 7208, 7688, 7888, 8432, 8768, 9136, 9776,
357             10208,
358             ],
359             'Q' => [
360             0, 104, 176, 272, 384, 496, 608, 704,
361             880, 1056, 1232, 1440, 1648, 1952, 2088, 2360,
362             2600, 2936, 3176, 3560, 3880, 4096, 4544, 4912,
363             5312, 5744, 6032, 6464, 6968, 7288, 7880, 8264,
364             8920, 9368, 9848, 10288, 10832, 11408, 12016, 12656,
365             13328,
366             ],
367             );
368 1         7 my @aMaxCodeWords = (
369             0, 26, 44, 70, 100, 134, 172, 196, 242, 292,
370             346, 404, 466, 532, 581, 655, 733, 815, 901, 991,
371             1085, 1156, 1258, 1364, 1474, 1588, 1706, 1828, 1921, 2051,
372             2185, 2323, 2465, 2611, 2761, 2876, 3034, 3196, 3362, 3532,
373             3706
374             );
375              
376 1         10 my @aRemainBits = (
377             0, 0, 7, 7, 7, 7, 7, 0, 0, 0, 0, 0, 0, 0, 3, 3, 3, 3, 3, 3, 3, 4,
378             4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0
379             );
380              
381 1 50       5 if ( !$oSelf->{Version} ) { #--- auto version select
382 1         4 for (
383             $oSelf->{Version} = 1 ;
384             $oSelf->{Version} <= 40 ;
385             ++$oSelf->{Version}
386             )
387             {
388             last
389             if ( $hMaxDatBits{ $oSelf->{Ecc} }->[ $oSelf->{Version} ] >=
390 1 50       5 $iTtlBits + $raPlusWords->[ $oSelf->{Version} ] );
391             }
392             }
393             return (
394             $hMaxDatBits{ $oSelf->{Ecc} }->[ $oSelf->{Version} ],
395             $raPlusWords->[ $oSelf->{Version} ],
396             $aMaxCodeWords[ $oSelf->{Version} ],
397 1         9 $aRemainBits[ $oSelf->{Version} ],
398             );
399             }
400              
401             sub _calcMask {
402 1     1   9 my ( $oSelf, $sHorMst, $sVerMst ) = @_;
403 1     1   8 use constant SPCHAR => "\xAA";
  1         2  
  1         10549  
404              
405 1         3 my $iMinDtmScore = 0;
406 1         3 my $iAllMatrix = $oSelf->{MaxModules} * $oSelf->{MaxModules};
407 1         1 my $iMask = 0;
408 1         4 for ( my $i = 0 ; $i < 8 ; ++$i ) {
409 8         11 my $iBit = 1 << $i;
410 8         30 my $iBitR = ( ~$iBit ) & 0xFF;
411              
412 8         15 my $iBitMask = chr($iBit) x $iAllMatrix;
413 8         16 my $iHor = $sHorMst & $iBitMask;
414 8         15 my $iVer = $sVerMst & $iBitMask;
415              
416             my $iVerAnd =
417             ( ( SPCHAR x $oSelf->{MaxModules} ) . $iVer ) &
418 8         34 ( $iVer . ( SPCHAR x $oSelf->{MaxModules} ) );
419             my $iVerOr =
420             ( ( SPCHAR x $oSelf->{MaxModules} ) . $iVer ) |
421 8         38 ( $iVer . ( SPCHAR x $oSelf->{MaxModules} ) );
422              
423 8         15 $iHor = ~$iHor;
424 8         10 $iVer = ~$iVer;
425 8         11 $iVerAnd = ~$iVerAnd;
426 8         11 $iVerOr = ~$iVerOr;
427              
428 8         12 substr( $iVerAnd, $iAllMatrix, 0 ) = SPCHAR;
429 8         10 substr( $iVerOr, $iAllMatrix, 0 ) = SPCHAR;
430 8         17 for ( my $k = ( $oSelf->{MaxModules} - 1 ) ; $k > 0 ; $k-- ) {
431 160         208 substr( $iHor, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
432 160         200 substr( $iVer, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
433 160         199 substr( $iVerAnd, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
434 160         265 substr( $iVerOr, $k * $oSelf->{MaxModules}, 0 ) = SPCHAR;
435             }
436              
437 8         16 $iHor .= ( SPCHAR . $iVer );
438 8         15 my $iN1Srch = ( chr(255) x 5 ) . "+|" . ( chr($iBitR) x 5 ) . "+";
439 8         13 my $iN2Srch1 = chr($iBitR) . chr($iBitR) . "+";
440 8         9 my $iN2Srch2 = chr(255) . chr(255) . "+";
441 8         14 my $iN3Srch =
442             chr($iBitR)
443             . chr(255)
444             . chr($iBitR)
445             . chr($iBitR)
446             . chr($iBitR)
447             . chr(255)
448             . chr($iBitR);
449 8         9 my $iN4Srch = chr($iBitR);
450              
451 8         17 my $iHorTmp = $iHor;
452 8         122 my $iDemeritN3 = ( $iHorTmp =~ s/$iN3Srch//g ) * 40;
453 8         163 my $iDemeritN4 = int(
454             abs(
455             (
456             ( 100 * ( ( $iVer =~ s/$iN4Srch//g ) / ($iAllMatrix) ) ) -
457             50
458             ) / 5
459             )
460             ) * 10;
461              
462 8         16 my $iMatchBeforeNum = length($iVerAnd) + length($iVerOr);
463 8         218 my $iMatchNum =
464             ( $iVerAnd =~ s/$iN2Srch1//g ) + ( $iVerOr =~ s/$iN2Srch2//g );
465 8         15 my $iMatchAftNum = length($iVerAnd) + length($iVerOr);
466 8         10 my $iDemeritN2 = ( $iMatchBeforeNum - $iMatchAftNum - $iMatchNum ) * 3;
467              
468 8         9 my $iMatchBfrNum = length($iHor);
469 8         503 $iMatchNum = ( $iHor =~ s/$iN1Srch//g );
470 8         17 $iMatchAftNum = length($iHor);
471 8         11 my $iDemeritN1 = $iMatchBfrNum - $iMatchAftNum - ( $iMatchNum * 2 );
472              
473 8         12 my $iDemeritScore =
474             $iDemeritN1 + $iDemeritN2 + $iDemeritN3 + $iDemeritN4;
475              
476 8 100 100     33 if ( $iDemeritScore <= $iMinDtmScore || $i == 0 ) {
477 4         6 $iMask = $i;
478 4         9 $iMinDtmScore = $iDemeritScore;
479             }
480             }
481 1         3 return $iMask;
482             }
483              
484             sub _cnv8bit {
485 0     0   0 my ( $oSelf, $iDatCnt, $raDatVal, $raDatBit ) = @_;
486              
487 0         0 my $iDatLen = length( $oSelf->{text} );
488 0         0 $raDatVal->[$iDatCnt] = 4; # 8bit byte mode
489 0         0 ++$iDatCnt;
490 0         0 $raDatBit->[$iDatCnt] = 8; # version 1-9
491 0         0 $raDatVal->[$iDatCnt] = $iDatLen;
492 0         0 $oSelf->{WordsPos} = $iDatCnt;
493              
494 0         0 $iDatCnt++;
495 0         0 for ( my $i = 0 ; $i < $iDatLen ; ++$i ) {
496 0         0 $raDatVal->[$iDatCnt] = ord( substr( $oSelf->{text}, $i, 1 ) );
497 0         0 $raDatBit->[$iDatCnt] = 8;
498 0         0 $iDatCnt++;
499             }
500             return (
501 0         0 $iDatCnt,
502             [
503             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
504             8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8,
505             ]
506             );
507             }
508              
509             sub _cnvAlphaNumeric {
510 0     0   0 my ( $oSelf, $iDatCnt, $raDatVal, $raDatBit ) = @_;
511              
512 0         0 my $iDatLen = length( $oSelf->{text} );
513 0         0 $raDatVal->[$iDatCnt] = 2; # alpha numeric mode
514 0         0 $iDatCnt++;
515 0         0 $raDatVal->[$iDatCnt] = $iDatLen;
516 0         0 $raDatBit->[$iDatCnt] = 9; #version 1-9
517 0         0 $oSelf->{WordsPos} = $iDatCnt;
518 0         0 my %hAlphanumeric = (
519             '0' => 0,
520             '1' => 1,
521             '2' => 2,
522             '3' => 3,
523             '4' => 4,
524             '5' => 5,
525             '6' => 6,
526             '7' => 7,
527             '8' => 8,
528             '9' => 9,
529             'A' => 10,
530             'B' => 11,
531             'C' => 12,
532             'D' => 13,
533             'E' => 14,
534             'F' => 15,
535             'G' => 16,
536             'H' => 17,
537             'I' => 18,
538             'J' => 19,
539             'K' => 20,
540             'L' => 21,
541             'M' => 22,
542             'N' => 23,
543             'O' => 24,
544             'P' => 25,
545             'Q' => 26,
546             'R' => 27,
547             'S' => 28,
548             'T' => 29,
549             'U' => 30,
550             'V' => 31,
551             'W' => 32,
552             'X' => 33,
553             'Y' => 34,
554             'Z' => 35,
555             ' ' => 36,
556             '$' => 37,
557             '%' => 38,
558             '*' => 39,
559             '+' => 40,
560             '-' => 41,
561             '.' => 42,
562             '/' => 43,
563             ':' => 44
564             );
565 0         0 $iDatCnt++;
566              
567 0         0 for ( my $i = 0 ; $i < $iDatLen ; ++$i ) {
568 0 0       0 if ( ( $i % 2 ) == 0 ) {
569             $raDatVal->[$iDatCnt] =
570 0         0 $hAlphanumeric{ substr( $oSelf->{text}, $i, 1 ) };
571 0         0 $raDatBit->[$iDatCnt] = 6;
572             }
573             else {
574             $raDatVal->[$iDatCnt] =
575             $raDatVal->[$iDatCnt] * 45 +
576 0         0 $hAlphanumeric{ substr( $oSelf->{text}, $i, 1 ) };
577 0         0 $raDatBit->[$iDatCnt] = 11;
578 0         0 $iDatCnt++;
579             }
580             }
581 0 0 0     0 ++$iDatCnt if ( ( $raDatBit->[$iDatCnt] || 0 ) > 0 );
582             return (
583 0         0 $iDatCnt,
584             [
585             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
586             2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,
587             ]
588             );
589             }
590              
591             sub _cnvNumeric {
592 1     1   3 my ( $oSelf, $iDatCnt, $raDatVal, $raDatBit ) = @_;
593              
594 1         3 my $iDatLen = length( $oSelf->{text} );
595 1         5 $raDatVal->[$iDatCnt] = 1; # numeric mode
596 1         2 $iDatCnt++;
597 1         2 $raDatVal->[$iDatCnt] = $iDatLen; # length
598 1         2 $raDatBit->[$iDatCnt] = 10; # version 1-9
599 1         2 $oSelf->{WordsPos} = $iDatCnt;
600              
601 1         2 $iDatCnt++;
602 1         4 for ( my $i = 0 ; $i < $iDatLen ; ++$i ) {
603 7 100       13 if ( ( $i % 3 ) == 0 ) {
604 3         7 $raDatVal->[$iDatCnt] = substr( $oSelf->{text}, $i, 1 );
605 3         5 $raDatBit->[$iDatCnt] = 4;
606             }
607             else {
608             $raDatVal->[$iDatCnt] =
609 4         9 $raDatVal->[$iDatCnt] * 10 + substr( $oSelf->{text}, $i, 1 );
610 4 100       8 if ( ( $i % 3 ) == 1 ) {
611 2         3 $raDatBit->[$iDatCnt] = 7;
612             }
613             else {
614 2         2 $raDatBit->[$iDatCnt] = 10;
615 2         3 $iDatCnt++;
616             }
617             }
618             }
619 1 50 33     6 ++$iDatCnt
620             if ( defined( $raDatBit->[$iDatCnt] ) && ( $raDatBit->[$iDatCnt] > 0 ) );
621             return (
622 1         4 $iDatCnt,
623             [
624             0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2,
625             2, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4
626             ]
627             );
628             }
629              
630             sub _calcFrm {
631 0     0     my ( $iV, $iR, $iC ) = @_;
632 0           my $iPosR = $iV * 4 + 10;
633 0 0 0       if ( $iR == 0 ) {
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
634 0 0 0       return 1
      0        
      0        
635             if ( ( ( $iC >= 0 ) and ( $iC <= 6 ) )
636             or ( ( $iC >= $iPosR ) and ( $iC <= ( $iPosR + 6 ) ) ) );
637             }
638             elsif ( $iR == 6 ) {
639 0 0 0       return 1
      0        
      0        
      0        
640             if ( ( ( $iC % 2 ) == 0 )
641             or ( ( $iC >= 0 ) and ( $iC <= 6 ) )
642             or ( ( $iC >= $iPosR ) and ( $iC <= ( $iPosR + 6 ) ) ) );
643             }
644             elsif ( ( $iR == 1 ) or ( $iR == 5 ) ) {
645 0 0 0       return 1
      0        
      0        
646             if ( ( $iC == 0 )
647             or ( $iC == 6 )
648             or ( $iC == $iPosR )
649             or ( $iC == $iPosR + 6 ) );
650             }
651             elsif ( ( $iR >= 2 ) and ( $iR <= 4 ) ) {
652 0 0 0       return 1
      0        
      0        
      0        
      0        
      0        
      0        
653             if ( ( $iC == 0 )
654             or ( ( $iC >= 2 ) and ( $iC <= 4 ) )
655             or ( $iC == 6 )
656             or ( $iC == $iPosR )
657             or ( ( $iC >= ( $iPosR + 2 ) ) and ( $iC <= ( $iPosR + 4 ) ) )
658             or ( $iC == $iPosR + 6 ) );
659             }
660             elsif ( ( $iR == ( $iPosR - 2 ) ) ) {
661 0 0         return 1 if ( $iC == 6 );
662 0 0         if ( $iV > 1 ) {
663 0 0 0       return 1
664             if ( ( $iC >= ( $iPosR - 2 ) )
665             and ( $iC <= ( $iPosR + 2 ) ) );
666             }
667             }
668             elsif ( ( $iR == ( $iPosR - 1 ) ) ) {
669 0 0         return 1 if ( $iC == 8 );
670 0 0         if ( $iV > 1 ) {
671 0 0 0       return 1
672             if ( ( $iC == ( $iPosR - 2 ) )
673             or ( $iC == ( $iPosR + 2 ) ) );
674             }
675             }
676             elsif ( $iR == $iPosR ) {
677 0 0 0       return 1 if ( ( ( $iC >= 0 ) and ( $iC <= 6 ) ) );
678 0 0         if ( $iV > 1 ) {
679 0 0 0       return 1
      0        
680             if ( ( $iC == ( $iPosR - 2 ) )
681             or ( $iC == $iPosR )
682             or ( $iC == ( $iPosR + 2 ) ) );
683             }
684             }
685             elsif ( $iR == ( $iPosR + 1 ) ) {
686 0 0 0       return 1 if ( ( $iC == 0 ) or ( $iC == 6 ) );
687 0 0         if ( $iV > 1 ) {
688 0 0 0       return 1
689             if ( ( $iC == ( $iPosR - 2 ) )
690             or ( $iC == ( $iPosR + 2 ) ) );
691             }
692             }
693             elsif ( $iR == ( $iPosR + 2 ) ) {
694 0 0 0       return 1
      0        
      0        
695             if ( ( $iC == 0 )
696             or ( ( $iC >= 2 ) and ( $iC <= 4 ) )
697             or ( $iC == 6 ) );
698 0 0         if ( $iV > 1 ) {
699 0 0 0       return 1
700             if ( ( $iC >= ( $iPosR - 2 ) )
701             and ( $iC <= ( $iPosR + 2 ) ) );
702             }
703             }
704             elsif ( ( $iR > ( $iPosR + 2 ) ) and ( $iR <= ( $iPosR + 4 ) ) ) {
705 0 0 0       return 1
      0        
      0        
706             if ( ( $iC == 0 )
707             or ( ( $iC >= 2 ) and ( $iC <= 4 ) )
708             or ( $iC == 6 ) );
709             }
710             elsif ( $iR == ( $iPosR + 5 ) ) {
711 0 0 0       return 1
712             if ( ( $iC == 0 ) or ( $iC == 6 ) );
713             }
714             elsif ( $iR == ( $iPosR + 6 ) ) {
715 0 0 0       return 1 if ( ( $iC >= 0 ) and ( $iC <= 6 ) );
716             }
717             else {
718 0 0 0       return 1 if ( ( ( $iR % 2 ) == 0 ) and ( $iC == 6 ) );
719             }
720              
721             #2. Depend on Version
722 0 0 0       return 0 if ( ( $iV >= 1 ) and ( $iV <= 6 ) );
723 0 0         if ( $iV == 7 ) {
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
724 0 0 0       if ( $iR == 35 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
725 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
726             }
727             elsif ( $iR == 3 ) {
728 0 0 0       return ( ( ( $iC >= 35 ) and ( $iC <= 36 ) ) ) ? 1 : 0;
729             }
730             elsif ( $iR == 36 ) {
731             return (
732 0 0 0       ( $iC == 0 )
733             or ( ( $iC >= 3 ) and ( $iC <= 4 ) )
734             or ( ( $iC >= 20 ) and ( $iC <= 24 ) )
735             ) ? 1 : 0;
736             }
737             elsif ( $iR == 4 ) {
738             return (
739 0 0 0       ( ( $iC >= 20 ) and ( $iC <= 24 ) )
740             or ( ( $iC >= 34 ) and ( $iC <= 36 ) )
741             ) ? 1 : 0;
742             }
743             elsif ( $iR == 38 ) {
744 0 0 0       return ( ( $iC == 20 ) or ( $iC == 22 ) or ( $iC == 24 ) ) ? 1 : 0;
745             }
746             elsif ( $iR == 22 ) {
747             return (
748 0 0 0       ( $iC == 4 )
749             or ( $iC == 8 )
750             or ( $iC == 20 )
751             or ( $iC == 22 )
752             or ( $iC == 24 )
753             or ( $iC == 36 )
754             or ( $iC == 38 )
755             or ( $iC == 40 )
756             ) ? 1 : 0;
757             }
758             elsif ( $iR == 34 ) {
759 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
760             }
761             elsif ( $iR == 0 ) {
762 0 0         return ( ( $iC == 36 ) ) ? 1 : 0;
763             }
764             elsif ( ( $iR == 8 ) or ( $iR == 40 ) ) {
765 0 0 0       return ( ( ( $iC >= 20 ) and ( $iC <= 24 ) ) ) ? 1 : 0;
766             }
767             elsif ( ( $iR == 21 ) or ( $iR == 23 ) ) {
768             return (
769 0 0 0       ( $iC == 4 )
770             or ( $iC == 8 )
771             or ( $iC == 20 )
772             or ( $iC == 24 )
773             or ( $iC == 36 )
774             or ( $iC == 40 )
775             ) ? 1 : 0;
776             }
777             elsif ( ( $iR == 1 ) or ( $iR == 2 ) ) {
778 0 0         return ( ( $iC == 35 ) ) ? 1 : 0;
779             }
780             elsif ( ( $iR == 20 ) or ( $iR == 24 ) ) {
781             return (
782 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
783             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
784             or ( ( $iC >= 20 ) and ( $iC <= 24 ) )
785             or ( ( $iC >= 36 ) and ( $iC <= 40 ) )
786             ) ? 1 : 0;
787             }
788             elsif ( ( $iR == 5 ) or ( $iR == 7 ) or ( $iR == 37 ) or ( $iR == 39 ) )
789             {
790 0 0 0       return ( ( $iC == 20 ) or ( $iC == 24 ) ) ? 1 : 0;
791             }
792 0           return 0;
793             }
794             elsif ( $iV == 8 ) {
795 0 0 0       if ( $iR == 40 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
796             return (
797 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 2 ) )
798             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
799             ) ? 1 : 0;
800             }
801             elsif ( $iR == 0 ) {
802 0 0         return ( ( $iC == 40 ) ) ? 1 : 0;
803             }
804             elsif ( $iR == 38 ) {
805 0 0 0       return ( ( $iC == 1 ) or ( $iC == 5 ) ) ? 1 : 0;
806             }
807             elsif ( $iR == 5 ) {
808 0 0 0       return ( ( $iC == 22 ) or ( $iC == 26 ) or ( $iC == 38 ) ) ? 1 : 0;
809             }
810             elsif ( $iR == 24 ) {
811             return (
812 0 0 0       ( $iC == 4 )
813             or ( $iC == 8 )
814             or ( $iC == 22 )
815             or ( $iC == 24 )
816             or ( $iC == 26 )
817             or ( $iC == 40 )
818             or ( $iC == 42 )
819             or ( $iC == 44 )
820             ) ? 1 : 0;
821             }
822             elsif ( $iR == 39 ) {
823 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
824             }
825             elsif ( $iR == 1 ) {
826 0 0 0       return ( ( ( $iC >= 38 ) and ( $iC <= 40 ) ) ) ? 1 : 0;
827             }
828             elsif ( $iR == 2 ) {
829 0 0 0       return ( ( ( $iC >= 39 ) and ( $iC <= 40 ) ) ) ? 1 : 0;
830             }
831             elsif ( $iR == 42 ) {
832 0 0 0       return ( ( $iC == 22 ) or ( $iC == 24 ) or ( $iC == 26 ) ) ? 1 : 0;
833             }
834             elsif ( $iR == 3 ) {
835 0 0         return ( ( $iC == 39 ) ) ? 1 : 0;
836             }
837             elsif ( ( $iR == 23 ) or ( $iR == 25 ) ) {
838             return (
839 0 0 0       ( $iC == 4 )
840             or ( $iC == 8 )
841             or ( $iC == 22 )
842             or ( $iC == 26 )
843             or ( $iC == 40 )
844             or ( $iC == 44 )
845             ) ? 1 : 0;
846             }
847             elsif ( ( $iR == 22 ) or ( $iR == 26 ) ) {
848             return (
849 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
850             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
851             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
852             or ( ( $iC >= 40 ) and ( $iC <= 44 ) )
853             ) ? 1 : 0;
854             }
855             elsif ( ( $iR == 7 ) or ( $iR == 41 ) or ( $iR == 43 ) ) {
856 0 0 0       return ( ( $iC == 22 ) or ( $iC == 26 ) ) ? 1 : 0;
857             }
858             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 44 ) ) {
859 0 0 0       return ( ( ( $iC >= 22 ) and ( $iC <= 26 ) ) ) ? 1 : 0;
860             }
861 0           return 0;
862             }
863             elsif ( $iV == 9 ) {
864 0 0 0       if ( $iR == 26 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
865             return (
866 0 0 0       ( $iC == 4 )
867             or ( $iC == 8 )
868             or ( $iC == 24 )
869             or ( $iC == 26 )
870             or ( $iC == 28 )
871             or ( $iC == 44 )
872             or ( $iC == 46 )
873             or ( $iC == 48 )
874             ) ? 1 : 0;
875             }
876             elsif ( $iR == 46 ) {
877 0 0 0       return ( ( $iC == 24 ) or ( $iC == 26 ) or ( $iC == 28 ) ) ? 1 : 0;
878             }
879             elsif ( $iR == 44 ) {
880 0 0 0       return ( ( $iC == 3 ) or ( ( $iC >= 24 ) and ( $iC <= 28 ) ) )
881             ? 1
882             : 0;
883             }
884             elsif ( $iR == 5 ) {
885 0 0 0       return ( ( $iC == 24 ) or ( $iC == 28 ) or ( $iC == 42 ) ) ? 1 : 0;
886             }
887             elsif ( $iR == 0 ) {
888 0 0         return ( ( $iC == 42 ) ) ? 1 : 0;
889             }
890             elsif ( $iR == 1 ) {
891 0 0 0       return ( ( ( $iC >= 42 ) and ( $iC <= 43 ) ) ) ? 1 : 0;
892             }
893             elsif ( $iR == 2 ) {
894 0 0         return ( ( $iC == 43 ) ) ? 1 : 0;
895             }
896             elsif ( $iR == 43 ) {
897 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 2 ) ) ) ? 1 : 0;
898             }
899             elsif ( $iR == 4 ) {
900 0 0 0       return ( ( ( $iC >= 24 ) and ( $iC <= 28 ) ) or ( $iC == 42 ) )
901             ? 1
902             : 0;
903             }
904             elsif ( $iR == 3 ) {
905 0 0 0       return ( ( $iC == 42 ) or ( $iC == 44 ) ) ? 1 : 0;
906             }
907             elsif ( $iR == 42 ) {
908             return (
909 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
910             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
911             ) ? 1 : 0;
912             }
913             elsif ( ( $iR == 24 ) or ( $iR == 28 ) ) {
914             return (
915 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
916             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
917             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
918             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
919             ) ? 1 : 0;
920             }
921             elsif ( ( $iR == 25 ) or ( $iR == 27 ) ) {
922             return (
923 0 0 0       ( $iC == 4 )
924             or ( $iC == 8 )
925             or ( $iC == 24 )
926             or ( $iC == 28 )
927             or ( $iC == 44 )
928             or ( $iC == 48 )
929             ) ? 1 : 0;
930             }
931             elsif ( ( $iR == 8 ) or ( $iR == 48 ) ) {
932 0 0 0       return ( ( ( $iC >= 24 ) and ( $iC <= 28 ) ) ) ? 1 : 0;
933             }
934             elsif ( ( $iR == 7 ) or ( $iR == 45 ) or ( $iR == 47 ) ) {
935 0 0 0       return ( ( $iC == 24 ) or ( $iC == 28 ) ) ? 1 : 0;
936             }
937 0           return 0;
938             }
939             elsif ( $iV == 10 ) {
940 0 0 0       if ( $iR == 28 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
941             return (
942 0 0 0       ( $iC == 4 )
943             or ( $iC == 8 )
944             or ( $iC == 26 )
945             or ( $iC == 28 )
946             or ( $iC == 30 )
947             or ( $iC == 48 )
948             or ( $iC == 50 )
949             or ( $iC == 52 )
950             ) ? 1 : 0;
951             }
952             elsif ( $iR == 5 ) {
953 0 0 0       return ( ( $iC == 26 ) or ( $iC == 30 ) or ( $iC == 46 ) ) ? 1 : 0;
954             }
955             elsif ( $iR == 46 ) {
956 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
957             }
958             elsif ( $iR == 50 ) {
959 0 0 0       return ( ( $iC == 26 ) or ( $iC == 28 ) or ( $iC == 30 ) ) ? 1 : 0;
960             }
961             elsif ( $iR == 4 ) {
962 0 0 0       return ( ( ( $iC >= 26 ) and ( $iC <= 30 ) ) or ( $iC == 47 ) )
963             ? 1
964             : 0;
965             }
966             elsif ( $iR == 47 ) {
967 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
968             }
969             elsif ( ( $iR == 27 ) or ( $iR == 29 ) ) {
970             return (
971 0 0 0       ( $iC == 4 )
972             or ( $iC == 8 )
973             or ( $iC == 26 )
974             or ( $iC == 30 )
975             or ( $iC == 48 )
976             or ( $iC == 52 )
977             ) ? 1 : 0;
978             }
979             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
980 0 0 0       return ( ( ( $iC >= 46 ) and ( $iC <= 47 ) ) ) ? 1 : 0;
981             }
982             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
983 0 0         return ( ( $iC == 47 ) ) ? 1 : 0;
984             }
985             elsif ( ( $iR == 26 ) or ( $iR == 30 ) ) {
986             return (
987 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
988             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
989             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
990             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
991             ) ? 1 : 0;
992             }
993             elsif ( ( $iR == 7 ) or ( $iR == 49 ) or ( $iR == 51 ) ) {
994 0 0 0       return ( ( $iC == 26 ) or ( $iC == 30 ) ) ? 1 : 0;
995             }
996             elsif ( ( $iR == 8 ) or ( $iR == 48 ) or ( $iR == 52 ) ) {
997 0 0 0       return ( ( ( $iC >= 26 ) and ( $iC <= 30 ) ) ) ? 1 : 0;
998             }
999 0           return 0;
1000             }
1001             elsif ( $iV == 11 ) {
1002 0 0 0       if ( $iR == 50 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1003 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 5 ) ) ) ? 1 : 0;
1004             }
1005             elsif ( $iR == 52 ) {
1006             return (
1007 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 3 ) )
1008             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1009             ) ? 1 : 0;
1010             }
1011             elsif ( $iR == 2 ) {
1012 0 0 0       return ( ( ( $iC >= 50 ) and ( $iC <= 52 ) ) ) ? 1 : 0;
1013             }
1014             elsif ( $iR == 30 ) {
1015             return (
1016 0 0 0       ( $iC == 4 )
1017             or ( $iC == 8 )
1018             or ( $iC == 28 )
1019             or ( $iC == 30 )
1020             or ( $iC == 32 )
1021             or ( $iC == 52 )
1022             or ( $iC == 54 )
1023             or ( $iC == 56 )
1024             ) ? 1 : 0;
1025             }
1026             elsif ( $iR == 54 ) {
1027 0 0 0       return ( ( $iC == 28 ) or ( $iC == 30 ) or ( $iC == 32 ) ) ? 1 : 0;
1028             }
1029             elsif ( $iR == 4 ) {
1030             return (
1031 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1032             or ( ( $iC >= 50 ) and ( $iC <= 51 ) )
1033             ) ? 1 : 0;
1034             }
1035             elsif ( $iR == 51 ) {
1036 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 4 ) )
1037             ? 1
1038             : 0;
1039             }
1040             elsif ( $iR == 5 ) {
1041 0 0 0       return ( ( $iC == 28 ) or ( $iC == 32 ) or ( $iC == 50 ) ) ? 1 : 0;
1042             }
1043             elsif ( $iR == 3 ) {
1044 0 0 0       return ( ( $iC == 50 ) or ( $iC == 52 ) ) ? 1 : 0;
1045             }
1046             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
1047 0 0 0       return ( ( ( $iC >= 51 ) and ( $iC <= 52 ) ) ) ? 1 : 0;
1048             }
1049             elsif ( ( $iR == 29 ) or ( $iR == 31 ) ) {
1050             return (
1051 0 0 0       ( $iC == 4 )
1052             or ( $iC == 8 )
1053             or ( $iC == 28 )
1054             or ( $iC == 32 )
1055             or ( $iC == 52 )
1056             or ( $iC == 56 )
1057             ) ? 1 : 0;
1058             }
1059             elsif ( ( $iR == 28 ) or ( $iR == 32 ) ) {
1060             return (
1061 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1062             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1063             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1064             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1065             ) ? 1 : 0;
1066             }
1067             elsif ( ( $iR == 8 ) or ( $iR == 56 ) ) {
1068 0 0 0       return ( ( ( $iC >= 28 ) and ( $iC <= 32 ) ) ) ? 1 : 0;
1069             }
1070             elsif ( ( $iR == 7 ) or ( $iR == 53 ) or ( $iR == 55 ) ) {
1071 0 0 0       return ( ( $iC == 28 ) or ( $iC == 32 ) ) ? 1 : 0;
1072             }
1073 0           return 0;
1074             }
1075             elsif ( $iV == 12 ) {
1076 0 0 0       if ( $iR == 55 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1077 0 0 0       return ( ( $iC == 0 ) or ( $iC == 3 ) ) ? 1 : 0;
1078             }
1079             elsif ( $iR == 56 ) {
1080             return (
1081 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 2 ) )
1082             or ( $iC == 4 )
1083             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
1084             ) ? 1 : 0;
1085             }
1086             elsif ( $iR == 5 ) {
1087 0 0 0       return ( ( $iC == 30 ) or ( $iC == 34 ) or ( $iC == 54 ) ) ? 1 : 0;
1088             }
1089             elsif ( $iR == 1 ) {
1090 0 0         return ( ( $iC == 56 ) ) ? 1 : 0;
1091             }
1092             elsif ( $iR == 32 ) {
1093             return (
1094 0 0 0       ( $iC == 4 )
1095             or ( $iC == 8 )
1096             or ( $iC == 30 )
1097             or ( $iC == 32 )
1098             or ( $iC == 34 )
1099             or ( $iC == 56 )
1100             or ( $iC == 58 )
1101             or ( $iC == 60 )
1102             ) ? 1 : 0;
1103             }
1104             elsif ( $iR == 4 ) {
1105 0 0 0       return ( ( ( $iC >= 30 ) and ( $iC <= 34 ) ) or ( $iC == 56 ) )
1106             ? 1
1107             : 0;
1108             }
1109             elsif ( $iR == 3 ) {
1110 0 0 0       return ( ( ( $iC >= 54 ) and ( $iC <= 55 ) ) ) ? 1 : 0;
1111             }
1112             elsif ( $iR == 2 ) {
1113 0 0 0       return ( ( $iC == 54 ) or ( $iC == 56 ) ) ? 1 : 0;
1114             }
1115             elsif ( $iR == 54 ) {
1116 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 3 ) ) or ( $iC == 5 ) )
1117             ? 1
1118             : 0;
1119             }
1120             elsif ( $iR == 0 ) {
1121 0 0         return ( ( $iC == 55 ) ) ? 1 : 0;
1122             }
1123             elsif ( $iR == 58 ) {
1124 0 0 0       return ( ( $iC == 30 ) or ( $iC == 32 ) or ( $iC == 34 ) ) ? 1 : 0;
1125             }
1126             elsif ( ( $iR == 30 ) or ( $iR == 34 ) ) {
1127             return (
1128 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1129             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1130             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
1131             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1132             ) ? 1 : 0;
1133             }
1134             elsif ( ( $iR == 8 ) or ( $iR == 60 ) ) {
1135 0 0 0       return ( ( ( $iC >= 30 ) and ( $iC <= 34 ) ) ) ? 1 : 0;
1136             }
1137             elsif ( ( $iR == 31 ) or ( $iR == 33 ) ) {
1138             return (
1139 0 0 0       ( $iC == 4 )
1140             or ( $iC == 8 )
1141             or ( $iC == 30 )
1142             or ( $iC == 34 )
1143             or ( $iC == 56 )
1144             or ( $iC == 60 )
1145             ) ? 1 : 0;
1146             }
1147             elsif ( ( $iR == 7 ) or ( $iR == 57 ) or ( $iR == 59 ) ) {
1148 0 0 0       return ( ( $iC == 30 ) or ( $iC == 34 ) ) ? 1 : 0;
1149             }
1150 0           return 0;
1151             }
1152             elsif ( $iV == 13 ) {
1153 0 0 0       if ( $iR == 3 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
    0          
1154 0 0         return ( ( $iC == 60 ) ) ? 1 : 0;
1155             }
1156             elsif ( $iR == 58 ) {
1157             return (
1158 0 0 0       ( $iC == 0 )
1159             or ( $iC == 2 )
1160             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1161             ) ? 1 : 0;
1162             }
1163             elsif ( $iR == 2 ) {
1164 0 0         return ( ( $iC == 58 ) ) ? 1 : 0;
1165             }
1166             elsif ( $iR == 62 ) {
1167 0 0 0       return ( ( $iC == 32 ) or ( $iC == 34 ) or ( $iC == 36 ) ) ? 1 : 0;
1168             }
1169             elsif ( $iR == 60 ) {
1170             return (
1171 0 0 0       ( $iC == 0 )
1172             or ( ( $iC >= 3 ) and ( $iC <= 4 ) )
1173             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1174             ) ? 1 : 0;
1175             }
1176             elsif ( $iR == 34 ) {
1177             return (
1178 0 0 0       ( $iC == 4 )
1179             or ( $iC == 8 )
1180             or ( $iC == 32 )
1181             or ( $iC == 34 )
1182             or ( $iC == 36 )
1183             or ( $iC == 60 )
1184             or ( $iC == 62 )
1185             or ( $iC == 64 )
1186             ) ? 1 : 0;
1187             }
1188             elsif ( $iR == 0 ) {
1189 0 0 0       return ( ( ( $iC >= 58 ) and ( $iC <= 60 ) ) ) ? 1 : 0;
1190             }
1191             elsif ( $iR == 4 ) {
1192             return (
1193 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1194             or ( $iC == 58 )
1195             or ( $iC == 60 )
1196             ) ? 1 : 0;
1197             }
1198             elsif ( $iR == 59 ) {
1199 0 0         return ( ( $iC == 0 ) ) ? 1 : 0;
1200             }
1201             elsif ( $iR == 5 ) {
1202 0 0 0       return ( ( $iC == 32 ) or ( $iC == 36 ) or ( $iC == 58 ) ) ? 1 : 0;
1203             }
1204             elsif ( ( $iR == 32 ) or ( $iR == 36 ) ) {
1205             return (
1206 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1207             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1208             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1209             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1210             ) ? 1 : 0;
1211             }
1212             elsif ( ( $iR == 33 ) or ( $iR == 35 ) ) {
1213             return (
1214 0 0 0       ( $iC == 4 )
1215             or ( $iC == 8 )
1216             or ( $iC == 32 )
1217             or ( $iC == 36 )
1218             or ( $iC == 60 )
1219             or ( $iC == 64 )
1220             ) ? 1 : 0;
1221             }
1222             elsif ( ( $iR == 8 ) or ( $iR == 64 ) ) {
1223 0 0 0       return ( ( ( $iC >= 32 ) and ( $iC <= 36 ) ) ) ? 1 : 0;
1224             }
1225             elsif ( ( $iR == 7 ) or ( $iR == 61 ) or ( $iR == 63 ) ) {
1226 0 0 0       return ( ( $iC == 32 ) or ( $iC == 36 ) ) ? 1 : 0;
1227             }
1228 0           return 0;
1229             }
1230             elsif ( $iV == 14 ) {
1231 0 0 0       if ( $iR == 63 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
1232 0 0 0       return ( ( ( $iC >= 3 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
1233             }
1234             elsif ( $iR == 4 ) {
1235             return (
1236 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1237             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1238             or ( ( $iC >= 63 ) and ( $iC <= 64 ) )
1239             ) ? 1 : 0;
1240             }
1241             elsif ( $iR == 66 ) {
1242             return (
1243 0 0 0       ( $iC == 24 )
1244             or ( $iC == 26 )
1245             or ( $iC == 28 )
1246             or ( $iC == 44 )
1247             or ( $iC == 46 )
1248             or ( $iC == 48 )
1249             ) ? 1 : 0;
1250             }
1251             elsif ( $iR == 3 ) {
1252 0 0 0       return ( ( ( $iC >= 62 ) and ( $iC <= 63 ) ) ) ? 1 : 0;
1253             }
1254             elsif ( $iR == 64 ) {
1255             return (
1256 0 0 0       ( $iC == 0 )
1257             or ( $iC == 4 )
1258             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1259             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1260             ) ? 1 : 0;
1261             }
1262             elsif ( $iR == 5 ) {
1263             return (
1264 0 0 0       ( $iC == 24 )
1265             or ( $iC == 28 )
1266             or ( $iC == 44 )
1267             or ( $iC == 48 )
1268             or ( $iC == 62 )
1269             ) ? 1 : 0;
1270             }
1271             elsif ( $iR == 0 ) {
1272 0 0 0       return ( ( $iC == 62 ) or ( $iC == 64 ) ) ? 1 : 0;
1273             }
1274             elsif ( $iR == 1 ) {
1275 0 0         return ( ( $iC == 62 ) ) ? 1 : 0;
1276             }
1277             elsif ( $iR == 62 ) {
1278             return (
1279 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
1280             or ( $iC == 3 )
1281             or ( $iC == 5 )
1282             ) ? 1 : 0;
1283             }
1284             elsif ( ( $iR == 8 ) or ( $iR == 68 ) ) {
1285             return (
1286 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1287             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1288             ) ? 1 : 0;
1289             }
1290             elsif ( ( $iR == 26 ) or ( $iR == 46 ) ) {
1291             return (
1292 0 0 0       ( $iC == 4 )
1293             or ( $iC == 8 )
1294             or ( $iC == 24 )
1295             or ( $iC == 26 )
1296             or ( $iC == 28 )
1297             or ( $iC == 44 )
1298             or ( $iC == 46 )
1299             or ( $iC == 48 )
1300             or ( $iC == 64 )
1301             or ( $iC == 66 )
1302             or ( $iC == 68 )
1303             ) ? 1 : 0;
1304             }
1305             elsif ( ( $iR == 7 ) or ( $iR == 65 ) or ( $iR == 67 ) ) {
1306             return (
1307 0 0 0       ( $iC == 24 )
1308             or ( $iC == 28 )
1309             or ( $iC == 44 )
1310             or ( $iC == 48 )
1311             ) ? 1 : 0;
1312             }
1313             elsif (( $iR == 25 )
1314             or ( $iR == 27 )
1315             or ( $iR == 45 )
1316             or ( $iR == 47 ) )
1317             {
1318             return (
1319 0 0 0       ( $iC == 4 )
1320             or ( $iC == 8 )
1321             or ( $iC == 24 )
1322             or ( $iC == 28 )
1323             or ( $iC == 44 )
1324             or ( $iC == 48 )
1325             or ( $iC == 64 )
1326             or ( $iC == 68 )
1327             ) ? 1 : 0;
1328             }
1329             elsif (( $iR == 24 )
1330             or ( $iR == 28 )
1331             or ( $iR == 44 )
1332             or ( $iR == 48 ) )
1333             {
1334             return (
1335 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1336             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1337             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1338             or ( ( $iC >= 44 ) and ( $iC <= 48 ) )
1339             or ( ( $iC >= 64 ) and ( $iC <= 68 ) )
1340             ) ? 1 : 0;
1341             }
1342 0           return 0;
1343             }
1344             elsif ( $iV == 15 ) {
1345 0 0 0       if ( $iR == 66 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
1346 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
1347             ? 1
1348             : 0;
1349             }
1350             elsif ( $iR == 4 ) {
1351             return (
1352 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1353             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1354             or ( ( $iC >= 66 ) and ( $iC <= 68 ) )
1355             ) ? 1 : 0;
1356             }
1357             elsif ( $iR == 68 ) {
1358             return (
1359 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 4 ) )
1360             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1361             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1362             ) ? 1 : 0;
1363             }
1364             elsif ( $iR == 67 ) {
1365 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
1366             }
1367             elsif ( $iR == 1 ) {
1368 0 0 0       return ( ( $iC == 66 ) or ( $iC == 68 ) ) ? 1 : 0;
1369             }
1370             elsif ( $iR == 70 ) {
1371             return (
1372 0 0 0       ( $iC == 24 )
1373             or ( $iC == 26 )
1374             or ( $iC == 28 )
1375             or ( $iC == 46 )
1376             or ( $iC == 48 )
1377             or ( $iC == 50 )
1378             ) ? 1 : 0;
1379             }
1380             elsif ( $iR == 5 ) {
1381             return (
1382 0 0 0       ( $iC == 24 )
1383             or ( $iC == 28 )
1384             or ( $iC == 46 )
1385             or ( $iC == 50 )
1386             or ( $iC == 66 )
1387             ) ? 1 : 0;
1388             }
1389             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
1390 0 0         return ( ( $iC == 68 ) ) ? 1 : 0;
1391             }
1392             elsif ( ( $iR == 8 ) or ( $iR == 72 ) ) {
1393             return (
1394 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1395             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1396             ) ? 1 : 0;
1397             }
1398             elsif ( ( $iR == 26 ) or ( $iR == 48 ) ) {
1399             return (
1400 0 0 0       ( $iC == 4 )
1401             or ( $iC == 8 )
1402             or ( $iC == 24 )
1403             or ( $iC == 26 )
1404             or ( $iC == 28 )
1405             or ( $iC == 46 )
1406             or ( $iC == 48 )
1407             or ( $iC == 50 )
1408             or ( $iC == 68 )
1409             or ( $iC == 70 )
1410             or ( $iC == 72 )
1411             ) ? 1 : 0;
1412             }
1413             elsif ( ( $iR == 7 ) or ( $iR == 69 ) or ( $iR == 71 ) ) {
1414             return (
1415 0 0 0       ( $iC == 24 )
1416             or ( $iC == 28 )
1417             or ( $iC == 46 )
1418             or ( $iC == 50 )
1419             ) ? 1 : 0;
1420             }
1421             elsif (( $iR == 24 )
1422             or ( $iR == 28 )
1423             or ( $iR == 46 )
1424             or ( $iR == 50 ) )
1425             {
1426             return (
1427 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1428             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1429             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1430             or ( ( $iC >= 46 ) and ( $iC <= 50 ) )
1431             or ( ( $iC >= 68 ) and ( $iC <= 72 ) )
1432             ) ? 1 : 0;
1433             }
1434             elsif (( $iR == 25 )
1435             or ( $iR == 27 )
1436             or ( $iR == 47 )
1437             or ( $iR == 49 ) )
1438             {
1439             return (
1440 0 0 0       ( $iC == 4 )
1441             or ( $iC == 8 )
1442             or ( $iC == 24 )
1443             or ( $iC == 28 )
1444             or ( $iC == 46 )
1445             or ( $iC == 50 )
1446             or ( $iC == 68 )
1447             or ( $iC == 72 )
1448             ) ? 1 : 0;
1449             }
1450 0           return 0;
1451             }
1452             elsif ( $iV == 16 ) {
1453 0 0 0       if ( $iR == 74 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
1454             return (
1455 0 0 0       ( $iC == 24 )
1456             or ( $iC == 26 )
1457             or ( $iC == 28 )
1458             or ( $iC == 48 )
1459             or ( $iC == 50 )
1460             or ( $iC == 52 )
1461             ) ? 1 : 0;
1462             }
1463             elsif ( $iR == 70 ) {
1464 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
1465             }
1466             elsif ( $iR == 72 ) {
1467             return (
1468 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 3 ) )
1469             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1470             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
1471             ) ? 1 : 0;
1472             }
1473             elsif ( $iR == 1 ) {
1474 0 0 0       return ( ( ( $iC >= 70 ) and ( $iC <= 72 ) ) ) ? 1 : 0;
1475             }
1476             elsif ( $iR == 71 ) {
1477 0 0 0       return ( ( $iC == 1 ) or ( $iC == 5 ) ) ? 1 : 0;
1478             }
1479             elsif ( $iR == 5 ) {
1480             return (
1481 0 0 0       ( $iC == 24 )
1482             or ( $iC == 28 )
1483             or ( $iC == 48 )
1484             or ( $iC == 52 )
1485             or ( $iC == 71 )
1486             ) ? 1 : 0;
1487             }
1488             elsif ( ( $iR == 26 ) or ( $iR == 50 ) ) {
1489             return (
1490 0 0 0       ( $iC == 4 )
1491             or ( $iC == 8 )
1492             or ( $iC == 24 )
1493             or ( $iC == 26 )
1494             or ( $iC == 28 )
1495             or ( $iC == 48 )
1496             or ( $iC == 50 )
1497             or ( $iC == 52 )
1498             or ( $iC == 72 )
1499             or ( $iC == 74 )
1500             or ( $iC == 76 )
1501             ) ? 1 : 0;
1502             }
1503             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
1504 0 0 0       return ( ( $iC == 70 ) or ( $iC == 72 ) ) ? 1 : 0;
1505             }
1506             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 76 ) ) {
1507             return (
1508 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1509             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
1510             ) ? 1 : 0;
1511             }
1512             elsif ( ( $iR == 7 ) or ( $iR == 73 ) or ( $iR == 75 ) ) {
1513             return (
1514 0 0 0       ( $iC == 24 )
1515             or ( $iC == 28 )
1516             or ( $iC == 48 )
1517             or ( $iC == 52 )
1518             ) ? 1 : 0;
1519             }
1520             elsif (( $iR == 24 )
1521             or ( $iR == 28 )
1522             or ( $iR == 48 )
1523             or ( $iR == 52 ) )
1524             {
1525             return (
1526 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1527             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1528             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
1529             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
1530             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
1531             ) ? 1 : 0;
1532             }
1533             elsif (( $iR == 25 )
1534             or ( $iR == 27 )
1535             or ( $iR == 49 )
1536             or ( $iR == 51 ) )
1537             {
1538             return (
1539 0 0 0       ( $iC == 4 )
1540             or ( $iC == 8 )
1541             or ( $iC == 24 )
1542             or ( $iC == 28 )
1543             or ( $iC == 48 )
1544             or ( $iC == 52 )
1545             or ( $iC == 72 )
1546             or ( $iC == 76 )
1547             ) ? 1 : 0;
1548             }
1549 0           return 0;
1550             }
1551             elsif ( $iV == 17 ) {
1552 0 0 0       if ( $iR == 2 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
    0          
1553 0 0         return ( ( $iC == 74 ) ) ? 1 : 0;
1554             }
1555             elsif ( $iR == 3 ) {
1556 0 0         return ( ( $iC == 75 ) ) ? 1 : 0;
1557             }
1558             elsif ( $iR == 0 ) {
1559 0 0 0       return ( ( $iC == 74 ) or ( $iC == 76 ) ) ? 1 : 0;
1560             }
1561             elsif ( $iR == 4 ) {
1562             return (
1563 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1564             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1565             or ( $iC == 74 )
1566             ) ? 1 : 0;
1567             }
1568             elsif ( $iR == 5 ) {
1569             return (
1570 0 0 0       ( $iC == 28 )
1571             or ( $iC == 32 )
1572             or ( $iC == 52 )
1573             or ( $iC == 56 )
1574             or ( $iC == 75 )
1575             ) ? 1 : 0;
1576             }
1577             elsif ( $iR == 74 ) {
1578 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 4 ) )
1579             ? 1
1580             : 0;
1581             }
1582             elsif ( $iR == 78 ) {
1583             return (
1584 0 0 0       ( $iC == 28 )
1585             or ( $iC == 30 )
1586             or ( $iC == 32 )
1587             or ( $iC == 52 )
1588             or ( $iC == 54 )
1589             or ( $iC == 56 )
1590             ) ? 1 : 0;
1591             }
1592             elsif ( $iR == 1 ) {
1593 0 0 0       return ( ( ( $iC >= 74 ) and ( $iC <= 75 ) ) ) ? 1 : 0;
1594             }
1595             elsif ( $iR == 76 ) {
1596             return (
1597 0 0 0       ( $iC == 0 )
1598             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1599             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1600             ) ? 1 : 0;
1601             }
1602             elsif ( $iR == 75 ) {
1603 0 0 0       return ( ( $iC == 1 ) or ( $iC == 3 ) or ( $iC == 5 ) ) ? 1 : 0;
1604             }
1605             elsif ( ( $iR == 30 ) or ( $iR == 54 ) ) {
1606             return (
1607 0 0 0       ( $iC == 4 )
1608             or ( $iC == 8 )
1609             or ( $iC == 28 )
1610             or ( $iC == 30 )
1611             or ( $iC == 32 )
1612             or ( $iC == 52 )
1613             or ( $iC == 54 )
1614             or ( $iC == 56 )
1615             or ( $iC == 76 )
1616             or ( $iC == 78 )
1617             or ( $iC == 80 )
1618             ) ? 1 : 0;
1619             }
1620             elsif ( ( $iR == 8 ) or ( $iR == 80 ) ) {
1621             return (
1622 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1623             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1624             ) ? 1 : 0;
1625             }
1626             elsif ( ( $iR == 7 ) or ( $iR == 77 ) or ( $iR == 79 ) ) {
1627             return (
1628 0 0 0       ( $iC == 28 )
1629             or ( $iC == 32 )
1630             or ( $iC == 52 )
1631             or ( $iC == 56 )
1632             ) ? 1 : 0;
1633             }
1634             elsif (( $iR == 29 )
1635             or ( $iR == 31 )
1636             or ( $iR == 53 )
1637             or ( $iR == 55 ) )
1638             {
1639             return (
1640 0 0 0       ( $iC == 4 )
1641             or ( $iC == 8 )
1642             or ( $iC == 28 )
1643             or ( $iC == 32 )
1644             or ( $iC == 52 )
1645             or ( $iC == 56 )
1646             or ( $iC == 76 )
1647             or ( $iC == 80 )
1648             ) ? 1 : 0;
1649             }
1650             elsif (( $iR == 28 )
1651             or ( $iR == 32 )
1652             or ( $iR == 52 )
1653             or ( $iR == 56 ) )
1654             {
1655             return (
1656 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1657             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1658             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1659             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
1660             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
1661             ) ? 1 : 0;
1662             }
1663 0           return 0;
1664             }
1665             elsif ( $iV == 18 ) {
1666 0 0 0       if ( $iR == 79 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
    0          
1667             return (
1668 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
1669             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1670             ) ? 1 : 0;
1671             }
1672             elsif ( $iR == 78 ) {
1673 0 0 0       return ( ( $iC == 0 ) or ( $iC == 3 ) ) ? 1 : 0;
1674             }
1675             elsif ( $iR == 3 ) {
1676 0 0 0       return ( ( $iC == 78 ) or ( $iC == 80 ) ) ? 1 : 0;
1677             }
1678             elsif ( $iR == 80 ) {
1679             return (
1680 0 0 0       ( $iC == 0 )
1681             or ( $iC == 3 )
1682             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1683             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1684             ) ? 1 : 0;
1685             }
1686             elsif ( $iR == 82 ) {
1687             return (
1688 0 0 0       ( $iC == 28 )
1689             or ( $iC == 30 )
1690             or ( $iC == 32 )
1691             or ( $iC == 54 )
1692             or ( $iC == 56 )
1693             or ( $iC == 58 )
1694             ) ? 1 : 0;
1695             }
1696             elsif ( $iR == 5 ) {
1697             return (
1698 0 0 0       ( $iC == 28 )
1699             or ( $iC == 32 )
1700             or ( $iC == 54 )
1701             or ( $iC == 58 )
1702             or ( $iC == 79 )
1703             ) ? 1 : 0;
1704             }
1705             elsif ( $iR == 0 ) {
1706 0 0 0       return ( ( ( $iC >= 78 ) and ( $iC <= 80 ) ) ) ? 1 : 0;
1707             }
1708             elsif ( $iR == 1 ) {
1709 0 0         return ( ( $iC == 79 ) ) ? 1 : 0;
1710             }
1711             elsif ( $iR == 4 ) {
1712             return (
1713 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1714             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1715             or ( $iC == 79 )
1716             ) ? 1 : 0;
1717             }
1718             elsif ( ( $iR == 8 ) or ( $iR == 84 ) ) {
1719             return (
1720 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1721             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1722             ) ? 1 : 0;
1723             }
1724             elsif ( ( $iR == 30 ) or ( $iR == 56 ) ) {
1725             return (
1726 0 0 0       ( $iC == 4 )
1727             or ( $iC == 8 )
1728             or ( $iC == 28 )
1729             or ( $iC == 30 )
1730             or ( $iC == 32 )
1731             or ( $iC == 54 )
1732             or ( $iC == 56 )
1733             or ( $iC == 58 )
1734             or ( $iC == 80 )
1735             or ( $iC == 82 )
1736             or ( $iC == 84 )
1737             ) ? 1 : 0;
1738             }
1739             elsif ( ( $iR == 7 ) or ( $iR == 81 ) or ( $iR == 83 ) ) {
1740             return (
1741 0 0 0       ( $iC == 28 )
1742             or ( $iC == 32 )
1743             or ( $iC == 54 )
1744             or ( $iC == 58 )
1745             ) ? 1 : 0;
1746             }
1747             elsif (( $iR == 29 )
1748             or ( $iR == 31 )
1749             or ( $iR == 55 )
1750             or ( $iR == 57 ) )
1751             {
1752             return (
1753 0 0 0       ( $iC == 4 )
1754             or ( $iC == 8 )
1755             or ( $iC == 28 )
1756             or ( $iC == 32 )
1757             or ( $iC == 54 )
1758             or ( $iC == 58 )
1759             or ( $iC == 80 )
1760             or ( $iC == 84 )
1761             ) ? 1 : 0;
1762             }
1763             elsif (( $iR == 28 )
1764             or ( $iR == 32 )
1765             or ( $iR == 54 )
1766             or ( $iR == 58 ) )
1767             {
1768             return (
1769 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1770             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1771             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1772             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
1773             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
1774             ) ? 1 : 0;
1775             }
1776 0           return 0;
1777             }
1778             elsif ( $iV == 19 ) {
1779 0 0 0       if ( $iR == 1 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0          
    0          
    0          
1780 0 0 0       return ( ( ( $iC >= 83 ) and ( $iC <= 84 ) ) ) ? 1 : 0;
1781             }
1782             elsif ( $iR == 4 ) {
1783             return (
1784 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1785             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1786             or ( ( $iC >= 82 ) and ( $iC <= 83 ) )
1787             ) ? 1 : 0;
1788             }
1789             elsif ( $iR == 84 ) {
1790             return (
1791 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 2 ) )
1792             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1793             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1794             ) ? 1 : 0;
1795             }
1796             elsif ( $iR == 83 ) {
1797             return (
1798 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
1799             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
1800             ) ? 1 : 0;
1801             }
1802             elsif ( $iR == 2 ) {
1803 0 0         return ( ( $iC == 84 ) ) ? 1 : 0;
1804             }
1805             elsif ( $iR == 86 ) {
1806             return (
1807 0 0 0       ( $iC == 28 )
1808             or ( $iC == 30 )
1809             or ( $iC == 32 )
1810             or ( $iC == 56 )
1811             or ( $iC == 58 )
1812             or ( $iC == 60 )
1813             ) ? 1 : 0;
1814             }
1815             elsif ( $iR == 82 ) {
1816 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
1817             }
1818             elsif ( $iR == 5 ) {
1819             return (
1820 0 0 0       ( $iC == 28 )
1821             or ( $iC == 32 )
1822             or ( $iC == 56 )
1823             or ( $iC == 60 )
1824             or ( $iC == 83 )
1825             ) ? 1 : 0;
1826             }
1827             elsif ( ( $iR == 0 ) or ( $iR == 3 ) ) {
1828 0 0         return ( ( $iC == 83 ) ) ? 1 : 0;
1829             }
1830             elsif ( ( $iR == 30 ) or ( $iR == 58 ) ) {
1831             return (
1832 0 0 0       ( $iC == 4 )
1833             or ( $iC == 8 )
1834             or ( $iC == 28 )
1835             or ( $iC == 30 )
1836             or ( $iC == 32 )
1837             or ( $iC == 56 )
1838             or ( $iC == 58 )
1839             or ( $iC == 60 )
1840             or ( $iC == 84 )
1841             or ( $iC == 86 )
1842             or ( $iC == 88 )
1843             ) ? 1 : 0;
1844             }
1845             elsif ( ( $iR == 8 ) or ( $iR == 88 ) ) {
1846             return (
1847 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1848             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1849             ) ? 1 : 0;
1850             }
1851             elsif ( ( $iR == 7 ) or ( $iR == 85 ) or ( $iR == 87 ) ) {
1852             return (
1853 0 0 0       ( $iC == 28 )
1854             or ( $iC == 32 )
1855             or ( $iC == 56 )
1856             or ( $iC == 60 )
1857             ) ? 1 : 0;
1858             }
1859             elsif (( $iR == 29 )
1860             or ( $iR == 31 )
1861             or ( $iR == 57 )
1862             or ( $iR == 59 ) )
1863             {
1864             return (
1865 0 0 0       ( $iC == 4 )
1866             or ( $iC == 8 )
1867             or ( $iC == 28 )
1868             or ( $iC == 32 )
1869             or ( $iC == 56 )
1870             or ( $iC == 60 )
1871             or ( $iC == 84 )
1872             or ( $iC == 88 )
1873             ) ? 1 : 0;
1874             }
1875             elsif (( $iR == 28 )
1876             or ( $iR == 32 )
1877             or ( $iR == 56 )
1878             or ( $iR == 60 ) )
1879             {
1880             return (
1881 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1882             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1883             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
1884             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
1885             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
1886             ) ? 1 : 0;
1887             }
1888 0           return 0;
1889             }
1890             elsif ( $iV == 20 ) {
1891 0 0 0       if ( $iR == 4 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
1892             return (
1893 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1894             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1895             or ( $iC == 88 )
1896             ) ? 1 : 0;
1897             }
1898             elsif ( $iR == 87 ) {
1899 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
1900             }
1901             elsif ( $iR == 88 ) {
1902             return (
1903 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 4 ) )
1904             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1905             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1906             ) ? 1 : 0;
1907             }
1908             elsif ( $iR == 90 ) {
1909             return (
1910 0 0 0       ( $iC == 32 )
1911             or ( $iC == 34 )
1912             or ( $iC == 36 )
1913             or ( $iC == 60 )
1914             or ( $iC == 62 )
1915             or ( $iC == 64 )
1916             ) ? 1 : 0;
1917             }
1918             elsif ( $iR == 5 ) {
1919             return (
1920 0 0 0       ( $iC == 32 )
1921             or ( $iC == 36 )
1922             or ( $iC == 60 )
1923             or ( $iC == 64 )
1924             or ( $iC == 87 )
1925             ) ? 1 : 0;
1926             }
1927             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
1928 0 0         return ( ( $iC == 88 ) ) ? 1 : 0;
1929             }
1930             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
1931 0 0 0       return ( ( ( $iC >= 87 ) and ( $iC <= 88 ) ) ) ? 1 : 0;
1932             }
1933             elsif ( ( $iR == 34 ) or ( $iR == 62 ) ) {
1934             return (
1935 0 0 0       ( $iC == 4 )
1936             or ( $iC == 8 )
1937             or ( $iC == 32 )
1938             or ( $iC == 34 )
1939             or ( $iC == 36 )
1940             or ( $iC == 60 )
1941             or ( $iC == 62 )
1942             or ( $iC == 64 )
1943             or ( $iC == 88 )
1944             or ( $iC == 90 )
1945             or ( $iC == 92 )
1946             ) ? 1 : 0;
1947             }
1948             elsif ( ( $iR == 8 ) or ( $iR == 92 ) ) {
1949             return (
1950 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1951             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1952             ) ? 1 : 0;
1953             }
1954             elsif ( ( $iR == 7 ) or ( $iR == 89 ) or ( $iR == 91 ) ) {
1955             return (
1956 0 0 0       ( $iC == 32 )
1957             or ( $iC == 36 )
1958             or ( $iC == 60 )
1959             or ( $iC == 64 )
1960             ) ? 1 : 0;
1961             }
1962             elsif (( $iR == 32 )
1963             or ( $iR == 36 )
1964             or ( $iR == 60 )
1965             or ( $iR == 64 ) )
1966             {
1967             return (
1968 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
1969             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
1970             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
1971             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
1972             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
1973             ) ? 1 : 0;
1974             }
1975             elsif (( $iR == 33 )
1976             or ( $iR == 35 )
1977             or ( $iR == 61 )
1978             or ( $iR == 63 ) )
1979             {
1980             return (
1981 0 0 0       ( $iC == 4 )
1982             or ( $iC == 8 )
1983             or ( $iC == 32 )
1984             or ( $iC == 36 )
1985             or ( $iC == 60 )
1986             or ( $iC == 64 )
1987             or ( $iC == 88 )
1988             or ( $iC == 92 )
1989             ) ? 1 : 0;
1990             }
1991 0           return 0;
1992             }
1993             elsif ( $iV == 21 ) {
1994 0 0 0       if ( $iR == 90 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
1995 0 0 0       return ( ( $iC == 0 ) or ( ( $iC >= 3 ) and ( $iC <= 4 ) ) )
1996             ? 1
1997             : 0;
1998             }
1999             elsif ( $iR == 2 ) {
2000 0 0         return ( ( $iC == 91 ) ) ? 1 : 0;
2001             }
2002             elsif ( $iR == 91 ) {
2003             return (
2004 0 0 0       ( $iC == 0 )
2005             or ( ( $iC >= 2 ) and ( $iC <= 3 ) )
2006             or ( $iC == 5 )
2007             ) ? 1 : 0;
2008             }
2009             elsif ( $iR == 94 ) {
2010             return (
2011 0 0 0       ( $iC == 26 )
2012             or ( $iC == 28 )
2013             or ( $iC == 30 )
2014             or ( $iC == 48 )
2015             or ( $iC == 50 )
2016             or ( $iC == 52 )
2017             or ( $iC == 70 )
2018             or ( $iC == 72 )
2019             or ( $iC == 74 )
2020             ) ? 1 : 0;
2021             }
2022             elsif ( $iR == 92 ) {
2023             return (
2024 0 0 0       ( $iC == 4 )
2025             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2026             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2027             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2028             ) ? 1 : 0;
2029             }
2030             elsif ( $iR == 5 ) {
2031             return (
2032 0 0 0       ( $iC == 26 )
2033             or ( $iC == 30 )
2034             or ( $iC == 48 )
2035             or ( $iC == 52 )
2036             or ( $iC == 70 )
2037             or ( $iC == 74 )
2038             or ( $iC == 91 )
2039             ) ? 1 : 0;
2040             }
2041             elsif ( $iR == 4 ) {
2042             return (
2043 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2044             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2045             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2046             or ( $iC == 90 )
2047             or ( $iC == 92 )
2048             ) ? 1 : 0;
2049             }
2050             elsif ( ( $iR == 0 ) or ( $iR == 3 ) ) {
2051 0 0 0       return ( ( ( $iC >= 90 ) and ( $iC <= 91 ) ) ) ? 1 : 0;
2052             }
2053             elsif ( ( $iR == 8 ) or ( $iR == 96 ) ) {
2054             return (
2055 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2056             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2057             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2058             ) ? 1 : 0;
2059             }
2060             elsif ( ( $iR == 7 ) or ( $iR == 93 ) or ( $iR == 95 ) ) {
2061             return (
2062 0 0 0       ( $iC == 26 )
2063             or ( $iC == 30 )
2064             or ( $iC == 48 )
2065             or ( $iC == 52 )
2066             or ( $iC == 70 )
2067             or ( $iC == 74 )
2068             ) ? 1 : 0;
2069             }
2070             elsif ( ( $iR == 28 ) or ( $iR == 50 ) or ( $iR == 72 ) ) {
2071             return (
2072 0 0 0       ( $iC == 4 )
2073             or ( $iC == 8 )
2074             or ( $iC == 26 )
2075             or ( $iC == 28 )
2076             or ( $iC == 30 )
2077             or ( $iC == 48 )
2078             or ( $iC == 50 )
2079             or ( $iC == 52 )
2080             or ( $iC == 70 )
2081             or ( $iC == 72 )
2082             or ( $iC == 74 )
2083             or ( $iC == 92 )
2084             or ( $iC == 94 )
2085             or ( $iC == 96 )
2086             ) ? 1 : 0;
2087             }
2088             elsif (( $iR == 27 )
2089             or ( $iR == 29 )
2090             or ( $iR == 49 )
2091             or ( $iR == 51 )
2092             or ( $iR == 71 )
2093             or ( $iR == 73 ) )
2094             {
2095             return (
2096 0 0 0       ( $iC == 4 )
2097             or ( $iC == 8 )
2098             or ( $iC == 26 )
2099             or ( $iC == 30 )
2100             or ( $iC == 48 )
2101             or ( $iC == 52 )
2102             or ( $iC == 70 )
2103             or ( $iC == 74 )
2104             or ( $iC == 92 )
2105             or ( $iC == 96 )
2106             ) ? 1 : 0;
2107             }
2108             elsif (( $iR == 26 )
2109             or ( $iR == 30 )
2110             or ( $iR == 48 )
2111             or ( $iR == 52 )
2112             or ( $iR == 70 )
2113             or ( $iR == 74 ) )
2114             {
2115             return (
2116 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2117             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2118             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2119             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2120             or ( ( $iC >= 70 ) and ( $iC <= 74 ) )
2121             or ( ( $iC >= 92 ) and ( $iC <= 96 ) )
2122             ) ? 1 : 0;
2123             }
2124 0           return 0;
2125             }
2126             elsif ( $iV == 22 ) {
2127 0 0 0       if ( $iR == 98 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
2128             return (
2129 0 0 0       ( $iC == 24 )
2130             or ( $iC == 26 )
2131             or ( $iC == 28 )
2132             or ( $iC == 48 )
2133             or ( $iC == 50 )
2134             or ( $iC == 52 )
2135             or ( $iC == 72 )
2136             or ( $iC == 74 )
2137             or ( $iC == 76 )
2138             ) ? 1 : 0;
2139             }
2140             elsif ( $iR == 95 ) {
2141 0 0 0       return ( ( $iC == 2 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
2142             ? 1
2143             : 0;
2144             }
2145             elsif ( $iR == 3 ) {
2146 0 0         return ( ( $iC == 96 ) ) ? 1 : 0;
2147             }
2148             elsif ( $iR == 96 ) {
2149             return (
2150 0 0 0       ( ( $iC >= 3 ) and ( $iC <= 4 ) )
2151             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2152             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2153             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2154             ) ? 1 : 0;
2155             }
2156             elsif ( $iR == 94 ) {
2157 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) ) ? 1 : 0;
2158             }
2159             elsif ( $iR == 4 ) {
2160             return (
2161 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2162             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2163             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2164             or ( ( $iC >= 95 ) and ( $iC <= 96 ) )
2165             ) ? 1 : 0;
2166             }
2167             elsif ( $iR == 5 ) {
2168             return (
2169 0 0 0       ( $iC == 24 )
2170             or ( $iC == 28 )
2171             or ( $iC == 48 )
2172             or ( $iC == 52 )
2173             or ( $iC == 72 )
2174             or ( $iC == 76 )
2175             or ( $iC == 95 )
2176             ) ? 1 : 0;
2177             }
2178             elsif ( $iR == 2 ) {
2179 0 0 0       return ( ( ( $iC >= 94 ) and ( $iC <= 95 ) ) ) ? 1 : 0;
2180             }
2181             elsif ( ( $iR == 8 ) or ( $iR == 100 ) ) {
2182             return (
2183 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2184             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2185             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2186             ) ? 1 : 0;
2187             }
2188             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
2189 0 0         return ( ( $iC == 94 ) ) ? 1 : 0;
2190             }
2191             elsif ( ( $iR == 26 ) or ( $iR == 50 ) or ( $iR == 74 ) ) {
2192             return (
2193 0 0 0       ( $iC == 4 )
2194             or ( $iC == 8 )
2195             or ( $iC == 24 )
2196             or ( $iC == 26 )
2197             or ( $iC == 28 )
2198             or ( $iC == 48 )
2199             or ( $iC == 50 )
2200             or ( $iC == 52 )
2201             or ( $iC == 72 )
2202             or ( $iC == 74 )
2203             or ( $iC == 76 )
2204             or ( $iC == 96 )
2205             or ( $iC == 98 )
2206             or ( $iC == 100 )
2207             ) ? 1 : 0;
2208             }
2209             elsif ( ( $iR == 7 ) or ( $iR == 97 ) or ( $iR == 99 ) ) {
2210             return (
2211 0 0 0       ( $iC == 24 )
2212             or ( $iC == 28 )
2213             or ( $iC == 48 )
2214             or ( $iC == 52 )
2215             or ( $iC == 72 )
2216             or ( $iC == 76 )
2217             ) ? 1 : 0;
2218             }
2219             elsif (( $iR == 24 )
2220             or ( $iR == 28 )
2221             or ( $iR == 48 )
2222             or ( $iR == 52 )
2223             or ( $iR == 72 )
2224             or ( $iR == 76 ) )
2225             {
2226             return (
2227 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2228             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2229             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2230             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2231             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2232             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2233             ) ? 1 : 0;
2234             }
2235             elsif (( $iR == 25 )
2236             or ( $iR == 27 )
2237             or ( $iR == 49 )
2238             or ( $iR == 51 )
2239             or ( $iR == 73 )
2240             or ( $iR == 75 ) )
2241             {
2242             return (
2243 0 0 0       ( $iC == 4 )
2244             or ( $iC == 8 )
2245             or ( $iC == 24 )
2246             or ( $iC == 28 )
2247             or ( $iC == 48 )
2248             or ( $iC == 52 )
2249             or ( $iC == 72 )
2250             or ( $iC == 76 )
2251             or ( $iC == 96 )
2252             or ( $iC == 100 )
2253             ) ? 1 : 0;
2254             }
2255 0           return 0;
2256             }
2257             elsif ( $iV == 23 ) {
2258 0 0 0       if ( $iR == 3 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
2259 0 0 0       return ( ( ( $iC >= 98 ) and ( $iC <= 99 ) ) ) ? 1 : 0;
2260             }
2261             elsif ( $iR == 2 ) {
2262 0 0 0       return ( ( ( $iC >= 98 ) and ( $iC <= 100 ) ) ) ? 1 : 0;
2263             }
2264             elsif ( $iR == 1 ) {
2265 0 0 0       return ( ( $iC == 98 ) or ( $iC == 100 ) ) ? 1 : 0;
2266             }
2267             elsif ( $iR == 5 ) {
2268             return (
2269 0 0 0       ( $iC == 28 )
2270             or ( $iC == 32 )
2271             or ( $iC == 52 )
2272             or ( $iC == 56 )
2273             or ( $iC == 76 )
2274             or ( $iC == 80 )
2275             or ( $iC == 99 )
2276             ) ? 1 : 0;
2277             }
2278             elsif ( $iR == 100 ) {
2279             return (
2280 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 2 ) )
2281             or ( $iC == 4 )
2282             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2283             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2284             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2285             ) ? 1 : 0;
2286             }
2287             elsif ( $iR == 99 ) {
2288 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 5 ) ) ) ? 1 : 0;
2289             }
2290             elsif ( $iR == 4 ) {
2291             return (
2292 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2293             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2294             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2295             or ( ( $iC >= 98 ) and ( $iC <= 100 ) )
2296             ) ? 1 : 0;
2297             }
2298             elsif ( $iR == 102 ) {
2299             return (
2300 0 0 0       ( $iC == 28 )
2301             or ( $iC == 30 )
2302             or ( $iC == 32 )
2303             or ( $iC == 52 )
2304             or ( $iC == 54 )
2305             or ( $iC == 56 )
2306             or ( $iC == 76 )
2307             or ( $iC == 78 )
2308             or ( $iC == 80 )
2309             ) ? 1 : 0;
2310             }
2311             elsif ( $iR == 0 ) {
2312 0 0         return ( ( $iC == 100 ) ) ? 1 : 0;
2313             }
2314             elsif ( $iR == 98 ) {
2315 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
2316             }
2317             elsif ( ( $iR == 8 ) or ( $iR == 104 ) ) {
2318             return (
2319 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2320             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2321             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2322             ) ? 1 : 0;
2323             }
2324             elsif ( ( $iR == 7 ) or ( $iR == 101 ) or ( $iR == 103 ) ) {
2325             return (
2326 0 0 0       ( $iC == 28 )
2327             or ( $iC == 32 )
2328             or ( $iC == 52 )
2329             or ( $iC == 56 )
2330             or ( $iC == 76 )
2331             or ( $iC == 80 )
2332             ) ? 1 : 0;
2333             }
2334             elsif ( ( $iR == 30 ) or ( $iR == 54 ) or ( $iR == 78 ) ) {
2335             return (
2336 0 0 0       ( $iC == 4 )
2337             or ( $iC == 8 )
2338             or ( $iC == 28 )
2339             or ( $iC == 30 )
2340             or ( $iC == 32 )
2341             or ( $iC == 52 )
2342             or ( $iC == 54 )
2343             or ( $iC == 56 )
2344             or ( $iC == 76 )
2345             or ( $iC == 78 )
2346             or ( $iC == 80 )
2347             or ( $iC == 100 )
2348             or ( $iC == 102 )
2349             or ( $iC == 104 )
2350             ) ? 1 : 0;
2351             }
2352             elsif (( $iR == 28 )
2353             or ( $iR == 32 )
2354             or ( $iR == 52 )
2355             or ( $iR == 56 )
2356             or ( $iR == 76 )
2357             or ( $iR == 80 ) )
2358             {
2359             return (
2360 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2361             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2362             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2363             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2364             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
2365             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
2366             ) ? 1 : 0;
2367             }
2368             elsif (( $iR == 29 )
2369             or ( $iR == 31 )
2370             or ( $iR == 53 )
2371             or ( $iR == 55 )
2372             or ( $iR == 77 )
2373             or ( $iR == 79 ) )
2374             {
2375             return (
2376 0 0 0       ( $iC == 4 )
2377             or ( $iC == 8 )
2378             or ( $iC == 28 )
2379             or ( $iC == 32 )
2380             or ( $iC == 52 )
2381             or ( $iC == 56 )
2382             or ( $iC == 76 )
2383             or ( $iC == 80 )
2384             or ( $iC == 100 )
2385             or ( $iC == 104 )
2386             ) ? 1 : 0;
2387             }
2388 0           return 0;
2389             }
2390             elsif ( $iV == 24 ) {
2391 0 0 0       if ( $iR == 0 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
2392 0 0         return ( ( $iC == 104 ) ) ? 1 : 0;
2393             }
2394             elsif ( $iR == 106 ) {
2395             return (
2396 0 0 0       ( $iC == 26 )
2397             or ( $iC == 28 )
2398             or ( $iC == 30 )
2399             or ( $iC == 52 )
2400             or ( $iC == 54 )
2401             or ( $iC == 56 )
2402             or ( $iC == 78 )
2403             or ( $iC == 80 )
2404             or ( $iC == 82 )
2405             ) ? 1 : 0;
2406             }
2407             elsif ( $iR == 3 ) {
2408 0 0 0       return ( ( ( $iC >= 102 ) and ( $iC <= 104 ) ) ) ? 1 : 0;
2409             }
2410             elsif ( $iR == 2 ) {
2411 0 0 0       return ( ( ( $iC >= 102 ) and ( $iC <= 103 ) ) ) ? 1 : 0;
2412             }
2413             elsif ( $iR == 104 ) {
2414             return (
2415 0 0 0       ( $iC == 0 )
2416             or ( $iC == 3 )
2417             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2418             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2419             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
2420             ) ? 1 : 0;
2421             }
2422             elsif ( $iR == 5 ) {
2423             return (
2424 0 0 0       ( $iC == 26 )
2425             or ( $iC == 30 )
2426             or ( $iC == 52 )
2427             or ( $iC == 56 )
2428             or ( $iC == 78 )
2429             or ( $iC == 82 )
2430             or ( ( $iC >= 102 ) and ( $iC <= 103 ) )
2431             ) ? 1 : 0;
2432             }
2433             elsif ( ( $iR == 102 ) or ( $iR == 103 ) ) {
2434 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 3 ) ) or ( $iC == 5 ) )
2435             ? 1
2436             : 0;
2437             }
2438             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 108 ) ) {
2439             return (
2440 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2441             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2442             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
2443             ) ? 1 : 0;
2444             }
2445             elsif ( ( $iR == 7 ) or ( $iR == 105 ) or ( $iR == 107 ) ) {
2446             return (
2447 0 0 0       ( $iC == 26 )
2448             or ( $iC == 30 )
2449             or ( $iC == 52 )
2450             or ( $iC == 56 )
2451             or ( $iC == 78 )
2452             or ( $iC == 82 )
2453             ) ? 1 : 0;
2454             }
2455             elsif ( ( $iR == 28 ) or ( $iR == 54 ) or ( $iR == 80 ) ) {
2456             return (
2457 0 0 0       ( $iC == 4 )
2458             or ( $iC == 8 )
2459             or ( $iC == 26 )
2460             or ( $iC == 28 )
2461             or ( $iC == 30 )
2462             or ( $iC == 52 )
2463             or ( $iC == 54 )
2464             or ( $iC == 56 )
2465             or ( $iC == 78 )
2466             or ( $iC == 80 )
2467             or ( $iC == 82 )
2468             or ( $iC == 104 )
2469             or ( $iC == 106 )
2470             or ( $iC == 108 )
2471             ) ? 1 : 0;
2472             }
2473             elsif (( $iR == 26 )
2474             or ( $iR == 30 )
2475             or ( $iR == 52 )
2476             or ( $iR == 56 )
2477             or ( $iR == 78 )
2478             or ( $iR == 82 ) )
2479             {
2480             return (
2481 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2482             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2483             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
2484             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
2485             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
2486             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
2487             ) ? 1 : 0;
2488             }
2489             elsif (( $iR == 27 )
2490             or ( $iR == 29 )
2491             or ( $iR == 53 )
2492             or ( $iR == 55 )
2493             or ( $iR == 79 )
2494             or ( $iR == 81 ) )
2495             {
2496             return (
2497 0 0 0       ( $iC == 4 )
2498             or ( $iC == 8 )
2499             or ( $iC == 26 )
2500             or ( $iC == 30 )
2501             or ( $iC == 52 )
2502             or ( $iC == 56 )
2503             or ( $iC == 78 )
2504             or ( $iC == 82 )
2505             or ( $iC == 104 )
2506             or ( $iC == 108 )
2507             ) ? 1 : 0;
2508             }
2509 0           return 0;
2510             }
2511             elsif ( $iV == 25 ) {
2512 0 0 0       if ( $iR == 1 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
2513 0 0         return ( ( $iC == 108 ) ) ? 1 : 0;
2514             }
2515             elsif ( $iR == 106 ) {
2516             return (
2517 0 0 0       ( $iC == 0 )
2518             or ( $iC == 2 )
2519             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2520             ) ? 1 : 0;
2521             }
2522             elsif ( $iR == 108 ) {
2523             return (
2524 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 2 ) )
2525             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2526             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2527             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2528             ) ? 1 : 0;
2529             }
2530             elsif ( $iR == 5 ) {
2531             return (
2532 0 0 0       ( $iC == 30 )
2533             or ( $iC == 34 )
2534             or ( $iC == 56 )
2535             or ( $iC == 60 )
2536             or ( $iC == 82 )
2537             or ( $iC == 86 )
2538             or ( ( $iC >= 106 ) and ( $iC <= 107 ) )
2539             ) ? 1 : 0;
2540             }
2541             elsif ( $iR == 110 ) {
2542             return (
2543 0 0 0       ( $iC == 30 )
2544             or ( $iC == 32 )
2545             or ( $iC == 34 )
2546             or ( $iC == 56 )
2547             or ( $iC == 58 )
2548             or ( $iC == 60 )
2549             or ( $iC == 82 )
2550             or ( $iC == 84 )
2551             or ( $iC == 86 )
2552             ) ? 1 : 0;
2553             }
2554             elsif ( $iR == 107 ) {
2555 0 0 0       return ( ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
2556             }
2557             elsif ( $iR == 2 ) {
2558 0 0 0       return ( ( ( $iC >= 106 ) and ( $iC <= 108 ) ) ) ? 1 : 0;
2559             }
2560             elsif ( $iR == 0 ) {
2561 0 0         return ( ( $iC == 106 ) ) ? 1 : 0;
2562             }
2563             elsif ( $iR == 4 ) {
2564             return (
2565 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2566             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2567             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2568             or ( $iC == 106 )
2569             ) ? 1 : 0;
2570             }
2571             elsif ( ( $iR == 8 ) or ( $iR == 112 ) ) {
2572             return (
2573 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2574             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2575             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2576             ) ? 1 : 0;
2577             }
2578             elsif ( ( $iR == 7 ) or ( $iR == 109 ) or ( $iR == 111 ) ) {
2579             return (
2580 0 0 0       ( $iC == 30 )
2581             or ( $iC == 34 )
2582             or ( $iC == 56 )
2583             or ( $iC == 60 )
2584             or ( $iC == 82 )
2585             or ( $iC == 86 )
2586             ) ? 1 : 0;
2587             }
2588             elsif ( ( $iR == 32 ) or ( $iR == 58 ) or ( $iR == 84 ) ) {
2589             return (
2590 0 0 0       ( $iC == 4 )
2591             or ( $iC == 8 )
2592             or ( $iC == 30 )
2593             or ( $iC == 32 )
2594             or ( $iC == 34 )
2595             or ( $iC == 56 )
2596             or ( $iC == 58 )
2597             or ( $iC == 60 )
2598             or ( $iC == 82 )
2599             or ( $iC == 84 )
2600             or ( $iC == 86 )
2601             or ( $iC == 108 )
2602             or ( $iC == 110 )
2603             or ( $iC == 112 )
2604             ) ? 1 : 0;
2605             }
2606             elsif (( $iR == 31 )
2607             or ( $iR == 33 )
2608             or ( $iR == 57 )
2609             or ( $iR == 59 )
2610             or ( $iR == 83 )
2611             or ( $iR == 85 ) )
2612             {
2613             return (
2614 0 0 0       ( $iC == 4 )
2615             or ( $iC == 8 )
2616             or ( $iC == 30 )
2617             or ( $iC == 34 )
2618             or ( $iC == 56 )
2619             or ( $iC == 60 )
2620             or ( $iC == 82 )
2621             or ( $iC == 86 )
2622             or ( $iC == 108 )
2623             or ( $iC == 112 )
2624             ) ? 1 : 0;
2625             }
2626             elsif (( $iR == 30 )
2627             or ( $iR == 34 )
2628             or ( $iR == 56 )
2629             or ( $iR == 60 )
2630             or ( $iR == 82 )
2631             or ( $iR == 86 ) )
2632             {
2633             return (
2634 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2635             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2636             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
2637             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2638             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
2639             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
2640             ) ? 1 : 0;
2641             }
2642 0           return 0;
2643             }
2644             elsif ( $iV == 26 ) {
2645 0 0 0       if ( $iR == 112 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
2646             return (
2647 0 0 0       ( ( $iC >= 1 ) and ( $iC <= 3 ) )
2648             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2649             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2650             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2651             ) ? 1 : 0;
2652             }
2653             elsif ( $iR == 0 ) {
2654 0 0 0       return ( ( ( $iC >= 110 ) and ( $iC <= 111 ) ) ) ? 1 : 0;
2655             }
2656             elsif ( $iR == 1 ) {
2657 0 0 0       return ( ( $iC == 110 ) or ( $iC == 112 ) ) ? 1 : 0;
2658             }
2659             elsif ( $iR == 4 ) {
2660             return (
2661 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2662             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2663             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2664             or ( $iC == 111 )
2665             ) ? 1 : 0;
2666             }
2667             elsif ( $iR == 3 ) {
2668 0 0 0       return ( ( ( $iC >= 110 ) and ( $iC <= 112 ) ) ) ? 1 : 0;
2669             }
2670             elsif ( $iR == 110 ) {
2671             return (
2672 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
2673             or ( $iC == 3 )
2674             or ( $iC == 5 )
2675             ) ? 1 : 0;
2676             }
2677             elsif ( $iR == 114 ) {
2678             return (
2679 0 0 0       ( $iC == 28 )
2680             or ( $iC == 30 )
2681             or ( $iC == 32 )
2682             or ( $iC == 56 )
2683             or ( $iC == 58 )
2684             or ( $iC == 60 )
2685             or ( $iC == 84 )
2686             or ( $iC == 86 )
2687             or ( $iC == 88 )
2688             ) ? 1 : 0;
2689             }
2690             elsif ( $iR == 2 ) {
2691 0 0 0       return ( ( ( $iC >= 111 ) and ( $iC <= 112 ) ) ) ? 1 : 0;
2692             }
2693             elsif ( $iR == 5 ) {
2694             return (
2695 0 0 0       ( $iC == 28 )
2696             or ( $iC == 32 )
2697             or ( $iC == 56 )
2698             or ( $iC == 60 )
2699             or ( $iC == 84 )
2700             or ( $iC == 88 )
2701             or ( ( $iC >= 110 ) and ( $iC <= 111 ) )
2702             ) ? 1 : 0;
2703             }
2704             elsif ( $iR == 111 ) {
2705 0 0 0       return ( ( $iC == 0 ) or ( ( $iC >= 2 ) and ( $iC <= 5 ) ) )
2706             ? 1
2707             : 0;
2708             }
2709             elsif ( ( $iR == 8 ) or ( $iR == 116 ) ) {
2710             return (
2711 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2712             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2713             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2714             ) ? 1 : 0;
2715             }
2716             elsif ( ( $iR == 7 ) or ( $iR == 113 ) or ( $iR == 115 ) ) {
2717             return (
2718 0 0 0       ( $iC == 28 )
2719             or ( $iC == 32 )
2720             or ( $iC == 56 )
2721             or ( $iC == 60 )
2722             or ( $iC == 84 )
2723             or ( $iC == 88 )
2724             ) ? 1 : 0;
2725             }
2726             elsif ( ( $iR == 30 ) or ( $iR == 58 ) or ( $iR == 86 ) ) {
2727             return (
2728 0 0 0       ( $iC == 4 )
2729             or ( $iC == 8 )
2730             or ( $iC == 28 )
2731             or ( $iC == 30 )
2732             or ( $iC == 32 )
2733             or ( $iC == 56 )
2734             or ( $iC == 58 )
2735             or ( $iC == 60 )
2736             or ( $iC == 84 )
2737             or ( $iC == 86 )
2738             or ( $iC == 88 )
2739             or ( $iC == 112 )
2740             or ( $iC == 114 )
2741             or ( $iC == 116 )
2742             ) ? 1 : 0;
2743             }
2744             elsif (( $iR == 29 )
2745             or ( $iR == 31 )
2746             or ( $iR == 57 )
2747             or ( $iR == 59 )
2748             or ( $iR == 85 )
2749             or ( $iR == 87 ) )
2750             {
2751             return (
2752 0 0 0       ( $iC == 4 )
2753             or ( $iC == 8 )
2754             or ( $iC == 28 )
2755             or ( $iC == 32 )
2756             or ( $iC == 56 )
2757             or ( $iC == 60 )
2758             or ( $iC == 84 )
2759             or ( $iC == 88 )
2760             or ( $iC == 112 )
2761             or ( $iC == 116 )
2762             ) ? 1 : 0;
2763             }
2764             elsif (( $iR == 28 )
2765             or ( $iR == 32 )
2766             or ( $iR == 56 )
2767             or ( $iR == 60 )
2768             or ( $iR == 84 )
2769             or ( $iR == 88 ) )
2770             {
2771             return (
2772 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2773             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2774             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
2775             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
2776             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
2777             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
2778             ) ? 1 : 0;
2779             }
2780 0           return 0;
2781             }
2782             elsif ( $iV == 27 ) {
2783 0 0 0       if ( $iR == 116 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
2784             return (
2785 0 0 0       ( $iC == 0 )
2786             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2787             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2788             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2789             ) ? 1 : 0;
2790             }
2791             elsif ( $iR == 114 ) {
2792 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
2793             ? 1
2794             : 0;
2795             }
2796             elsif ( $iR == 118 ) {
2797             return (
2798 0 0 0       ( $iC == 32 )
2799             or ( $iC == 34 )
2800             or ( $iC == 36 )
2801             or ( $iC == 60 )
2802             or ( $iC == 62 )
2803             or ( $iC == 64 )
2804             or ( $iC == 88 )
2805             or ( $iC == 90 )
2806             or ( $iC == 92 )
2807             ) ? 1 : 0;
2808             }
2809             elsif ( $iR == 115 ) {
2810             return (
2811 0 0 0       ( $iC == 0 )
2812             or ( $iC == 2 )
2813             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2814             ) ? 1 : 0;
2815             }
2816             elsif ( $iR == 1 ) {
2817 0 0         return ( ( $iC == 114 ) ) ? 1 : 0;
2818             }
2819             elsif ( $iR == 0 ) {
2820 0 0 0       return ( ( ( $iC >= 115 ) and ( $iC <= 116 ) ) ) ? 1 : 0;
2821             }
2822             elsif ( $iR == 5 ) {
2823             return (
2824 0 0 0       ( $iC == 32 )
2825             or ( $iC == 36 )
2826             or ( $iC == 60 )
2827             or ( $iC == 64 )
2828             or ( $iC == 88 )
2829             or ( $iC == 92 )
2830             or ( ( $iC >= 114 ) and ( $iC <= 115 ) )
2831             ) ? 1 : 0;
2832             }
2833             elsif ( $iR == 2 ) {
2834 0 0         return ( ( $iC == 115 ) ) ? 1 : 0;
2835             }
2836             elsif ( $iR == 4 ) {
2837             return (
2838 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2839             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2840             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2841             or ( ( $iC >= 114 ) and ( $iC <= 115 ) )
2842             ) ? 1 : 0;
2843             }
2844             elsif ( ( $iR == 8 ) or ( $iR == 120 ) ) {
2845             return (
2846 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2847             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2848             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2849             ) ? 1 : 0;
2850             }
2851             elsif ( ( $iR == 34 ) or ( $iR == 62 ) or ( $iR == 90 ) ) {
2852             return (
2853 0 0 0       ( $iC == 4 )
2854             or ( $iC == 8 )
2855             or ( $iC == 32 )
2856             or ( $iC == 34 )
2857             or ( $iC == 36 )
2858             or ( $iC == 60 )
2859             or ( $iC == 62 )
2860             or ( $iC == 64 )
2861             or ( $iC == 88 )
2862             or ( $iC == 90 )
2863             or ( $iC == 92 )
2864             or ( $iC == 116 )
2865             or ( $iC == 118 )
2866             or ( $iC == 120 )
2867             ) ? 1 : 0;
2868             }
2869             elsif ( ( $iR == 7 ) or ( $iR == 117 ) or ( $iR == 119 ) ) {
2870             return (
2871 0 0 0       ( $iC == 32 )
2872             or ( $iC == 36 )
2873             or ( $iC == 60 )
2874             or ( $iC == 64 )
2875             or ( $iC == 88 )
2876             or ( $iC == 92 )
2877             ) ? 1 : 0;
2878             }
2879             elsif (( $iR == 33 )
2880             or ( $iR == 35 )
2881             or ( $iR == 61 )
2882             or ( $iR == 63 )
2883             or ( $iR == 89 )
2884             or ( $iR == 91 ) )
2885             {
2886             return (
2887 0 0 0       ( $iC == 4 )
2888             or ( $iC == 8 )
2889             or ( $iC == 32 )
2890             or ( $iC == 36 )
2891             or ( $iC == 60 )
2892             or ( $iC == 64 )
2893             or ( $iC == 88 )
2894             or ( $iC == 92 )
2895             or ( $iC == 116 )
2896             or ( $iC == 120 )
2897             ) ? 1 : 0;
2898             }
2899             elsif (( $iR == 32 )
2900             or ( $iR == 36 )
2901             or ( $iR == 60 )
2902             or ( $iR == 64 )
2903             or ( $iR == 88 )
2904             or ( $iR == 92 ) )
2905             {
2906             return (
2907 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
2908             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
2909             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
2910             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
2911             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
2912             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
2913             ) ? 1 : 0;
2914             }
2915 0           return 0;
2916             }
2917             elsif ( $iV == 28 ) {
2918 0 0 0       if ( $iR == 122 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
2919             return (
2920 0 0 0       ( $iC == 24 )
2921             or ( $iC == 26 )
2922             or ( $iC == 28 )
2923             or ( $iC == 48 )
2924             or ( $iC == 50 )
2925             or ( $iC == 52 )
2926             or ( $iC == 72 )
2927             or ( $iC == 74 )
2928             or ( $iC == 76 )
2929             or ( $iC == 96 )
2930             or ( $iC == 98 )
2931             or ( $iC == 100 )
2932             ) ? 1 : 0;
2933             }
2934             elsif ( $iR == 120 ) {
2935             return (
2936 0 0 0       ( ( $iC >= 3 ) and ( $iC <= 4 ) )
2937             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2938             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2939             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2940             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2941             ) ? 1 : 0;
2942             }
2943             elsif ( $iR == 5 ) {
2944             return (
2945 0 0 0       ( $iC == 24 )
2946             or ( $iC == 28 )
2947             or ( $iC == 48 )
2948             or ( $iC == 52 )
2949             or ( $iC == 72 )
2950             or ( $iC == 76 )
2951             or ( $iC == 96 )
2952             or ( $iC == 100 )
2953             or ( ( $iC >= 118 ) and ( $iC <= 119 ) )
2954             ) ? 1 : 0;
2955             }
2956             elsif ( $iR == 3 ) {
2957 0 0 0       return ( ( ( $iC >= 119 ) and ( $iC <= 120 ) ) ) ? 1 : 0;
2958             }
2959             elsif ( $iR == 118 ) {
2960 0 0 0       return ( ( $iC == 1 ) or ( $iC == 5 ) ) ? 1 : 0;
2961             }
2962             elsif ( $iR == 1 ) {
2963 0 0 0       return ( ( ( $iC >= 118 ) and ( $iC <= 119 ) ) ) ? 1 : 0;
2964             }
2965             elsif ( $iR == 119 ) {
2966             return (
2967 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
2968             or ( $iC == 3 )
2969             or ( $iC == 5 )
2970             ) ? 1 : 0;
2971             }
2972             elsif ( $iR == 4 ) {
2973             return (
2974 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2975             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2976             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2977             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2978             or ( $iC == 120 )
2979             ) ? 1 : 0;
2980             }
2981             elsif ( $iR == 0 ) {
2982 0 0         return ( ( $iC == 119 ) ) ? 1 : 0;
2983             }
2984             elsif ( ( $iR == 8 ) or ( $iR == 124 ) ) {
2985             return (
2986 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
2987             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
2988             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
2989             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
2990             ) ? 1 : 0;
2991             }
2992             elsif ( ( $iR == 7 ) or ( $iR == 121 ) or ( $iR == 123 ) ) {
2993             return (
2994 0 0 0       ( $iC == 24 )
2995             or ( $iC == 28 )
2996             or ( $iC == 48 )
2997             or ( $iC == 52 )
2998             or ( $iC == 72 )
2999             or ( $iC == 76 )
3000             or ( $iC == 96 )
3001             or ( $iC == 100 )
3002             ) ? 1 : 0;
3003             }
3004             elsif (( $iR == 26 )
3005             or ( $iR == 50 )
3006             or ( $iR == 74 )
3007             or ( $iR == 98 ) )
3008             {
3009             return (
3010 0 0 0       ( $iC == 4 )
3011             or ( $iC == 8 )
3012             or ( $iC == 24 )
3013             or ( $iC == 26 )
3014             or ( $iC == 28 )
3015             or ( $iC == 48 )
3016             or ( $iC == 50 )
3017             or ( $iC == 52 )
3018             or ( $iC == 72 )
3019             or ( $iC == 74 )
3020             or ( $iC == 76 )
3021             or ( $iC == 96 )
3022             or ( $iC == 98 )
3023             or ( $iC == 100 )
3024             or ( $iC == 120 )
3025             or ( $iC == 122 )
3026             or ( $iC == 124 )
3027             ) ? 1 : 0;
3028             }
3029             elsif (( $iR == 24 )
3030             or ( $iR == 28 )
3031             or ( $iR == 48 )
3032             or ( $iR == 52 )
3033             or ( $iR == 72 )
3034             or ( $iR == 76 )
3035             or ( $iR == 96 )
3036             or ( $iR == 100 ) )
3037             {
3038             return (
3039 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3040             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3041             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3042             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
3043             or ( ( $iC >= 72 ) and ( $iC <= 76 ) )
3044             or ( ( $iC >= 96 ) and ( $iC <= 100 ) )
3045             or ( ( $iC >= 120 ) and ( $iC <= 124 ) )
3046             ) ? 1 : 0;
3047             }
3048             elsif (( $iR == 25 )
3049             or ( $iR == 27 )
3050             or ( $iR == 49 )
3051             or ( $iR == 51 )
3052             or ( $iR == 73 )
3053             or ( $iR == 75 )
3054             or ( $iR == 97 )
3055             or ( $iR == 99 ) )
3056             {
3057             return (
3058 0 0 0       ( $iC == 4 )
3059             or ( $iC == 8 )
3060             or ( $iC == 24 )
3061             or ( $iC == 28 )
3062             or ( $iC == 48 )
3063             or ( $iC == 52 )
3064             or ( $iC == 72 )
3065             or ( $iC == 76 )
3066             or ( $iC == 96 )
3067             or ( $iC == 100 )
3068             or ( $iC == 120 )
3069             or ( $iC == 124 )
3070             ) ? 1 : 0;
3071             }
3072 0           return 0;
3073             }
3074             elsif ( $iV == 29 ) {
3075 0 0 0       if ( $iR == 123 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3076 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 1 ) ) or ( $iC == 5 ) )
3077             ? 1
3078             : 0;
3079             }
3080             elsif ( $iR == 122 ) {
3081             return (
3082 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
3083             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
3084             ) ? 1 : 0;
3085             }
3086             elsif ( $iR == 4 ) {
3087             return (
3088 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3089             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3090             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3091             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3092             or ( $iC == 122 )
3093             or ( $iC == 124 )
3094             ) ? 1 : 0;
3095             }
3096             elsif ( $iR == 126 ) {
3097             return (
3098 0 0 0       ( $iC == 28 )
3099             or ( $iC == 30 )
3100             or ( $iC == 32 )
3101             or ( $iC == 52 )
3102             or ( $iC == 54 )
3103             or ( $iC == 56 )
3104             or ( $iC == 76 )
3105             or ( $iC == 78 )
3106             or ( $iC == 80 )
3107             or ( $iC == 100 )
3108             or ( $iC == 102 )
3109             or ( $iC == 104 )
3110             ) ? 1 : 0;
3111             }
3112             elsif ( $iR == 3 ) {
3113 0 0         return ( ( $iC == 122 ) ) ? 1 : 0;
3114             }
3115             elsif ( $iR == 5 ) {
3116             return (
3117 0 0 0       ( $iC == 28 )
3118             or ( $iC == 32 )
3119             or ( $iC == 52 )
3120             or ( $iC == 56 )
3121             or ( $iC == 76 )
3122             or ( $iC == 80 )
3123             or ( $iC == 100 )
3124             or ( $iC == 104 )
3125             or ( ( $iC >= 122 ) and ( $iC <= 123 ) )
3126             ) ? 1 : 0;
3127             }
3128             elsif ( $iR == 124 ) {
3129             return (
3130 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 2 ) )
3131             or ( $iC == 4 )
3132             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3133             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3134             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3135             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3136             ) ? 1 : 0;
3137             }
3138             elsif ( $iR == 2 ) {
3139 0 0         return ( ( $iC == 124 ) ) ? 1 : 0;
3140             }
3141             elsif ( ( $iR == 8 ) or ( $iR == 128 ) ) {
3142             return (
3143 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3144             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3145             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3146             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3147             ) ? 1 : 0;
3148             }
3149             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
3150 0 0 0       return ( ( ( $iC >= 122 ) and ( $iC <= 124 ) ) ) ? 1 : 0;
3151             }
3152             elsif ( ( $iR == 7 ) or ( $iR == 125 ) or ( $iR == 127 ) ) {
3153             return (
3154 0 0 0       ( $iC == 28 )
3155             or ( $iC == 32 )
3156             or ( $iC == 52 )
3157             or ( $iC == 56 )
3158             or ( $iC == 76 )
3159             or ( $iC == 80 )
3160             or ( $iC == 100 )
3161             or ( $iC == 104 )
3162             ) ? 1 : 0;
3163             }
3164             elsif (( $iR == 30 )
3165             or ( $iR == 54 )
3166             or ( $iR == 78 )
3167             or ( $iR == 102 ) )
3168             {
3169             return (
3170 0 0 0       ( $iC == 4 )
3171             or ( $iC == 8 )
3172             or ( $iC == 28 )
3173             or ( $iC == 30 )
3174             or ( $iC == 32 )
3175             or ( $iC == 52 )
3176             or ( $iC == 54 )
3177             or ( $iC == 56 )
3178             or ( $iC == 76 )
3179             or ( $iC == 78 )
3180             or ( $iC == 80 )
3181             or ( $iC == 100 )
3182             or ( $iC == 102 )
3183             or ( $iC == 104 )
3184             or ( $iC == 124 )
3185             or ( $iC == 126 )
3186             or ( $iC == 128 )
3187             ) ? 1 : 0;
3188             }
3189             elsif (( $iR == 29 )
3190             or ( $iR == 31 )
3191             or ( $iR == 53 )
3192             or ( $iR == 55 )
3193             or ( $iR == 77 )
3194             or ( $iR == 79 )
3195             or ( $iR == 101 )
3196             or ( $iR == 103 ) )
3197             {
3198             return (
3199 0 0 0       ( $iC == 4 )
3200             or ( $iC == 8 )
3201             or ( $iC == 28 )
3202             or ( $iC == 32 )
3203             or ( $iC == 52 )
3204             or ( $iC == 56 )
3205             or ( $iC == 76 )
3206             or ( $iC == 80 )
3207             or ( $iC == 100 )
3208             or ( $iC == 104 )
3209             or ( $iC == 124 )
3210             or ( $iC == 128 )
3211             ) ? 1 : 0;
3212             }
3213             elsif (( $iR == 28 )
3214             or ( $iR == 32 )
3215             or ( $iR == 52 )
3216             or ( $iR == 56 )
3217             or ( $iR == 76 )
3218             or ( $iR == 80 )
3219             or ( $iR == 100 )
3220             or ( $iR == 104 ) )
3221             {
3222             return (
3223 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3224             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3225             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3226             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
3227             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3228             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
3229             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
3230             ) ? 1 : 0;
3231             }
3232 0           return 0;
3233             }
3234             elsif ( $iV == 30 ) {
3235 0 0 0       if ( $iR == 4 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3236             return (
3237 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3238             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3239             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3240             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3241             or ( ( $iC >= 127 ) and ( $iC <= 128 ) )
3242             ) ? 1 : 0;
3243             }
3244             elsif ( $iR == 128 ) {
3245             return (
3246 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 4 ) )
3247             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3248             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3249             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3250             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3251             ) ? 1 : 0;
3252             }
3253             elsif ( $iR == 127 ) {
3254 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 3 ) and ( $iC <= 5 ) ) )
3255             ? 1
3256             : 0;
3257             }
3258             elsif ( $iR == 5 ) {
3259             return (
3260 0 0 0       ( $iC == 24 )
3261             or ( $iC == 28 )
3262             or ( $iC == 50 )
3263             or ( $iC == 54 )
3264             or ( $iC == 76 )
3265             or ( $iC == 80 )
3266             or ( $iC == 102 )
3267             or ( $iC == 106 )
3268             or ( ( $iC >= 126 ) and ( $iC <= 127 ) )
3269             ) ? 1 : 0;
3270             }
3271             elsif ( $iR == 130 ) {
3272             return (
3273 0 0 0       ( $iC == 24 )
3274             or ( $iC == 26 )
3275             or ( $iC == 28 )
3276             or ( $iC == 50 )
3277             or ( $iC == 52 )
3278             or ( $iC == 54 )
3279             or ( $iC == 76 )
3280             or ( $iC == 78 )
3281             or ( $iC == 80 )
3282             or ( $iC == 102 )
3283             or ( $iC == 104 )
3284             or ( $iC == 106 )
3285             ) ? 1 : 0;
3286             }
3287             elsif ( $iR == 126 ) {
3288 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 5 ) ) ? 1 : 0;
3289             }
3290             elsif ( ( $iR == 8 ) or ( $iR == 132 ) ) {
3291             return (
3292 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3293             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3294             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3295             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3296             ) ? 1 : 0;
3297             }
3298             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
3299 0 0 0       return ( ( $iC == 126 ) or ( $iC == 128 ) ) ? 1 : 0;
3300             }
3301             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
3302 0 0 0       return ( ( ( $iC >= 127 ) and ( $iC <= 128 ) ) ) ? 1 : 0;
3303             }
3304             elsif ( ( $iR == 7 ) or ( $iR == 129 ) or ( $iR == 131 ) ) {
3305             return (
3306 0 0 0       ( $iC == 24 )
3307             or ( $iC == 28 )
3308             or ( $iC == 50 )
3309             or ( $iC == 54 )
3310             or ( $iC == 76 )
3311             or ( $iC == 80 )
3312             or ( $iC == 102 )
3313             or ( $iC == 106 )
3314             ) ? 1 : 0;
3315             }
3316             elsif (( $iR == 26 )
3317             or ( $iR == 52 )
3318             or ( $iR == 78 )
3319             or ( $iR == 104 ) )
3320             {
3321             return (
3322 0 0 0       ( $iC == 4 )
3323             or ( $iC == 8 )
3324             or ( $iC == 24 )
3325             or ( $iC == 26 )
3326             or ( $iC == 28 )
3327             or ( $iC == 50 )
3328             or ( $iC == 52 )
3329             or ( $iC == 54 )
3330             or ( $iC == 76 )
3331             or ( $iC == 78 )
3332             or ( $iC == 80 )
3333             or ( $iC == 102 )
3334             or ( $iC == 104 )
3335             or ( $iC == 106 )
3336             or ( $iC == 128 )
3337             or ( $iC == 130 )
3338             or ( $iC == 132 )
3339             ) ? 1 : 0;
3340             }
3341             elsif (( $iR == 25 )
3342             or ( $iR == 27 )
3343             or ( $iR == 51 )
3344             or ( $iR == 53 )
3345             or ( $iR == 77 )
3346             or ( $iR == 79 )
3347             or ( $iR == 103 )
3348             or ( $iR == 105 ) )
3349             {
3350             return (
3351 0 0 0       ( $iC == 4 )
3352             or ( $iC == 8 )
3353             or ( $iC == 24 )
3354             or ( $iC == 28 )
3355             or ( $iC == 50 )
3356             or ( $iC == 54 )
3357             or ( $iC == 76 )
3358             or ( $iC == 80 )
3359             or ( $iC == 102 )
3360             or ( $iC == 106 )
3361             or ( $iC == 128 )
3362             or ( $iC == 132 )
3363             ) ? 1 : 0;
3364             }
3365             elsif (( $iR == 24 )
3366             or ( $iR == 28 )
3367             or ( $iR == 50 )
3368             or ( $iR == 54 )
3369             or ( $iR == 76 )
3370             or ( $iR == 80 )
3371             or ( $iR == 102 )
3372             or ( $iR == 106 ) )
3373             {
3374             return (
3375 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3376             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3377             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
3378             or ( ( $iC >= 50 ) and ( $iC <= 54 ) )
3379             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
3380             or ( ( $iC >= 102 ) and ( $iC <= 106 ) )
3381             or ( ( $iC >= 128 ) and ( $iC <= 132 ) )
3382             ) ? 1 : 0;
3383             }
3384 0           return 0;
3385             }
3386             elsif ( $iV == 31 ) {
3387 0 0 0       if ( $iR == 131 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3388 0 0 0       return ( ( $iC == 1 ) or ( ( $iC >= 4 ) and ( $iC <= 5 ) ) )
3389             ? 1
3390             : 0;
3391             }
3392             elsif ( $iR == 134 ) {
3393             return (
3394 0 0 0       ( $iC == 28 )
3395             or ( $iC == 30 )
3396             or ( $iC == 32 )
3397             or ( $iC == 54 )
3398             or ( $iC == 56 )
3399             or ( $iC == 58 )
3400             or ( $iC == 80 )
3401             or ( $iC == 82 )
3402             or ( $iC == 84 )
3403             or ( $iC == 106 )
3404             or ( $iC == 108 )
3405             or ( $iC == 110 )
3406             ) ? 1 : 0;
3407             }
3408             elsif ( $iR == 5 ) {
3409             return (
3410 0 0 0       ( $iC == 28 )
3411             or ( $iC == 32 )
3412             or ( $iC == 54 )
3413             or ( $iC == 58 )
3414             or ( $iC == 80 )
3415             or ( $iC == 84 )
3416             or ( $iC == 106 )
3417             or ( $iC == 110 )
3418             or ( ( $iC >= 130 ) and ( $iC <= 131 ) )
3419             ) ? 1 : 0;
3420             }
3421             elsif ( $iR == 130 ) {
3422 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 5 ) ) ) ? 1 : 0;
3423             }
3424             elsif ( $iR == 132 ) {
3425             return (
3426 0 0 0       ( $iC == 4 )
3427             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3428             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3429             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3430             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3431             ) ? 1 : 0;
3432             }
3433             elsif ( $iR == 4 ) {
3434             return (
3435 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3436             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3437             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3438             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3439             or ( ( $iC >= 130 ) and ( $iC <= 132 ) )
3440             ) ? 1 : 0;
3441             }
3442             elsif ( $iR == 1 ) {
3443 0 0         return ( ( $iC == 131 ) ) ? 1 : 0;
3444             }
3445             elsif ( ( $iR == 8 ) or ( $iR == 136 ) ) {
3446             return (
3447 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3448             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3449             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3450             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3451             ) ? 1 : 0;
3452             }
3453             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
3454 0 0         return ( ( $iC == 130 ) ) ? 1 : 0;
3455             }
3456             elsif ( ( $iR == 7 ) or ( $iR == 133 ) or ( $iR == 135 ) ) {
3457             return (
3458 0 0 0       ( $iC == 28 )
3459             or ( $iC == 32 )
3460             or ( $iC == 54 )
3461             or ( $iC == 58 )
3462             or ( $iC == 80 )
3463             or ( $iC == 84 )
3464             or ( $iC == 106 )
3465             or ( $iC == 110 )
3466             ) ? 1 : 0;
3467             }
3468             elsif (( $iR == 30 )
3469             or ( $iR == 56 )
3470             or ( $iR == 82 )
3471             or ( $iR == 108 ) )
3472             {
3473             return (
3474 0 0 0       ( $iC == 4 )
3475             or ( $iC == 8 )
3476             or ( $iC == 28 )
3477             or ( $iC == 30 )
3478             or ( $iC == 32 )
3479             or ( $iC == 54 )
3480             or ( $iC == 56 )
3481             or ( $iC == 58 )
3482             or ( $iC == 80 )
3483             or ( $iC == 82 )
3484             or ( $iC == 84 )
3485             or ( $iC == 106 )
3486             or ( $iC == 108 )
3487             or ( $iC == 110 )
3488             or ( $iC == 132 )
3489             or ( $iC == 134 )
3490             or ( $iC == 136 )
3491             ) ? 1 : 0;
3492             }
3493             elsif (( $iR == 29 )
3494             or ( $iR == 31 )
3495             or ( $iR == 55 )
3496             or ( $iR == 57 )
3497             or ( $iR == 81 )
3498             or ( $iR == 83 )
3499             or ( $iR == 107 )
3500             or ( $iR == 109 ) )
3501             {
3502             return (
3503 0 0 0       ( $iC == 4 )
3504             or ( $iC == 8 )
3505             or ( $iC == 28 )
3506             or ( $iC == 32 )
3507             or ( $iC == 54 )
3508             or ( $iC == 58 )
3509             or ( $iC == 80 )
3510             or ( $iC == 84 )
3511             or ( $iC == 106 )
3512             or ( $iC == 110 )
3513             or ( $iC == 132 )
3514             or ( $iC == 136 )
3515             ) ? 1 : 0;
3516             }
3517             elsif (( $iR == 28 )
3518             or ( $iR == 32 )
3519             or ( $iR == 54 )
3520             or ( $iR == 58 )
3521             or ( $iR == 80 )
3522             or ( $iR == 84 )
3523             or ( $iR == 106 )
3524             or ( $iR == 110 ) )
3525             {
3526             return (
3527 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3528             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3529             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3530             or ( ( $iC >= 54 ) and ( $iC <= 58 ) )
3531             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
3532             or ( ( $iC >= 106 ) and ( $iC <= 110 ) )
3533             or ( ( $iC >= 132 ) and ( $iC <= 136 ) )
3534             ) ? 1 : 0;
3535             }
3536 0           return 0;
3537             }
3538             elsif ( $iV == 32 ) {
3539 0 0 0       if ( $iR == 134 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3540 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) ) ? 1 : 0;
3541             }
3542             elsif ( $iR == 5 ) {
3543             return (
3544 0 0 0       ( $iC == 32 )
3545             or ( $iC == 36 )
3546             or ( $iC == 58 )
3547             or ( $iC == 62 )
3548             or ( $iC == 84 )
3549             or ( $iC == 88 )
3550             or ( $iC == 110 )
3551             or ( $iC == 114 )
3552             or ( $iC == 136 )
3553             ) ? 1 : 0;
3554             }
3555             elsif ( $iR == 0 ) {
3556 0 0 0       return ( ( $iC == 134 ) or ( $iC == 136 ) ) ? 1 : 0;
3557             }
3558             elsif ( $iR == 138 ) {
3559             return (
3560 0 0 0       ( $iC == 32 )
3561             or ( $iC == 34 )
3562             or ( $iC == 36 )
3563             or ( $iC == 58 )
3564             or ( $iC == 60 )
3565             or ( $iC == 62 )
3566             or ( $iC == 84 )
3567             or ( $iC == 86 )
3568             or ( $iC == 88 )
3569             or ( $iC == 110 )
3570             or ( $iC == 112 )
3571             or ( $iC == 114 )
3572             ) ? 1 : 0;
3573             }
3574             elsif ( $iR == 2 ) {
3575 0 0 0       return ( ( ( $iC >= 134 ) and ( $iC <= 136 ) ) ) ? 1 : 0;
3576             }
3577             elsif ( $iR == 135 ) {
3578 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 2 ) ) ) ? 1 : 0;
3579             }
3580             elsif ( $iR == 1 ) {
3581 0 0         return ( ( $iC == 135 ) ) ? 1 : 0;
3582             }
3583             elsif ( $iR == 136 ) {
3584             return (
3585 0 0 0       ( $iC == 0 )
3586             or ( ( $iC >= 2 ) and ( $iC <= 3 ) )
3587             or ( $iC == 5 )
3588             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3589             or ( ( $iC >= 58 ) and ( $iC <= 62 ) )
3590             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3591             or ( ( $iC >= 110 ) and ( $iC <= 114 ) )
3592             ) ? 1 : 0;
3593             }
3594             elsif ( $iR == 3 ) {
3595 0 0         return ( ( $iC == 136 ) ) ? 1 : 0;
3596             }
3597             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 140 ) ) {
3598             return (
3599 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3600             or ( ( $iC >= 58 ) and ( $iC <= 62 ) )
3601             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3602             or ( ( $iC >= 110 ) and ( $iC <= 114 ) )
3603             ) ? 1 : 0;
3604             }
3605             elsif ( ( $iR == 7 ) or ( $iR == 137 ) or ( $iR == 139 ) ) {
3606             return (
3607 0 0 0       ( $iC == 32 )
3608             or ( $iC == 36 )
3609             or ( $iC == 58 )
3610             or ( $iC == 62 )
3611             or ( $iC == 84 )
3612             or ( $iC == 88 )
3613             or ( $iC == 110 )
3614             or ( $iC == 114 )
3615             ) ? 1 : 0;
3616             }
3617             elsif (( $iR == 34 )
3618             or ( $iR == 60 )
3619             or ( $iR == 86 )
3620             or ( $iR == 112 ) )
3621             {
3622             return (
3623 0 0 0       ( $iC == 4 )
3624             or ( $iC == 8 )
3625             or ( $iC == 32 )
3626             or ( $iC == 34 )
3627             or ( $iC == 36 )
3628             or ( $iC == 58 )
3629             or ( $iC == 60 )
3630             or ( $iC == 62 )
3631             or ( $iC == 84 )
3632             or ( $iC == 86 )
3633             or ( $iC == 88 )
3634             or ( $iC == 110 )
3635             or ( $iC == 112 )
3636             or ( $iC == 114 )
3637             or ( $iC == 136 )
3638             or ( $iC == 138 )
3639             or ( $iC == 140 )
3640             ) ? 1 : 0;
3641             }
3642             elsif (( $iR == 33 )
3643             or ( $iR == 35 )
3644             or ( $iR == 59 )
3645             or ( $iR == 61 )
3646             or ( $iR == 85 )
3647             or ( $iR == 87 )
3648             or ( $iR == 111 )
3649             or ( $iR == 113 ) )
3650             {
3651             return (
3652 0 0 0       ( $iC == 4 )
3653             or ( $iC == 8 )
3654             or ( $iC == 32 )
3655             or ( $iC == 36 )
3656             or ( $iC == 58 )
3657             or ( $iC == 62 )
3658             or ( $iC == 84 )
3659             or ( $iC == 88 )
3660             or ( $iC == 110 )
3661             or ( $iC == 114 )
3662             or ( $iC == 136 )
3663             or ( $iC == 140 )
3664             ) ? 1 : 0;
3665             }
3666             elsif (( $iR == 32 )
3667             or ( $iR == 36 )
3668             or ( $iR == 58 )
3669             or ( $iR == 62 )
3670             or ( $iR == 84 )
3671             or ( $iR == 88 )
3672             or ( $iR == 110 )
3673             or ( $iR == 114 ) )
3674             {
3675             return (
3676 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3677             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3678             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3679             or ( ( $iC >= 58 ) and ( $iC <= 62 ) )
3680             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3681             or ( ( $iC >= 110 ) and ( $iC <= 114 ) )
3682             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
3683             ) ? 1 : 0;
3684             }
3685 0           return 0;
3686             }
3687             elsif ( $iV == 33 ) {
3688 0 0 0       if ( $iR == 142 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3689             return (
3690 0 0 0       ( $iC == 28 )
3691             or ( $iC == 30 )
3692             or ( $iC == 32 )
3693             or ( $iC == 56 )
3694             or ( $iC == 58 )
3695             or ( $iC == 60 )
3696             or ( $iC == 84 )
3697             or ( $iC == 86 )
3698             or ( $iC == 88 )
3699             or ( $iC == 112 )
3700             or ( $iC == 114 )
3701             or ( $iC == 116 )
3702             ) ? 1 : 0;
3703             }
3704             elsif ( $iR == 4 ) {
3705             return (
3706 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3707             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3708             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3709             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3710             or ( $iC == 138 )
3711             ) ? 1 : 0;
3712             }
3713             elsif ( $iR == 138 ) {
3714 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
3715             }
3716             elsif ( $iR == 140 ) {
3717             return (
3718 0 0 0       ( $iC == 1 )
3719             or ( $iC == 5 )
3720             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3721             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3722             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3723             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3724             ) ? 1 : 0;
3725             }
3726             elsif ( $iR == 139 ) {
3727 0 0 0       return ( ( ( $iC >= 1 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
3728             }
3729             elsif ( $iR == 1 ) {
3730 0 0 0       return ( ( ( $iC >= 139 ) and ( $iC <= 140 ) ) ) ? 1 : 0;
3731             }
3732             elsif ( $iR == 5 ) {
3733             return (
3734 0 0 0       ( $iC == 28 )
3735             or ( $iC == 32 )
3736             or ( $iC == 56 )
3737             or ( $iC == 60 )
3738             or ( $iC == 84 )
3739             or ( $iC == 88 )
3740             or ( $iC == 112 )
3741             or ( $iC == 116 )
3742             or ( $iC == 140 )
3743             ) ? 1 : 0;
3744             }
3745             elsif ( ( $iR == 8 ) or ( $iR == 144 ) ) {
3746             return (
3747 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3748             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3749             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3750             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3751             ) ? 1 : 0;
3752             }
3753             elsif ( ( $iR == 2 ) or ( $iR == 3 ) ) {
3754 0 0 0       return ( ( ( $iC >= 138 ) and ( $iC <= 139 ) ) ) ? 1 : 0;
3755             }
3756             elsif ( ( $iR == 7 ) or ( $iR == 141 ) or ( $iR == 143 ) ) {
3757             return (
3758 0 0 0       ( $iC == 28 )
3759             or ( $iC == 32 )
3760             or ( $iC == 56 )
3761             or ( $iC == 60 )
3762             or ( $iC == 84 )
3763             or ( $iC == 88 )
3764             or ( $iC == 112 )
3765             or ( $iC == 116 )
3766             ) ? 1 : 0;
3767             }
3768             elsif (( $iR == 30 )
3769             or ( $iR == 58 )
3770             or ( $iR == 86 )
3771             or ( $iR == 114 ) )
3772             {
3773             return (
3774 0 0 0       ( $iC == 4 )
3775             or ( $iC == 8 )
3776             or ( $iC == 28 )
3777             or ( $iC == 30 )
3778             or ( $iC == 32 )
3779             or ( $iC == 56 )
3780             or ( $iC == 58 )
3781             or ( $iC == 60 )
3782             or ( $iC == 84 )
3783             or ( $iC == 86 )
3784             or ( $iC == 88 )
3785             or ( $iC == 112 )
3786             or ( $iC == 114 )
3787             or ( $iC == 116 )
3788             or ( $iC == 140 )
3789             or ( $iC == 142 )
3790             or ( $iC == 144 )
3791             ) ? 1 : 0;
3792             }
3793             elsif (( $iR == 28 )
3794             or ( $iR == 32 )
3795             or ( $iR == 56 )
3796             or ( $iR == 60 )
3797             or ( $iR == 84 )
3798             or ( $iR == 88 )
3799             or ( $iR == 112 )
3800             or ( $iR == 116 ) )
3801             {
3802             return (
3803 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3804             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3805             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
3806             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
3807             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
3808             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
3809             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
3810             ) ? 1 : 0;
3811             }
3812             elsif (( $iR == 29 )
3813             or ( $iR == 31 )
3814             or ( $iR == 57 )
3815             or ( $iR == 59 )
3816             or ( $iR == 85 )
3817             or ( $iR == 87 )
3818             or ( $iR == 113 )
3819             or ( $iR == 115 ) )
3820             {
3821             return (
3822 0 0 0       ( $iC == 4 )
3823             or ( $iC == 8 )
3824             or ( $iC == 28 )
3825             or ( $iC == 32 )
3826             or ( $iC == 56 )
3827             or ( $iC == 60 )
3828             or ( $iC == 84 )
3829             or ( $iC == 88 )
3830             or ( $iC == 112 )
3831             or ( $iC == 116 )
3832             or ( $iC == 140 )
3833             or ( $iC == 144 )
3834             ) ? 1 : 0;
3835             }
3836 0           return 0;
3837             }
3838             elsif ( $iV == 34 ) {
3839 0 0 0       if ( $iR == 4 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3840             return (
3841 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3842             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3843             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3844             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3845             or ( $iC == 143 )
3846             ) ? 1 : 0;
3847             }
3848             elsif ( $iR == 142 ) {
3849 0 0         return ( ( $iC == 1 ) ) ? 1 : 0;
3850             }
3851             elsif ( $iR == 5 ) {
3852             return (
3853 0 0 0       ( $iC == 32 )
3854             or ( $iC == 36 )
3855             or ( $iC == 60 )
3856             or ( $iC == 64 )
3857             or ( $iC == 88 )
3858             or ( $iC == 92 )
3859             or ( $iC == 116 )
3860             or ( $iC == 120 )
3861             or ( $iC == 144 )
3862             ) ? 1 : 0;
3863             }
3864             elsif ( $iR == 146 ) {
3865             return (
3866 0 0 0       ( $iC == 32 )
3867             or ( $iC == 34 )
3868             or ( $iC == 36 )
3869             or ( $iC == 60 )
3870             or ( $iC == 62 )
3871             or ( $iC == 64 )
3872             or ( $iC == 88 )
3873             or ( $iC == 90 )
3874             or ( $iC == 92 )
3875             or ( $iC == 116 )
3876             or ( $iC == 118 )
3877             or ( $iC == 120 )
3878             ) ? 1 : 0;
3879             }
3880             elsif ( $iR == 144 ) {
3881             return (
3882 0 0 0       ( $iC == 1 )
3883             or ( $iC == 3 )
3884             or ( $iC == 5 )
3885             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3886             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3887             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3888             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3889             ) ? 1 : 0;
3890             }
3891             elsif ( $iR == 143 ) {
3892 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 4 ) )
3893             ? 1
3894             : 0;
3895             }
3896             elsif ( $iR == 3 ) {
3897 0 0         return ( ( $iC == 144 ) ) ? 1 : 0;
3898             }
3899             elsif ( $iR == 1 ) {
3900 0 0 0       return ( ( ( $iC >= 142 ) and ( $iC <= 144 ) ) ) ? 1 : 0;
3901             }
3902             elsif ( ( $iR == 8 ) or ( $iR == 148 ) ) {
3903             return (
3904 0 0 0       ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3905             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3906             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3907             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3908             ) ? 1 : 0;
3909             }
3910             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
3911 0 0         return ( ( $iC == 143 ) ) ? 1 : 0;
3912             }
3913             elsif ( ( $iR == 7 ) or ( $iR == 145 ) or ( $iR == 147 ) ) {
3914             return (
3915 0 0 0       ( $iC == 32 )
3916             or ( $iC == 36 )
3917             or ( $iC == 60 )
3918             or ( $iC == 64 )
3919             or ( $iC == 88 )
3920             or ( $iC == 92 )
3921             or ( $iC == 116 )
3922             or ( $iC == 120 )
3923             ) ? 1 : 0;
3924             }
3925             elsif (( $iR == 34 )
3926             or ( $iR == 62 )
3927             or ( $iR == 90 )
3928             or ( $iR == 118 ) )
3929             {
3930             return (
3931 0 0 0       ( $iC == 4 )
3932             or ( $iC == 8 )
3933             or ( $iC == 32 )
3934             or ( $iC == 34 )
3935             or ( $iC == 36 )
3936             or ( $iC == 60 )
3937             or ( $iC == 62 )
3938             or ( $iC == 64 )
3939             or ( $iC == 88 )
3940             or ( $iC == 90 )
3941             or ( $iC == 92 )
3942             or ( $iC == 116 )
3943             or ( $iC == 118 )
3944             or ( $iC == 120 )
3945             or ( $iC == 144 )
3946             or ( $iC == 146 )
3947             or ( $iC == 148 )
3948             ) ? 1 : 0;
3949             }
3950             elsif (( $iR == 32 )
3951             or ( $iR == 36 )
3952             or ( $iR == 60 )
3953             or ( $iR == 64 )
3954             or ( $iR == 88 )
3955             or ( $iR == 92 )
3956             or ( $iR == 116 )
3957             or ( $iR == 120 ) )
3958             {
3959             return (
3960 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
3961             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
3962             or ( ( $iC >= 32 ) and ( $iC <= 36 ) )
3963             or ( ( $iC >= 60 ) and ( $iC <= 64 ) )
3964             or ( ( $iC >= 88 ) and ( $iC <= 92 ) )
3965             or ( ( $iC >= 116 ) and ( $iC <= 120 ) )
3966             or ( ( $iC >= 144 ) and ( $iC <= 148 ) )
3967             ) ? 1 : 0;
3968             }
3969             elsif (( $iR == 33 )
3970             or ( $iR == 35 )
3971             or ( $iR == 61 )
3972             or ( $iR == 63 )
3973             or ( $iR == 89 )
3974             or ( $iR == 91 )
3975             or ( $iR == 117 )
3976             or ( $iR == 119 ) )
3977             {
3978             return (
3979 0 0 0       ( $iC == 4 )
3980             or ( $iC == 8 )
3981             or ( $iC == 32 )
3982             or ( $iC == 36 )
3983             or ( $iC == 60 )
3984             or ( $iC == 64 )
3985             or ( $iC == 88 )
3986             or ( $iC == 92 )
3987             or ( $iC == 116 )
3988             or ( $iC == 120 )
3989             or ( $iC == 144 )
3990             or ( $iC == 148 )
3991             ) ? 1 : 0;
3992             }
3993 0           return 0;
3994             }
3995             elsif ( $iV == 35 ) {
3996 0 0 0       if ( $iR == 146 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
3997             return (
3998 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
3999             or ( ( $iC >= 3 ) and ( $iC <= 4 ) )
4000             ) ? 1 : 0;
4001             }
4002             elsif ( $iR == 5 ) {
4003             return (
4004 0 0 0       ( $iC == 28 )
4005             or ( $iC == 32 )
4006             or ( $iC == 52 )
4007             or ( $iC == 56 )
4008             or ( $iC == 76 )
4009             or ( $iC == 80 )
4010             or ( $iC == 100 )
4011             or ( $iC == 104 )
4012             or ( $iC == 124 )
4013             or ( $iC == 128 )
4014             or ( $iC == 148 )
4015             ) ? 1 : 0;
4016             }
4017             elsif ( $iR == 4 ) {
4018             return (
4019 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4020             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4021             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4022             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4023             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4024             or ( ( $iC >= 146 ) and ( $iC <= 147 ) )
4025             ) ? 1 : 0;
4026             }
4027             elsif ( $iR == 148 ) {
4028             return (
4029 0 0 0       ( $iC == 0 )
4030             or ( $iC == 2 )
4031             or ( $iC == 5 )
4032             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4033             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4034             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4035             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4036             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4037             ) ? 1 : 0;
4038             }
4039             elsif ( $iR == 2 ) {
4040 0 0 0       return ( ( ( $iC >= 147 ) and ( $iC <= 148 ) ) ) ? 1 : 0;
4041             }
4042             elsif ( $iR == 0 ) {
4043 0 0 0       return ( ( ( $iC >= 146 ) and ( $iC <= 148 ) ) ) ? 1 : 0;
4044             }
4045             elsif ( $iR == 147 ) {
4046 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
4047             }
4048             elsif ( $iR == 150 ) {
4049             return (
4050 0 0 0       ( $iC == 28 )
4051             or ( $iC == 30 )
4052             or ( $iC == 32 )
4053             or ( $iC == 52 )
4054             or ( $iC == 54 )
4055             or ( $iC == 56 )
4056             or ( $iC == 76 )
4057             or ( $iC == 78 )
4058             or ( $iC == 80 )
4059             or ( $iC == 100 )
4060             or ( $iC == 102 )
4061             or ( $iC == 104 )
4062             or ( $iC == 124 )
4063             or ( $iC == 126 )
4064             or ( $iC == 128 )
4065             ) ? 1 : 0;
4066             }
4067             elsif ( ( $iR == 1 ) or ( $iR == 3 ) ) {
4068 0 0 0       return ( ( ( $iC >= 146 ) and ( $iC <= 147 ) ) ) ? 1 : 0;
4069             }
4070             elsif ( ( $iR == 8 ) or ( $iR == 152 ) ) {
4071             return (
4072 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4073             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4074             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4075             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4076             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4077             ) ? 1 : 0;
4078             }
4079             elsif ( ( $iR == 7 ) or ( $iR == 149 ) or ( $iR == 151 ) ) {
4080             return (
4081 0 0 0       ( $iC == 28 )
4082             or ( $iC == 32 )
4083             or ( $iC == 52 )
4084             or ( $iC == 56 )
4085             or ( $iC == 76 )
4086             or ( $iC == 80 )
4087             or ( $iC == 100 )
4088             or ( $iC == 104 )
4089             or ( $iC == 124 )
4090             or ( $iC == 128 )
4091             ) ? 1 : 0;
4092             }
4093             elsif (( $iR == 30 )
4094             or ( $iR == 54 )
4095             or ( $iR == 78 )
4096             or ( $iR == 102 )
4097             or ( $iR == 126 ) )
4098             {
4099             return (
4100 0 0 0       ( $iC == 4 )
4101             or ( $iC == 8 )
4102             or ( $iC == 28 )
4103             or ( $iC == 30 )
4104             or ( $iC == 32 )
4105             or ( $iC == 52 )
4106             or ( $iC == 54 )
4107             or ( $iC == 56 )
4108             or ( $iC == 76 )
4109             or ( $iC == 78 )
4110             or ( $iC == 80 )
4111             or ( $iC == 100 )
4112             or ( $iC == 102 )
4113             or ( $iC == 104 )
4114             or ( $iC == 124 )
4115             or ( $iC == 126 )
4116             or ( $iC == 128 )
4117             or ( $iC == 148 )
4118             or ( $iC == 150 )
4119             or ( $iC == 152 )
4120             ) ? 1 : 0;
4121             }
4122             elsif (( $iR == 29 )
4123             or ( $iR == 31 )
4124             or ( $iR == 53 )
4125             or ( $iR == 55 )
4126             or ( $iR == 77 )
4127             or ( $iR == 79 )
4128             or ( $iR == 101 )
4129             or ( $iR == 103 )
4130             or ( $iR == 125 )
4131             or ( $iR == 127 ) )
4132             {
4133             return (
4134 0 0 0       ( $iC == 4 )
4135             or ( $iC == 8 )
4136             or ( $iC == 28 )
4137             or ( $iC == 32 )
4138             or ( $iC == 52 )
4139             or ( $iC == 56 )
4140             or ( $iC == 76 )
4141             or ( $iC == 80 )
4142             or ( $iC == 100 )
4143             or ( $iC == 104 )
4144             or ( $iC == 124 )
4145             or ( $iC == 128 )
4146             or ( $iC == 148 )
4147             or ( $iC == 152 )
4148             ) ? 1 : 0;
4149             }
4150             elsif (( $iR == 28 )
4151             or ( $iR == 32 )
4152             or ( $iR == 52 )
4153             or ( $iR == 56 )
4154             or ( $iR == 76 )
4155             or ( $iR == 80 )
4156             or ( $iR == 100 )
4157             or ( $iR == 104 )
4158             or ( $iR == 124 )
4159             or ( $iR == 128 ) )
4160             {
4161             return (
4162 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4163             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4164             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4165             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4166             or ( ( $iC >= 76 ) and ( $iC <= 80 ) )
4167             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4168             or ( ( $iC >= 124 ) and ( $iC <= 128 ) )
4169             or ( ( $iC >= 148 ) and ( $iC <= 152 ) )
4170             ) ? 1 : 0;
4171             }
4172 0           return 0;
4173             }
4174             elsif ( $iV == 36 ) {
4175 0 0 0       if ( $iR == 5 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4176             return (
4177 0 0 0       ( $iC == 22 )
4178             or ( $iC == 26 )
4179             or ( $iC == 48 )
4180             or ( $iC == 52 )
4181             or ( $iC == 74 )
4182             or ( $iC == 78 )
4183             or ( $iC == 100 )
4184             or ( $iC == 104 )
4185             or ( $iC == 126 )
4186             or ( $iC == 130 )
4187             or ( $iC == 152 )
4188             ) ? 1 : 0;
4189             }
4190             elsif ( $iR == 4 ) {
4191             return (
4192 0 0 0       ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4193             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4194             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4195             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4196             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4197             or ( $iC == 152 )
4198             ) ? 1 : 0;
4199             }
4200             elsif ( $iR == 154 ) {
4201             return (
4202 0 0 0       ( $iC == 22 )
4203             or ( $iC == 24 )
4204             or ( $iC == 26 )
4205             or ( $iC == 48 )
4206             or ( $iC == 50 )
4207             or ( $iC == 52 )
4208             or ( $iC == 74 )
4209             or ( $iC == 76 )
4210             or ( $iC == 78 )
4211             or ( $iC == 100 )
4212             or ( $iC == 102 )
4213             or ( $iC == 104 )
4214             or ( $iC == 126 )
4215             or ( $iC == 128 )
4216             or ( $iC == 130 )
4217             ) ? 1 : 0;
4218             }
4219             elsif ( $iR == 150 ) {
4220 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 1 ) ) or ( $iC == 3 ) )
4221             ? 1
4222             : 0;
4223             }
4224             elsif ( $iR == 0 ) {
4225 0 0 0       return ( ( ( $iC >= 150 ) and ( $iC <= 151 ) ) ) ? 1 : 0;
4226             }
4227             elsif ( $iR == 151 ) {
4228 0 0         return ( ( $iC == 0 ) ) ? 1 : 0;
4229             }
4230             elsif ( $iR == 1 ) {
4231 0 0         return ( ( $iC == 150 ) ) ? 1 : 0;
4232             }
4233             elsif ( $iR == 152 ) {
4234             return (
4235 0 0 0       ( ( $iC >= 2 ) and ( $iC <= 5 ) )
4236             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4237             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4238             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4239             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4240             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4241             ) ? 1 : 0;
4242             }
4243             elsif ( $iR == 3 ) {
4244 0 0 0       return ( ( $iC == 150 ) or ( $iC == 152 ) ) ? 1 : 0;
4245             }
4246             elsif ( $iR == 2 ) {
4247 0 0         return ( ( $iC == 152 ) ) ? 1 : 0;
4248             }
4249             elsif ( ( $iR == 8 ) or ( $iR == 156 ) ) {
4250             return (
4251 0 0 0       ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4252             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4253             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4254             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4255             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4256             ) ? 1 : 0;
4257             }
4258             elsif ( ( $iR == 7 ) or ( $iR == 153 ) or ( $iR == 155 ) ) {
4259             return (
4260 0 0 0       ( $iC == 22 )
4261             or ( $iC == 26 )
4262             or ( $iC == 48 )
4263             or ( $iC == 52 )
4264             or ( $iC == 74 )
4265             or ( $iC == 78 )
4266             or ( $iC == 100 )
4267             or ( $iC == 104 )
4268             or ( $iC == 126 )
4269             or ( $iC == 130 )
4270             ) ? 1 : 0;
4271             }
4272             elsif (( $iR == 24 )
4273             or ( $iR == 50 )
4274             or ( $iR == 76 )
4275             or ( $iR == 102 )
4276             or ( $iR == 128 ) )
4277             {
4278             return (
4279 0 0 0       ( $iC == 4 )
4280             or ( $iC == 8 )
4281             or ( $iC == 22 )
4282             or ( $iC == 24 )
4283             or ( $iC == 26 )
4284             or ( $iC == 48 )
4285             or ( $iC == 50 )
4286             or ( $iC == 52 )
4287             or ( $iC == 74 )
4288             or ( $iC == 76 )
4289             or ( $iC == 78 )
4290             or ( $iC == 100 )
4291             or ( $iC == 102 )
4292             or ( $iC == 104 )
4293             or ( $iC == 126 )
4294             or ( $iC == 128 )
4295             or ( $iC == 130 )
4296             or ( $iC == 152 )
4297             or ( $iC == 154 )
4298             or ( $iC == 156 )
4299             ) ? 1 : 0;
4300             }
4301             elsif (( $iR == 22 )
4302             or ( $iR == 26 )
4303             or ( $iR == 48 )
4304             or ( $iR == 52 )
4305             or ( $iR == 74 )
4306             or ( $iR == 78 )
4307             or ( $iR == 100 )
4308             or ( $iR == 104 )
4309             or ( $iR == 126 )
4310             or ( $iR == 130 ) )
4311             {
4312             return (
4313 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4314             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4315             or ( ( $iC >= 22 ) and ( $iC <= 26 ) )
4316             or ( ( $iC >= 48 ) and ( $iC <= 52 ) )
4317             or ( ( $iC >= 74 ) and ( $iC <= 78 ) )
4318             or ( ( $iC >= 100 ) and ( $iC <= 104 ) )
4319             or ( ( $iC >= 126 ) and ( $iC <= 130 ) )
4320             or ( ( $iC >= 152 ) and ( $iC <= 156 ) )
4321             ) ? 1 : 0;
4322             }
4323             elsif (( $iR == 23 )
4324             or ( $iR == 25 )
4325             or ( $iR == 49 )
4326             or ( $iR == 51 )
4327             or ( $iR == 75 )
4328             or ( $iR == 77 )
4329             or ( $iR == 101 )
4330             or ( $iR == 103 )
4331             or ( $iR == 127 )
4332             or ( $iR == 129 ) )
4333             {
4334             return (
4335 0 0 0       ( $iC == 4 )
4336             or ( $iC == 8 )
4337             or ( $iC == 22 )
4338             or ( $iC == 26 )
4339             or ( $iC == 48 )
4340             or ( $iC == 52 )
4341             or ( $iC == 74 )
4342             or ( $iC == 78 )
4343             or ( $iC == 100 )
4344             or ( $iC == 104 )
4345             or ( $iC == 126 )
4346             or ( $iC == 130 )
4347             or ( $iC == 152 )
4348             or ( $iC == 156 )
4349             ) ? 1 : 0;
4350             }
4351 0           return 0;
4352             }
4353             elsif ( $iV == 37 ) {
4354 0 0 0       if ( $iR == 0 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4355 0 0 0       return ( ( ( $iC >= 155 ) and ( $iC <= 156 ) ) ) ? 1 : 0;
4356             }
4357             elsif ( $iR == 1 ) {
4358 0 0 0       return ( ( $iC == 154 ) or ( $iC == 156 ) ) ? 1 : 0;
4359             }
4360             elsif ( $iR == 155 ) {
4361 0 0 0       return ( ( $iC == 0 ) or ( $iC == 3 ) ) ? 1 : 0;
4362             }
4363             elsif ( $iR == 158 ) {
4364             return (
4365 0 0 0       ( $iC == 26 )
4366             or ( $iC == 28 )
4367             or ( $iC == 30 )
4368             or ( $iC == 52 )
4369             or ( $iC == 54 )
4370             or ( $iC == 56 )
4371             or ( $iC == 78 )
4372             or ( $iC == 80 )
4373             or ( $iC == 82 )
4374             or ( $iC == 104 )
4375             or ( $iC == 106 )
4376             or ( $iC == 108 )
4377             or ( $iC == 130 )
4378             or ( $iC == 132 )
4379             or ( $iC == 134 )
4380             ) ? 1 : 0;
4381             }
4382             elsif ( $iR == 3 ) {
4383 0 0         return ( ( $iC == 155 ) ) ? 1 : 0;
4384             }
4385             elsif ( $iR == 154 ) {
4386 0 0 0       return ( ( $iC == 1 ) or ( $iC == 4 ) ) ? 1 : 0;
4387             }
4388             elsif ( $iR == 4 ) {
4389             return (
4390 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4391             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4392             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4393             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4394             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4395             or ( $iC == 154 )
4396             or ( $iC == 156 )
4397             ) ? 1 : 0;
4398             }
4399             elsif ( $iR == 5 ) {
4400             return (
4401 0 0 0       ( $iC == 26 )
4402             or ( $iC == 30 )
4403             or ( $iC == 52 )
4404             or ( $iC == 56 )
4405             or ( $iC == 78 )
4406             or ( $iC == 82 )
4407             or ( $iC == 104 )
4408             or ( $iC == 108 )
4409             or ( $iC == 130 )
4410             or ( $iC == 134 )
4411             or ( $iC == 156 )
4412             ) ? 1 : 0;
4413             }
4414             elsif ( $iR == 156 ) {
4415             return (
4416 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
4417             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4418             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4419             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4420             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4421             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4422             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4423             ) ? 1 : 0;
4424             }
4425             elsif ( ( $iR == 8 ) or ( $iR == 160 ) ) {
4426             return (
4427 0 0 0       ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4428             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4429             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4430             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4431             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4432             ) ? 1 : 0;
4433             }
4434             elsif ( ( $iR == 7 ) or ( $iR == 157 ) or ( $iR == 159 ) ) {
4435             return (
4436 0 0 0       ( $iC == 26 )
4437             or ( $iC == 30 )
4438             or ( $iC == 52 )
4439             or ( $iC == 56 )
4440             or ( $iC == 78 )
4441             or ( $iC == 82 )
4442             or ( $iC == 104 )
4443             or ( $iC == 108 )
4444             or ( $iC == 130 )
4445             or ( $iC == 134 )
4446             ) ? 1 : 0;
4447             }
4448             elsif (( $iR == 28 )
4449             or ( $iR == 54 )
4450             or ( $iR == 80 )
4451             or ( $iR == 106 )
4452             or ( $iR == 132 ) )
4453             {
4454             return (
4455 0 0 0       ( $iC == 4 )
4456             or ( $iC == 8 )
4457             or ( $iC == 26 )
4458             or ( $iC == 28 )
4459             or ( $iC == 30 )
4460             or ( $iC == 52 )
4461             or ( $iC == 54 )
4462             or ( $iC == 56 )
4463             or ( $iC == 78 )
4464             or ( $iC == 80 )
4465             or ( $iC == 82 )
4466             or ( $iC == 104 )
4467             or ( $iC == 106 )
4468             or ( $iC == 108 )
4469             or ( $iC == 130 )
4470             or ( $iC == 132 )
4471             or ( $iC == 134 )
4472             or ( $iC == 156 )
4473             or ( $iC == 158 )
4474             or ( $iC == 160 )
4475             ) ? 1 : 0;
4476             }
4477             elsif (( $iR == 27 )
4478             or ( $iR == 29 )
4479             or ( $iR == 53 )
4480             or ( $iR == 55 )
4481             or ( $iR == 79 )
4482             or ( $iR == 81 )
4483             or ( $iR == 105 )
4484             or ( $iR == 107 )
4485             or ( $iR == 131 )
4486             or ( $iR == 133 ) )
4487             {
4488             return (
4489 0 0 0       ( $iC == 4 )
4490             or ( $iC == 8 )
4491             or ( $iC == 26 )
4492             or ( $iC == 30 )
4493             or ( $iC == 52 )
4494             or ( $iC == 56 )
4495             or ( $iC == 78 )
4496             or ( $iC == 82 )
4497             or ( $iC == 104 )
4498             or ( $iC == 108 )
4499             or ( $iC == 130 )
4500             or ( $iC == 134 )
4501             or ( $iC == 156 )
4502             or ( $iC == 160 )
4503             ) ? 1 : 0;
4504             }
4505             elsif (( $iR == 26 )
4506             or ( $iR == 30 )
4507             or ( $iR == 52 )
4508             or ( $iR == 56 )
4509             or ( $iR == 78 )
4510             or ( $iR == 82 )
4511             or ( $iR == 104 )
4512             or ( $iR == 108 )
4513             or ( $iR == 130 )
4514             or ( $iR == 134 ) )
4515             {
4516             return (
4517 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4518             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4519             or ( ( $iC >= 26 ) and ( $iC <= 30 ) )
4520             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4521             or ( ( $iC >= 78 ) and ( $iC <= 82 ) )
4522             or ( ( $iC >= 104 ) and ( $iC <= 108 ) )
4523             or ( ( $iC >= 130 ) and ( $iC <= 134 ) )
4524             or ( ( $iC >= 156 ) and ( $iC <= 160 ) )
4525             ) ? 1 : 0;
4526             }
4527 0           return 0;
4528             }
4529             elsif ( $iV == 38 ) {
4530 0 0 0       if ( $iR == 3 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4531 0 0 0       return ( ( $iC == 158 ) or ( $iC == 160 ) ) ? 1 : 0;
4532             }
4533             elsif ( $iR == 4 ) {
4534             return (
4535 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4536             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4537             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4538             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4539             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4540             or ( ( $iC >= 159 ) and ( $iC <= 160 ) )
4541             ) ? 1 : 0;
4542             }
4543             elsif ( $iR == 160 ) {
4544             return (
4545 0 0 0       ( ( $iC >= 0 ) and ( $iC <= 1 ) )
4546             or ( ( $iC >= 3 ) and ( $iC <= 5 ) )
4547             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4548             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4549             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4550             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4551             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4552             ) ? 1 : 0;
4553             }
4554             elsif ( $iR == 159 ) {
4555 0 0         return ( ( $iC == 4 ) ) ? 1 : 0;
4556             }
4557             elsif ( $iR == 5 ) {
4558             return (
4559 0 0 0       ( $iC == 30 )
4560             or ( $iC == 34 )
4561             or ( $iC == 56 )
4562             or ( $iC == 60 )
4563             or ( $iC == 82 )
4564             or ( $iC == 86 )
4565             or ( $iC == 108 )
4566             or ( $iC == 112 )
4567             or ( $iC == 134 )
4568             or ( $iC == 138 )
4569             or ( $iC == 160 )
4570             ) ? 1 : 0;
4571             }
4572             elsif ( $iR == 2 ) {
4573 0 0         return ( ( $iC == 158 ) ) ? 1 : 0;
4574             }
4575             elsif ( $iR == 162 ) {
4576             return (
4577 0 0 0       ( $iC == 30 )
4578             or ( $iC == 32 )
4579             or ( $iC == 34 )
4580             or ( $iC == 56 )
4581             or ( $iC == 58 )
4582             or ( $iC == 60 )
4583             or ( $iC == 82 )
4584             or ( $iC == 84 )
4585             or ( $iC == 86 )
4586             or ( $iC == 108 )
4587             or ( $iC == 110 )
4588             or ( $iC == 112 )
4589             or ( $iC == 134 )
4590             or ( $iC == 136 )
4591             or ( $iC == 138 )
4592             ) ? 1 : 0;
4593             }
4594             elsif ( $iR == 158 ) {
4595 0 0 0       return ( ( ( $iC >= 2 ) and ( $iC <= 3 ) ) ) ? 1 : 0;
4596             }
4597             elsif ( ( $iR == 8 ) or ( $iR == 164 ) ) {
4598             return (
4599 0 0 0       ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4600             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4601             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4602             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4603             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4604             ) ? 1 : 0;
4605             }
4606             elsif ( ( $iR == 0 ) or ( $iR == 1 ) ) {
4607 0 0         return ( ( $iC == 160 ) ) ? 1 : 0;
4608             }
4609             elsif ( ( $iR == 7 ) or ( $iR == 161 ) or ( $iR == 163 ) ) {
4610             return (
4611 0 0 0       ( $iC == 30 )
4612             or ( $iC == 34 )
4613             or ( $iC == 56 )
4614             or ( $iC == 60 )
4615             or ( $iC == 82 )
4616             or ( $iC == 86 )
4617             or ( $iC == 108 )
4618             or ( $iC == 112 )
4619             or ( $iC == 134 )
4620             or ( $iC == 138 )
4621             ) ? 1 : 0;
4622             }
4623             elsif (( $iR == 32 )
4624             or ( $iR == 58 )
4625             or ( $iR == 84 )
4626             or ( $iR == 110 )
4627             or ( $iR == 136 ) )
4628             {
4629             return (
4630 0 0 0       ( $iC == 4 )
4631             or ( $iC == 8 )
4632             or ( $iC == 30 )
4633             or ( $iC == 32 )
4634             or ( $iC == 34 )
4635             or ( $iC == 56 )
4636             or ( $iC == 58 )
4637             or ( $iC == 60 )
4638             or ( $iC == 82 )
4639             or ( $iC == 84 )
4640             or ( $iC == 86 )
4641             or ( $iC == 108 )
4642             or ( $iC == 110 )
4643             or ( $iC == 112 )
4644             or ( $iC == 134 )
4645             or ( $iC == 136 )
4646             or ( $iC == 138 )
4647             or ( $iC == 160 )
4648             or ( $iC == 162 )
4649             or ( $iC == 164 )
4650             ) ? 1 : 0;
4651             }
4652             elsif (( $iR == 31 )
4653             or ( $iR == 33 )
4654             or ( $iR == 57 )
4655             or ( $iR == 59 )
4656             or ( $iR == 83 )
4657             or ( $iR == 85 )
4658             or ( $iR == 109 )
4659             or ( $iR == 111 )
4660             or ( $iR == 135 )
4661             or ( $iR == 137 ) )
4662             {
4663             return (
4664 0 0 0       ( $iC == 4 )
4665             or ( $iC == 8 )
4666             or ( $iC == 30 )
4667             or ( $iC == 34 )
4668             or ( $iC == 56 )
4669             or ( $iC == 60 )
4670             or ( $iC == 82 )
4671             or ( $iC == 86 )
4672             or ( $iC == 108 )
4673             or ( $iC == 112 )
4674             or ( $iC == 134 )
4675             or ( $iC == 138 )
4676             or ( $iC == 160 )
4677             or ( $iC == 164 )
4678             ) ? 1 : 0;
4679             }
4680             elsif (( $iR == 30 )
4681             or ( $iR == 34 )
4682             or ( $iR == 56 )
4683             or ( $iR == 60 )
4684             or ( $iR == 82 )
4685             or ( $iR == 86 )
4686             or ( $iR == 108 )
4687             or ( $iR == 112 )
4688             or ( $iR == 134 )
4689             or ( $iR == 138 ) )
4690             {
4691             return (
4692 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4693             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4694             or ( ( $iC >= 30 ) and ( $iC <= 34 ) )
4695             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4696             or ( ( $iC >= 82 ) and ( $iC <= 86 ) )
4697             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4698             or ( ( $iC >= 134 ) and ( $iC <= 138 ) )
4699             or ( ( $iC >= 160 ) and ( $iC <= 164 ) )
4700             ) ? 1 : 0;
4701             }
4702 0           return 0;
4703             }
4704             elsif ( $iV == 39 ) {
4705 0 0 0       if ( $iR == 162 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4706 0 0 0       return ( ( $iC == 0 ) or ( $iC == 2 ) or ( $iC == 4 ) ) ? 1 : 0;
4707             }
4708             elsif ( $iR == 0 ) {
4709 0 0         return ( ( $iC == 162 ) ) ? 1 : 0;
4710             }
4711             elsif ( $iR == 163 ) {
4712 0 0 0       return ( ( ( $iC >= 3 ) and ( $iC <= 4 ) ) ) ? 1 : 0;
4713             }
4714             elsif ( $iR == 3 ) {
4715 0 0         return ( ( $iC == 163 ) ) ? 1 : 0;
4716             }
4717             elsif ( $iR == 5 ) {
4718             return (
4719 0 0 0       ( $iC == 24 )
4720             or ( $iC == 28 )
4721             or ( $iC == 52 )
4722             or ( $iC == 56 )
4723             or ( $iC == 80 )
4724             or ( $iC == 84 )
4725             or ( $iC == 108 )
4726             or ( $iC == 112 )
4727             or ( $iC == 136 )
4728             or ( $iC == 140 )
4729             or ( $iC == 164 )
4730             ) ? 1 : 0;
4731             }
4732             elsif ( $iR == 164 ) {
4733             return (
4734 0 0 0       ( $iC == 2 )
4735             or ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4736             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4737             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4738             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4739             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4740             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4741             ) ? 1 : 0;
4742             }
4743             elsif ( $iR == 2 ) {
4744 0 0 0       return ( ( $iC == 162 ) or ( $iC == 164 ) ) ? 1 : 0;
4745             }
4746             elsif ( $iR == 166 ) {
4747             return (
4748 0 0 0       ( $iC == 24 )
4749             or ( $iC == 26 )
4750             or ( $iC == 28 )
4751             or ( $iC == 52 )
4752             or ( $iC == 54 )
4753             or ( $iC == 56 )
4754             or ( $iC == 80 )
4755             or ( $iC == 82 )
4756             or ( $iC == 84 )
4757             or ( $iC == 108 )
4758             or ( $iC == 110 )
4759             or ( $iC == 112 )
4760             or ( $iC == 136 )
4761             or ( $iC == 138 )
4762             or ( $iC == 140 )
4763             ) ? 1 : 0;
4764             }
4765             elsif ( $iR == 4 ) {
4766             return (
4767 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4768             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4769             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4770             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4771             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4772             or ( ( $iC >= 162 ) and ( $iC <= 164 ) )
4773             ) ? 1 : 0;
4774             }
4775             elsif ( ( $iR == 8 ) or ( $iR == 168 ) ) {
4776             return (
4777 0 0 0       ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4778             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4779             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4780             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4781             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4782             ) ? 1 : 0;
4783             }
4784             elsif ( ( $iR == 7 ) or ( $iR == 165 ) or ( $iR == 167 ) ) {
4785             return (
4786 0 0 0       ( $iC == 24 )
4787             or ( $iC == 28 )
4788             or ( $iC == 52 )
4789             or ( $iC == 56 )
4790             or ( $iC == 80 )
4791             or ( $iC == 84 )
4792             or ( $iC == 108 )
4793             or ( $iC == 112 )
4794             or ( $iC == 136 )
4795             or ( $iC == 140 )
4796             ) ? 1 : 0;
4797             }
4798             elsif (( $iR == 26 )
4799             or ( $iR == 54 )
4800             or ( $iR == 82 )
4801             or ( $iR == 110 )
4802             or ( $iR == 138 ) )
4803             {
4804             return (
4805 0 0 0       ( $iC == 4 )
4806             or ( $iC == 8 )
4807             or ( $iC == 24 )
4808             or ( $iC == 26 )
4809             or ( $iC == 28 )
4810             or ( $iC == 52 )
4811             or ( $iC == 54 )
4812             or ( $iC == 56 )
4813             or ( $iC == 80 )
4814             or ( $iC == 82 )
4815             or ( $iC == 84 )
4816             or ( $iC == 108 )
4817             or ( $iC == 110 )
4818             or ( $iC == 112 )
4819             or ( $iC == 136 )
4820             or ( $iC == 138 )
4821             or ( $iC == 140 )
4822             or ( $iC == 164 )
4823             or ( $iC == 166 )
4824             or ( $iC == 168 )
4825             ) ? 1 : 0;
4826             }
4827             elsif (( $iR == 25 )
4828             or ( $iR == 27 )
4829             or ( $iR == 53 )
4830             or ( $iR == 55 )
4831             or ( $iR == 81 )
4832             or ( $iR == 83 )
4833             or ( $iR == 109 )
4834             or ( $iR == 111 )
4835             or ( $iR == 137 )
4836             or ( $iR == 139 ) )
4837             {
4838             return (
4839 0 0 0       ( $iC == 4 )
4840             or ( $iC == 8 )
4841             or ( $iC == 24 )
4842             or ( $iC == 28 )
4843             or ( $iC == 52 )
4844             or ( $iC == 56 )
4845             or ( $iC == 80 )
4846             or ( $iC == 84 )
4847             or ( $iC == 108 )
4848             or ( $iC == 112 )
4849             or ( $iC == 136 )
4850             or ( $iC == 140 )
4851             or ( $iC == 164 )
4852             or ( $iC == 168 )
4853             ) ? 1 : 0;
4854             }
4855             elsif (( $iR == 24 )
4856             or ( $iR == 28 )
4857             or ( $iR == 52 )
4858             or ( $iR == 56 )
4859             or ( $iR == 80 )
4860             or ( $iR == 84 )
4861             or ( $iR == 108 )
4862             or ( $iR == 112 )
4863             or ( $iR == 136 )
4864             or ( $iR == 140 ) )
4865             {
4866             return (
4867 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
4868             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
4869             or ( ( $iC >= 24 ) and ( $iC <= 28 ) )
4870             or ( ( $iC >= 52 ) and ( $iC <= 56 ) )
4871             or ( ( $iC >= 80 ) and ( $iC <= 84 ) )
4872             or ( ( $iC >= 108 ) and ( $iC <= 112 ) )
4873             or ( ( $iC >= 136 ) and ( $iC <= 140 ) )
4874             or ( ( $iC >= 164 ) and ( $iC <= 168 ) )
4875             ) ? 1 : 0;
4876             }
4877 0           return 0;
4878             }
4879             elsif ( $iV == 40 ) {
4880 0 0 0       if ( $iR == 1 ) {
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
    0 0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
      0        
4881 0 0 0       return ( ( $iC == 166 ) or ( $iC == 168 ) ) ? 1 : 0;
4882             }
4883             elsif ( $iR == 5 ) {
4884             return (
4885 0 0 0       ( $iC == 28 )
4886             or ( $iC == 32 )
4887             or ( $iC == 56 )
4888             or ( $iC == 60 )
4889             or ( $iC == 84 )
4890             or ( $iC == 88 )
4891             or ( $iC == 112 )
4892             or ( $iC == 116 )
4893             or ( $iC == 140 )
4894             or ( $iC == 144 )
4895             or ( $iC == 166 )
4896             or ( $iC == 168 )
4897             ) ? 1 : 0;
4898             }
4899             elsif ( $iR == 3 ) {
4900 0 0 0       return ( ( ( $iC >= 167 ) and ( $iC <= 168 ) ) ) ? 1 : 0;
4901             }
4902             elsif ( $iR == 168 ) {
4903             return (
4904 0 0 0       ( $iC == 1 )
4905             or ( $iC == 3 )
4906             or ( $iC == 5 )
4907             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4908             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4909             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
4910             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
4911             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
4912             ) ? 1 : 0;
4913             }
4914             elsif ( $iR == 167 ) {
4915 0 0         return ( ( $iC == 3 ) ) ? 1 : 0;
4916             }
4917             elsif ( $iR == 166 ) {
4918 0 0 0       return ( ( ( $iC >= 0 ) and ( $iC <= 2 ) ) or ( $iC == 5 ) )
4919             ? 1
4920             : 0;
4921             }
4922             elsif ( $iR == 170 ) {
4923             return (
4924 0 0 0       ( $iC == 28 )
4925             or ( $iC == 30 )
4926             or ( $iC == 32 )
4927             or ( $iC == 56 )
4928             or ( $iC == 58 )
4929             or ( $iC == 60 )
4930             or ( $iC == 84 )
4931             or ( $iC == 86 )
4932             or ( $iC == 88 )
4933             or ( $iC == 112 )
4934             or ( $iC == 114 )
4935             or ( $iC == 116 )
4936             or ( $iC == 140 )
4937             or ( $iC == 142 )
4938             or ( $iC == 144 )
4939             ) ? 1 : 0;
4940             }
4941             elsif ( ( $iR == 0 ) or ( $iR == 2 ) ) {
4942 0 0         return ( ( $iC == 166 ) ) ? 1 : 0;
4943             }
4944             elsif ( ( $iR == 7 ) or ( $iR == 169 ) or ( $iR == 171 ) ) {
4945             return (
4946 0 0 0       ( $iC == 28 )
4947             or ( $iC == 32 )
4948             or ( $iC == 56 )
4949             or ( $iC == 60 )
4950             or ( $iC == 84 )
4951             or ( $iC == 88 )
4952             or ( $iC == 112 )
4953             or ( $iC == 116 )
4954             or ( $iC == 140 )
4955             or ( $iC == 144 )
4956             ) ? 1 : 0;
4957             }
4958             elsif ( ( $iR == 4 ) or ( $iR == 8 ) or ( $iR == 172 ) ) {
4959             return (
4960 0 0 0       ( ( $iC >= 28 ) and ( $iC <= 32 ) )
4961             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
4962             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
4963             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
4964             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
4965             ) ? 1 : 0;
4966             }
4967             elsif (( $iR == 30 )
4968             or ( $iR == 58 )
4969             or ( $iR == 86 )
4970             or ( $iR == 114 )
4971             or ( $iR == 142 ) )
4972             {
4973             return (
4974 0 0 0       ( $iC == 4 )
4975             or ( $iC == 8 )
4976             or ( $iC == 28 )
4977             or ( $iC == 30 )
4978             or ( $iC == 32 )
4979             or ( $iC == 56 )
4980             or ( $iC == 58 )
4981             or ( $iC == 60 )
4982             or ( $iC == 84 )
4983             or ( $iC == 86 )
4984             or ( $iC == 88 )
4985             or ( $iC == 112 )
4986             or ( $iC == 114 )
4987             or ( $iC == 116 )
4988             or ( $iC == 140 )
4989             or ( $iC == 142 )
4990             or ( $iC == 144 )
4991             or ( $iC == 168 )
4992             or ( $iC == 170 )
4993             or ( $iC == 172 )
4994             ) ? 1 : 0;
4995             }
4996             elsif (( $iR == 28 )
4997             or ( $iR == 32 )
4998             or ( $iR == 56 )
4999             or ( $iR == 60 )
5000             or ( $iR == 84 )
5001             or ( $iR == 88 )
5002             or ( $iR == 112 )
5003             or ( $iR == 116 )
5004             or ( $iR == 140 )
5005             or ( $iR == 144 ) )
5006             {
5007             return (
5008 0 0 0       ( ( $iC >= 4 ) and ( $iC <= 5 ) )
5009             or ( ( $iC >= 7 ) and ( $iC <= 8 ) )
5010             or ( ( $iC >= 28 ) and ( $iC <= 32 ) )
5011             or ( ( $iC >= 56 ) and ( $iC <= 60 ) )
5012             or ( ( $iC >= 84 ) and ( $iC <= 88 ) )
5013             or ( ( $iC >= 112 ) and ( $iC <= 116 ) )
5014             or ( ( $iC >= 140 ) and ( $iC <= 144 ) )
5015             or ( ( $iC >= 168 ) and ( $iC <= 172 ) )
5016             ) ? 1 : 0;
5017             }
5018             elsif (( $iR == 29 )
5019             or ( $iR == 31 )
5020             or ( $iR == 57 )
5021             or ( $iR == 59 )
5022             or ( $iR == 85 )
5023             or ( $iR == 87 )
5024             or ( $iR == 113 )
5025             or ( $iR == 115 )
5026             or ( $iR == 141 )
5027             or ( $iR == 143 ) )
5028             {
5029             return (
5030 0 0 0       ( $iC == 4 )
5031             or ( $iC == 8 )
5032             or ( $iC == 28 )
5033             or ( $iC == 32 )
5034             or ( $iC == 56 )
5035             or ( $iC == 60 )
5036             or ( $iC == 84 )
5037             or ( $iC == 88 )
5038             or ( $iC == 112 )
5039             or ( $iC == 116 )
5040             or ( $iC == 140 )
5041             or ( $iC == 144 )
5042             or ( $iC == 168 )
5043             or ( $iC == 172 )
5044             ) ? 1 : 0;
5045             }
5046 0           return 0;
5047             }
5048             }
5049             1;
5050             __END__