]> CyberLeo.Net >> Repos - FreeBSD/releng/7.2.git/blob - sys/i4b/driver/i4b_tel.c
Create releng/7.2 from stable/7 in preparation for 7.2-RELEASE.
[FreeBSD/releng/7.2.git] / sys / i4b / driver / i4b_tel.c
1 /*-
2  * Copyright (c) 1997, 2002 Hellmuth Michaelis. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
14  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
16  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
17  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
18  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
19  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
20  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
21  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
22  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
23  * SUCH DAMAGE.
24  */
25
26 /*---------------------------------------------------------------------------
27  *
28  *      i4b_tel.c - device driver for ISDN telephony
29  *      --------------------------------------------
30  *      last edit-date: [Tue Aug 27 13:54:08 2002]
31  *
32  *---------------------------------------------------------------------------*/
33
34 #include <sys/cdefs.h>
35 __FBSDID("$FreeBSD$");
36
37 #include "opt_i4b.h"
38
39 #undef I4BTELDEBUG
40
41 #include <sys/param.h>
42 #include <sys/systm.h>
43 #include <sys/ioccom.h>
44 #include <sys/poll.h>
45 #include <sys/conf.h>
46 #include <sys/uio.h>
47 #include <sys/kernel.h>
48 #include <sys/mbuf.h>
49 #include <sys/socket.h>
50 #include <net/if.h>
51 #include <sys/tty.h>
52
53 #include <i4b/include/i4b_ioctl.h>
54 #include <i4b/include/i4b_tel_ioctl.h>
55 #include <i4b/include/i4b_debug.h>
56
57 #include <i4b/include/i4b_global.h>
58 #include <i4b/include/i4b_mbuf.h>
59 #include <i4b/include/i4b_l3l4.h>
60
61 #include <i4b/layer4/i4b_l4.h>
62
63 /* minor number: lower 6 bits = unit number */
64 #define UNITBITS        6
65 #define UNITMASK        0x3f
66 #define UNIT(n)         (minor(n) & UNITMASK)
67
68 /* minor number: upper 2 bits = function number */
69
70 #define FUNCMASK        0x03
71 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
72
73 #define FUNCTEL         0       /* 0 = normal i4btel device     */
74 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
75
76 #define NOFUNCS         2       /* number of device classes     */
77
78 typedef struct {
79
80         /* used only in func = FUNCTEL */
81
82         drvr_link_t             drvr_linktab;   /* driver linktab */
83         isdn_link_t             *isdn_linktab;  /* isdn linktab */
84         int                     audiofmt;       /* audio format conversion */
85         u_char                  *rcvttab;       /* conversion table on read */
86         u_char                  *wcvttab;       /* conversion table on write */
87         call_desc_t             *cdp;           /* call descriptor pointer */
88
89         /* used only in func = FUNCDIAL */
90
91         char                    result;         /* result code for dial dev */  
92
93         /* used in func = FUNCDIAL and func = FUNCTEL*/
94         
95         int                     devstate;       /* state of this unit   */
96 #define ST_IDLE         0x00            /* idle */
97 #define ST_CONNECTED    0x01            /* isdn connected state */
98 #define ST_ISOPEN       0x02            /* userland opened */
99 #define ST_RDWAITDATA   0x04            /* userland read waiting */
100 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
101 #define ST_TONE         0x10            /* tone generator */
102
103         struct selinfo          selp;           /* select / poll */
104
105         struct i4b_tel_tones    tones;
106         int                     toneidx;
107         int                     toneomega;
108         int                     tonefreq;
109
110 } tel_sc_t;
111
112 static tel_sc_t tel_sc[NI4BTEL][NOFUNCS];
113         
114 /* forward decl */
115
116 static void tel_rx_data_rdy(int unit);
117 static void tel_tx_queue_empty(int unit);
118 static void tel_init_linktab(int unit);
119 static void tel_connect(int unit, void *cdp);
120 static void tel_disconnect(int unit, void *cdp);
121 static void tel_tone(tel_sc_t *sc);
122
123 /* audio format conversion tables */
124 static unsigned char a2u_tab[];
125 static unsigned char u2a_tab[];
126 static unsigned char bitreverse[];
127 static u_char sinetab[];
128
129 static d_open_t i4btelopen;
130 static d_close_t i4btelclose;
131 static d_read_t i4btelread;
132 static d_read_t i4btelwrite;
133 static d_ioctl_t i4btelioctl;
134 static d_poll_t i4btelpoll;
135
136
137 static struct cdevsw i4btel_cdevsw = {
138         .d_version =    D_VERSION,
139         .d_flags =      D_NEEDGIANT,
140         .d_open =       i4btelopen,
141         .d_close =      i4btelclose,
142         .d_read =       i4btelread,
143         .d_write =      i4btelwrite,
144         .d_ioctl =      i4btelioctl,
145         .d_poll =       i4btelpoll,
146         .d_name =       "i4btel",
147 };
148
149 static void i4btelattach(void *);
150
151 PSEUDO_SET(i4btelattach, i4b_tel);
152
153 /*===========================================================================*
154  *                      DEVICE DRIVER ROUTINES
155  *===========================================================================*/
156
157 /*---------------------------------------------------------------------------*
158  *      interface attach routine
159  *---------------------------------------------------------------------------*/
160 static void
161 i4btelattach(void *dummy)
162 {
163         int i, j;
164
165         printf("i4btel: %d ISDN telephony interface device(s) attached\n", NI4BTEL);
166         
167         for(i=0; i < NI4BTEL; i++)
168         {
169                 for(j=0; j < NOFUNCS; j++)
170                 {
171                         tel_sc[i][j].devstate = ST_IDLE;
172                         tel_sc[i][j].audiofmt = CVT_NONE;
173                         tel_sc[i][j].rcvttab = 0;
174                         tel_sc[i][j].wcvttab = 0;
175                         tel_sc[i][j].result = 0;
176
177                         switch(j)
178                         {
179                                 case FUNCTEL:   /* normal i4btel device */
180                                         make_dev(&i4btel_cdevsw, i,
181                                                 UID_ROOT, GID_WHEEL,
182                                                 0600, "i4btel%d", i);
183                                         break;
184                                 
185                                 case FUNCDIAL:  /* i4bteld dialout device */
186                                         make_dev(&i4btel_cdevsw, i+(1<<UNITBITS),
187                                                 UID_ROOT, GID_WHEEL,
188                                                 0600, "i4bteld%d", i);
189                                         break;
190                         }
191                 }
192                 tel_init_linktab(i);            
193         }
194 }
195
196 /*---------------------------------------------------------------------------*
197  *      open tel device
198  *---------------------------------------------------------------------------*/
199 static int
200 i4btelopen(struct cdev *dev, int flag, int fmt, struct thread *td)
201 {
202         int unit = UNIT(dev);
203         int func = FUNC(dev);
204         
205         tel_sc_t *sc;
206         
207         if(unit >= NI4BTEL)
208                 return(ENXIO);
209
210         sc = &tel_sc[unit][func];               
211
212         if(sc->devstate & ST_ISOPEN)
213                 return(EBUSY);
214
215         sc->devstate |= ST_ISOPEN;              
216
217         if(func == FUNCDIAL)
218         {
219                 sc->result = 0;
220         }
221         
222         return(0);
223 }
224
225 /*---------------------------------------------------------------------------*
226  *      close tel device
227  *---------------------------------------------------------------------------*/
228 static int
229 i4btelclose(struct cdev *dev, int flag, int fmt, struct thread *td)
230 {
231         int unit = UNIT(dev);
232         int func = FUNC(dev);
233         tel_sc_t *sc;
234         int error = 0;
235         int x;
236         
237         if(unit > NI4BTEL)
238                 return(ENXIO);
239
240         sc = &tel_sc[unit][func];               
241
242         x = splimp();
243         sc->devstate &= ~ST_TONE;               
244
245         if((func == FUNCTEL) &&
246            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
247         {
248                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
249                 {
250                         sc->devstate |= ST_WRWAITEMPTY;
251         
252                         if((error = tsleep( &sc->isdn_linktab->tx_queue,
253                                         I4BPRI | PCATCH, "wtcl", 0)) != 0)
254                         {
255                                 break;
256                         }
257                 }
258                 sc->devstate &= ~ST_WRWAITEMPTY;                
259         }
260
261         sc->devstate &= ~ST_ISOPEN;             
262         splx(x);
263         wakeup( &sc->tones);
264
265         return(error);
266 }
267
268 /*---------------------------------------------------------------------------*
269  *      i4btelioctl - device driver ioctl routine
270  *---------------------------------------------------------------------------*/
271 static int
272 i4btelioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td)
273 {
274         int unit = UNIT(dev);
275         int func = FUNC(dev);
276         int error = 0;
277         struct mbuf *m;
278         int s;
279
280         tel_sc_t *sc = &tel_sc[unit][func];
281
282         if(func == FUNCTEL)
283         {
284                 switch(cmd)
285                 {
286                         case I4B_TEL_GETAUDIOFMT:
287                                 *(int *)data = sc->audiofmt;
288                                 break;
289                         
290                         case I4B_TEL_SETAUDIOFMT:
291                                 switch (*(int *)data)
292                                 {
293                                         case CVT_NONE:
294                                                 sc->rcvttab = 0;
295                                                 sc->wcvttab = 0;
296                                                 break;
297                                         case CVT_ALAW2ULAW:
298                                                 /* ISDN: a-law */
299                                                 /* user: u-law */ 
300                                                 sc->rcvttab = a2u_tab;
301                                                 sc->wcvttab = u2a_tab;
302                                                 break;
303                                         case CVT_ULAW2ALAW:
304                                                 /* ISDN: u-law */
305                                                 /* user: a-law */ 
306                                                 sc->rcvttab = u2a_tab;
307                                                 sc->wcvttab = a2u_tab;
308                                                 break;
309                                         default:
310                                                 error = ENODEV;
311                                                 break;
312                                 }
313                                 if(error == 0)
314                                         sc->audiofmt = *(int *)data;
315                                 break;
316         
317                         case I4B_TEL_EMPTYINPUTQUEUE:
318                                 s = splimp();
319                                 while((sc->devstate & ST_CONNECTED)     &&
320                                         (sc->devstate & ST_ISOPEN)      &&
321                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
322                                 {
323                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
324                                         if(m)
325                                                 i4b_Bfreembuf(m);
326                                 }
327                                 splx(s);
328                                 break;
329
330                         case I4B_TEL_VR_REQ:
331                         {
332                                 msg_vr_req_t *mvr;
333
334                                 mvr = (msg_vr_req_t *)data;
335
336                                 mvr->version = VERSION;
337                                 mvr->release = REL;
338                                 mvr->step = STEP;                       
339                                 break;
340                         }
341                         case I4B_TEL_TONES:
342                         {
343                                 struct i4b_tel_tones *tt;
344
345                                 tt = (struct i4b_tel_tones *)data;
346                                 s = splimp();
347                                 while ((sc->devstate & ST_TONE) && 
348                                     sc->tones.duration[sc->toneidx] != 0) {
349                                         if((error = tsleep( &sc->tones,
350                                             I4BPRI | PCATCH, "rtone", 0 )) != 0) {
351                                                 splx(s);
352                                                 return(error);
353                                         }
354                                 } 
355                                 if(!(sc->devstate & ST_ISOPEN)) {
356                                         splx(s);
357                                         return (EIO);
358                                 }
359                                 if(!(sc->devstate & ST_CONNECTED)) {
360                                         splx(s);
361                                         return (EIO);
362                                 }
363
364                                 sc->tones = *tt;
365                                 sc->toneidx = 0;
366                                 sc->tonefreq = tt->frequency[0];
367                                 sc->devstate |= ST_TONE;
368                                 splx(s);
369                                 tel_tone(sc);
370                                 break;
371                         }
372         
373                         default:
374                                 error = ENOTTY;
375                                 break;
376                 }
377         }
378         else if(func == FUNCDIAL)
379         {
380                 switch(cmd)
381                 {
382                         default:
383                                 error = ENOTTY;
384                                 break;
385                 }
386         }               
387         return(error);
388 }
389
390 /*---------------------------------------------------------------------------*
391  *      read from tel device
392  *---------------------------------------------------------------------------*/
393 static int
394 i4btelread(struct cdev *dev, struct uio *uio, int ioflag)
395 {
396         int unit = UNIT(dev);
397         int func = FUNC(dev);
398
399         struct mbuf *m;
400         int s;
401         int error = 0;
402
403         tel_sc_t *sc = &tel_sc[unit][func];
404         
405         if(!(sc->devstate & ST_ISOPEN))
406                 return(EIO);
407
408         if(func == FUNCTEL)
409         {
410                 s = splimp();
411                 IF_LOCK(sc->isdn_linktab->rx_queue);
412
413                 while((sc->devstate & ST_ISOPEN)        &&
414                       (sc->devstate & ST_CONNECTED)     &&
415                       IF_QEMPTY(sc->isdn_linktab->rx_queue))            
416                 {
417                         sc->devstate |= ST_RDWAITDATA;
418
419                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
420
421                         if((error = msleep( &sc->isdn_linktab->rx_queue,
422                                         &sc->isdn_linktab->rx_queue->ifq_mtx,
423                                         I4BPRI | PCATCH,
424                                         "rtel", 0 )) != 0)
425                         {
426                                 sc->devstate &= ~ST_RDWAITDATA;
427                                 IF_UNLOCK(sc->isdn_linktab->rx_queue);
428                                 splx(s);
429                                 return(error);
430                         }
431                 }
432         
433                 if(!(sc->devstate & ST_ISOPEN))
434                 {
435                         IF_UNLOCK(sc->isdn_linktab->rx_queue);
436                         splx(s);
437                         return(EIO);
438                 }
439         
440                 if(!(sc->devstate & ST_CONNECTED))
441                 {
442                         IF_UNLOCK(sc->isdn_linktab->rx_queue);
443                         splx(s);
444                         return(EIO);
445                 }
446                 
447         
448                 _IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
449                 IF_UNLOCK(sc->isdn_linktab->rx_queue);
450                 
451                 if(m && m->m_len > 0)
452                 {
453                         register int i;
454
455                         for(i = 0; i < m->m_len; i++)
456                         {
457                                 /* always reverse bit order from line */
458                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
459
460                                 /* convert if necessary */
461                                 if(sc->rcvttab)
462                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
463                         }
464                         error = uiomove(m->m_data, m->m_len, uio);
465
466                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
467                 }
468                 else
469                 {
470                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
471                         error = EIO;
472                 }
473                         
474                 if(m)
475                         i4b_Bfreembuf(m);
476         
477                 splx(s);
478         }
479         else if(func == FUNCDIAL)
480         {
481                 s = splimp();
482                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
483                 {
484                         sc->devstate |= ST_RDWAITDATA;
485         
486                         NDBGL4(L4_TELDBG, "i4btel%d, wait for result!", unit);
487                         
488                         if((error = tsleep( &sc->result,
489                                                 I4BPRI | PCATCH,
490                                                 "rtel1", 0 )) != 0)
491                         {
492                                 sc->devstate &= ~ST_RDWAITDATA;
493                                 splx(s);
494                                 NDBGL4(L4_TELDBG, "i4btel%d, wait for result: sleep error!", unit);
495                                 return(error);
496                         }
497                 }
498         
499                 if(!(sc->devstate & ST_ISOPEN))
500                 {
501                         splx(s);
502                         NDBGL4(L4_TELDBG, "i4btel%d, wait for result: device closed!", unit);
503                         return(EIO);
504                 }
505         
506                 if(sc->result != 0)
507                 {
508                         NDBGL4(L4_TELDBG, "i4btel%d, wait for result: 0x%02x!", unit, sc->result);
509                         error = uiomove(&sc->result, 1, uio);
510                         sc->result = 0;
511                 }
512                 else
513                 {
514                         NDBGL4(L4_TELDBG, "i4btel%d, wait for result: result=0!", unit);
515                         error = EIO;
516                 }
517
518                 splx(s);                        
519         }
520         return(error);
521 }
522
523 /*---------------------------------------------------------------------------*
524  *      write to tel device
525  *---------------------------------------------------------------------------*/
526 static int
527 i4btelwrite(struct cdev *dev, struct uio * uio, int ioflag)
528 {
529         int unit = UNIT(dev);
530         int func = FUNC(dev);
531         struct mbuf *m;
532         int s;
533         int error = 0;
534         tel_sc_t *sc = &tel_sc[unit][func];
535         
536         if(!(sc->devstate & ST_ISOPEN))
537         {
538                 return(EIO);
539         }
540
541         if(func == FUNCTEL)
542         {
543                 s = splimp();
544                 
545                 if(!(sc->devstate & ST_CONNECTED)) {
546                         splx(s);
547                         return(EIO);
548                 }
549                         
550                 sc->devstate &= ~ST_TONE;               
551                 IF_LOCK(sc->isdn_linktab->tx_queue);
552                 while((_IF_QFULL(sc->isdn_linktab->tx_queue)) &&
553                       (sc->devstate & ST_ISOPEN))
554                 {
555                         sc->devstate |= ST_WRWAITEMPTY;
556
557                         if((error = msleep( &sc->isdn_linktab->tx_queue,
558                                         &sc->isdn_linktab->tx_queue->ifq_mtx,
559                                         I4BPRI | PCATCH, "wtel", 0)) != 0)
560                         {
561                                 sc->devstate &= ~ST_WRWAITEMPTY;
562                                 IF_UNLOCK(sc->isdn_linktab->tx_queue);
563                                 splx(s);
564                                 return(error);
565                         }
566                 }
567                 IF_UNLOCK(sc->isdn_linktab->tx_queue);
568         
569                 if(!(sc->devstate & ST_ISOPEN))
570                 {
571                         splx(s);
572                         return(EIO);
573                 }
574         
575                 if(!(sc->devstate & ST_CONNECTED))
576                 {
577                         splx(s);
578                         return(EIO);
579                 }
580
581                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
582                 {
583                         register int i;
584                         
585                         m->m_len = min(BCH_MAX_DATALEN, uio->uio_resid);
586         
587                         error = uiomove(m->m_data, m->m_len, uio);
588         
589                         for(i = 0; i < m->m_len; i++)
590                         {
591                                 /* convert if necessary */
592                                 if(sc->wcvttab)
593                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
594
595                                 /* always reverse bitorder to line */
596                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
597                         }
598                         (void) IF_HANDOFF(sc->isdn_linktab->tx_queue, m, NULL);
599                         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
600                 }
601         
602                 splx(s);
603         }
604         else if(func == FUNCDIAL)
605         {
606 #define CMDBUFSIZ 80 
607                 char cmdbuf[CMDBUFSIZ];
608                 int len = min(CMDBUFSIZ-1, uio->uio_resid);
609         
610                 error = uiomove(cmdbuf, len, uio);
611
612                 if(cmdbuf[0] == CMD_DIAL)
613                 {
614                         i4b_l4_dialoutnumber(BDRV_TEL, unit, len-1, &cmdbuf[1]);
615                 }
616                 else if(cmdbuf[0] == CMD_HUP)
617                 {
618                         i4b_l4_drvrdisc(BDRV_TEL, unit);
619                 }
620                 else if(cmdbuf[0] == CMD_KEYP)
621                 {
622                         i4b_l4_keypad(BDRV_TEL, unit, len-1, &cmdbuf[1]);
623                 }
624         }
625         else
626         {
627                 error = EIO;
628         }               
629         
630         return(error);
631 }
632
633 /*---------------------------------------------------------------------------*
634  *      
635  *---------------------------------------------------------------------------*/
636 #define NTONESAMP 32
637 static void
638 tel_tone(tel_sc_t *sc)
639 {
640         struct mbuf *m;
641         u_char *p;
642         int i;
643
644         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
645                 printf("no mbuf in tel_tone\n");
646                 return;
647         }
648         p = m->m_data;
649         m->m_len = 0;
650         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
651
652                 if (sc->tones.duration[sc->toneidx] > 0) {
653                         if (--sc->tones.duration[sc->toneidx] == 0) {
654                                 sc->toneidx++;
655                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
656                                         sc->devstate &= ~ST_TONE;
657                                         sc->toneomega = 0;
658                                         sc->tonefreq = 0;
659                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
660                                            sc->tones.duration[sc->toneidx] == 0) {
661                                         sc->devstate &= ~ST_TONE;
662                                         sc->toneomega = 0;
663                                         sc->tonefreq = 0;
664                                 } else {
665                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
666                                 }
667                                 if (sc->tones.duration[sc->toneidx] == 0) {
668                                         wakeup( &sc->tones);
669                                 }
670                         }
671                 }
672
673                 sc->toneomega += sc->tonefreq;
674                 if (sc->toneomega >= 8000)
675                         sc->toneomega -= 8000;
676                 *p++ = bitreverse[sinetab[sc->toneomega]];
677                 m->m_len++;
678         }
679         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
680         (*sc->isdn_linktab->bch_tx_start)(sc->isdn_linktab->unit, sc->isdn_linktab->channel);
681 }
682
683 /*---------------------------------------------------------------------------*
684  *      device driver poll
685  *---------------------------------------------------------------------------*/
686 static int
687 i4btelpoll(struct cdev *dev, int events, struct thread *td)
688 {
689         int revents = 0;        /* Events we found */
690         int s;
691         int unit = UNIT(dev);
692         int func = FUNC(dev);   
693
694         tel_sc_t *sc = &tel_sc[unit][func];
695         
696         s = splhigh();
697
698         if(!(sc->devstate & ST_ISOPEN))
699         {
700                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
701                 splx(s);
702                 return(0);
703         }
704
705         if(func == FUNCTEL)
706         {
707                 /*
708                  * Writes are OK if we are connected and the
709                  * transmit queue can take them
710                  */
711                  
712                 if((events & (POLLOUT|POLLWRNORM))      &&
713                         (sc->devstate & ST_CONNECTED)   &&
714                         (sc->isdn_linktab != NULL)      &&
715                         (!_IF_QFULL(sc->isdn_linktab->tx_queue)))
716                 {
717                         NDBGL4(L4_TELDBG, "i4btel%d, POLLOUT", unit);
718                         revents |= (events & (POLLOUT|POLLWRNORM));
719                 }
720                 
721                 /* ... while reads are OK if we have any data */
722         
723                 if((events & (POLLIN|POLLRDNORM))       &&
724                         (sc->devstate & ST_CONNECTED)   &&
725                         (sc->isdn_linktab != NULL)      &&
726                         (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
727                 {
728                         NDBGL4(L4_TELDBG, "i4btel%d, POLLIN", unit);
729                         revents |= (events & (POLLIN|POLLRDNORM));
730                 }
731                         
732                 if(revents == 0)
733                 {
734                         NDBGL4(L4_TELDBG, "i4btel%d, selrecord", unit);
735                         selrecord(td, &sc->selp);
736                 }
737         }
738         else if(func == FUNCDIAL)
739         {
740                 if(events & (POLLOUT|POLLWRNORM))
741                 {
742                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLOUT", unit);
743                         revents |= (events & (POLLOUT|POLLWRNORM));
744                 }
745
746                 if(events & (POLLIN|POLLRDNORM))
747                 {
748                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLIN, result = %d", unit, sc->result);
749                         if(sc->result != 0)
750                                 revents |= (events & (POLLIN|POLLRDNORM));
751                 }
752                         
753                 if(revents == 0)
754                 {
755                         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
756                         selrecord(td, &sc->selp);
757                 }
758         }
759         splx(s);
760         return(revents);
761 }
762
763 /*===========================================================================*
764  *                      ISDN INTERFACE ROUTINES
765  *===========================================================================*/
766
767 /*---------------------------------------------------------------------------*
768 *       this routine is called from L4 handler at connect time
769  *---------------------------------------------------------------------------*/
770 static void
771 tel_connect(int unit, void *cdp)
772 {
773         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
774
775         /* audio device */
776         
777         sc->cdp = (call_desc_t *)cdp;
778
779         sc->devstate |= ST_CONNECTED;
780
781         /* dialer device */
782         
783         sc = &tel_sc[unit][FUNCDIAL];
784
785         if(sc->devstate & ST_ISOPEN)
786         {
787                 NDBGL4(L4_TELDBG, "i4btel%d, tel_connect!", unit);              
788                 sc->result = RSP_CONN;
789
790                 if(sc->devstate & ST_RDWAITDATA)
791                 {
792                         sc->devstate &= ~ST_RDWAITDATA;
793                         wakeup( &sc->result);
794                 }
795                 selwakeuppri(&sc->selp, I4BPRI);
796         }
797 }
798
799 /*---------------------------------------------------------------------------*
800  *      this routine is called from L4 handler at disconnect time
801  *---------------------------------------------------------------------------*/
802 static void
803 tel_disconnect(int unit, void *cdp)
804 {
805 /*      call_desc_t *cd = (call_desc_t *)cdp; */
806
807         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
808         
809         /* audio device */
810         
811         sc->devstate &= ~ST_CONNECTED;
812
813         if(sc->devstate & ST_RDWAITDATA)
814         {
815                 sc->devstate &= ~ST_RDWAITDATA;
816                 wakeup( &sc->isdn_linktab->rx_queue);
817         }
818
819         if(sc->devstate & ST_WRWAITEMPTY)
820         {
821                 sc->devstate &= ~ST_WRWAITEMPTY;
822                 wakeup( &sc->isdn_linktab->tx_queue);
823         }
824
825         /* dialer device */
826         
827         sc = &tel_sc[unit][FUNCDIAL];
828
829         if(sc->devstate & ST_ISOPEN)
830         {
831                 NDBGL4(L4_TELDBG, "i4btel%d, tel_disconnect!", unit);
832                 sc->result = RSP_HUP;
833
834                 if(sc->devstate & ST_RDWAITDATA)
835                 {
836                         sc->devstate &= ~ST_RDWAITDATA;
837                         wakeup( &sc->result);
838                 }
839                 selwakeuppri(&sc->selp, I4BPRI);
840
841                 if (sc->devstate & ST_TONE) {
842                         sc->devstate &= ~ST_TONE;
843                         wakeup( &sc->tones);
844                 }
845         }
846 }
847
848 /*---------------------------------------------------------------------------*
849  *      feedback from daemon in case of dial problems
850  *---------------------------------------------------------------------------*/
851 static void
852 tel_dialresponse(int unit, int status, cause_t cause)
853 {       
854         tel_sc_t *sc = &tel_sc[unit][FUNCDIAL];
855
856         NDBGL4(L4_TELDBG, "i4btel%d,  status=%d, cause=0x%4x", unit, status, cause);
857
858         if((sc->devstate == ST_ISOPEN) && status)
859         {
860                 NDBGL4(L4_TELDBG, "i4btel%d, tel_dialresponse!", unit);         
861                 sc->result = RSP_NOA;
862
863                 if(sc->devstate & ST_RDWAITDATA)
864                 {
865                         sc->devstate &= ~ST_RDWAITDATA;
866                         wakeup( &sc->result);
867                 }
868                 selwakeuppri(&sc->selp, I4BPRI);
869         }
870 }
871         
872 /*---------------------------------------------------------------------------*
873  *      interface up/down
874  *---------------------------------------------------------------------------*/
875 static void
876 tel_updown(int unit, int updown)
877 {
878 }
879         
880 /*---------------------------------------------------------------------------*
881  *      this routine is called from the HSCX interrupt handler
882  *      when a new frame (mbuf) has been received and was put on
883  *      the rx queue.
884  *---------------------------------------------------------------------------*/
885 static void
886 tel_rx_data_rdy(int unit)
887 {
888         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
889         
890         if(sc->devstate & ST_RDWAITDATA)
891         {
892                 sc->devstate &= ~ST_RDWAITDATA;
893                 wakeup( &sc->isdn_linktab->rx_queue);
894         }
895         selwakeuppri(&sc->selp, TTOPRI);
896 }
897
898 /*---------------------------------------------------------------------------*
899  *      this routine is called from the HSCX interrupt handler
900  *      when the last frame has been sent out and there is no
901  *      further frame (mbuf) in the tx queue.
902  *---------------------------------------------------------------------------*/
903 static void
904 tel_tx_queue_empty(int unit)
905 {
906         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
907
908         if(sc->devstate & ST_WRWAITEMPTY)
909         {
910                 sc->devstate &= ~ST_WRWAITEMPTY;
911                 wakeup( &sc->isdn_linktab->tx_queue);
912         }
913         if(sc->devstate & ST_TONE) {
914                 tel_tone(sc);
915         } else {
916                 selwakeuppri(&sc->selp, I4BPRI);
917         }
918 }
919
920 /*---------------------------------------------------------------------------*
921  *      this routine is called from the HSCX interrupt handler
922  *      each time a packet is received or transmitted.
923  *---------------------------------------------------------------------------*/
924 static void
925 tel_activity(int unit, int rxtx)
926 {
927         if(tel_sc[unit][FUNCTEL].cdp)
928                 tel_sc[unit][FUNCTEL].cdp->last_active_time = SECOND;
929 }
930
931 /*---------------------------------------------------------------------------*
932  *      return this drivers linktab address
933  *---------------------------------------------------------------------------*/
934 drvr_link_t *
935 tel_ret_linktab(int unit)
936 {
937         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
938         
939         tel_init_linktab(unit);
940         return(&sc->drvr_linktab);
941 }
942
943 /*---------------------------------------------------------------------------*
944  *      setup the isdn_linktab for this driver
945  *---------------------------------------------------------------------------*/
946 void
947 tel_set_linktab(int unit, isdn_link_t *ilt)
948 {
949         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
950         sc->isdn_linktab = ilt;
951 }
952
953 /*---------------------------------------------------------------------------*
954  *      initialize this drivers linktab
955  *---------------------------------------------------------------------------*/
956 static void
957 tel_init_linktab(int unit)
958 {
959         tel_sc_t *sc = &tel_sc[unit][FUNCTEL];
960         
961         sc->drvr_linktab.unit = unit;
962         sc->drvr_linktab.bch_rx_data_ready = tel_rx_data_rdy;
963         sc->drvr_linktab.bch_tx_queue_empty = tel_tx_queue_empty;
964         sc->drvr_linktab.bch_activity = tel_activity;   
965         sc->drvr_linktab.line_connected = tel_connect;
966         sc->drvr_linktab.line_disconnected = tel_disconnect;
967         sc->drvr_linktab.dial_response = tel_dialresponse;
968         sc->drvr_linktab.updown_ind = tel_updown;       
969 }
970
971 /*===========================================================================*
972  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
973  *===========================================================================*/
974
975 /*---------------------------------------------------------------------------*
976  *      A-law to u-law conversion
977  *---------------------------------------------------------------------------*/
978 static unsigned char a2u_tab[256] = {
979 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
980 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
981 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c, 
982 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34, 
983 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
984 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
985 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 
986 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 
987 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 
988 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e, 
989 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a, 
990 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 
991 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b, 
992 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43, 
993 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59, 
994 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51, 
995 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
996 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
997 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc, 
998 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4, 
999 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1000 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1001 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 
1002 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 
1003 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 
1004 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde, 
1005 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa, 
1006 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 
1007 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb, 
1008 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3, 
1009 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9, 
1010 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
1011 };
1012
1013 /*---------------------------------------------------------------------------*
1014  *      u-law to A-law conversion
1015  *---------------------------------------------------------------------------*/
1016 static unsigned char u2a_tab[256] = {
1017 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
1018 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
1019 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d, 
1020 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35, 
1021 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
1022 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
1023 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12, 
1024 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a, 
1025 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63, 
1026 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78, 
1027 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71, 
1028 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d, 
1029 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45, 
1030 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d, 
1031 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 
1032 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55, 
1033 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
1034 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
1035 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd, 
1036 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5, 
1037 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
1038 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
1039 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92, 
1040 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea, 
1041 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3, 
1042 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8, 
1043 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1, 
1044 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd, 
1045 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5, 
1046 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd, 
1047 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1, 
1048 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
1049 };
1050   
1051 /*---------------------------------------------------------------------------*
1052  *      reverse bits in a byte
1053  *---------------------------------------------------------------------------*/
1054 static unsigned char bitreverse[256] = {
1055 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 
1056 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 
1057 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 
1058 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 
1059 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 
1060 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 
1061 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 
1062 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 
1063 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 
1064 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 
1065 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 
1066 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 
1067 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 
1068 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 
1069 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 
1070 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 
1071 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 
1072 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 
1073 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 
1074 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 
1075 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 
1076 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 
1077 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 
1078 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 
1079 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 
1080 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 
1081 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 
1082 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 
1083 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 
1084 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 
1085 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 
1086 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
1087 };
1088
1089 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
1090 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
1091 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
1092 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
1093 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
1094 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
1095 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
1096 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
1097 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
1098 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
1099 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
1100 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
1101 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
1102 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
1103 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
1104 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
1105 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
1106 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
1107 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
1108 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
1109 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
1110 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
1111 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
1112 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
1113 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
1114 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
1115 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
1116 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
1117 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
1118 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
1119 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
1120 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
1121 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1122 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
1123 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1124 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
1125 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1126 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
1127 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1128 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
1129 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1130 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
1131 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1132 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
1133 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1134 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1135 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1136 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1137 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1138 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1139 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
1140 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1141 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
1142 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1143 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
1144 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1145 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1146 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1147 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1148 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
1149 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1150 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
1151 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1152 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1153 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1154 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1155 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
1156 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1157 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1158 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1159 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1160 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
1161 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1162 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1163 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1164 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1165 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
1166 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1167 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1168 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1169 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1170 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1171 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1172 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1173 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1174 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1175 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1176 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1177 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1178 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1179 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1180 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1181 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1182 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1183 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
1184 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1185 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1186 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1187 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1188 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1189 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1190 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
1191 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1192 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1193 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1194 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1195 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1196 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1197 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1198 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
1199 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1200 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1201 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1202 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1203 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1204 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1205 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1206 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1207 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1208 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
1209 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1210 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1211 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1212 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1213 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1214 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1215 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1216 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1217 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1218 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1219 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1220 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1221 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1222 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1223 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1224 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1225 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1226 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1227 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1228 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1229 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1230 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1231 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1232 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1233 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1234 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1235 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1236 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1237 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1238 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1239 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1240 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1241 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1242 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1243 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1244 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1245 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1246 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1247 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1248 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1249 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1250 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1251 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1252 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1253 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1254 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1255 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1256 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1257 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1258 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1259 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1260 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1261 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1262 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1263 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
1264 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
1265 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1266 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1267 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1268 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1269 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1270 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1271 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1272 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1273 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1274 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1275 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1276 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1277 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
1278 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1279 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1280 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1281 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1282 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1283 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1284 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1285 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1286 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
1287 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
1288 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1289 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1290 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1291 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1292 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1293 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1294 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
1295 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
1296 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1297 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1298 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1299 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1300 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1301 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
1302 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
1303 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1304 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1305 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1306 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1307 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1308 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
1309 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1310 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1311 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1312 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1313 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1314 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
1315 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1316 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1317 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1318 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1319 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
1320 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
1321 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1322 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1323 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1324 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1325 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
1326 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1327 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1328 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1329 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1330 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
1331 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1332 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
1333 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
1334 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
1335 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
1336 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1337 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
1338 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1339 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
1340 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
1341 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
1342 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
1343 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
1344 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
1345 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1346 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
1347 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1348 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
1349 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1350 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
1351 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
1352 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
1353 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
1354 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
1355 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
1356 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
1357 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
1358 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
1359 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
1360 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
1361 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
1362 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1363 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
1364 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1365 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
1366 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
1367 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
1368 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
1369 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
1370 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
1371 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
1372 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
1373 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
1374 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
1375 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
1376 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
1377 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
1378 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
1379 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
1380 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
1381 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
1382 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
1383 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
1384 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
1385 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
1386 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
1387 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
1388 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
1389 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
1390 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
1391 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
1392 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
1393 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
1394 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
1395 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
1396 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
1397 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
1398 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
1399 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
1400 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
1401 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
1402 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
1403 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
1404 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
1405 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
1406 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
1407 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
1408 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
1409 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
1410 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
1411 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
1412 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
1413 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
1414 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
1415 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
1416 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
1417 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
1418 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
1419 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
1420 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
1421 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
1422 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
1423 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
1424 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
1425 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
1426 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1427 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
1428 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1429 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
1430 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1431 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
1432 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1433 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
1434 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1435 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1436 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1437 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1438 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
1439 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1440 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
1441 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1442 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
1443 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1444 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
1445 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1446 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1447 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1448 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1449 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
1450 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1451 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
1452 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1453 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1454 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1455 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1456 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
1457 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1458 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
1459 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1460 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1461 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1462 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1463 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1464 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1465 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1466 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1467 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1468 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1469 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1470 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1471 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
1472 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1473 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1474 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1475 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1476 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
1477 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1478 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1479 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1480 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1481 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
1482 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1483 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1484 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1485 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1486 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1487 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
1488 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1489 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1490 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1491 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1492 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1493 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1494 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1495 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1496 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1497 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1498 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1499 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1500 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1501 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1502 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1503 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1504 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1505 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1506 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1507 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1508 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1509 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1510 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1511 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1512 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1513 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
1514 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1515 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1516 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1517 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1518 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1519 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1520 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1521 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1522 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1523 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1524 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1525 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1526 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1527 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1528 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1529 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1530 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1531 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1532 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1533 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1534 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1535 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1536 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1537 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1538 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1539 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1540 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1541 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1542 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1543 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1544 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1545 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
1546 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1547 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1548 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1549 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1550 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1551 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1552 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1553 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1554 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1555 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1556 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
1557 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
1558 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1559 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1560 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1561 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1562 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1563 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1564 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
1565 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
1566 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1567 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1568 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1569 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1570 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1571 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
1572 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1573 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1574 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1575 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1576 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1577 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
1578 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1579 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1580 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1581 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1582 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
1583 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1584 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1585 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1586 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1587 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
1588 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1589 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1590 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1591 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
1592 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
1593 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1594 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1595 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
1596 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
1597 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1598 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1599 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1600 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
1601 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1602 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
1603 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
1604 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
1605 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
1606 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1607 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
1608 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1609 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
1610 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
1611 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
1612 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
1613 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1614 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
1615 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1616 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
1617 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1618 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
1619 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1620 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
1621 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
1622 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
1623 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
1624 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
1625 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
1626 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1627 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
1628 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1629 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
1630 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
1631 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
1632 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
1633 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
1634 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
1635 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
1636 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
1637 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
1638 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
1639 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
1640 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
1641 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
1642 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
1643 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
1644 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
1645 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
1646 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
1647 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
1648 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
1649 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
1650 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
1651 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
1652 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
1653 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
1654 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
1655 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
1656 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
1657 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
1658 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
1659 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
1660 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
1661 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
1662 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
1663
1664 /*===========================================================================*/