The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/netisdn/i4b_tel.c

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * Copyright (c) 1997, 2000 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  *      i4b_tel.c - device driver for ISDN telephony
   28  *      --------------------------------------------
   29  *
   30  *      $Id: i4b_tel.c,v 1.14 2003/09/23 14:15:59 pooka Exp $
   31  *
   32  * $FreeBSD$
   33  *
   34  *      last edit-date: [Fri Jan  5 11:33:47 2001]
   35  *
   36  *---------------------------------------------------------------------------*/
   37 
   38 #include <sys/cdefs.h>
   39 __KERNEL_RCSID(0, "$NetBSD: i4b_tel.c,v 1.14 2003/09/23 14:15:59 pooka Exp $");
   40 
   41 #include "isdntel.h"
   42 
   43 #if NISDNTEL > 0
   44 
   45 #undef I4BTELDEBUG
   46 
   47 #include <sys/param.h>
   48 #include <sys/systm.h>
   49 
   50 #if (defined(__FreeBSD__) && __FreeBSD__ >= 3) || defined(__NetBSD__)
   51 #include <sys/ioccom.h>
   52 #include <sys/poll.h>
   53 #else
   54 #include <sys/ioctl.h>
   55 #include <sys/fcntl.h>
   56 #endif
   57 
   58 #include <sys/conf.h>
   59 #include <sys/uio.h>
   60 #include <sys/kernel.h>
   61 #include <sys/mbuf.h>
   62 #include <sys/socket.h>
   63 #include <net/if.h>
   64 #include <sys/proc.h>
   65 #include <sys/tty.h>
   66 
   67 #ifdef __FreeBSD__
   68 
   69 #if defined(__FreeBSD__) && __FreeBSD__ == 3
   70 #include "opt_devfs.h"
   71 #endif
   72 
   73 #ifdef DEVFS
   74 #include <sys/devfsext.h>
   75 #endif
   76 
   77 #endif /* __FreeBSD__ */
   78 
   79 #ifdef __bsdi__
   80 #include <sys/device.h>
   81 #endif
   82 
   83 #ifdef __FreeBSD__
   84 #include <machine/i4b_ioctl.h>
   85 #include <machine/i4b_tel_ioctl.h>
   86 #include <machine/i4b_debug.h>
   87 #else
   88 #include <netisdn/i4b_ioctl.h>
   89 #include <netisdn/i4b_tel_ioctl.h>
   90 #include <netisdn/i4b_debug.h>
   91 #endif
   92 
   93 #include <netisdn/i4b_global.h>
   94 #include <netisdn/i4b_mbuf.h>
   95 #include <netisdn/i4b_l3l4.h>
   96 
   97 #include <netisdn/i4b_l4.h>
   98 
   99 /* minor number: lower 6 bits = unit number */
  100 
  101 #include <netisdn/i4b_l4.h>
  102 
  103 #define UNITBITS        6
  104 #define UNITMASK        0x3f
  105 #define UNIT(n)         (minor(n) & UNITMASK)
  106 
  107 /* minor number: upper 2 bits = function number */
  108 
  109 #define FUNCMASK        0x03
  110 #define FUNC(n)         (((minor(n)) >> UNITBITS) & FUNCMASK)
  111 
  112 #define FUNCTEL         0       /* 0 = normal i4btel device     */
  113 #define FUNCDIAL        1       /* 1 = i4bteld dialout device   */
  114 
  115 #define NOFUNCS         2       /* number of device classes     */
  116 
  117 typedef struct tel_softc {
  118 
  119         /* used only in func = FUNCTEL */
  120 
  121         isdn_link_t             *isdn_linktab;  /* isdn linktab */
  122         int                     audiofmt;       /* audio format conversion */
  123         u_char                  *rcvttab;       /* conversion table on read */
  124         u_char                  *wcvttab;       /* conversion table on write */
  125         call_desc_t             *cdp;           /* call descriptor pointer */
  126 
  127         /* link from FUNCTEL to FUNCDIAL */
  128         struct tel_softc * dialer;
  129 
  130         /* used only in func = FUNCDIAL */
  131 
  132         char                    result;         /* result code for dial dev */  
  133 
  134         /* used in func = FUNCDIAL and func = FUNCTEL*/
  135         
  136         int                     devstate;       /* state of this unit   */
  137 #define ST_IDLE         0x00            /* idle */
  138 #define ST_CONNECTED    0x01            /* isdn connected state */
  139 #define ST_ISOPEN       0x02            /* userland opened */
  140 #define ST_RDWAITDATA   0x04            /* userland read waiting */
  141 #define ST_WRWAITEMPTY  0x08            /* userland write waiting */
  142 #define ST_TONE         0x10            /* tone generator */
  143 
  144         struct selinfo          selp;           /* select / poll */
  145 
  146 #if defined(__FreeBSD__) && __FreeBSD__ == 3
  147 #ifdef DEVFS
  148         void                    *devfs_token;   /* token for DEVFS */
  149 #endif
  150 #endif
  151         struct i4b_tel_tones    tones;
  152         int                     toneidx;
  153         int                     toneomega;
  154         int                     tonefreq;
  155 
  156 } tel_sc_t;
  157 
  158 static tel_sc_t tel_sc[NISDNTEL][NOFUNCS];
  159         
  160 /* forward decl */
  161 
  162 static void tel_rx_data_rdy(void *softc);
  163 static void tel_tx_queue_empty(void *softc);
  164 static void tel_connect(void *softc, void *cdp);
  165 static void tel_disconnect(void *softc, void *cdp);
  166 static void tel_tone(tel_sc_t *sc);
  167 static void tel_activity(void *softc, int rxtx);
  168 static void tel_updown(void *softc, int updown);
  169 static void tel_dialresponse(void *softc, int status, cause_t cause);
  170 static void* tel_get_softc(int unit);
  171 static void tel_set_linktab(void *softc, isdn_link_t *ilt);
  172 
  173 /* audio format conversion tables */
  174 static unsigned char a2u_tab[];
  175 static unsigned char u2a_tab[];
  176 static unsigned char bitreverse[];
  177 static u_char sinetab[];
  178 
  179 #ifndef __FreeBSD__
  180 #define PDEVSTATIC      /* - not static - */
  181 PDEVSTATIC void isdntelattach __P((void));
  182 PDEVSTATIC int isdntelioctl __P((dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p));
  183 
  184 int isdntelopen __P((dev_t dev, int flag, int fmt, struct proc *p));
  185 int isdntelclose __P((dev_t dev, int flag, int fmt, struct proc *p));
  186 int isdntelread __P((dev_t dev, struct uio *uio, int ioflag));
  187 int isdntelwrite __P((dev_t dev, struct uio * uio, int ioflag));
  188 
  189 #ifdef OS_USES_POLL
  190 int isdntelpoll __P((dev_t dev, int events, struct proc *p));
  191 int isdntelkqfilter __P((dev_t dev, struct knote *kn));
  192 #else
  193 int isdntelsel __P((dev_t dev, int rw, struct proc *p));
  194 #endif
  195 
  196 #endif /* __FreeBSD__ */
  197 
  198 #ifdef __NetBSD__
  199 const struct cdevsw isdntel_cdevsw = {
  200         isdntelopen, isdntelclose, isdntelread, isdntelwrite, isdntelioctl,
  201         nostop, notty, isdntelpoll, nommap, isdntelkqfilter,
  202 };
  203 #endif /* __NetBSD__ */
  204 
  205 #if BSD > 199306 && defined(__FreeBSD__)
  206 
  207 #define PDEVSTATIC      static
  208 PDEVSTATIC d_open_t     i4btelopen;
  209 PDEVSTATIC d_close_t i4btelclose;
  210 PDEVSTATIC d_read_t i4btelread;
  211 PDEVSTATIC d_read_t i4btelwrite;
  212 PDEVSTATIC d_ioctl_t i4btelioctl;
  213 
  214 #ifdef OS_USES_POLL
  215 PDEVSTATIC d_poll_t i4btelpoll;
  216 #define POLLFIELD i4btelpoll
  217 #else
  218 PDEVSTATIC d_select_t i4btelsel;
  219 #define POLLFIELD i4btelsel
  220 #endif
  221 
  222 #define CDEV_MAJOR 56
  223 
  224 #if defined(__FreeBSD__) && __FreeBSD__ >= 4
  225 static struct cdevsw i4btel_cdevsw = {
  226         /* open */      i4btelopen,
  227         /* close */     i4btelclose,
  228         /* read */      i4btelread,
  229         /* write */     i4btelwrite,
  230         /* ioctl */     i4btelioctl,
  231         /* poll */      POLLFIELD,
  232         /* mmap */      nommap,
  233         /* strategy */  nostrategy,
  234         /* name */      "i4btel",
  235         /* maj */       CDEV_MAJOR,
  236         /* dump */      nodump,
  237         /* psize */     nopsize,
  238         /* flags */     0,
  239         /* bmaj */      -1
  240 };
  241 #else
  242 static struct cdevsw i4btel_cdevsw = {
  243         i4btelopen,     i4btelclose,    i4btelread,     i4btelwrite,
  244         i4btelioctl,    nostop,         noreset,        nodevtotty,
  245         POLLFIELD,      nommap,         NULL, "i4btel", NULL, -1
  246 };
  247 #endif
  248 
  249 PDEVSTATIC void isdntelinit(void *unused);
  250 PDEVSTATIC void isdntelattach(void *);
  251 
  252 PSEUDO_SET(isdntelattach, i4b_tel);
  253 
  254 /*===========================================================================*
  255  *                      DEVICE DRIVER ROUTINES
  256  *===========================================================================*/
  257 
  258 /*---------------------------------------------------------------------------*
  259  *      initialization at kernel load time
  260  *---------------------------------------------------------------------------*/
  261 PDEVSTATIC void
  262 isdntelinit(void *unused)
  263 {
  264 #if defined(__FreeBSD__) && __FreeBSD__ >= 4
  265         cdevsw_add(&i4btel_cdevsw);
  266 #else
  267         dev_t dev = makedev(CDEV_MAJOR, 0);
  268         cdevsw_add(&dev, &i4btel_cdevsw, NULL);
  269 #endif
  270 }
  271 
  272 SYSINIT(i4bteldev, SI_SUB_DRIVERS,
  273         SI_ORDER_MIDDLE+CDEV_MAJOR, &i4btelinit, NULL);
  274 
  275 #endif /* BSD > 199306 && defined(__FreeBSD__) */
  276 
  277 #ifdef __bsdi__
  278 
  279 int i4btelsel(dev_t dev, int rw, struct proc *p);
  280 int i4btelmatch(struct device *parent, struct cfdata *cf, void *aux);
  281 void dummy_i4btelattach(struct device*, struct device *, void *);
  282 
  283 #define CDEV_MAJOR 62
  284 
  285 static struct cfdriver i4btelcd =
  286         { NULL, "i4btel", i4btelmatch, dummy_i4btelattach, DV_DULL,
  287           sizeof(struct cfdriver) };
  288 struct devsw i4btelsw = 
  289         { &i4btelcd,
  290           i4btelopen,   i4btelclose,    i4btelread,     i4btelwrite,
  291           i4btelioctl,  i4btelsel,      nommap,         nostrat,
  292           nodump,       nopsize,        0,              nostop
  293 };
  294 
  295 int
  296 i4btelmatch(struct device *parent, struct cfdata *cf, void *aux)
  297 {
  298         NDBGL4(L4_TELDBG, "aux=0x%x", aux);     
  299         return 1;
  300 }
  301 
  302 void
  303 dummy_i4btelattach(struct device *parent, struct device *self, void *aux)
  304 {
  305         NDBGL4(L4_TELDBG, "aux=0x%x", aux);
  306 }
  307 
  308 #endif /* __bsdi__ */
  309 
  310 static const struct isdn_l4_driver_functions
  311 tel_driver = {
  312         tel_rx_data_rdy,
  313         tel_tx_queue_empty,
  314         tel_activity,
  315         tel_connect,
  316         tel_disconnect,
  317         tel_dialresponse,
  318         tel_updown,
  319         tel_get_softc,
  320         tel_set_linktab,
  321         NULL
  322 };
  323 
  324 static int isdntel_driver_id = -1;
  325 
  326 /*---------------------------------------------------------------------------*
  327  *      interface attach routine
  328  *---------------------------------------------------------------------------*/
  329 PDEVSTATIC void
  330 #ifdef __FreeBSD__
  331 isdntelattach(void *dummy)
  332 #else
  333 isdntelattach()
  334 #endif
  335 {
  336         int i, j;
  337 
  338         isdntel_driver_id = isdn_l4_driver_attach("isdntel", NISDNTEL, &tel_driver);
  339 
  340         for(i=0; i < NISDNTEL; i++)
  341         {
  342                 for(j=0; j < NOFUNCS; j++)
  343                 {
  344                         tel_sc[i][j].devstate = ST_IDLE;
  345                         tel_sc[i][j].audiofmt = CVT_NONE;
  346                         tel_sc[i][j].rcvttab = 0;
  347                         tel_sc[i][j].wcvttab = 0;
  348                         tel_sc[i][j].result = 0;
  349 
  350                         if (j == FUNCTEL) 
  351                                 tel_sc[i][FUNCTEL].dialer = &tel_sc[i][FUNCDIAL];
  352                         else
  353                                 tel_sc[i][j].dialer = NULL;
  354 
  355 #if defined(__FreeBSD__)
  356 #if __FreeBSD__ == 3
  357 
  358 #ifdef DEVFS
  359 
  360 /* XXX */               tel_sc[i][j].devfs_token
  361                                 = devfs_add_devswf(&i4btel_cdevsw, i, DV_CHR,
  362                                      UID_ROOT, GID_WHEEL, 0600,
  363                                      "i4btel%d", i);
  364 #endif
  365 
  366 #else
  367                         switch(j)
  368                         {
  369                                 case FUNCTEL:   /* normal i4btel device */
  370                                         make_dev(&i4btel_cdevsw, i,
  371                                                 UID_ROOT, GID_WHEEL,
  372                                                 0600, "i4btel%d", i);
  373                                         break;
  374                                 
  375                                 case FUNCDIAL:  /* i4bteld dialout device */
  376                                         make_dev(&i4btel_cdevsw, i+(1<<UNITBITS),
  377                                                 UID_ROOT, GID_WHEEL,
  378                                                 0600, "i4bteld%d", i);
  379                                         break;
  380                         }
  381 #endif
  382 #endif
  383                 }
  384         }
  385 }
  386 
  387 /*---------------------------------------------------------------------------*
  388  *      open tel device
  389  *---------------------------------------------------------------------------*/
  390 PDEVSTATIC int
  391 isdntelopen(dev_t dev, int flag, int fmt, struct proc *p)
  392 {
  393         int unit = UNIT(dev);
  394         int func = FUNC(dev);
  395         
  396         tel_sc_t *sc;
  397         
  398         if(unit >= NISDNTEL)
  399                 return(ENXIO);
  400 
  401         sc = &tel_sc[unit][func];               
  402 
  403         if(sc->devstate & ST_ISOPEN)
  404                 return(EBUSY);
  405 
  406         sc->devstate |= ST_ISOPEN;              
  407 
  408         if(func == FUNCDIAL)
  409         {
  410                 sc->result = 0;
  411         }
  412         
  413         return(0);
  414 }
  415 
  416 /*---------------------------------------------------------------------------*
  417  *      close tel device
  418  *---------------------------------------------------------------------------*/
  419 PDEVSTATIC int
  420 isdntelclose(dev_t dev, int flag, int fmt, struct proc *p)
  421 {
  422         int unit = UNIT(dev);
  423         int func = FUNC(dev);
  424         tel_sc_t *sc;
  425         int error = 0;
  426         int x;
  427         
  428         if(unit > NISDNTEL)
  429                 return(ENXIO);
  430 
  431         sc = &tel_sc[unit][func];               
  432 
  433         x = splnet();
  434         sc->devstate &= ~ST_TONE;               
  435         if((func == FUNCTEL) &&
  436            (sc->isdn_linktab != NULL && sc->isdn_linktab->tx_queue != NULL))
  437         {
  438                 while(!(IF_QEMPTY(sc->isdn_linktab->tx_queue)))
  439                 {
  440                         sc->devstate |= ST_WRWAITEMPTY;
  441         
  442                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
  443                                         TTIPRI | PCATCH, "wtcl", 0)) != 0)
  444                         {
  445                                 break;
  446                         }
  447                 }
  448                 sc->devstate &= ~ST_WRWAITEMPTY;                
  449         }
  450 
  451         sc->devstate &= ~ST_ISOPEN;             
  452         splx(x);
  453         wakeup((caddr_t) &sc->tones);
  454 
  455         return(error);
  456 }
  457 
  458 /*---------------------------------------------------------------------------*
  459  *      i4btelioctl - device driver ioctl routine
  460  *---------------------------------------------------------------------------*/
  461 PDEVSTATIC int
  462 isdntelioctl(dev_t dev, u_long cmd, caddr_t data, int flag, struct proc *p)
  463 {
  464         int unit = UNIT(dev);
  465         int func = FUNC(dev);
  466         int error = 0;
  467         struct mbuf *m;
  468         int s;
  469 
  470         tel_sc_t *sc = &tel_sc[unit][func];
  471 
  472         if(func == FUNCTEL)
  473         {
  474                 switch(cmd)
  475                 {
  476                         case I4B_TEL_GETAUDIOFMT:
  477                                 *(int *)data = sc->audiofmt;
  478                                 break;
  479                         
  480                         case I4B_TEL_SETAUDIOFMT:
  481                                 switch (*(int *)data)
  482                                 {
  483                                         case CVT_NONE:
  484                                                 sc->rcvttab = 0;
  485                                                 sc->wcvttab = 0;
  486                                                 break;
  487                                         case CVT_ALAW2ULAW:
  488                                                 /* ISDN: A-law */
  489                                                 /* user: mu-law */ 
  490                                                 sc->rcvttab = a2u_tab;
  491                                                 sc->wcvttab = u2a_tab;
  492                                                 break;
  493                                         case CVT_ULAW2ALAW:
  494                                                 /* ISDN: mu-law */
  495                                                 /* user: A-law */ 
  496                                                 sc->rcvttab = u2a_tab;
  497                                                 sc->wcvttab = a2u_tab;
  498                                                 break;
  499                                         default:
  500                                                 error = ENODEV;
  501                                                 break;
  502                                 }
  503                                 if(error == 0)
  504                                         sc->audiofmt = *(int *)data;
  505                                 break;
  506         
  507                         case I4B_TEL_EMPTYINPUTQUEUE:
  508                                 s = splnet();
  509                                 while((sc->devstate & ST_CONNECTED)     &&
  510                                         (sc->devstate & ST_ISOPEN)      &&
  511                                         !IF_QEMPTY(sc->isdn_linktab->rx_queue))
  512                                 {
  513                                         IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
  514                                         if(m)
  515                                                 i4b_Bfreembuf(m);
  516                                 }
  517                                 splx(s);
  518                                 break;
  519 
  520                         case I4B_TEL_VR_REQ:
  521                         {
  522                                 msg_vr_req_t *mvr;
  523 
  524                                 mvr = (msg_vr_req_t *)data;
  525 
  526                                 mvr->version = VERSION;
  527                                 mvr->release = REL;
  528                                 mvr->step = STEP;                       
  529                                 break;
  530                         }
  531                         case I4B_TEL_TONES:
  532                         {
  533                                 struct i4b_tel_tones *tt;
  534 
  535                                 tt = (struct i4b_tel_tones *)data;
  536                                 s = splnet();
  537                                 while ((sc->devstate & ST_TONE) && 
  538                                     sc->tones.duration[sc->toneidx] != 0) {
  539                                         if((error = tsleep((caddr_t) &sc->tones,
  540                                             TTIPRI | PCATCH, "rtone", 0 )) != 0) {
  541                                                 splx(s);
  542                                                 return(error);
  543                                         }
  544                                 } 
  545                                 if(!(sc->devstate & ST_ISOPEN)) {
  546                                         splx(s);
  547                                         return (EIO);
  548                                 }
  549                                 if(!(sc->devstate & ST_CONNECTED)) {
  550                                         splx(s);
  551                                         return (EIO);
  552                                 }
  553 
  554                                 sc->tones = *tt;
  555                                 sc->toneidx = 0;
  556                                 sc->tonefreq = tt->frequency[0];
  557                                 sc->devstate |= ST_TONE;
  558                                 splx(s);
  559                                 tel_tone(sc);
  560                                 break;
  561                         }
  562         
  563                         default:
  564                                 error = ENOTTY;
  565                                 break;
  566                 }
  567         }
  568         else if(func == FUNCDIAL)
  569         {
  570                 switch(cmd)
  571                 {
  572                         default:
  573                                 error = ENOTTY;
  574                                 break;
  575                 }
  576         }               
  577         return(error);
  578 }
  579 
  580 /*---------------------------------------------------------------------------*
  581  *      read from tel device
  582  *---------------------------------------------------------------------------*/
  583 PDEVSTATIC int
  584 isdntelread(dev_t dev, struct uio *uio, int ioflag)
  585 {
  586         int unit = UNIT(dev);
  587         int func = FUNC(dev);
  588 
  589         struct mbuf *m;
  590         int s;
  591         int error = 0;
  592 
  593         tel_sc_t *sc = &tel_sc[unit][func];
  594         
  595         if(!(sc->devstate & ST_ISOPEN))
  596                 return(EIO);
  597 
  598         if(func == FUNCTEL)
  599         {
  600                 s = splnet();
  601                 while((sc->devstate & ST_ISOPEN)          &&
  602                       (sc->devstate & ST_CONNECTED) &&
  603                       IF_QEMPTY(sc->isdn_linktab->rx_queue))            
  604                 {
  605                         sc->devstate |= ST_RDWAITDATA;
  606 
  607                         NDBGL4(L4_TELDBG, "i4btel%d, queue empty!", unit);
  608                         
  609                         if((error = tsleep((caddr_t) &sc->isdn_linktab->rx_queue,
  610                                                 TTIPRI | PCATCH,
  611                                                 "rtel", 0 )) != 0)
  612                         {
  613                                 sc->devstate &= ~ST_RDWAITDATA;
  614                                 splx(s);
  615                                 return(error);
  616                         }
  617                 }
  618         
  619                 if(!(sc->devstate & ST_ISOPEN))
  620                 {
  621                         splx(s);
  622                         return(EIO);
  623                 }
  624         
  625                 if(!(sc->devstate & ST_CONNECTED))
  626                 {
  627                         splx(s);
  628                         return(EIO);
  629                 }
  630                 
  631         
  632                 IF_DEQUEUE(sc->isdn_linktab->rx_queue, m);
  633                 
  634                 if(m && m->m_len > 0)
  635                 {
  636                         register int i;
  637 
  638                         for(i = 0; i < m->m_len; i++)
  639                         {
  640                                 /* always reverse bit order from line */
  641                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
  642 
  643                                 /* convert if necessary */
  644                                 if(sc->rcvttab)
  645                                         mtod(m,u_char *)[i] = sc->rcvttab[mtod(m,u_char *)[i]];
  646                         }
  647                         error = uiomove(m->m_data, m->m_len, uio);
  648 
  649                         NDBGL4(L4_TELDBG, "i4btel%d, mbuf (%d bytes), uiomove %d!", unit, m->m_len, error);
  650                 }
  651                 else
  652                 {
  653                         NDBGL4(L4_TELDBG, "i4btel%d, empty mbuf from queue!", unit);
  654                         error = EIO;
  655                 }
  656                         
  657                 if(m)
  658                         i4b_Bfreembuf(m);
  659         
  660                 splx(s);
  661         }
  662         else if(func == FUNCDIAL)
  663         {
  664                 s = splnet();
  665                 while((sc->result == 0) && (sc->devstate & ST_ISOPEN))
  666                 {
  667                         sc->devstate |= ST_RDWAITDATA;
  668         
  669                         if((error = tsleep((caddr_t) &sc->result,
  670                                                 TTIPRI | PCATCH,
  671                                                 "rtel1", 0 )) != 0)
  672                         {
  673                                 sc->devstate &= ~ST_RDWAITDATA;
  674                                 splx(s);
  675                                 return(error);
  676                         }
  677                 }
  678         
  679                 if(!(sc->devstate & ST_ISOPEN))
  680                 {
  681                         splx(s);
  682                         return(EIO);
  683                 }
  684         
  685                 if(sc->result != 0)
  686                 {
  687                         error = uiomove(&sc->result, 1, uio);
  688                         sc->result = 0;
  689                 }
  690                 else
  691                 {
  692                         error = EIO;
  693                 }
  694 
  695                 splx(s);                        
  696         }
  697         return(error);
  698 }
  699 
  700 /*---------------------------------------------------------------------------*
  701  *      write to tel device
  702  *---------------------------------------------------------------------------*/
  703 PDEVSTATIC int
  704 isdntelwrite(dev_t dev, struct uio * uio, int ioflag)
  705 {
  706         int unit = UNIT(dev);
  707         int func = FUNC(dev);
  708         struct mbuf *m;
  709         int s;
  710         int error = 0;
  711         tel_sc_t *sc = &tel_sc[unit][func];
  712         
  713         if(!(sc->devstate & ST_ISOPEN))
  714         {
  715                 return(EIO);
  716         }
  717 
  718         if(func == FUNCTEL)
  719         {
  720                 s = splnet();
  721                 
  722                 if(!(sc->devstate & ST_CONNECTED)) {
  723                         splx(s);
  724                         return(EIO);
  725                 }
  726                         
  727                 sc->devstate &= ~ST_TONE;               
  728                 while((IF_QFULL(sc->isdn_linktab->tx_queue)) &&
  729                       (sc->devstate & ST_ISOPEN))
  730                 {
  731                         sc->devstate |= ST_WRWAITEMPTY;
  732         
  733                         if((error = tsleep((caddr_t) &sc->isdn_linktab->tx_queue,
  734                                         TTIPRI | PCATCH, "wtel", 0)) != 0)
  735                         {
  736                                 sc->devstate &= ~ST_WRWAITEMPTY;                        
  737                                 splx(s);
  738                                 return(error);
  739                         }
  740                 }
  741         
  742                 if(!(sc->devstate & ST_ISOPEN))
  743                 {
  744                         splx(s);
  745                         return(EIO);
  746                 }
  747         
  748                 if(!(sc->devstate & ST_CONNECTED))
  749                 {
  750                         splx(s);
  751                         return(EIO);
  752                 }
  753 
  754                 if((m = i4b_Bgetmbuf(BCH_MAX_DATALEN)) != NULL)
  755                 {
  756                         register int i;
  757                         
  758                         m->m_len = min(BCH_MAX_DATALEN, uio->uio_resid);
  759         
  760                         error = uiomove(m->m_data, m->m_len, uio);
  761         
  762                         for(i = 0; i < m->m_len; i++)
  763                         {
  764                                 /* convert if necessary */
  765                                 if(sc->wcvttab)
  766                                         mtod(m,u_char *)[i] = sc->wcvttab[mtod(m,u_char *)[i]];
  767 
  768                                 /* always reverse bitorder to line */
  769                                 mtod(m,u_char *)[i] = bitreverse[mtod(m,u_char *)[i]];
  770                         }
  771                         
  772                         if(IF_QFULL(sc->isdn_linktab->tx_queue))
  773                         {
  774                                 m_freem(m);                     
  775                         }
  776                         else
  777                         {
  778                                 IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
  779                         }
  780         
  781                         (*sc->isdn_linktab->bchannel_driver->bch_tx_start)(sc->isdn_linktab->l1token, sc->isdn_linktab->channel);
  782                 }
  783         
  784                 splx(s);
  785         }
  786         else if(func == FUNCDIAL)
  787         {
  788                 tel_sc_t *telsc = &tel_sc[unit][FUNCTEL];
  789 
  790 #define CMDBUFSIZ 80 
  791                 char cmdbuf[CMDBUFSIZ];
  792                 int len = min(CMDBUFSIZ-1, uio->uio_resid);
  793 
  794                 error = uiomove(cmdbuf, len, uio);
  795 
  796                 if(cmdbuf[0] == CMD_DIAL)
  797                 {
  798                         i4b_l4_dialoutnumber(isdntel_driver_id, unit, len-1, &cmdbuf[1]);
  799                 }
  800                 else if(cmdbuf[0] == CMD_HUP)
  801                 {
  802                         if (!(telsc->devstate & ST_CONNECTED))
  803                                 error = EIO;
  804                         else
  805                                 i4b_l4_drvrdisc(telsc->cdp->cdid);
  806                 }
  807         }
  808         else
  809         {
  810                 error = EIO;
  811         }               
  812         
  813         return(error);
  814 }
  815 
  816 /*---------------------------------------------------------------------------*
  817  *      
  818  *---------------------------------------------------------------------------*/
  819 #define NTONESAMP 32
  820 static void
  821 tel_tone(tel_sc_t *sc)
  822 {
  823         struct mbuf *m;
  824         u_char *p;
  825         int i;
  826 
  827         if((m = i4b_Bgetmbuf(NTONESAMP)) == NULL) {
  828                 printf("no mbuf in tel_tone\n");
  829                 return;
  830         }
  831         p = m->m_data;
  832         m->m_len = 0;
  833         for (i = 0; i < NTONESAMP && (sc->devstate & ST_TONE); i++) {
  834 
  835                 if (sc->tones.duration[sc->toneidx] > 0) {
  836                         if (--sc->tones.duration[sc->toneidx] == 0) {
  837                                 sc->toneidx++;
  838                                 if (sc->toneidx == I4B_TEL_MAXTONES) {
  839                                         sc->devstate &= ~ST_TONE;
  840                                         sc->toneomega = 0;
  841                                         sc->tonefreq = 0;
  842                                 } else if (sc->tones.frequency[sc->toneidx] == 0 &&
  843                                            sc->tones.duration[sc->toneidx] == 0) {
  844                                         sc->devstate &= ~ST_TONE;
  845                                         sc->toneomega = 0;
  846                                         sc->tonefreq = 0;
  847                                 } else {
  848                                         sc->tonefreq = sc->tones.frequency[sc->toneidx];
  849                                 }
  850                                 if (sc->tones.duration[sc->toneidx] == 0) {
  851                                         wakeup((caddr_t) &sc->tones);
  852                                 }
  853                         }
  854                 }
  855 
  856                 sc->toneomega += sc->tonefreq;
  857                 if (sc->toneomega >= 8000)
  858                         sc->toneomega -= 8000;
  859                 *p++ = bitreverse[sinetab[sc->toneomega]];
  860                 m->m_len++;
  861         }
  862         IF_ENQUEUE(sc->isdn_linktab->tx_queue, m);
  863         (*sc->isdn_linktab->bchannel_driver->bch_tx_start)(sc->isdn_linktab->l1token, sc->isdn_linktab->channel);
  864 }
  865 
  866 
  867 #ifdef OS_USES_POLL
  868 /*---------------------------------------------------------------------------*
  869  *      device driver poll
  870  *---------------------------------------------------------------------------*/
  871 PDEVSTATIC int
  872 isdntelpoll(dev_t dev, int events, struct proc *p)
  873 {
  874         int revents = 0;        /* Events we found */
  875         int s;
  876         int unit = UNIT(dev);
  877         int func = FUNC(dev);   
  878 
  879         tel_sc_t *sc = &tel_sc[unit][func];
  880         
  881         s = splhigh();
  882 
  883         if(!(sc->devstate & ST_ISOPEN))
  884         {
  885                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
  886                 splx(s);
  887                 return(0);
  888         }
  889 
  890         if(func == FUNCTEL)
  891         {
  892                 /*
  893                  * Writes are OK if we are connected and the
  894                  * transmit queue can take them
  895                  */
  896                  
  897                 if((events & (POLLOUT|POLLWRNORM))      &&
  898                         (sc->devstate & ST_CONNECTED)   &&
  899                         (sc->isdn_linktab != NULL)      &&
  900                         (!IF_QFULL(sc->isdn_linktab->tx_queue)))
  901                 {
  902                         NDBGL4(L4_TELDBG, "i4btel%d, POLLOUT", unit);
  903                         revents |= (events & (POLLOUT|POLLWRNORM));
  904                 }
  905                 
  906                 /* ... while reads are OK if we have any data */
  907         
  908                 if((events & (POLLIN|POLLRDNORM))       &&
  909                         (sc->devstate & ST_CONNECTED)   &&
  910                         (sc->isdn_linktab != NULL)      &&
  911                         (!IF_QEMPTY(sc->isdn_linktab->rx_queue)))
  912                 {
  913                         NDBGL4(L4_TELDBG, "i4btel%d, POLLIN", unit);
  914                         revents |= (events & (POLLIN|POLLRDNORM));
  915                 }
  916                         
  917                 if(revents == 0)
  918                 {
  919                         NDBGL4(L4_TELDBG, "i4btel%d, selrecord", unit);
  920                         selrecord(p, &sc->selp);
  921                 }
  922         }
  923         else if(func == FUNCDIAL)
  924         {
  925                 if(events & (POLLOUT|POLLWRNORM))
  926                 {
  927                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLOUT", unit);
  928                         revents |= (events & (POLLOUT|POLLWRNORM));
  929                 }
  930 
  931                 if(events & (POLLIN|POLLRDNORM))
  932                 {
  933                         NDBGL4(L4_TELDBG, "i4bteld%d,  POLLIN, result = %d", unit, sc->result);
  934                         if(sc->result != 0)
  935                                 revents |= (events & (POLLIN|POLLRDNORM));
  936                 }
  937                         
  938                 if(revents == 0)
  939                 {
  940                         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
  941                         selrecord(p, &sc->selp);
  942                 }
  943         }
  944         splx(s);
  945         return(revents);
  946 }
  947 
  948 static void
  949 filt_i4btel_detach(struct knote *kn)
  950 {
  951         tel_sc_t *sc = kn->kn_hook;
  952         int s;
  953 
  954         s = splhigh();
  955         SLIST_REMOVE(&sc->selp.sel_klist, kn, knote, kn_selnext);
  956         splx(s);
  957 }
  958 
  959 static int
  960 filt_i4btel_telread(struct knote *kn, long hint)
  961 {
  962         tel_sc_t *sc = kn->kn_hook;
  963 
  964         if ((sc->devstate & ST_CONNECTED) == 0)
  965                 return (0);
  966         if (sc->isdn_linktab == NULL)
  967                 return (0);
  968         if (IF_QEMPTY(sc->isdn_linktab->rx_queue))
  969                 return (0);
  970 
  971         kn->kn_data = 0;        /* XXXLUKEM (thorpej): what to put here? */
  972         return (1);
  973 }
  974 
  975 static const struct filterops i4btel_telread_filtops =
  976         { 1, NULL, filt_i4btel_detach, filt_i4btel_telread };
  977 
  978 static int
  979 filt_i4btel_telwrite(struct knote *kn, long hint)
  980 {
  981         tel_sc_t *sc = kn->kn_hook;
  982 
  983         if ((sc->devstate & ST_CONNECTED) == 0)
  984                 return (0);
  985         if (sc->isdn_linktab == NULL)
  986                 return (0);
  987         if (IF_QFULL(sc->isdn_linktab->tx_queue))
  988                 return (0);
  989 
  990         kn->kn_data = 0;        /* XXXLUKEM (thorpej): what to put here? */
  991         return (1);
  992 }
  993 
  994 static const struct filterops i4btel_telwrite_filtops =
  995         { 1, NULL, filt_i4btel_detach, filt_i4btel_telwrite };
  996 
  997 static int
  998 filt_i4btel_dialread(struct knote *kn, long hint)
  999 {
 1000         tel_sc_t *sc = kn->kn_hook;
 1001 
 1002         if (sc->result == 0)
 1003                 return (0);
 1004 
 1005         kn->kn_data = 0;        /* XXXLUKEM (thorpej): what to put here? */
 1006         return (1);
 1007 }
 1008 
 1009 static const struct filterops i4btel_dialread_filtops =
 1010         { 1, NULL, filt_i4btel_detach, filt_i4btel_dialread };
 1011 
 1012 static const struct filterops i4btel_seltrue_filtops =
 1013         { 1, NULL, filt_i4btel_detach, filt_seltrue };
 1014 
 1015 int
 1016 isdntelkqfilter(dev_t dev, struct knote *kn)
 1017 {
 1018         int s;
 1019         int unit = UNIT(dev);
 1020         int func = FUNC(dev);   
 1021 
 1022         struct klist *klist;
 1023         tel_sc_t *sc = &tel_sc[unit][func];
 1024 
 1025         switch (kn->kn_filter) {
 1026         case EVFILT_READ:
 1027                 klist = &sc->selp.sel_klist;
 1028                 if (func == FUNCTEL)
 1029                         kn->kn_fop = &i4btel_telread_filtops;
 1030                 else if (func == FUNCDIAL)
 1031                         kn->kn_fop = &i4btel_dialread_filtops;
 1032                 else
 1033                         return (1);
 1034                 break;
 1035 
 1036         case EVFILT_WRITE:
 1037                 klist = &sc->selp.sel_klist;
 1038                 if (func == FUNCTEL)
 1039                         kn->kn_fop = &i4btel_telwrite_filtops;
 1040                 else if (func == FUNCDIAL)
 1041                         kn->kn_fop = &i4btel_seltrue_filtops;
 1042                 else
 1043                         return (1);
 1044                 break;
 1045 
 1046         default:
 1047                 return (1);
 1048         }
 1049 
 1050         kn->kn_hook = sc;
 1051 
 1052         s = splhigh();
 1053         SLIST_INSERT_HEAD(klist, kn, kn_selnext);
 1054         splx(s);
 1055 
 1056         return (0);
 1057 }
 1058 
 1059 #else /* OS_USES_POLL */
 1060 
 1061 /*---------------------------------------------------------------------------*
 1062  *      device driver select
 1063  *---------------------------------------------------------------------------*/
 1064 PDEVSTATIC int
 1065 i4btelsel(dev_t dev, int rw, struct proc *p)
 1066 {
 1067         int s;
 1068         int unit = UNIT(dev);
 1069         int func = FUNC(dev);   
 1070 
 1071         tel_sc_t *sc = &tel_sc[unit][func];
 1072         
 1073         s = splhigh();
 1074 
 1075         if (!(sc->devstate & ST_ISOPEN))
 1076         {
 1077                 NDBGL4(L4_TELDBG, "i4btel%d, !ST_ISOPEN", unit);
 1078                 splx(s);
 1079                 return(0);
 1080         }
 1081 
 1082         if (func == FUNCTEL)
 1083         {
 1084                 /* Don't even bother if we're not connected */
 1085                 if (!(sc->devstate & ST_CONNECTED) || sc->isdn_linktab == NULL)
 1086                 {
 1087                         splx(s);
 1088                         return 0;
 1089                 }
 1090 
 1091                 if (rw == FREAD)
 1092                 {
 1093                         if (!IF_QEMPTY(sc->isdn_linktab->rx_queue))
 1094                         {
 1095                                 NDBGL4(L4_TELDBG, "i4btel%d, FREAD", unit);
 1096                                 splx(s);
 1097                                 return 1;
 1098                         }
 1099                 }
 1100                 else if (rw == FWRITE)
 1101                 {
 1102                         if (!IF_QFULL(sc->isdn_linktab->tx_queue))
 1103                         {
 1104                                 NDBGL4(L4_TELDBG, "i4btel%d, FWRITE", unit);
 1105                                 splx(s);
 1106                                 return 1;
 1107                         }
 1108                 }
 1109         }
 1110         else if (func == FUNCDIAL)
 1111         {
 1112                 if (rw == FWRITE)
 1113                 {
 1114                         NDBGL4(L4_TELDBG, "i4bteld%d,  FWRITE", unit);
 1115                         splx(s);
 1116                         return 1;
 1117                 }
 1118 
 1119                 if (rw == FREAD)
 1120                 {
 1121                         NDBGL4(L4_TELDBG, "i4bteld%d,  FREAD, result = %d", unit, sc->result);
 1122                         if (sc->result != 0)
 1123                         {
 1124                                 splx(s);
 1125                                 return 1;
 1126                         }
 1127                 }
 1128         }
 1129 
 1130         NDBGL4(L4_TELDBG, "i4bteld%d,  selrecord", unit);
 1131         selrecord(p, &sc->selp);
 1132         splx(s);
 1133         return 0;
 1134 }
 1135 
 1136 #endif /* OS_USES_POLL */
 1137 
 1138 /*===========================================================================*
 1139  *                      ISDN INTERFACE ROUTINES
 1140  *===========================================================================*/
 1141 
 1142 /*---------------------------------------------------------------------------*
 1143 *       this routine is called from L4 handler at connect time
 1144  *---------------------------------------------------------------------------*/
 1145 static void
 1146 tel_connect(void *softc, void *cdp)
 1147 {
 1148         tel_sc_t *sc = softc;
 1149 
 1150         /* audio device */
 1151 
 1152         sc->cdp = (call_desc_t *)cdp;
 1153 
 1154         sc->devstate |= ST_CONNECTED;
 1155 
 1156         /* dialer device */
 1157         
 1158         sc = sc->dialer;
 1159 
 1160         if(sc->devstate == ST_ISOPEN)
 1161         {
 1162                 sc->result = RSP_CONN;
 1163 
 1164                 if(sc->devstate & ST_RDWAITDATA)
 1165                 {
 1166                         sc->devstate &= ~ST_RDWAITDATA;
 1167                         wakeup((caddr_t) &sc->result);
 1168                 }
 1169                 selnotify(&sc->selp, 0);
 1170         }
 1171 }
 1172 
 1173 /*---------------------------------------------------------------------------*
 1174  *      this routine is called from L4 handler at disconnect time
 1175  *---------------------------------------------------------------------------*/
 1176 static void
 1177 tel_disconnect(void *softc, void *cdp)
 1178 {
 1179         tel_sc_t *sc = softc;
 1180         
 1181         /* audio device */
 1182         
 1183         sc->devstate &= ~ST_CONNECTED;
 1184 
 1185         if(sc->devstate & ST_RDWAITDATA)
 1186         {
 1187                 sc->devstate &= ~ST_RDWAITDATA;
 1188                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
 1189         }
 1190 
 1191         if(sc->devstate & ST_WRWAITEMPTY)
 1192         {
 1193                 sc->devstate &= ~ST_WRWAITEMPTY;
 1194                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
 1195         }
 1196 
 1197         /* dialer device */
 1198         
 1199         sc = sc->dialer;
 1200 
 1201         if(sc->devstate & ST_ISOPEN)
 1202         {
 1203                 sc->result = RSP_HUP;
 1204 
 1205                 if(sc->devstate & ST_RDWAITDATA)
 1206                 {
 1207                         sc->devstate &= ~ST_RDWAITDATA;
 1208                         wakeup((caddr_t) &sc->result);
 1209                 }
 1210                 selnotify(&sc->selp, 0);
 1211 
 1212                 if (sc->devstate & ST_TONE) {
 1213                         sc->devstate &= ~ST_TONE;
 1214                         wakeup((caddr_t) &sc->tones);
 1215                 }
 1216         }
 1217 }
 1218 
 1219 /*---------------------------------------------------------------------------*
 1220  *      feedback from daemon in case of dial problems
 1221  *---------------------------------------------------------------------------*/
 1222 static void
 1223 tel_dialresponse(void *softc, int status, cause_t cause)
 1224 {       
 1225         tel_sc_t *sc = ((struct tel_softc*)softc)->dialer;
 1226 
 1227         NDBGL4(L4_TELDBG, "status=%d, cause=0x%4x", status, cause);
 1228 
 1229         if((sc->devstate == ST_ISOPEN) && status)
 1230         {       
 1231                 sc->result = RSP_NOA;
 1232 
 1233                 if(sc->devstate & ST_RDWAITDATA)
 1234                 {
 1235                         sc->devstate &= ~ST_RDWAITDATA;
 1236                         wakeup((caddr_t) &sc->result);
 1237                 }
 1238                 selnotify(&sc->selp, 0);
 1239         }
 1240 }
 1241         
 1242 /*---------------------------------------------------------------------------*
 1243  *      interface up/down
 1244  *---------------------------------------------------------------------------*/
 1245 static void
 1246 tel_updown(void *softc, int updown)
 1247 {
 1248 }
 1249         
 1250 /*---------------------------------------------------------------------------*
 1251  *      this routine is called from the HSCX interrupt handler
 1252  *      when a new frame (mbuf) has been received and was put on
 1253  *      the rx queue.
 1254  *---------------------------------------------------------------------------*/
 1255 static void
 1256 tel_rx_data_rdy(void *softc)
 1257 {
 1258         tel_sc_t *sc = softc;
 1259         
 1260         if(sc->devstate & ST_RDWAITDATA)
 1261         {
 1262                 sc->devstate &= ~ST_RDWAITDATA;
 1263                 wakeup((caddr_t) &sc->isdn_linktab->rx_queue);
 1264         }
 1265         selnotify(&sc->selp, 0);
 1266 }
 1267 
 1268 /*---------------------------------------------------------------------------*
 1269  *      this routine is called from the HSCX interrupt handler
 1270  *      when the last frame has been sent out and there is no
 1271  *      further frame (mbuf) in the tx queue.
 1272  *---------------------------------------------------------------------------*/
 1273 static void
 1274 tel_tx_queue_empty(void *softc)
 1275 {
 1276         tel_sc_t *sc = softc;
 1277 
 1278         if(sc->devstate & ST_WRWAITEMPTY)
 1279         {
 1280                 sc->devstate &= ~ST_WRWAITEMPTY;
 1281                 wakeup((caddr_t) &sc->isdn_linktab->tx_queue);
 1282         }
 1283         if(sc->devstate & ST_TONE) {
 1284                 tel_tone(sc);
 1285         } else {
 1286                 selnotify(&sc->selp, 0);
 1287         }
 1288 }
 1289 
 1290 /*---------------------------------------------------------------------------*
 1291  *      this routine is called from the HSCX interrupt handler
 1292  *      each time a packet is received or transmitted.
 1293  *---------------------------------------------------------------------------*/
 1294 static void
 1295 tel_activity(void *softc, int rxtx)
 1296 {
 1297         struct tel_softc *sc = softc;
 1298 
 1299         if(sc->cdp)
 1300                 sc->cdp->last_active_time = SECOND;
 1301 }
 1302 
 1303 /*---------------------------------------------------------------------------*
 1304  *      setup the isdn_linktab for this driver
 1305  *---------------------------------------------------------------------------*/
 1306 static void
 1307 tel_set_linktab(void *softc, isdn_link_t *ilt)
 1308 {
 1309         tel_sc_t *sc = softc;
 1310         sc->isdn_linktab = ilt;
 1311 }
 1312 
 1313 /*---------------------------------------------------------------------------*
 1314  *      return the instance
 1315  *---------------------------------------------------------------------------*/
 1316 static void*
 1317 tel_get_softc(int unit)
 1318 {
 1319         return &tel_sc[unit][FUNCTEL];
 1320 }
 1321 
 1322 /*===========================================================================*
 1323  *      AUDIO FORMAT CONVERSION (produced by running g711conv)
 1324  *===========================================================================*/
 1325 
 1326 /*---------------------------------------------------------------------------*
 1327  *      A-law to mu-law conversion
 1328  *---------------------------------------------------------------------------*/
 1329 static unsigned char a2u_tab[256] = {
 1330 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
 1331 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
 1332 /* 10 */        0x39, 0x3a, 0x37, 0x38, 0x3d, 0x3e, 0x3b, 0x3c, 
 1333 /* 18 */        0x31, 0x32, 0x30, 0x30, 0x35, 0x36, 0x33, 0x34, 
 1334 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
 1335 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
 1336 /* 30 */        0x1a, 0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 
 1337 /* 38 */        0x12, 0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 
 1338 /* 40 */        0x62, 0x63, 0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 
 1339 /* 48 */        0x5d, 0x5d, 0x5c, 0x5c, 0x5f, 0x5f, 0x5e, 0x5e, 
 1340 /* 50 */        0x74, 0x76, 0x70, 0x72, 0x7c, 0x7e, 0x78, 0x7a, 
 1341 /* 58 */        0x6a, 0x6b, 0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 
 1342 /* 60 */        0x48, 0x49, 0x46, 0x47, 0x4c, 0x4d, 0x4a, 0x4b, 
 1343 /* 68 */        0x40, 0x41, 0x3f, 0x3f, 0x44, 0x45, 0x42, 0x43, 
 1344 /* 70 */        0x56, 0x57, 0x54, 0x55, 0x5a, 0x5b, 0x58, 0x59, 
 1345 /* 78 */        0x4f, 0x4f, 0x4e, 0x4e, 0x52, 0x53, 0x50, 0x51, 
 1346 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
 1347 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
 1348 /* 90 */        0xb9, 0xba, 0xb7, 0xb8, 0xbd, 0xbe, 0xbb, 0xbc, 
 1349 /* 98 */        0xb1, 0xb2, 0xb0, 0xb0, 0xb5, 0xb6, 0xb3, 0xb4, 
 1350 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
 1351 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
 1352 /* b0 */        0x9a, 0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 
 1353 /* b8 */        0x92, 0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 
 1354 /* c0 */        0xe2, 0xe3, 0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 
 1355 /* c8 */        0xdd, 0xdd, 0xdc, 0xdc, 0xdf, 0xdf, 0xde, 0xde, 
 1356 /* d0 */        0xf4, 0xf6, 0xf0, 0xf2, 0xfc, 0xfe, 0xf8, 0xfa, 
 1357 /* d8 */        0xea, 0xeb, 0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 
 1358 /* e0 */        0xc8, 0xc9, 0xc6, 0xc7, 0xcc, 0xcd, 0xca, 0xcb, 
 1359 /* e8 */        0xc0, 0xc1, 0xbf, 0xbf, 0xc4, 0xc5, 0xc2, 0xc3, 
 1360 /* f0 */        0xd6, 0xd7, 0xd4, 0xd5, 0xda, 0xdb, 0xd8, 0xd9, 
 1361 /* f8 */        0xcf, 0xcf, 0xce, 0xce, 0xd2, 0xd3, 0xd0, 0xd1
 1362 };
 1363 
 1364 /*---------------------------------------------------------------------------*
 1365  *      mu-law to A-law conversion
 1366  *---------------------------------------------------------------------------*/
 1367 static unsigned char u2a_tab[256] = {
 1368 /* 00 */        0x2a, 0x2b, 0x28, 0x29, 0x2e, 0x2f, 0x2c, 0x2d, 
 1369 /* 08 */        0x22, 0x23, 0x20, 0x21, 0x26, 0x27, 0x24, 0x25, 
 1370 /* 10 */        0x3a, 0x3b, 0x38, 0x39, 0x3e, 0x3f, 0x3c, 0x3d, 
 1371 /* 18 */        0x32, 0x33, 0x30, 0x31, 0x36, 0x37, 0x34, 0x35, 
 1372 /* 20 */        0x0a, 0x0b, 0x08, 0x09, 0x0e, 0x0f, 0x0c, 0x0d, 
 1373 /* 28 */        0x02, 0x03, 0x00, 0x01, 0x06, 0x07, 0x04, 0x05, 
 1374 /* 30 */        0x1b, 0x18, 0x19, 0x1e, 0x1f, 0x1c, 0x1d, 0x12, 
 1375 /* 38 */        0x13, 0x10, 0x11, 0x16, 0x17, 0x14, 0x15, 0x6a, 
 1376 /* 40 */        0x68, 0x69, 0x6e, 0x6f, 0x6c, 0x6d, 0x62, 0x63, 
 1377 /* 48 */        0x60, 0x61, 0x66, 0x67, 0x64, 0x65, 0x7a, 0x78, 
 1378 /* 50 */        0x7e, 0x7f, 0x7c, 0x7d, 0x72, 0x73, 0x70, 0x71, 
 1379 /* 58 */        0x76, 0x77, 0x74, 0x75, 0x4b, 0x49, 0x4f, 0x4d, 
 1380 /* 60 */        0x42, 0x43, 0x40, 0x41, 0x46, 0x47, 0x44, 0x45, 
 1381 /* 68 */        0x5a, 0x5b, 0x58, 0x59, 0x5e, 0x5f, 0x5c, 0x5d, 
 1382 /* 70 */        0x52, 0x52, 0x53, 0x53, 0x50, 0x50, 0x51, 0x51, 
 1383 /* 78 */        0x56, 0x56, 0x57, 0x57, 0x54, 0x54, 0x55, 0x55, 
 1384 /* 80 */        0xaa, 0xab, 0xa8, 0xa9, 0xae, 0xaf, 0xac, 0xad, 
 1385 /* 88 */        0xa2, 0xa3, 0xa0, 0xa1, 0xa6, 0xa7, 0xa4, 0xa5, 
 1386 /* 90 */        0xba, 0xbb, 0xb8, 0xb9, 0xbe, 0xbf, 0xbc, 0xbd, 
 1387 /* 98 */        0xb2, 0xb3, 0xb0, 0xb1, 0xb6, 0xb7, 0xb4, 0xb5, 
 1388 /* a0 */        0x8a, 0x8b, 0x88, 0x89, 0x8e, 0x8f, 0x8c, 0x8d, 
 1389 /* a8 */        0x82, 0x83, 0x80, 0x81, 0x86, 0x87, 0x84, 0x85, 
 1390 /* b0 */        0x9b, 0x98, 0x99, 0x9e, 0x9f, 0x9c, 0x9d, 0x92, 
 1391 /* b8 */        0x93, 0x90, 0x91, 0x96, 0x97, 0x94, 0x95, 0xea, 
 1392 /* c0 */        0xe8, 0xe9, 0xee, 0xef, 0xec, 0xed, 0xe2, 0xe3, 
 1393 /* c8 */        0xe0, 0xe1, 0xe6, 0xe7, 0xe4, 0xe5, 0xfa, 0xf8, 
 1394 /* d0 */        0xfe, 0xff, 0xfc, 0xfd, 0xf2, 0xf3, 0xf0, 0xf1, 
 1395 /* d8 */        0xf6, 0xf7, 0xf4, 0xf5, 0xcb, 0xc9, 0xcf, 0xcd, 
 1396 /* e0 */        0xc2, 0xc3, 0xc0, 0xc1, 0xc6, 0xc7, 0xc4, 0xc5, 
 1397 /* e8 */        0xda, 0xdb, 0xd8, 0xd9, 0xde, 0xdf, 0xdc, 0xdd, 
 1398 /* f0 */        0xd2, 0xd2, 0xd3, 0xd3, 0xd0, 0xd0, 0xd1, 0xd1, 
 1399 /* f8 */        0xd6, 0xd6, 0xd7, 0xd7, 0xd4, 0xd4, 0xd5, 0xd5
 1400 };
 1401   
 1402 /*---------------------------------------------------------------------------*
 1403  *      reverse bits in a byte
 1404  *---------------------------------------------------------------------------*/
 1405 static unsigned char bitreverse[256] = {
 1406 /* 00 */        0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0, 
 1407 /* 08 */        0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0, 
 1408 /* 10 */        0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8, 
 1409 /* 18 */        0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8, 
 1410 /* 20 */        0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4, 
 1411 /* 28 */        0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4, 
 1412 /* 30 */        0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec, 
 1413 /* 38 */        0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc, 
 1414 /* 40 */        0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2, 
 1415 /* 48 */        0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2, 
 1416 /* 50 */        0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea, 
 1417 /* 58 */        0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa, 
 1418 /* 60 */        0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6, 
 1419 /* 68 */        0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6, 
 1420 /* 70 */        0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee, 
 1421 /* 78 */        0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe, 
 1422 /* 80 */        0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1, 
 1423 /* 88 */        0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1, 
 1424 /* 90 */        0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9, 
 1425 /* 98 */        0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9, 
 1426 /* a0 */        0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5, 
 1427 /* a8 */        0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5, 
 1428 /* b0 */        0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed, 
 1429 /* b8 */        0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd, 
 1430 /* c0 */        0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3, 
 1431 /* c8 */        0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3, 
 1432 /* d0 */        0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb, 
 1433 /* d8 */        0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb, 
 1434 /* e0 */        0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7, 
 1435 /* e8 */        0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7, 
 1436 /* f0 */        0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef, 
 1437 /* f8 */        0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff
 1438 };
 1439 
 1440 static u_char sinetab[8000] = { 213, 213, 213, 213, 213, 213, 213, 212,
 1441 212, 212, 212, 212, 212, 215, 215, 215, 215, 215, 215, 214, 214,
 1442 214, 214, 214, 214, 209, 209, 209, 209, 209, 209, 209, 208, 208,
 1443 208, 208, 208, 208, 211, 211, 211, 211, 211, 211, 210, 210, 210,
 1444 210, 210, 210, 221, 221, 221, 221, 221, 221, 220, 220, 220, 220,
 1445 220, 220, 220, 223, 223, 223, 223, 223, 223, 222, 222, 222, 222,
 1446 222, 222, 217, 217, 217, 217, 217, 217, 216, 216, 216, 216, 216,
 1447 216, 216, 219, 219, 219, 219, 219, 219, 218, 218, 218, 218, 218,
 1448 218, 197, 197, 197, 197, 197, 197, 196, 196, 196, 196, 196, 196,
 1449 196, 199, 199, 199, 199, 199, 199, 198, 198, 198, 198, 198, 198,
 1450 193, 193, 193, 193, 193, 193, 192, 192, 192, 192, 192, 192, 192,
 1451 195, 195, 195, 195, 195, 195, 194, 194, 194, 194, 194, 194, 205,
 1452 205, 205, 205, 205, 205, 204, 204, 204, 204, 204, 204, 204, 207,
 1453 207, 207, 207, 207, 207, 206, 206, 206, 206, 206, 206, 201, 201,
 1454 201, 201, 201, 201, 200, 200, 200, 200, 200, 200, 200, 203, 203,
 1455 203, 203, 203, 203, 202, 202, 202, 202, 202, 202, 245, 245, 245,
 1456 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 244, 244, 244,
 1457 244, 244, 244, 244, 244, 244, 244, 244, 244, 247, 247, 247, 247,
 1458 247, 247, 247, 247, 247, 247, 247, 247, 247, 246, 246, 246, 246,
 1459 246, 246, 246, 246, 246, 246, 246, 246, 246, 241, 241, 241, 241,
 1460 241, 241, 241, 241, 241, 241, 241, 241, 240, 240, 240, 240, 240,
 1461 240, 240, 240, 240, 240, 240, 240, 240, 243, 243, 243, 243, 243,
 1462 243, 243, 243, 243, 243, 243, 243, 243, 242, 242, 242, 242, 242,
 1463 242, 242, 242, 242, 242, 242, 242, 242, 253, 253, 253, 253, 253,
 1464 253, 253, 253, 253, 253, 253, 253, 253, 252, 252, 252, 252, 252,
 1465 252, 252, 252, 252, 252, 252, 252, 255, 255, 255, 255, 255, 255,
 1466 255, 255, 255, 255, 255, 255, 255, 254, 254, 254, 254, 254, 254,
 1467 254, 254, 254, 254, 254, 254, 254, 249, 249, 249, 249, 249, 249,
 1468 249, 249, 249, 249, 249, 249, 249, 248, 248, 248, 248, 248, 248,
 1469 248, 248, 248, 248, 248, 248, 248, 251, 251, 251, 251, 251, 251,
 1470 251, 251, 251, 251, 251, 251, 251, 250, 250, 250, 250, 250, 250,
 1471 250, 250, 250, 250, 250, 250, 250, 229, 229, 229, 229, 229, 229,
 1472 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
 1473 229, 229, 229, 229, 229, 229, 229, 228, 228, 228, 228, 228, 228,
 1474 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
 1475 228, 228, 228, 228, 228, 228, 228, 228, 231, 231, 231, 231, 231,
 1476 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
 1477 231, 231, 231, 231, 231, 231, 231, 231, 231, 230, 230, 230, 230,
 1478 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
 1479 230, 230, 230, 230, 230, 230, 230, 230, 230, 225, 225, 225, 225,
 1480 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
 1481 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 224, 224,
 1482 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
 1483 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 227,
 1484 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
 1485 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
 1486 227, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1487 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1488 226, 226, 226, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1489 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1490 237, 237, 237, 237, 237, 236, 236, 236, 236, 236, 236, 236, 236,
 1491 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
 1492 236, 236, 236, 236, 236, 236, 236, 236, 239, 239, 239, 239, 239,
 1493 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
 1494 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 238, 238,
 1495 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
 1496 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
 1497 238, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1498 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1499 233, 233, 233, 233, 233, 232, 232, 232, 232, 232, 232, 232, 232,
 1500 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
 1501 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 235, 235, 235,
 1502 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
 1503 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
 1504 235, 235, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1505 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1506 234, 234, 234, 234, 234, 234, 234, 149, 149, 149, 149, 149, 149,
 1507 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1508 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1509 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1510 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1511 149, 149, 149, 149, 149, 149, 149, 148, 148, 148, 148, 148, 148,
 1512 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1513 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1514 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1515 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1516 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 151, 151, 151,
 1517 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1518 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1519 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1520 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1521 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1522 151, 151, 151, 151, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1523 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1524 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1525 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1526 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1527 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1528 150, 150, 150, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1529 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1530 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1531 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1532 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1533 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1534 145, 145, 145, 145, 145, 145, 145, 145, 144, 144, 144, 144, 144,
 1535 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1536 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1537 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1538 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1539 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1540 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1541 144, 144, 144, 144, 144, 144, 144, 144, 144, 147, 147, 147, 147,
 1542 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1543 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1544 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1545 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1546 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1547 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1548 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1549 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 146, 146, 146,
 1550 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1551 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1552 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1553 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1554 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1555 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1556 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1557 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1558 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1559 146, 146, 146, 146, 146, 146, 157, 157, 157, 157, 157, 157, 157,
 1560 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1561 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1562 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1563 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1564 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1565 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1566 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1567 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1568 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1569 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1570 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1571 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1572 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1573 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1574 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1575 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1576 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1577 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1578 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1579 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1580 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1581 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1582 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1583 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1584 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1585 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1586 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1587 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1588 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1589 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1590 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1591 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1592 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1593 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1594 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1595 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1596 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1597 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1598 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1599 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1600 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1601 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1602 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1603 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1604 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1605 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1606 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1607 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1608 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1609 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1610 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1611 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1612 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1613 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1614 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156,
 1615 156, 156, 156, 156, 156, 156, 156, 157, 157, 157, 157, 157, 157,
 1616 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1617 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1618 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1619 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1620 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1621 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1622 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1623 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1624 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1625 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1626 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1627 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1628 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157,
 1629 157, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1630 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1631 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1632 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1633 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1634 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1635 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1636 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1637 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 146,
 1638 146, 146, 146, 146, 146, 146, 146, 146, 146, 146, 147, 147, 147,
 1639 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1640 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1641 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1642 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1643 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1644 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1645 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147,
 1646 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 147, 144, 144,
 1647 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1648 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1649 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1650 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1651 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1652 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144,
 1653 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 145,
 1654 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1655 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1656 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1657 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1658 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1659 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145,
 1660 145, 145, 145, 145, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1661 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1662 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1663 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1664 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1665 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150,
 1666 150, 150, 150, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1667 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1668 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1669 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1670 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151,
 1671 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 148, 148, 148,
 1672 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1673 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1674 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1675 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1676 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148, 148,
 1677 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1678 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1679 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1680 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1681 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149,
 1682 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1683 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234, 234,
 1684 234, 234, 234, 234, 234, 235, 235, 235, 235, 235, 235, 235, 235,
 1685 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 235,
 1686 235, 235, 235, 235, 235, 235, 235, 235, 235, 235, 232, 232, 232,
 1687 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
 1688 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232, 232,
 1689 232, 232, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1690 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233, 233,
 1691 233, 233, 233, 233, 233, 233, 238, 238, 238, 238, 238, 238, 238,
 1692 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238, 238,
 1693 238, 238, 238, 238, 238, 238, 238, 238, 238, 239, 239, 239, 239,
 1694 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239,
 1695 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 239, 236,
 1696 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
 1697 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236, 236,
 1698 236, 236, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1699 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237, 237,
 1700 237, 237, 237, 237, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1701 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226, 226,
 1702 226, 226, 226, 226, 226, 226, 227, 227, 227, 227, 227, 227, 227,
 1703 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227, 227,
 1704 227, 227, 227, 227, 227, 227, 227, 227, 224, 224, 224, 224, 224,
 1705 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224, 224,
 1706 224, 224, 224, 224, 224, 224, 224, 224, 224, 225, 225, 225, 225,
 1707 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225,
 1708 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 225, 230, 230,
 1709 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230,
 1710 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 230, 231, 231,
 1711 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231,
 1712 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 231, 228,
 1713 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
 1714 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228, 228,
 1715 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
 1716 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229, 229,
 1717 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250, 250,
 1718 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251, 251,
 1719 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248, 248,
 1720 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249, 249,
 1721 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254, 254,
 1722 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255, 255,
 1723 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 252, 253,
 1724 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 253, 242,
 1725 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 242, 243,
 1726 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 243, 240,
 1727 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 240, 241,
 1728 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 241, 246, 246,
 1729 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 246, 247, 247,
 1730 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 247, 244, 244,
 1731 244, 244, 244, 244, 244, 244, 244, 244, 244, 244, 245, 245, 245,
 1732 245, 245, 245, 245, 245, 245, 245, 245, 245, 245, 202, 202, 202,
 1733 202, 202, 202, 203, 203, 203, 203, 203, 203, 200, 200, 200, 200,
 1734 200, 200, 200, 201, 201, 201, 201, 201, 201, 206, 206, 206, 206,
 1735 206, 206, 207, 207, 207, 207, 207, 207, 204, 204, 204, 204, 204,
 1736 204, 204, 205, 205, 205, 205, 205, 205, 194, 194, 194, 194, 194,
 1737 194, 195, 195, 195, 195, 195, 195, 192, 192, 192, 192, 192, 192,
 1738 192, 193, 193, 193, 193, 193, 193, 198, 198, 198, 198, 198, 198,
 1739 199, 199, 199, 199, 199, 199, 196, 196, 196, 196, 196, 196, 196,
 1740 197, 197, 197, 197, 197, 197, 218, 218, 218, 218, 218, 218, 219,
 1741 219, 219, 219, 219, 219, 216, 216, 216, 216, 216, 216, 216, 217,
 1742 217, 217, 217, 217, 217, 222, 222, 222, 222, 222, 222, 223, 223,
 1743 223, 223, 223, 223, 220, 220, 220, 220, 220, 220, 220, 221, 221,
 1744 221, 221, 221, 221, 210, 210, 210, 210, 210, 210, 211, 211, 211,
 1745 211, 211, 211, 208, 208, 208, 208, 208, 208, 209, 209, 209, 209,
 1746 209, 209, 209, 214, 214, 214, 214, 214, 214, 215, 215, 215, 215,
 1747 215, 215, 212, 212, 212, 212, 212, 212, 213, 213, 213, 213, 213,
 1748 213, 213, 90, 90, 90, 85, 85, 85, 85, 85, 85, 84, 84, 84, 84, 84,
 1749 84, 87, 87, 87, 87, 87, 87, 86, 86, 86, 86, 86, 86, 81, 81, 81,
 1750 81, 81, 81, 81, 80, 80, 80, 80, 80, 80, 83, 83, 83, 83, 83, 83,
 1751 82, 82, 82, 82, 82, 82, 93, 93, 93, 93, 93, 93, 93, 92, 92, 92,
 1752 92, 92, 92, 95, 95, 95, 95, 95, 95, 94, 94, 94, 94, 94, 94, 89,
 1753 89, 89, 89, 89, 89, 88, 88, 88, 88, 88, 88, 88, 91, 91, 91, 91,
 1754 91, 91, 90, 90, 90, 90, 90, 90, 69, 69, 69, 69, 69, 69, 68, 68,
 1755 68, 68, 68, 68, 68, 71, 71, 71, 71, 71, 71, 70, 70, 70, 70, 70,
 1756 70, 65, 65, 65, 65, 65, 65, 64, 64, 64, 64, 64, 64, 64, 67, 67,
 1757 67, 67, 67, 67, 66, 66, 66, 66, 66, 66, 77, 77, 77, 77, 77, 77,
 1758 76, 76, 76, 76, 76, 76, 76, 79, 79, 79, 79, 79, 79, 78, 78, 78,
 1759 78, 78, 78, 73, 73, 73, 73, 73, 73, 73, 72, 72, 72, 72, 72, 72,
 1760 75, 75, 75, 75, 75, 75, 74, 74, 74, 74, 74, 74, 117, 117, 117, 117,
 1761 117, 117, 117, 117, 117, 117, 117, 117, 117, 116, 116, 116, 116,
 1762 116, 116, 116, 116, 116, 116, 116, 116, 116, 119, 119, 119, 119,
 1763 119, 119, 119, 119, 119, 119, 119, 119, 118, 118, 118, 118, 118,
 1764 118, 118, 118, 118, 118, 118, 118, 118, 113, 113, 113, 113, 113,
 1765 113, 113, 113, 113, 113, 113, 113, 113, 112, 112, 112, 112, 112,
 1766 112, 112, 112, 112, 112, 112, 112, 115, 115, 115, 115, 115, 115,
 1767 115, 115, 115, 115, 115, 115, 115, 114, 114, 114, 114, 114, 114,
 1768 114, 114, 114, 114, 114, 114, 114, 125, 125, 125, 125, 125, 125,
 1769 125, 125, 125, 125, 125, 125, 125, 124, 124, 124, 124, 124, 124,
 1770 124, 124, 124, 124, 124, 124, 124, 127, 127, 127, 127, 127, 127,
 1771 127, 127, 127, 127, 127, 127, 126, 126, 126, 126, 126, 126, 126,
 1772 126, 126, 126, 126, 126, 126, 121, 121, 121, 121, 121, 121, 121,
 1773 121, 121, 121, 121, 121, 121, 120, 120, 120, 120, 120, 120, 120,
 1774 120, 120, 120, 120, 120, 120, 123, 123, 123, 123, 123, 123, 123,
 1775 123, 123, 123, 123, 123, 123, 122, 122, 122, 122, 122, 122, 122,
 1776 122, 122, 122, 122, 122, 122, 101, 101, 101, 101, 101, 101, 101,
 1777 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
 1778 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100,
 1779 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
 1780 100, 100, 100, 100, 100, 100, 100, 103, 103, 103, 103, 103, 103,
 1781 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
 1782 103, 103, 103, 103, 103, 103, 103, 103, 102, 102, 102, 102, 102,
 1783 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
 1784 102, 102, 102, 102, 102, 102, 102, 102, 102, 97, 97, 97, 97, 97,
 1785 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
 1786 97, 97, 97, 97, 97, 97, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
 1787 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
 1788 96, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
 1789 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98,
 1790 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
 1791 98, 98, 98, 98, 98, 98, 98, 98, 98, 109, 109, 109, 109, 109, 109,
 1792 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
 1793 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 108, 108, 108,
 1794 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
 1795 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 111,
 1796 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1797 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1798 111, 111, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 1799 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 1800 110, 110, 110, 110, 110, 110, 105, 105, 105, 105, 105, 105, 105,
 1801 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
 1802 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 104, 104, 104,
 1803 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1804 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1805 104, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
 1806 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
 1807 107, 107, 107, 107, 107, 107, 106, 106, 106, 106, 106, 106, 106,
 1808 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
 1809 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 21,
 1810 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1811 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1812 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1813 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1814 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1815 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1816 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1817 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1818 20, 20, 20, 20, 20, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1819 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1820 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1821 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1822 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 22, 22, 22,
 1823 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1824 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1825 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1826 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1827 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 17, 17, 17, 17, 17, 17,
 1828 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1829 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1830 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1831 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1832 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 16, 16,
 1833 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1834 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1835 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1836 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1837 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1838 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 19, 19, 19, 19, 19, 19,
 1839 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1840 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1841 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1842 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1843 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1844 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1845 19, 19, 19, 19, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1846 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1847 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1848 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1849 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1850 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1851 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1852 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1853 18, 18, 18, 18, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1854 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1855 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1856 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1857 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1858 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1859 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1860 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1861 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1862 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1863 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1864 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 28, 28, 28, 28, 28, 28,
 1865 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1866 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1867 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1868 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1869 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1870 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1871 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1872 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1873 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1874 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1875 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1876 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1877 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1878 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1879 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1880 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1881 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1882 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1883 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1884 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1885 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1886 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1887 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1888 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1889 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1890 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1891 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1892 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1893 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1894 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1895 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1896 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28,
 1897 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1898 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1899 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1900 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1901 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1902 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1903 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1904 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1905 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1906 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1907 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29,
 1908 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 18, 18, 18, 18, 18,
 1909 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1910 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1911 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1912 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1913 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1914 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1915 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18,
 1916 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19,
 1917 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1918 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1919 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1920 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1921 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1922 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19,
 1923 19, 19, 19, 19, 19, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1924 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1925 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1926 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1927 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1928 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,
 1929 16, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1930 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1931 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1932 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1933 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17,
 1934 17, 17, 17, 17, 17, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1935 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1936 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1937 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1938 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22,
 1939 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1940 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1941 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1942 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23,
 1943 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 20, 20, 20, 20, 20, 20,
 1944 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1945 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1946 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20,
 1947 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21,
 1948 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1949 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1950 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1951 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21,
 1952 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
 1953 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106, 106,
 1954 106, 106, 106, 106, 106, 106, 107, 107, 107, 107, 107, 107, 107,
 1955 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107,
 1956 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 107, 104, 104,
 1957 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1958 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104, 104,
 1959 104, 104, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
 1960 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105, 105,
 1961 105, 105, 105, 105, 105, 105, 110, 110, 110, 110, 110, 110, 110,
 1962 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 110,
 1963 110, 110, 110, 110, 110, 110, 110, 110, 110, 110, 111, 111, 111,
 1964 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1965 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111, 111,
 1966 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
 1967 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108, 108,
 1968 108, 108, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
 1969 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109, 109,
 1970 109, 109, 109, 109, 109, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
 1971 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98,
 1972 98, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99,
 1973 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 96, 96,
 1974 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96, 96,
 1975 96, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 97, 97, 97, 97,
 1976 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97, 97,
 1977 97, 97, 97, 97, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
 1978 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102,
 1979 102, 102, 102, 102, 103, 103, 103, 103, 103, 103, 103, 103, 103,
 1980 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103, 103,
 1981 103, 103, 103, 103, 103, 100, 100, 100, 100, 100, 100, 100, 100,
 1982 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100,
 1983 100, 100, 100, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101,
 1984 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101, 101,
 1985 101, 101, 101, 101, 101, 101, 122, 122, 122, 122, 122, 122, 122,
 1986 122, 122, 122, 122, 122, 122, 123, 123, 123, 123, 123, 123, 123,
 1987 123, 123, 123, 123, 123, 123, 120, 120, 120, 120, 120, 120, 120,
 1988 120, 120, 120, 120, 120, 120, 121, 121, 121, 121, 121, 121, 121,
 1989 121, 121, 121, 121, 121, 121, 126, 126, 126, 126, 126, 126, 126,
 1990 126, 126, 126, 126, 126, 126, 127, 127, 127, 127, 127, 127, 127,
 1991 127, 127, 127, 127, 127, 124, 124, 124, 124, 124, 124, 124, 124,
 1992 124, 124, 124, 124, 124, 125, 125, 125, 125, 125, 125, 125, 125,
 1993 125, 125, 125, 125, 125, 114, 114, 114, 114, 114, 114, 114, 114,
 1994 114, 114, 114, 114, 114, 115, 115, 115, 115, 115, 115, 115, 115,
 1995 115, 115, 115, 115, 115, 112, 112, 112, 112, 112, 112, 112, 112,
 1996 112, 112, 112, 112, 113, 113, 113, 113, 113, 113, 113, 113, 113,
 1997 113, 113, 113, 113, 118, 118, 118, 118, 118, 118, 118, 118, 118,
 1998 118, 118, 118, 118, 119, 119, 119, 119, 119, 119, 119, 119, 119,
 1999 119, 119, 119, 116, 116, 116, 116, 116, 116, 116, 116, 116, 116,
 2000 116, 116, 116, 117, 117, 117, 117, 117, 117, 117, 117, 117, 117,
 2001 117, 117, 117, 74, 74, 74, 74, 74, 74, 75, 75, 75, 75, 75, 75, 72,
 2002 72, 72, 72, 72, 72, 73, 73, 73, 73, 73, 73, 73, 78, 78, 78, 78,
 2003 78, 78, 79, 79, 79, 79, 79, 79, 76, 76, 76, 76, 76, 76, 76, 77,
 2004 77, 77, 77, 77, 77, 66, 66, 66, 66, 66, 66, 67, 67, 67, 67, 67,
 2005 67, 64, 64, 64, 64, 64, 64, 64, 65, 65, 65, 65, 65, 65, 70, 70,
 2006 70, 70, 70, 70, 71, 71, 71, 71, 71, 71, 68, 68, 68, 68, 68, 68,
 2007 68, 69, 69, 69, 69, 69, 69, 90, 90, 90, 90, 90, 90, 91, 91, 91,
 2008 91, 91, 91, 88, 88, 88, 88, 88, 88, 88, 89, 89, 89, 89, 89, 89,
 2009 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 95, 92, 92, 92, 92,
 2010 92, 92, 93, 93, 93, 93, 93, 93, 93, 82, 82, 82, 82, 82, 82, 83,
 2011 83, 83, 83, 83, 83, 80, 80, 80, 80, 80, 80, 81, 81, 81, 81, 81,
 2012 81, 81, 86, 86, 86, 86, 86, 86, 87, 87, 87, 87, 87, 87, 84, 84,
 2013 84, 84, 84, 84, 85, 85, 85, 85, 85, 85, 90, 90, 90 };
 2014 
 2015 /*===========================================================================*/
 2016 
 2017 #endif /* NISDNTEL > 0 */

Cache object: 771c2af6d306fc7410788e026df6e81b


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.