Änderungen fli4l-Dokumentation von 2.0pre3 auf 2.0final
==============================================================================

Neue Variablen:

config/dsl.txt:

PPTP_NAME='DSL'                 # circuit name, don't write spaces
PPTP_USEPEERDNS='no'            # use dns server of your provider: yes or no
PPTP_CHARGEINT='60'             # value of charge interval (in seconds)
PPTP_TIMES='Mo-Su:00-24:0.0:Y'  # times/charges when LCR

------------------------------------------------------------------------------
tobig 10.10.2001 Doku zu OPT_TELMOND von base nach isdn verschoben tobig 10.10.2001

------------------------------------------------------------------------------
harri 14.10.2001 anhang 8: folgenden Abschnitt im Anhang entfernt harri 14.10
    Vorsicht: Es wird die amerikanische Tastaturbelegung verwendet. Damit
    ich's nicht verlerne ;-

------------------------------------------------------------------------------
harri 14.10.2001 kapitel 1: einheitliche Namensvergabe in readme.txt
Recover-Version in Notfall-version umbenannnt harri 14.10
    das Rootfs und die DOPPELTE Größe des opt.tgz haben! Falls auch die
    Notfall-Option genutzt werden soll, erhöht sich der Platzbedarf
    noch um weitere 1 - 1,5 MB

------------------------------------------------------------------------------
harri 14.10.2001 kapitel 2: in der Beispiel-config ram1 statt ram2 als default
eingetragen (auch in base.txt korrigiert) harri 14.10
PART_OPT='hda2'                 # location of opt-files? ram1 or disk-partitio

------------------------------------------------------------------------------
harri 14.10.2001 kapitel 4: opt_rescue zur liste für package hd hinzugefügt,
weil das da drin ist harri 14.10
    OPT_HDTUNE      diverse Einstellungen an IDE-Festplatten vornehmen 7 / 21
    OPT_CDROM       IDE-CDROM-Treiber                                 75 / ??
    OPT_RESCUE      e2fsck als Rettungssystem                         42 / 92

------------------------------------------------------------------------------
harri 14.10.2001 kapitel 5: dateiname opt.txt (die es nicht mehr gibt) in die
neutrale Bezeichnung <name des packages>.txt geändert harri 14.10
        Als Tabelle, welche Dateien (z.B. Kernel-Module als Treiber) auf Wunsch
        installiert werden sollen, dient opt/<name des packages>.txt

------------------------------------------------------------------------------
harri 14.10.2001 anhang 9: datei /proc/pci mit in die liste der interessanten
files aufgenommen harri 14.10
        Weitere interessante Dateien unter /proc sind devices, dma, ioports,
    kmsg, meminfo, modules, uptime, version und pci (falls der Router einen
        PCI-Bus hat)

------------------------------------------------------------------------------
harri 16.10.2001 anhang 10: typo korrigiert harri 16.10
        - Es werden soviele Pakete benutzt, daß die Resourcen des Rechners
          nicht ausreichen (zuwenig RAM, CPU, andere Hardwareprobleme)

------------------------------------------------------------------------------
ukw 16.10.2001: dsl.txt: Am Ende der Einleitung zu OPT_PPPOE Abschnitt
eingefügt (war usprünglich weiter unten vor PPPOE_CHARGEINT, dort gelöscht)
:itschy 17.10.2001

Alt:

    Standard-Einstellung: OPT_PPPOE='no'


Neu:
    Wenn man zwei Karten verwendet, sollte man die erste Karte als Karte
    für das LAN verwenden und die zweite für die Verbindung zum DSL-Modem.

    Dabei braucht nur die erste Karte mit IP-Adressen belegt werden.

    Das heißt:

        IP_ETH_N='1'                    # Nur *eine* Karte mit IP-Adresse!
        IP_ETH_1_xxx='...'              # Die üblichen Parameter

    Für PPPOE_ETH gibt man 'eth1' für die zweite Ethernetkarte an und
    gibt *keine* IP_ETH_2_xxx-Variablen an.

    Ab Version 1.5 muss PPPoE als Circuit definiert werden und ist dann
    über imond/imonc steuerbar. Deshalb muss auch unbedingt

                        START_IMOND='yes'

    eingestellt werden, s. Kapitel 2.


    Standard-Einstellung: OPT_PPPOE='no'

------------------------------------------------------------------------------
ukw 16.10.2001: dsl.txt: Abschnitt PPPOE_NAME geändert :itschy 17.10.2001

Alt:
    PPPOE_NAME

        Name des Circuits, siehe auch die Beschreibung zu ISDN_CIRC_x_NAME
        für ISDN-Circuits in Kapitel 3.

Neu:
    PPPOE_NAME

        Hier sollte ein Name für den Circuit vergeben werden - max. 15 Stellen
        lang. Dieser wird im imon-Client imonc angezeigt.

        Beispiel: PPPOE_NAME='DSL'

------------------------------------------------------------------------------
ukw 16.10.2001: dsl.txt: Abschnitt PPPOE_USER geändert :itschy 17.10.2001

Alt:
    PPPOE_USER  PPPOE_PASS

        Hier sind Benutzerkennung und Passwort für den jeweils benutzten
        Provider anzugeben. Achtung: Speziell bei T-Online sind bestimmte
        Regeln einzuhalten, wie der Benutzername angegeben wird. Tips dazu
        findet man bei der Beschreibung ISDN_CIRC_x_USER (s.u.).

        Wichtig bei T-Online: An die Benutzerkennung 'AAAAAAAAAAAATTTTTT#MMMM'
        muß in jedem Fall bei DSL noch '@t-online.de' angehängt werden!

Neu:
    PPPOE_USER  PPPOE_PASS

        Hier sind Benutzerkennung und Passwort für den jeweils benutzten
        Provider anzugeben. PPPOE_USER enthält die Benutzerkennung,
        PPPOE_PASS das Password.

        WICHTIG:

            Für einen T-Online-Zugang ist folgendes zu beachten:

            Der Username AAAAAAAAAAAATTTTTT#MMMM setzt sich aus der
            zwölfstelligen Anschlußkennung, der T-Online-Nummer und der
            Mitbenutzernummer zusammen. Hinter der T-Online-Nummer muß ein
            '#' angegeben werden, wenn die Länge der T-Online-Nummer kürzer
            als 12 Zeichen ist.

            Sollte dies in Einzelfällen nicht zum Erfolg führen (offenbar
            abhängig von der Vermittlungsstelle), muß zusätzlich zwischen der
            Anschlußkennung und der T-Online-Nummer ein weiteres '#'-Zeichen
            eingefügt werden.

            Ansonsten (T-Online-Nr ist 12stellig) sind keine '#'-Zeichen
            anzugeben.

            Die Benutzerkennung muß bei T-Online mit '@t-online.de'
            abgeschlossen werden!

        Beispiel:

                PPPOE_USER='111111111111222222#0001@t-online.de'

------------------------------------------------------------------------------
ukw 16.10.2001: dsl.txt: Abschnitt PPPOE_CHARGEINT geändert :itschy 17.10.2001

Alt:
    PPPOE_CHARGEINT

        Zeittakt in Sekunden, siehe auch die Beschreibung zu
        ISDN_CIRC_x_CHARGEINT für ISDN-Circuits in Kapitel 3.

Neu:
    PPPOE_CHARGEINT

        Charge-Interval: Hier ist der Zeittakt in Sekunden anzugeben. Dieser
        wird dann für die Kosten-Berechnung verwendet.

        Die meisten Provider rechnen minutengenau ab. In diesem Fall ist der
        Wert '60' richtig. Bei Providern mit sekundengenauer Abrechnung
        setzt man besser PPPOE_CHARGEINT auf '1'.

        Leider wird bei PPPoE (DSL) der Zeittakt nicht voll ausgenutzt,
        so wie es bei ISDN der Fall ist. Hier wird immer nach der Zeit,
        die in PPPOE_HUP_TIMEOUT angegeben ist, eingehängt.

        Hier ist deshalb PPPOE_CHARGEINT lediglich für die Berechnung
        von Gebühren maßgeblich.
------------------------------------------------------------------------------
ukw 16.10.2001: dsl.txt: Abschnitt PPPOE_CHARGEINT geändert :itschy 17.10.2001

Alt:
    PPPOE_TIMES

        Zeitbereiche und Online-Kosten für diesen Circuit. Bitte *unbedingt*
        die Beschreibung zu ISDN_CIRC_x_TIMES für ISDN-Circuits in Kapitel 3
        durchlesen !

Neu:
    PPPOE_TIMES

        Hier werden die Zeiten angegeben, wann dieser Circuit aktiviert werden
        soll und wann er wieviel kostet. Dadurch wird es möglich, zu
        verschiedenen Zeiten verschiedene Circuits mit Default-Routen zu
        verwenden (Least-Cost-Routing). Dabei kontrolliert der Daemon imond die
        Routen-Zuweisung.

        Aufbau der Variablen:

            PPPOE_TIMES='times-1-info [times-2-info] ...'

        Jedes Feld times-?-info besteht aus 4 Unterfeldern - durch Doppelpunkt
        (':') getrennt.

        1. Feld: W1-W2

            Wochentag-Zeitraum, z.B. Mo-Fr oder Sa-Su usw. Schreibweise in
            Englisch oder deutsch möglich. Soll ein einzelner Wochentag
            eingetragen werden, ist zu W1-W1 schreiben, also z.B. Su-Su.

        2. Feld: hh-hh

            Stunden-Bereich, z.B. 09-18 oder auch 18-09. 18-09 ist
            gleichbedeutend mit 18-24 plus 00-09. 00-24 meint den ganzen Tag.

        3. Feld: Charge

            Hier werden in DM-Werten die Kosten pro Minute angegeben, z.B.
            0.032 für 3.2 Pfennig pro Minute. Diese werden unter
            Berücksichtigung der Taktzeit umgerechnet für die tatsächlich
            anfallenden Kosten, welche dann im imon-Client angezeigt werden.

        4. Feld: LC-Default-Route

            Der Inhalt kann Y oder N sein. Dabei bedeutet:

            Y:  Der angegebene Zeitbereich wird beim LC-Routing
                als Default-Route verwendet.

            N:  Der angegebene Zeitbereich dient nur zum Berechnen
                von Kosten, er wird beim automatischen LC-Routing
                jedoch nicht weiter verwendet.

        Beispiel (als eine lange Zeile zu lesen):

            PPPOE_TIMES='Mo-Fr:09-18:0.049:N
                         Mo-Fr:18-09:0.044:Y
                         Sa-Su:00-24:0.039:Y'

        Wichtig:

            Wenn die Zeitbereiche aller LC-Default-Route-Circuits ("Y")
            zusammengenommen nicht die komplette Woche beinhalten, gibt's zu
            diesen Lückenzeiten keine Default-Route. Damit ist dann Surfen im
            Internet zu diesen Zeiten ausgeschlossen!


        Noch ein ganz einfaches Beispiel:

            PPPOE_TIMES='Mo-Su:00-24:0.0:Y'

        für diejenigen, die eine Flatrate nutzen.


        Und noch eine letzte Bemerkung zum LC-Routing:

            Feiertage werden wie Sonntage behandelt.

------------------------------------------------------------------------------
ukw 16.10.2001: dsl.txt: Kapitel 4.2 (OPT_PPTP) komplett neu :itschy 17.10.2001

4.2. DSL über PPTP in Österreich (EXPERIMENTAL)
-----------------------------------------------

OPT_PPTP

    In Österreich (und anderen europäischen Ländern) wird statt PPPoE
    das PPTP-Protokoll verwendet. Auch hier wird eine separate Ethernet-Karte
    an ein PPTP-Modem angeschlossen.

    Ab Version 2.0 ist der Zugang über PPTP als Circuit realisiert - mit
    freundlicher Unterstützung von Rudolf Hämmerle <rudolf.haemmerle@aon.at>.

    Da ein PPTP-Anschluß dem PPPoE-Anschluß sehr ähnelt, gelten einige
    Anmerkungen oben bzgl. PPPoE auch für PPTP.

    Bei PPTP werden zwei Karten verwendet. Hierbei sollte man die erste
    Karte für den Anschluß des LANs verwenden und die zweite für die Verbindung
    zum DSL-Modem.

    Nur die erste Karte darf mit IP-Adressen belegt werden.

    Das heißt:

        IP_ETH_N='1'                    # Nur *eine* Karte mit IP-Adresse!
        IP_ETH_1_xxx='...'              # Die üblichen Parameter

    Für PPTP_ETH gibt man 'eth1' für die zweite Ethernetkarte an und
    gibt *keine* IP_ETH_2_xxx-Variablen an.

    Ab Version 2.0 muss PPTP als Circuit definiert werden und ist dann
    über imond/imonc steuerbar. Deshalb muss auch unbedingt

                        START_IMOND='yes'

    eingestellt werden, s. Kapitel 2.


    PPTP_NAME

        Hier sollte ein Name für den Circuit vergeben werden - max. 15 Stellen
        lang. Dieser wird im imon-Client imonc angezeigt.

        Beispiel: PPTP_NAME='DSL'


    PPTP_USEPEERDNS

        Hiermit wird festgelegt, ob die vom Internet-Provider bei der Einwahl
        übergebenen Nameserver für die Dauer der Onlineverbindung in die
        Konfigurationsdatei des lokalen Nameservers ens eingetragen werden
        sollen.

        Sinnvoll ist die Nutzung dieser Option also nur bei Circuits für
        Internet-Provider. Inzwischen unterstützen fast alle Provider
        diese Art der Übergabe.

        Nachdem die Nameserver-IP-Adressen übertragen wurden, werden die unter

            DNS_FORWARDERS

        eingetragenen Nameserver aus der Datei ens.conf entfernt und die vom
        Provider vergebenen IP-Adressen als Forwarder in die ens.conf
        eingetragen. Danach wird der lokale Nameserver ens veranlaßt, seine
        Konfiguration neu einzulesen. Dabei gehen bis dahin aufgelöste Namen
        nicht aus dem Nameserver-Cache verloren.

        Diese Option bietet den Vorteil, immer mit den am nächsten liegenden
        Nameservern arbeiten zu können, sofern der Provider die korrekten
        IP-Adressen übermittelt - dadurch geht die Namensauflösung schneller.

        Im Falle eines Ausfalls eines DNS-Servers beim Provider werden in der
        Regel die übergebenen DNS-Server-Adressen sehr schnell vom Provider
        korrigiert.

        Trotz allem ist vor jeder ersten Einwahl die Angabe eines gültigen
        Nameservers in

            DNS_FORWARDERS

        zwingend erforderlich, da sonst die erste Anfrage nicht korrekt
        aufgelöst werden kann. Außerdem wird beim Beenden der Verbindung die
        originale Konfiguration des lokalen Nameservers wieder hergestellt.

        Standard-Einstellung: PPTP_USEPEERDNS='no'


    PPTP_ETH

        Name des Ethernet-Interfaces

        'eth0'  1. Ethernet-Karte
        'eth1'  2. Ethernet-Karte
        ...     ...

        Standard-Einstellung: PPTP_ETH='eth1'


    PPTP_USER  PPTP_PASS

        Hier sind Benutzerkennung und Passwort für den jeweils benutzten
        Provider anzugeben. PPTP_USER enthält die Benutzerkennung,
        PPTP_PASS das Password.


    PPTP_DEBUG

        Soll pppd zusätzliche Debug-Informationen ausgeben, muss man
        PPTP_DEBUG auf 'yes' setzen. In diesem Fall schreibt pppd
        zusätzlichen Informationen über die syslog-Schnittstelle.

        WICHTIG: Damit diese auch über syslogd ausgegeben werden, muss die
        Variable OPT_SYSLOGD (s.o.) ebenso auf 'yes' gesetzt sein.


    PPTP_HUP_TIMEOUT

        Hier kann die Zeit in Sekunden angegeben werden, nach welcher die
        Verbindung beendet werden soll, wenn nichts mehr über die DSL-
        Leitung läuft.


    PPTP_MODEM_TYPE

        In Österreich kommen zwei verschiedene PPTP-Modems zum Einsatz.
        Dieses muß über PPTP_MODEM_TYPE eingestellt werden. Die Bezeichnung
        lautet 'bbaa' oder 'bcaa'.

        Die Benutzer des Providers MXSTREAM in Holland tragen hier 'mxstream'
        ein.

        Standard-Einstellung:

        PPTP_MODEM_TYPE='bcaa'


    PPTP_CHARGEINT

        Charge-Interval: Hier ist der Zeittakt in Sekunden anzugeben. Dieser
        wird dann für die Kosten-Berechnung verwendet.

        Die meisten Provider rechnen minutengenau ab. In diesem Fall ist der
        Wert '60' richtig. Bei Providern mit sekundengenauer Abrechnung
        setzt man besser PPTP_CHARGEINT auf '1'.

        Leider wird bei PPTP (DSL) der Zeittakt nicht voll ausgenutzt,
        so wie es bei ISDN der Fall ist. Hier wird immer nach der Zeit,
        die in PPTP_HUP_TIMEOUT angegeben ist, eingehängt.

        Hier ist deshalb PPTP_CHARGEINT lediglich für die Berechnung
        von Gebühren maßgeblich.


    PPTP_TIMES

        Hier werden die Zeiten angegeben, wann dieser Circuit aktiviert werden
        soll und wann er wieviel kostet. Dadurch wird es möglich, zu
        verschiedenen Zeiten verschiedene Circuits mit Default-Routen zu
        verwenden (Least-Cost-Routing). Dabei kontrolliert der Daemon imond die
        Routen-Zuweisung.

        Aufbau der Variablen:

            PPTP_TIMES='times-1-info [times-2-info] ...'

        Jedes Feld times-?-info besteht aus 4 Unterfeldern - durch Doppelpunkt
        (':') getrennt.

        1. Feld: W1-W2

            Wochentag-Zeitraum, z.B. Mo-Fr oder Sa-Su usw. Schreibweise in
            Englisch oder deutsch möglich. Soll ein einzelner Wochentag
            eingetragen werden, ist zu W1-W1 schreiben, also z.B. Su-Su.

        2. Feld: hh-hh

            Stunden-Bereich, z.B. 09-18 oder auch 18-09. 18-09 ist
            gleichbedeutend mit 18-24 plus 00-09. 00-24 meint den ganzen Tag.

        3. Feld: Charge

            Hier werden in DM-Werten die Kosten pro Minute angegeben, z.B.
            0.032 für 3.2 Pfennig pro Minute. Diese werden unter
            Berücksichtigung der Taktzeit umgerechnet für die tatsächlich
            anfallenden Kosten, welche dann im imon-Client angezeigt werden.

        4. Feld: LC-Default-Route

            Der Inhalt kann Y oder N sein. Dabei bedeutet:

            Y:  Der angegebene Zeitbereich wird beim LC-Routing
                als Default-Route verwendet.

            N:  Der angegebene Zeitbereich dient nur zum Berechnen
                von Kosten, er wird beim automatischen LC-Routing
                jedoch nicht weiter verwendet.

        Beispiel (als eine lange Zeile zu lesen):

            PPTP_TIMES='Mo-Fr:09-18:0.049:N
                         Mo-Fr:18-09:0.044:Y
                         Sa-Su:00-24:0.039:Y'

        Wichtig:

            Wenn die Zeitbereiche aller LC-Default-Route-Circuits ("Y")
            zusammengenommen nicht die komplette Woche beinhalten, gibt's zu
            diesen Lückenzeiten keine Default-Route. Damit ist dann Surfen im
            Internet zu diesen Zeiten ausgeschlossen!


        Noch ein ganz einfaches Beispiel:

            PPTP_TIMES='Mo-Su:00-24:0.0:Y'

        für diejenigen, die eine Flatrate nutzen.


        Und noch eine letzte Bemerkung zum LC-Routing:

            Feiertage werden wie Sonntage behandelt.

------------------------------------------------------------------------------
ukw 19.10.2001: isdn.txt: Hinter Abschnitt zu ISDN_VERBOSE_LEVEL angefügt :itschy 17.10.2001

OPT_ISDN_LZS (EXPERIMENTAL)

    Mit OPT_ISDN_LZS='yes' wird die LZS-Kompression aktiviert. Das
    LZS-Paket hat freundlicherweise Arwin Vosselman <arwin@xs4all.nl>
    zusammengestellt. Dieses Zusatzpaket hat im Moment Experimental-Status.

    Standard-Einstellung: OPT_ISDN_LZS='no'

    Hier im Einzelnen die erforderlichen Parameter:

    ISDN_LZS_DEBUG (EXPERIMENTAL)

        Debug-Level-Einstellung:

            '0' - kein Debugging
            '1' - Debugging ein

        Wer bei Problemen mit der Komprimierung noch mehr Debugmeldungen
        sehen möchte, setzt diese Variable auf '2'.

        Standard-Einstellung: ISDN_LZS_DEBUG='1'


    ISDN_LZS_COMP (EXPERIMENTAL)

        Art der Kompression. Bitte erst einmal auf dem Wert '8' stehen
        lassen.

        Standard-Einstellung: ISDN_LZS_COMP='8'


    ISDN_LZS_TWEAK (EXPERIMENTAL)

        Auch diese Variable erst einmal auf '7' stehen lassen.

        Standard-Einstellung: ISDN_LZS_TWEAK='7'


     Außer diesen 3 Werten muss noch die Variable ISDN_CIRC_x_FRAMECOMP
     angepasst werden, s. nächstes Kapitel.

------------------------------------------------------------------------------
ukw 19.10.2001: isdn.txt: Hinter Abschnitt zu ISDN_CIRC_x_COMPRESSION angefügt :itschy 17.10.2001

ISDN_COMP_x_FRAMECOMP (EXPERIMENTAL)

    Dieser Parameter wird nur berücksichtigt, wenn OPT_LZS='yes' eingestellt
    wird. Er regelt die Frame-Komprimierung.

    Folgende Werte sind möglich:

        'no"                    Keine Frame-Komprimierung
        'default"               LZS according RFC1974(std) and BSDCOMP 12
        'all"                   Negotiate lzs and bsdcomp
        'lzs"                   Negotiate lzs only
        'lzsstd                 LZS according RFC1974 Standard Mode
                                ("Sequential Mode")
        'lzsext"                LZS according RFC1974 Extended Mode
        'bsdcomp"               Negotiate bsdcomp only

    Welcher Wert für den jeweiligen Provider verwendet werden kann, muss
    ausprobiert werden. So weit bekannt geht bei T-Online nur 'lzsext'.
    Bei den meisten anderen Providern sollte man mit 'default' auskommen.

    Wichtig: Wird LZS-Komprimierung eingesetzt, muss ISDN_CIRC_x_MTU='1500'
    gesetzt werden! ISDN_CIRC_1_COMPRESSION sollte auf 'yes' eingestellt sein.

------------------------------------------------------------------------------
ukw 19.10.2001: readme.txt: Kapitel 'D': Zum fli4l-Team Hinzugefügt :itschy 17.10.2001

Das fli4l-Team bilden (in alphabetischer Reihenfolge):

+   Arwin Vosselman (LZS-Kompression)           <arwin@xs4all.nl>
    Carsten Cerny (Homepage & fliwiz)           <carsten.cerny@cc13.com>
------------------------------------------------------------------------------
ukw 19.10.2001: readme.txt: Kapitel 'D': Hinzugefügt :itschy 17.10.2001

Alt:
Ich hoffe, daß diese Liste zukünftig noch etwas länger wird ;-)

Außerdem Dank an die vielen fli4l-User, die Anregungen gegeben haben oder

Neu:

Ich hoffe, daß diese Liste zukünftig noch etwas länger wird ;-)

Seit einiger Zeit wird die Support-Mailingliste (erreichbar über
das Support-Formular auf www.fli4l.de) stärker frequentiert. Als
tatkräftige Verstärkung des Support-Teams sind hier zu nennen:

    Georg Neis                                  <georg.neis@gmx.de>
    Nicole Hornung                              <nicole.hornung@epost.de>
    Stefan Krister                              <stefan.krister@keimfarben.de>

Zur Zeit wird auch ein Team für Öffentlichkeitsarbeit gebildet.
Engagiert sind hier:

    Christa MacNelly (Präsentationen)           <ChristaMN@gmx.de>
    Fabian Woelk (Newsletter)                   <fawel@gmx.de>
    Frank Lang (allgemein)                      <des919@gmx.de>
    Günter Brauer (allgemein)                   <gbzzr1100@t-online.de>
    Michael Pahle (Newsletter)                  <michael.pahle@t-online.de
    Paul H. (allgemein)                         <Inquisitor@surfnett.de>

Außerdem Dank an die vielen fli4l-User, die Anregungen gegeben haben oder

------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
------------------------------------------------------------------------------
