From 14acff297dbf1977b9c8758f92f2c62dbeb1cc00 Mon Sep 17 00:00:00 2001 From: NuSkooler Date: Thu, 4 Aug 2022 18:38:39 +0000 Subject: [PATCH] deploy: a6f7fe40c66eb401e9c1ca99d25207c16ab7deaa --- 404.html | 32 + admin/administration.html | 36 +- admin/oputil.html | 36 +- admin/updating.html | 44 +- art/general.html | 44 +- art/mci.html | 143 +- art/themes.html | 44 +- art/views/button_view.html | 56 +- art/views/edit_text_view.html | 44 +- art/views/full_menu_view.html | 56 +- art/views/horizontal_menu_view.html | 44 +- art/views/mask_edit_text_view.html | 44 +- art/views/multi_line_edit_text_view.html | 52 +- art/views/predefined_label_view.html | 60 +- art/views/spinner_menu_view.html | 44 +- art/views/text_view.html | 56 +- art/views/toggle_menu_view.html | 44 +- art/views/vertical_menu_view.html | 44 +- assets/images/wfc.png | Bin 0 -> 55826 bytes configuration/acs.html | 36 +- configuration/archivers.html | 40 +- configuration/colour-codes.html | 36 +- configuration/config-files.html | 56 +- configuration/config-hjson.html | 40 +- configuration/creating-config.html | 36 +- configuration/directory-structure.html | 36 +- configuration/email.html | 36 +- configuration/event-scheduler.html | 40 +- configuration/external-binaries.html | 44 +- configuration/file-transfer-protocols.html | 36 +- configuration/hjson.html | 40 +- configuration/menu-hjson.html | 48 +- configuration/security.html | 48 +- configuration/sysop-setup.html | 36 +- filebase/acs.html | 36 +- filebase/first-file-area.html | 36 +- filebase/index.html | 36 +- filebase/network-mounts-and-symlinks.html | 36 +- filebase/tic-support.html | 36 +- filebase/uploads.html | 44 +- filebase/web-access.html | 36 +- index.html | 32 + installation/docker.html | 46 +- installation/hardware/rpi.html | 36 +- installation/hardware/windows.html | 36 +- installation/install-script.html | 48 +- installation/installation-methods.html | 36 +- installation/manual.html | 48 +- installation/network.html | 36 +- installation/production.html | 36 +- installation/testing.html | 36 +- messageareas/bso-import-export.html | 40 +- messageareas/configuring-a-message-area.html | 40 +- messageareas/ftn.html | 48 +- messageareas/message-networks.html | 40 +- messageareas/netmail.html | 36 +- messageareas/qwk.html | 40 +- misc/user-interrupt.html | 36 +- modding/autosig-edit.html | 36 +- modding/bbs-list.html | 36 +- modding/door-servers.html | 36 +- modding/existing-mods.html | 36 +- modding/file-area-list.html | 36 +- modding/file-base-download-manager.html | 36 +- modding/file-base-web-download-manager.html | 36 +- modding/file-transfer-protocol-select.html | 36 +- modding/last-callers.html | 36 +- modding/local-doors.html | 40 +- modding/menu-modules.html | 36 +- modding/msg-area-list.html | 36 +- modding/msg-conf-list.html | 36 +- modding/node-msg.html | 36 +- modding/onelinerz.html | 36 +- modding/rumorz.html | 36 +- modding/set-newscan-date.html | 36 +- modding/show-art.html | 36 +- modding/telnet-bridge.html | 36 +- modding/top-x.html | 36 +- modding/user-2fa-otp-config.html | 40 +- modding/user-list.html | 36 +- modding/wfc.html | 2517 ++++++++++++++++++ modding/whos-online.html | 86 +- servers/contentservers/gopher.html | 48 +- servers/contentservers/nntp.html | 36 +- servers/contentservers/web-server.html | 40 +- servers/loginservers/ssh.html | 36 +- servers/loginservers/telnet.html | 36 +- servers/loginservers/websocket.html | 36 +- sitemap.xml | 174 +- troubleshooting/monitoring-logs.html | 40 +- 90 files changed, 5949 insertions(+), 361 deletions(-) create mode 100644 assets/images/wfc.png create mode 100644 modding/wfc.html diff --git a/404.html b/404.html index 45fd09b7..0153a250 100644 --- a/404.html +++ b/404.html @@ -2247,6 +2247,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/admin/administration.html b/admin/administration.html index 16b1cd36..f27bc4a9 100644 --- a/admin/administration.html +++ b/admin/administration.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/admin/administration.html"},"description":"Administration","url":"/enigma-bbs/admin/administration.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Administration","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/admin/oputil.html b/admin/oputil.html index c6322940..143f6da8 100644 --- a/admin/oputil.html +++ b/admin/oputil.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/admin/oputil.html"},"description":"The oputil CLI ENiGMA½ comes with oputil.js henceforth known as oputil, a command line interface (CLI) tool for sysops to perform general system and user administration. You likely used oputil to do the initial ENiGMA configuration.","url":"/enigma-bbs/admin/oputil.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"oputil","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/admin/updating.html b/admin/updating.html index b76abcb3..54b31972 100644 --- a/admin/updating.html +++ b/admin/updating.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/admin/updating.html"},"description":"Updating Keeping your system up to date ensures you have the latest fixes, features, and general improvements. Updating ENiGMA½ can be a bit of a learning curve compared to traditional binary-release systems you may be used to, especially when running from Git cloned source.","url":"/enigma-bbs/admin/updating.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Updating","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2299,9 +2331,13 @@ git pull
  • Finally, restart your running ENiGMA½ instance.
  • -

    :information_source: Visual diff tools such as DiffMerge (free, works on all major platforms) can be very helpful for the tasks outlined above!

    +
    +

    :information_source: Visual diff tools such as DiffMerge (free, works on all major platforms) can be very helpful for the tasks outlined above!

    +
    -

    :bulb: It is recommended to monitor logs and poke around a bit after an update!

    +
    +

    :bulb: It is recommended to monitor logs and poke around a bit after an update!

    +
    diff --git a/art/general.html b/art/general.html index 3f3497ab..3a85c1eb 100644 --- a/art/general.html +++ b/art/general.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/general.html"},"description":"General Art Information One of the most basic elements of BBS customization is through it’s artwork. ENiGMA½ supports a variety of ways to select, display, and manage art.","url":"/enigma-bbs/art/general.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"General Art Information","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2460,12 +2492,16 @@
  • cp1131
  • -

    :information_source: See this specification for more information.

    +
    +

    :information_source: See this specification for more information.

    +

    SyncTERM Style Baud Rates

    The baudRate member can set a SyncTERM style emulated baud rate. May be 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 76800, or 115200. A value of ulimited, off, or 0 resets (disables) the rate.

    -

    :information_source: See this specification for more information.

    +
    +

    :information_source: See this specification for more information.

    +

    Common Example

    fullLogoffSequenceRandomBoardAd: {
    diff --git a/art/mci.html b/art/mci.html
    index 5da1d967..f91d51f6 100644
    --- a/art/mci.html
    +++ b/art/mci.html
    @@ -17,11 +17,11 @@
     
     
     
    -
    +
     
     
     
    +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/mci.html"},"description":"MCI Codes ENiGMA½ supports a variety of MCI codes. Some predefined codes produce information about the current user, system, or other statistics while others are used to instantiate a View.","url":"/enigma-bbs/art/mci.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"MCI Codes","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"}
     
     
       
    @@ -2249,6 +2249,38 @@
     
       
       
    +
    +  
    +  
    +
    +  
    +
    +  
    +  
    +
    +  
    +
    +  
    +
    +  
    +    
    +      
    +    
    +  
  • Modding
  • + @@ -2278,9 +2310,13 @@

    General Information

    MCI codes are composed of two characters and are prefixed with a percent (%) symbol.

    -

    :information_source: To explicitly tie a MCI to a specific View ID, suffix the MCI code with a number. For example: %BN1.

    +
    +

    :information_source: To explicitly tie a MCI to a specific View ID, suffix the MCI code with a number. For example: %BN1.

    +
    -

    :information_source: Standard (non-focus) and focus colors are set by placing duplicate codes back to back in art files:

    +
    +

    :information_source: Standard (non-focus) and focus colors are set by placing duplicate codes back to back in art files:

    +

    Example

    @@ -2554,7 +2590,7 @@ TB - Total amount of files on the system (formatted to appropriate bytes/megs/gigs/etc.) + Total file base size (formatted to appropriate bytes/megs/gigs/etc.) TP @@ -2566,6 +2602,91 @@ Total messages posted/imported to the system today + + FT + Total number of uploads to the system today + + + + FB + Total upload amount today (formatted to appropriate bytes/megs/etc. ) + + + DD + Total number of downloads from the system today + + + + DB + Total download amount today (formatted to appropriate bytes/megs/etc. ) + + + MB + System memory + + + MF + System free memory + + + LA + System load average (e.g. 0.25)
    (May not be available on some platforms) + + + CL + System current load percentage
    (May not be available on some platforms) + + + UU + System uptime in friendly format + + + LC + Last caller to the system (username) + + + LT + Time of last caller + + + LD + Date of last caller + + + TU + Total number of users on the system + + + NT + Total new users today + + + + NM + Count of new messages address to the current user across all message areas in which they have access + + + NP + Count of new private mail to the current user + + + IA + Indicator as to rather the current user is available or not. See also getStatusAvailIndicators() in Themes + + + + IV + Indicator as to rather the curent user is visible or not. See also getStatusVisibleIndicators() in Themes + + + + PI + Ingress bytes for the current process (since ENiGMA started up) + + + PE + Egress bytes for the current process (since ENiGMA started up) + @@ -2602,9 +2723,11 @@ -

    :information_source: More are added all +

    +

    :information_source: More are added all the time so also check out core/predefined_mci.js for a full listing.

    +

    :memo: Many codes attempt to pay homage to Oblivion/2, iNiQUiTY, etc.

    @@ -2708,7 +2831,9 @@ a Vertical Menu (%VM): -

    :information_source: Peek at /core/mci_view_factory.js to see additional information.

    +
    +

    :information_source: Peek at /core/mci_view_factory.js to see additional information.

    +

    Mask Edits

    Mask Edits (%ME) use the special maskPattern property to control a mask. This can be useful for gathering dates, phone numbers, so on.

    @@ -2980,7 +3105,9 @@ a Vertical Menu (%VM):

    Example

    -

    :bulb: Remember that a Python string format mini language style syntax is available for widths, alignment, number prevision, etc. as well. A number can be made to be more human readable for example: {byteSize:,} may yield “1,123,456”.

    +
    +

    :bulb: Remember that a Python string format mini language style syntax is available for widths, alignment, number prevision, etc. as well. A number can be made to be more human readable for example: {byteSize:,} may yield “1,123,456”.

    +
    diff --git a/art/themes.html b/art/themes.html index 4e58f80e..0049962d 100644 --- a/art/themes.html +++ b/art/themes.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/themes.html"},"description":"Themes ENiGMA½ comes with an advanced theming system allowing system operators to highly customize the look and feel of their boards. A given installation can have as many themes as you like for your users to choose from.","url":"/enigma-bbs/art/themes.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Themes","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2396,6 +2428,14 @@ dateTimeFormat Sets the moment.js style short and/or long format for date/time combinations. + + getStatusAvailIndicators + An array[2] of availability status indicators. Defaults to [ 'Y', 'N' ]. + + + getStatusVisibleIndicators + An array[2] of visibility status indicators. Defaults to [ 'Y', 'N' ]. + diff --git a/art/views/button_view.html b/art/views/button_view.html index e1bc568c..9d11f132 100644 --- a/art/views/button_view.html +++ b/art/views/button_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/button_view.html"},"description":"Button View A button view supports displaying a button on a screen.","url":"/enigma-bbs/art/views/button_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Button View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2277,9 +2309,13 @@

    General Information

    -

    :information_source: A button view is defined with a percent (%) and the characters BT, followed by the view number. For example: %BT1

    +
    +

    :information_source: A button view is defined with a percent (%) and the characters BT, followed by the view number. For example: %BT1

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    @@ -2341,11 +2377,17 @@

    The textOverflow option is used to specify what happens when a text string is too long to fit in the width defined.

    -

    :information_source: If textOverflow is not specified at all, a button can become wider than the width if needed to display the text value.

    +
    +

    :information_source: If textOverflow is not specified at all, a button can become wider than the width if needed to display the text value.

    +
    -

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    +

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    -

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +
    +

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +

    Example

    diff --git a/art/views/edit_text_view.html b/art/views/edit_text_view.html index b1362aa6..1da99d56 100644 --- a/art/views/edit_text_view.html +++ b/art/views/edit_text_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/edit_text_view.html"},"description":"Edit Text View An edit text view supports editing form values on a screen. This can be for new entry as well as editing existing values defined by the module.","url":"/enigma-bbs/art/views/edit_text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Edit Text View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2277,9 +2309,13 @@

    General Information

    -

    :information_source: An edit text view is defined with a percent (%) and the characters ET, followed by the view number. For example: %ET1. This is generally used on a form in order to allow a user to enter or edit a text value.

    +
    +

    :information_source: An edit text view is defined with a percent (%) and the characters ET, followed by the view number. For example: %ET1. This is generally used on a form in order to allow a user to enter or edit a text value.

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    diff --git a/art/views/full_menu_view.html b/art/views/full_menu_view.html index 1a6bf83c..9ebb63bd 100644 --- a/art/views/full_menu_view.html +++ b/art/views/full_menu_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/full_menu_view.html"},"description":"Full Menu View A full menu view supports displaying a list of times on a screen in a very configurable manner. A full menu view supports either a single row or column of values, similar to Horizontal Menu (HM) and Vertical Menu (VM), or in multiple columns.","url":"/enigma-bbs/art/views/full_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Full Menu View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2279,9 +2311,13 @@

    Items can be selected on a menu via the cursor keys, Page Up, Page Down, Home, and End, or by selecting them via a hotKey - see Hot Keys below.

    -

    :information_source: A full menu view is defined with a percent (%) and the characters FM, followed by the view number. For example: %FM1

    +
    +

    :information_source: A full menu view is defined with a percent (%) and the characters FM, followed by the view number. For example: %FM1

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    @@ -2405,11 +2441,17 @@ hotKeySubmit: true

    The textOverflow option is used to specify what happens when a text string is too long to fit in the width defined. Note, because columns are automatically calculated, this can only occur when the text is too long to fit the width using a single column.

    -

    :information_source: If textOverflow is not specified at all, a menu can become wider than the width if needed to display a single column.

    +
    +

    :information_source: If textOverflow is not specified at all, a menu can become wider than the width if needed to display a single column.

    +
    -

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    +

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    -

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +
    +

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +

    Examples

    diff --git a/art/views/horizontal_menu_view.html b/art/views/horizontal_menu_view.html index 8cdec5c1..1cc08e4f 100644 --- a/art/views/horizontal_menu_view.html +++ b/art/views/horizontal_menu_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/horizontal_menu_view.html"},"description":"Horizontal Menu View A horizontal menu view supports displaying a list of times on a screen horizontally (side to side, in a single row) similar to a lightbox.","url":"/enigma-bbs/art/views/horizontal_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Horizontal Menu View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2279,9 +2311,13 @@

    Items can be selected on a menu via the cursor keys, Page Up, Page Down, Home, and End, or by selecting them via a hotKey - see Hot Keys below.

    -

    :information_source: A horizontal menu view is defined with a percent (%) and the characters HM, followed by the view number (if used.) For example: %HM1

    +
    +

    :information_source: A horizontal menu view is defined with a percent (%) and the characters HM, followed by the view number (if used.) For example: %HM1

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    diff --git a/art/views/mask_edit_text_view.html b/art/views/mask_edit_text_view.html index 728544b3..ae08f948 100644 --- a/art/views/mask_edit_text_view.html +++ b/art/views/mask_edit_text_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/mask_edit_text_view.html"},"description":"Mask Edit Text View A mask edit text view supports editing form values on a screen. This can be for new entry as well as editing existing values. Unlike a edit text view, the mask edit text view uses a mask pattern to specify what format the values should be entered in.","url":"/enigma-bbs/art/views/mask_edit_text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Mask Edit Text View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2277,9 +2309,13 @@

    General Information

    -

    :information_source: A mask edit text view is defined with a percent (%) and the characters ME, followed by the view number. For example: %ME1. This is generally used on a form in order to allow a user to enter or edit a text value.

    +
    +

    :information_source: A mask edit text view is defined with a percent (%) and the characters ME, followed by the view number. For example: %ME1. This is generally used on a form in order to allow a user to enter or edit a text value.

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    diff --git a/art/views/multi_line_edit_text_view.html b/art/views/multi_line_edit_text_view.html index 76577e80..649190b8 100644 --- a/art/views/multi_line_edit_text_view.html +++ b/art/views/multi_line_edit_text_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/multi_line_edit_text_view.html"},"description":"Multi Line Edit Text View A text display / editor designed to edit or display a message.","url":"/enigma-bbs/art/views/multi_line_edit_text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Multi Line Edit Text View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2277,9 +2309,13 @@

    General Information

    -

    :information_source: A multi line edit text view is defined with a percent (%) and the characters MT, followed by the view number. For example: %MT1

    +
    +

    :information_source: A multi line edit text view is defined with a percent (%) and the characters MT, followed by the view number. For example: %MT1

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    @@ -2341,9 +2377,13 @@ -

    :information_source: If mode is not set, the default mode is “edit”

    +
    +

    :information_source: If mode is not set, the default mode is “edit”

    +
    -

    :information_source: With mode preview, scrolling the contents is allowed, but is not with read-only.

    +
    +

    :information_source: With mode preview, scrolling the contents is allowed, but is not with read-only.

    +

    Example

    diff --git a/art/views/predefined_label_view.html b/art/views/predefined_label_view.html index abaf5346..ac3d8f18 100644 --- a/art/views/predefined_label_view.html +++ b/art/views/predefined_label_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/predefined_label_view.html"},"description":"Predefined Label View A predefined label view supports displaying a predefined MCI label on a screen.","url":"/enigma-bbs/art/views/predefined_label_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Predefined Label View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2277,11 +2309,17 @@

    General Information

    -

    :information_source: A predefined label view is defined with a percent (%) and the characters PL, followed by the view number and then the predefined MCI value in parenthesis. For example: %PL1(VL) to display the Version Label. NOTE: this is an alternate way of placing MCI codes, as the MCI can also be placed on the art page directly with the code. For example %VL. The difference between these is that the PL version can have additional formatting options applied to it.

    +
    +

    :information_source: A predefined label view is defined with a percent (%) and the characters PL, followed by the view number and then the predefined MCI value in parenthesis. For example: %PL1(VL) to display the Version Label. NOTE: this is an alternate way of placing MCI codes, as the MCI can also be placed on the art page directly with the code. For example %VL. The difference between these is that the PL version can have additional formatting options applied to it.

    +
    -

    :information_source: See Predefined Codes in MCI for the list of available MCI codes.

    +
    +

    :information_source: See Predefined Codes in MCI for the list of available MCI codes.

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    @@ -2321,11 +2359,17 @@

    The textOverflow option is used to specify what happens when a predefined MCI string is too long to fit in the width defined.

    -

    :information_source: If textOverflow is not specified at all, a predefined label view can become wider than the width if needed to display the MCI value.

    +
    +

    :information_source: If textOverflow is not specified at all, a predefined label view can become wider than the width if needed to display the MCI value.

    +
    -

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    +

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    -

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +
    +

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +

    Example

    diff --git a/art/views/spinner_menu_view.html b/art/views/spinner_menu_view.html index eb4fd0bc..4970a35e 100644 --- a/art/views/spinner_menu_view.html +++ b/art/views/spinner_menu_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/spinner_menu_view.html"},"description":"Spinner Menu View A spinner menu view supports displaying a set of times on a screen as a list, with one item displayed at a time. This is generally used to pick one option from a list. Some examples could include selecting from a list of states, themes, etc.","url":"/enigma-bbs/art/views/spinner_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Spinner Menu View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2279,9 +2311,13 @@

    Items can be selected on a menu via the cursor keys or by selecting them via a hotKey - see Hot Keys below.

    -

    :information_source: A spinner menu view is defined with a percent (%) and the characters SM, followed by the view number (if used.) For example: %SM1

    +
    +

    :information_source: A spinner menu view is defined with a percent (%) and the characters SM, followed by the view number (if used.) For example: %SM1

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    diff --git a/art/views/text_view.html b/art/views/text_view.html index d53a2d89..4b252951 100644 --- a/art/views/text_view.html +++ b/art/views/text_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/text_view.html"},"description":"Text View A text label view supports displaying simple text on a screen.","url":"/enigma-bbs/art/views/text_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Text View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2277,9 +2309,13 @@

    General Information

    -

    :information_source: A text label view is defined with a percent (%) and the characters TL, followed by the view number. For example: %TL1

    +
    +

    :information_source: A text label view is defined with a percent (%) and the characters TL, followed by the view number. For example: %TL1

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    @@ -2323,11 +2359,17 @@

    The textOverflow option is used to specify what happens when a text string is too long to fit in the width defined.

    -

    :information_source: If textOverflow is not specified at all, a text label can become wider than the width if needed to display the text value.

    +
    +

    :information_source: If textOverflow is not specified at all, a text label can become wider than the width if needed to display the text value.

    +
    -

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    +

    :information_source: Setting textOverflow to an empty string textOverflow: "" will cause the item to be truncated if necessary without any characters displayed

    +
    -

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +
    +

    :information_source: Otherwise, setting textOverflow to one or more characters will truncate the value if necessary and display those characters at the end. i.e. textOverflow: ...

    +

    Example

    diff --git a/art/views/toggle_menu_view.html b/art/views/toggle_menu_view.html index b6f571cc..22058cbd 100644 --- a/art/views/toggle_menu_view.html +++ b/art/views/toggle_menu_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/toggle_menu_view.html"},"description":"Toggle Menu View A toggle menu view supports displaying a list of options on a screen horizontally (side to side, in a single row) similar to a Horizontal Menu. It is designed to present one of two choices easily.","url":"/enigma-bbs/art/views/toggle_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Toggle Menu View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2279,9 +2311,13 @@

    Items can be selected on a menu via the left and right cursor keys, or by selecting them via a hotKey - see Hot Keys below.

    -

    :information_source: A toggle menu view is defined with a percent (%) and the characters TM, followed by the view number (if used.) For example: %TM1

    +
    +

    :information_source: A toggle menu view is defined with a percent (%) and the characters TM, followed by the view number (if used.) For example: %TM1

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    diff --git a/art/views/vertical_menu_view.html b/art/views/vertical_menu_view.html index a2e9b082..ee695e4d 100644 --- a/art/views/vertical_menu_view.html +++ b/art/views/vertical_menu_view.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/art/views/vertical_menu_view.html"},"description":"Vertical Menu View A vertical menu view supports displaying a list of times on a screen vertically in a single column, similar to a lightbar. This type of control is often useful for lists of items or menu controls.","url":"/enigma-bbs/art/views/vertical_menu_view.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Vertical Menu View","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2279,9 +2311,13 @@

    Items can be selected on a menu via the cursor keys, Page Up, Page Down, Home, and End, or by selecting them via a hotKey - see Hot Keys below.

    -

    :information_source: A vertical menu view is defined with a percent (%) and the characters VM, followed by the view number (if used.) For example: %VM1.

    +
    +

    :information_source: A vertical menu view is defined with a percent (%) and the characters VM, followed by the view number (if used.) For example: %VM1.

    +
    -

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +
    +

    :information_source: See MCI for general information on how to use views and common configuration properties available for them.

    +

    Properties

    diff --git a/assets/images/wfc.png b/assets/images/wfc.png new file mode 100644 index 0000000000000000000000000000000000000000..a900f0498a930be12b3f5722212af1b47e7561d5 GIT binary patch literal 55826 zcmeFZXIN8N`#l`X*pn|4uU9UNw|BJ3s zbxGs<;}t4LZ{>^M=3I|X46r{WD{w&Q==DPve#m??=~xY$KhycGEhR~kxa2xaqAF^o zEEU`2mkyfwB%|mlHSS{SZYm9DIVFV7TVPS-;h8qcPQ~>PX`$YWoAbR{NIa7~8pek} z`+|W(M|h>EahZeHR=Db*V5hX6A7GdBN)uzHlsiJq+W^zRhL&d^qTYNJ?1X zMBui@t-RoEWtgYSttDR03fB%fV)|XNiXUG(z`?!p5l{#UJYic zD;67UBF5$D=qTYdR{qr9KDa$m7RlOfMzAXE3v0+_fnQY{3eQ_G%TJvmd#whZq6~MU z$-6LY3Wm)t#o=(2&COd{T3Y9}5B@bk%O51_DPKQXY-jWK`t)d+!b*ACMU8~x2pdxrX8A-Uq`II*G2}t|vEt`STi2Z&H2X-abBQH8o0u{ry{6 zAQnA2R;@8i`STZN&QEDkM(hhuBbf7ANGBw6b!mRy_Bm?DpWnTttg5QINhZ5@#!C|W z2#i@-@siuOOkBPRU`D&UyN5?dN9SmNovWQWF)=YWHy8J8J|h-=;rw}AC!AhQN%2{! z0FNd+NFWgYIrl|bS=m!?H>{*hhmfO9l5dSKMtL+!NT&?>4E3L{ z^px24x<6f9T1x7g3;OFr?PM^g`yB(&P?dn=DGG#ZgxhrgpZ^K7Q-+=T^UvS-cl-S{ zysJ0=`EZ0p^}Thd`q#hC@>@XBM+u=|y33X}3Dgdc9HWUx)q}_C{<@yDdy7z3!>|q3 zlrmE`h{jJJZ!uQxECC++l&q7v&5m8X7kErdQ9`0~W2SX_J_{@63!nVsn8j4XYfesQ zVzNh*LG4C#U|>0QHgP)FoN4#m-TjDh2NF$6^qfn5HPy&v{$^!mWyp(|48_{H>&D*3 zBMM8}WLie4X@K#-jlI0bAw&sm9f`3osL1@4ku2|Km*h5JSf82ej=7S+FfJs0r#!nR zUb}5E=0QODcVadKF-NObYkfczx4-X2oWf9JF{eS2rFbu7mjj5K{^OYDko71?gkc;g z%fP^E;EAVL^i^?&r<6wa9zQNoqvKH20|PjrzxW@tBrgrS6%5bin^wsb)R0H+&nW!}SGE`_v0Wds3~SsP zG&gszRU!}ZyN@|HeqHET$RFb|>WFJ>mnDFBkGXc{ z8^g-=m-`0>PB!yl7$3dPde5b9cX-t5Y%AJyB;AB<7d4+1X~O`7p3aCh3yPPtiTQz9 zsUS`vSknj#>c&ic3BM`_PqhNhQ!cEBUUM(+AS#K9soC> zR8c+iyz7QPkKEmu%daiNl*(q%4Lf15bW4!z&h65JeFED&oZT_{pBte{SS+X#16MCQ zH(yI1Uu}}bQ`^4~q06S#J_g?^2>>W2Si9ygeqoRO`SVb2Z!?GpzPqtv`IhZDI_=?w zFTF%W(|UYG^z#A_ik1I%)_3jm<5nSe`Z7)xj@7!HTUaO#!Bm5MzjFS_VuF3aYc4a- z$3u#ajv28Xjb330)^^;L$2V`?Is?L41jZASZd&GGn1o?bUxN|8;Mswj@U}MrcP?_C zZfdYPtZrGAXIPwhAx>#-@)chwDDexkqcMD}wO61F&9{A*ikh2d+Y|5h=vE;peVP0VmF_G ziSupWX&%BQMd#tRi&`m)OOf#&<8B6drd4I(vvHQ8rz5P_vg`9--UFRkcj_3ZP^4!) zPe8i|K*DBFb-yy1%p&ith3!UhG$#avw+@+LnTvRqz3*18d5Bu%#lwjRi$`BaLDe)S zg6{M$=f}#wa3|;T5KtccjE7*o^H>|;^mxbsk0AjyxrQ8 zNg1&Qi145TvJT2D~j92Lg*Jl{)x(o!X z{uIKkLx=9tYbiB_Yt)in&EVU?CmS)0X3VWy4NW0D)7e=mLCQzuF332J=tg*K{P?CE z@NgLr9Jj@R+kf&IUS3`a=c$HsURj#S+?SJ=ekSG)ll#gFR)ZvOUh==Wa^TCCPkH1k@)?bC2L zkFN}XSos&sJv=<1{PquS1q4s}Ea>eZxjOdQbFUNFOv39IO`}LWs-ZgM$_P2=lqcU( zK5l{=0EnoM7vNS#AOLY!t<>|(YUIIj;Kk?M!rICouO|$Pts4QXp8J2B~CL) zo#Kk9YKP%Z4{LqB&VWkg7sCyV&H$<+bWbZ;UfSE+`+ysszEY)n0%lffr>FLtH=9Wb zOG!zIkm_IJuzQP-0k^Q2ZHr$AEm-AN1L&xyL9)6rZ|nxW+2pL}_ZN>};t!s@97w^l znF50%rBMqCetR)gvopI_KvNXQP+OJJhGPIjF?1Y;XVrVKYB%6Mztw|AM2PZ*fA`z< z9`M0mqo7VmsU|9|w}=$pYN+E-8y(#%X1Y>Cnb=-1z#Dy~%VJ2f>!BXiY3bDvMzLnh zSs80o0Mj89Fy+pG9iI@Zg!(LqsoR+6bjUh$6@y>9WdWF7lKY6QgvZL*xf_XFi-XOw zwd*0CYoGU8j#s+*Q+qQtf^{_I1T;Yw0a|xyzly+VF^!(^+M1dg{usG2okU||>x@hH z@bKwXkg@7$(`uKQ7RNn)eBkM!>SA>BG4Fq4fK)l`W$qw(%F*X=<$Px1lolvQOMuhj z_FjO%n|^C#0Q})9^ci2Y=+Dtx2Oa(RtX86os2HBH0YT#C*4AxvbMunY(#AKZC8yp8 ziv{7SiFl!O5Ck9GX;{IGJ9T^&%>@yONz&*9xooK1*>ZAz+?+ARRph=r62YesHT_Kx zdzq>T2+%o%%Li+Wb}*x~Z*-Ig;IsKTSha0$=EDjXD}b42vo8a6@Dz<_Z56(1Qy{fT zPK&dq#NPw_K6&|}_Nm(yF(bj)j{FP&E)c(gqAX$ClU}~`sr3NYNc}Gu1i2`z5nM>& zhXEB-VHree1hB~J^`>oz`9un8g$4!!VW4VbW8=H_lJ9c*@W;o>fMqu=4Hr*?dA_{c z1L~>gv@XIKYxVx~pC=!^s+xd0q~*5=0Ra+7?&r@#;%*(T8E50bDDlK}U(Xitz< zZUG6eVS?J~hoHC->bXvmb#a}vT zWw_X;Srj++;M8H;$uIuSK%zB(ZkGny8^nw^d$q!VLfdYVt-Zfhy7`Eui-ny%^y92+ zn?(1-#Mz$>;m2StK(_VQTE6E&B_A6fAO9T>M5gnrv))hN@F8lSt+2np(HPH|K@q7)8L+{WtgWKG$9XSX<;p znvF!yLpk?iWn@wGhKxOv}m=gu)u}eYKXp!UKxg z=CXOMBBY-JPwhKuj$v*&lZR~vKbD>coc;dQH_wWoxqyr>bx>pqnF{wlu; z!3+W|&>?Q$YAEi6^T>`r*MZpWsL8~DasUT;)SS6sAVA`f`w)FXo+X&jbuH?|3o(qpgAxZF7hSeyU-x1EZl zw#ViNrHueR=HDZBU6uBWBSy znvS{U_Y+?9{ zID13h_Ft184mnQTrOx6u?G3XX9-SVA)HZth_6VZr}op%`8Mn z;0urCBeFj>@3icP85AQv+-Bv6^kG_xw&b10fwI1CPanY5o*)rB`N&9+tWX2<1lgPh zii$kpvkJu(F#NQ&Gy=fYbA?}c8P(4wzeM&GVYm0fs>KlbdrNZa; zq+B{9<+jlGu>9F$0N5&^;NS4bih=&XIuDV`o6Lbc!(*Ux=9a~`T*M59)?EdZ9eGPK`slis93g_ZmaOwaXZK`0B%zRng#4LNad%*v15##PM6h| zPKX(Eupvf>AW%Xp zKqY(rc&j?~R`slqm&FQ|hz$eIofO1r1jIu264-;&{#<5(kiVcjk!%t= zC3u5QqgiY%^rvz6c-w;+YOF^9X(R`Ambv-)*S>JX6VDkCh^qInwM8>ZWke?+wWo&Gm@<=I^q@J{Spqs9N9;tfh88DGfrrZIwsN6H_QZZCwtD|<^W}z=zS?p_N zRaIJXaq$K79+77%(_apXU*4U98|dwg+^+30bsrW0EuJ6S$rbP+G%!xuUf*{k68i?Q zb4N2j;4`EY0fQM-y~ugsnsT7mUVe!jgn+$et)1{JfXXWM2}8O*-X! z=#!G=6A~Xqp_bVUc;Xq50yxk+vqwM+sG0I+tn;y*zY(EN1wMCz&y-lSLU!dEwL@X` z4QQ{z=g(if7pHyo!sdWoscDMWYJwEDZO%*y&SBBCdC&Dmu2*@+5iUFH zUbgZsv)-Mg1_OvhlZ&y9zM}Ul$YCcIow+RTT10 z0&t58cS!Su8^N{*jFBOb$@s(!%(^dQnlCIZR33~3PU{Y90!B(>#K9IGr}A?$PGhGI za*5r`wF4;p5)?)GOpNgXEU=3^uWfcI16R0aZS`aQkznY#G!e|ro0TU-^rNDjfe>hh z67b8hYN)zOa5%04(Tkc%r+|~kzvmi`H9DYt8!`Z{Ia}OIQLI=q>j#a)>drHuTRe2N z>SFBE%?}73M)Gn(6zl!3Uui?laQ#ygG!Wr8Smu(Am1&?8un#9lDU{;@H);Vst1oP< zc;I~+exu(BI9SOgLLBT?qpI|py>tWWS0~A1!fU-tnWM2KT7>`nfzS2oXP(vV5RipA zfrWx=bMIarz!KI1WE;jRTn}O~ASI4xdH`pOv$de#T?kF{_&5eRE)9y{(Y1yVBNOsN zbU?PFcK7Cv^YvL^K9#BPJ61BAm=&@3VQUz%fQC1aYx+v0WMc9 z1oQcG50BVGoK>J9l(T4y2eE*pvuiU~VH3cvJqI&=J#~Emn3r4-7Y9iMm9jW`J(wSE zCI7JLzAEnt==`%l!V7zyhs3@F=nnVy`t=@23M;GG1Mo`)aCb7;`d2vYDiEio9U<|0;alsT%i$7J90=Ud{l52-rt`U^lK+EJ_VM09+&sxMc zjg;CSBte|1i3q1uG$;a3q7sK^F8gG9l)ys}Z5yo=7P0Hzw zO`8Z{&NX(c@+m!GK@za?g!=H)(cB@>H>N|7zLpS|PAdS?TQv!2HvdjQg}~@K8$)C# zPC>VWjC!a|mP2-^E0%6@?ivDEFA;(-BXz4x(ZKdPa=}2 z5ngH-#8#iqG|+&}C0LOhEWr{v@Q%_sa-D;^kx5K}y;Wy~QD{smIY z=8l3>%~DB5w;7lM2qVE7lnP_X1`!NFZbL~uGan?}Y$ukFLvigoB*XyuqnTEFI$t)c zzE*_h+pgPdLED`7UsW|4onbTaY=aFPu4dWMzxHD(f0*J`s5O2eLXG^%otX>C$;r-u zlsA2{YCV5`Di+VMa+s*Dc+yvBN7>syTbQ}(lnlxMD>}>tl-T3$(a}W~XajFJArtVj zN%?mZF!^xL{|0WVPxPj&1*kDAqCX_I#M zdElymZjE2_Vr;KFe?9lA0o3vKzgo|u;4g*%#SA|JRvI1?Y$~^|biK5bX1F?|D8M$^ z2JG_esxMK&5~y7P3>K^f`F`KU7YJ&!I&ae7J|A?~yyq_wU7~2(1|a1^i>L~S(?c92 z461~_Y@KPK`zRj~YmUFnlo>SCl@V;SlBWt;3xz7BdC)Y2!*|6M8yqZNd+mt)+&gGx zP%Q!Q^k&E|f&d<@PYZ$sXfi)^<>O2n$EdaMQg*;CG&RqTcAagct zaMVN-uyFw9ikVtivpC8-^f~VT>;;I#GSdGO$((+$kZ=@+ZZ)1b3OVz3wP%3Pst^SQ z09=Pk6$5@3sG-5nbGxL0MUqpAkSPilQAB*rz%pO;X3t$t&LUv#Ml&3N=6}6o99lM1 z@Nhc!t{61?Ch0*F$t8}vf`B@0Tp<4Rn4Uvq<{Mo;81rrf*fh}4LF)vx-Bz*2$g9e^rYNl8h0Bi|g4{u4z>3x&NB$mfcW%RmPHqU3qFCLbLQ)-#}I*_|Q_ zkOi!nKY+{yXzd-yXV=GxhbU=tC1tH(&FR2mR3{PgOkZo|0wNp12Y1Nj;98uU3j|Km zCDtS#D^+_yAlBq4NL>%L1UvHH{vYBvzFUWu_JYglZksR?a-n4#=b2~&m4@ruYT^F=3w>RWq- zcE6a%_q^McwLuU|a19~*xDiml$9G!ge=I2N0R|zk$)Lr6`!k@Di-4mKtl>Z?85>?7 z`)TT`_4fAabVuSFRfV8tZwndSQt=8aNnZmH9FW%*YZ@K;yW|L*!&jQ?$9gG3F#FnSNva7Q%>L05OCdxHa9ar`TDD|68u<-3ZyYQ*|F~7Yrt9 z4J4QZu&y5hXBSG0bzo~sXew>>K{07XiwkL+^T;|~KJ6}lcMl=egaOq1*UVD;L7B<} zRua3VK)4=&sj%!xS5uxvf-H`vutB}TN`C+HYu8Ksy{&_Kpsw|Rp>c8|bp*6}uziG_ zrVq||bdTo^g?lGJho?fIoVvl>&H)_(!ktm3VgUUC4!@CKVPMSA@pa#hM?e37`Mvpn z@?jtum|vWnFWKO!p`*)a&vZ@7-&YSLgG^Jsbqm-oFLR+M07u=^lG4M9^u_&;e*P!8 z@ly=wwA`jZyZ$`v>i*t)ar$j=pl_PUUz<3tZ~e?1=%jGYopnD?hQUssgMoB{j{nmS zyUjZNYo?1l`qGmWILeFPUk&cn!8DG3E&G~s*^!XWRFhuR)1W`GW$U-I@TW&amuZ8= zs81I{RvnaD3r{d3i!u{dt&35Gz1wK3c}8kV36B-^W=IS5VMxp4KymPuxs6xL(m60Pwil!C(wP#CcSZ5HnMy4YP zN39+hm)$S3vZc$6!qrD*IzROkU}DPLl!nE2mF%+AhzZTl_iSqsURE)5cYOZKP)rP4 zENi^ksD^Q}Zv%Dp?q=uPjBdE-&}=l?CUHu^OhaMNj;Hi{SwZw=Q*4A%fZuZh(a!H7^svySG^%piQ`we{;`j6Qt#@>m*8Z4J z-;B!F>mVEz*vgQismYRSx7L=VsR> z5qushys6?kXW-B-OJf;&>rajvnF?6Ri@j)?%oyG%9$v zXM$bQ!qQ;>k!qBI&tNj`wn(p3x}BnCg5J;Hwn`V$Ph#=k?md{3!`UrQM81YUXkr*` zMY_eFmZQ&8&0SP&om`oH({TE-nN><}wjeawi zN_Hc?^A&tE^)V5wM4A_h(M8a-GmD4!&Axnv_&nJjsL49o^%8Srgf;swA+b zXP5h<3j6yfvYZ;Jb%-m&lwH!=8Bu~S4jB;yE9tI7)ESd^3y3RMiSe-Z>;w`v!o`T0 zu(I|C6_I;INm@^XeUDCyIAYUe*#v9%({PQ2T2Eo()2r2HqKfmZ zb1@O>i#oQv390PZUV~uz6KN~`gj)UO-nM1)P<4u6`^9A%&YP~wZ_6vf?2yS}SaCifZr(vP!+r;dOn7d4zFK_-4MCEh@6iV4dMb_4@zh(TE!d zdc{B7k8hm0kRfhkC{$kLsw@PhwOj*@wHdWPNUtJFDmY zCfC}qKV8f4ZVFzYbdnG)fw_NEu2fz;M+ z=RB%3!G8CLsQ;Sl3-Y_4r!CRv4gKevS(EEuHg~W;vOn6URBnHx>AndNnOJEIqN_>I z_v&k)TIShmGslVf&nvc~$Yi?!vh5brcx3d_vRk1Iv-c9V3HWi(ahB4|tR$wIT+2dk zaOxQKKWf`4OhtKmZ{qjg%;(&=M6zE6oiT(1fZB64Xd?B`L4aIaNE{Wg!f8L}W5 zJ%A8GK45DJXC=%G=!|SR{PjGJ(d5d(VwP=`mZcK)N#$r!0!t_9qAlh@=qH+;9G7+0 z#d`*>I#o#r`;0_`EAK4e+Vgr=jU>;sf`Q(vVw6CW)&uW7v@Cfs%GFm*KJ$2|mONQ6 zq4ry-xh&+4>%Gj8;l zj4`&ueCZ1s%z6^`&+J*;Q``Yo3V2L^xpUi@&@tnZ)^T^SrN`Z2%T29{l|KQO($5Ee z*^I8Y;_p(ruAzOG)Ch&%1B9ZBJPxWbzlCU5jmhd@my#*aldfFcS%r z^F;TY@SFXODEfADnD{*|96NdMSVeoarA7v`IEm~Kr9T#`woDLSjBsZf*Px!}8Es+h zTCz7ikDGt^VAoH5+P%ru8mHB&F0X254Q?8Q*Rgt*myP!}%?v5HN$Y`UUbD8+%J1-xXvx;Y zs#P&u=GfWamRJ=jgWRP(L2ex%TspE7sMWbv7nVm`sbVExoo^sg?^o~odq-+h!?C(P zLQA6vF5ViaS-u|C zb`XDmSy`s!30qF_F{@Mf9*5N(5YH1cNz)Et}S{Ue`d#4yt}*B5WX_t|d>j`95R`~mG`_rhRS$;lm$9<0~dayUq~J9#OT z8wop+rpl6QwgVscihmPTtI-V6*F;>7=@S$YeU%zPdpzQ3oV(FmfJqy9rw&GRyfwNlNA$FutS;!6u7_8gURZ;)ez)G&f^^GE?S)B>M3bjaM0?nY zj}b{1is?jsD!Kyx`;JCbZ8=sDrFt^`VQf?hZA&P>@z<_DJInuIcmaM+JAj`J5Ev|` zCfnc4El0AL^&N;Qc4U6oce%?}CSlhX86PtIXb^ zA~;Vs?j#jWq5Mh8?^2R5J#Cv>PfaapbYn$_4b`KWkv$ipdk;k{=yb^I&nffKx;~Qd zVDns9t@hKMJL^OrfxQRy9el_3UQw~?Z|~$_zd|w}yUa4i5B55(y$zUx>t8Oy$i$Z{ z5)Lg-Z}&XxFTqG|@;!PEIN+8dpUAMmHN@_PuT;VId+a|3q%(mSz8i<}^e08O*haZ5 zM3#u1ke>?V4@ee=-OH7Pv;cHmSMl6=%IKfI`YIVuel6`kpH0``DN9PPwjFfL>xT1- zWTAwYJJqaC#_EXJBF&kv?B)>Hi@a0#u3n|vEaZ50g`eKvJM-h0^Y1GPwX!AXS_y`r zgiq6+WVngg@FqU4dAENbO!=U~O3`#cGJDw>cSM05x(lrvmokVz4!J~ZWSZiNROoN= zlE~R52*GGW6V3ee8q^kFPAVJLxZs8U`gIALof~#igP<$LY&<~P$=N+NnAI1@6a;X{ z8a{-&n(dS&*d}hn8@ci26hG{cXkNafiPh;1Y2mCxwo&l{BQ{U0O11o%az$-_xa7Pg zllw6r0$97EK1@^3@%PU5>GjAxD+sE-5+l97B_wUlR+G#v!N@3MFB7YD@)A~mdm}Lc zsY~bx=REAQ(-W(;Y@=U&w7gvXQJzb&{Is$@7uMAhmOk4DE}f2=q26<$Kg zal0{uvyzV94ay{*(CE~-^dV^zr~9BdzvYkf`DoUF!=Nf~WIHz^`xcTuo-Ql2?>sKR zn-$Tc>+PUk#kio>Je)42_o1JvmDWK>Fd88m*v1k*u*}o-nUZ%Y_l5$DmJvK|sHoIw zqqKs;L|U~-HnwlUs9b*(*Tcf52W=Tud#=w(Dj#dT{qpQ4Hdaes_y|(XX&d+KgiQ}jBa8TCvEgsI$q{~~&cAC+M%oUbM4m3@$i z?T+IOMzuR6avx?ihnBP!W**USKjY9y!d0eV)1A@L?$q`! zwocaq<(`p>WD+~eRP#Z+ZJv)@tEg%)rclytLa$oXuD`?9fuP=+SHd{nN1`1Uw%P~1 z5Ce{XOVz-D!#k9`@ZU~kn6n#bV2W)gj6`#LHiCJ<&LRJKuubelCI;-;I-WV0Z;Weq z>CtbOmocWt>Hve453$5>39xz^K#MINQ`aN$I_xPO;nLGVOD++5v^B8z9<pq9{IjvhFwhm2U-?tr9~#nwM|%mzKDN$BR5+)l6SB1IwQY;C}^8xo?(iX++-gw zp(#bibRQzJZDS*Kt+^M?I$T=2rwEJpl08l!gN;gExxu_&6%j@JvQ-WDSC_sFYx`<6 zQ}f0$#F_d+pSb-~VTU{ZOX`tT4E!d6DeMY$@++1T9rYa;^tT-O!QJoRXUu;_^Hck; zU2klokIXy#C%y^s|FDXGy*E+4D^6m$mP+Bu4BH-9`tp46y|PHlU+=xN*D3f-Vgzak zvaczuKZSmm!@smafL{Q+6d+be!Cx+b?!Vyu@qcdo?}`0?X-xd@um2wk<$nj{|7Jj* zBA@^HLY5yQP6D~|k%TpOxtnai^SVgO?OV0o;Qbls*wfa^ff+@si5Ul z9g6DwhipCGH+Mfl%AW9LGe8iVqbAol059@Q^vYWC_%5@kW1{IyOSg*Fv6cgOK7Lo- zT+0@RNxP75P~0!+XgFRA#iX=nfg%`Lj*xlRzZzER&5SHjXSdnW>mNSaH|KbVd*B^{ zU>wJCH&(sv75qx!S_VGr%6N=DpNxi_Tdp2TShTojBUcR@VEvS>9<75*-^zKOc+$S{ z+`Gk!pRc*~#56JEt;-Smx%5cDIWT$gul$_0=$7qW2$ARvIxc?#^XM{Z_u8cst4p7B zHAk#u60M!sb{G1yh8N~)&9jF5tS4%>Oq_}xDf;tRLr2W1ga4xI zjHUN`$kaZ;1HE`g8$#ye#eN^glonSeg}vG6KQA>PVQXl4LvGQ`mVO+W=F*aFotSwa z1I3^vwx2H9Kh~N0lP>na1z>z4orj=*l~xGgf8ui9Ww2h@u`$c-QVKzrSp* zfymBe_717^_aT3?m9`&MBE zMV4oc2j+yON~g%w?j3u%GBF?7=#USZ-(13c7_R~ESBl)wugp^yn9*23s?9G})Rwjw zhp6O>gBxDwHd<%h8v#+h>}czdrjJL=vX;AC7QEPH{dA5uRy*sYWgOWrxlR2uWBTBW zDW0D?q)&TQ%s4cwFPgN=>l<~ZZ*G|ojArsx(gvXH`|WVPC+4E#Ry87~OsedDE`iUL z?f%0B=-5!}Tn=p|g=`U%`clyUOT?OZ8NJ*@7B9?w?{@J zhaF)ewk3aGp$vLNSpSDj)`JHVDz+eJ^3B-#S{#GbrG##-1Hq0Q0@eaztjo)OIn`>!WL;1O z6`q$wzuWF>UZS@WCSVIfLSv2^mE!5xCwh`eJpX#UgsJ`CFM#c;j?YgBmyuu3KpKK~ z2!uOpifnsZZPcSD4|TAYC&f3Xz>Ql|ZaEKgq~8G;!juzQD1x zTaRh6SZZ^?W!yuh#p~V z8o;B=_WvY`+v)$7C}344>e_6PRecBhGmGBuXb9cCZb-M29tjKA+gTSCSH`{pBrByM z(#;qwhJh6+nSK)M0_;ijKTPY(vAV-$F6-|>{$`0?y4M*e>(MuJTqG+gT}lnYck6I> zx?pz6cnWAkw`a2Q^|!RDm^`I_LgIih#ipkgF?=cC1ycxOQGrpA&;Nvh^+f($K#>4D zLV@#a_$eKftDPBod)6?bwOkEAs8WtVjQq#DQ&20d!3s*7~y4 zhJJCLcZ^}@#$tBL;)7hP{$k94FjA>C&xQ&`WUCK6LIO2Kt9YF6uCd5KMI0Ts_072R z>WfX!z2K!uSl{bKbHCXq>_af!ocK<@|JrH)uP+7t|K`l)kOEi;4!l7Cq&9f7E5{Xp za!=mmAgVrc)Qn=ck$El~K659>RnAJr4wV@1o^~4A6bX_Eyym2_aWUikeCA^STR(pn zAX`P+EjRPtJ2!#k=9si3*Kw(q!r3vO%UGNaU#Wbp0&Ays%xSAL9w~)WaS`rRnC116 z!PElRUVhj;Mb`E-a5cbUZ?gRZOtVt0?+}&Xw0K7v$qk&4&~*7&9qY6KT)eGp!e?l+ z;$tG#x#_g@x5TJS?*6{~gsU$GqMx5N4t42p>%D|ea9u6(ozO(}Eo`rBAG~f@yG?b> zl4GLUjp22t!pUwQ7RNUC!HzjPT6$bqD;t}`@9h7fq0GHyTju6)VkE>`yS=t1sX9d7 z{mqQ!$t$`e^gpCpw0ziy`n#H8A971pvE_(e+NJu{E7pE7f4w#Tbsyp-cN%;vTT8m~ zfQBPM3-jp;v#$~B_((%V-=xzbj9FiXTiwB4iwAFcnh~a4f_f#dE;l{==(#@iWfMfc zvR$e%qDL@Z!DHn^t9XY`t0+#l#N?eEh$WiVi=D8Z02?|yhg{&K_|8KLh>(rc`2N2h z?<9foYF`RpI6Bx7)g?ALq{#=G5E3!t4+gywIBM3Vc3a^k|||Y-@k&#SrPj zH|`H3x{jy;7L}EnAP>a)=>gmcTUltJ6(h|FeR1sU zpzt6*6kqqSSC~$0Q@<8^D?gOqHkKp&oNaU1r{h?=S<>ErbyNT@ewD(kX!8vGtO$|o z_x`A#zoXE#u-mUWe5N%P_@tuqam_J6B0sPDd^m6abs68yG(ORL=HNBn`b;W#V;0|D z{nxh+-BCbafa_s))>(etvG+{ZoN!6HEuF7#P8jy21#IrZw@ZPS|IWBgxb#5v4BOQc z%J*8UAL{|Fh(ia|;hV!7gSj{q*nK)$`K}s9gKxZC?IT!J0bJh&W=mu6f!?a*%11+h z9wY`B<@?A*v;cIly_?3GaY%EC89lVDOj=x65C$G!Wyuv3cqt^Sa;&6v??T~rQrWhm z`^p&NOtDji)wZQh5A~T+>#L%?ZQpkf*DG#3NJ!s|jxpC5Z&Aah>$`o(MESkBmiLLN z^%@&ng!xdyaA|3aC>iB@cjK>7!`4o@jM!!!RzP4o2P-b-+mojRq}A{jVsq7Kdo>km zuGAQ_IKVoB3kySD$y5s!RyzKS>w8F%WnBIr+^d(3^5a94?~HWZ`d(GN`O5nYMfTEl z{*tRlkD7hEbCbrY9F~(%)nr}f_lNAUo8uc1ocX2ut*a|2n&ZEOE;O|CMrTQCp_9B* z`d=RtB>0k^SnKKIO|xo87)-ow%-Z_bn#cRo4oSisPfL_GH{GCJzjJUhE&Q z@`zlKb@P3PYP1=da$S1jvX&x!pjy^H<<;mLj^Mm)MQvSQnSCMqL&8GL1#!aD$_Xv0 z9Sm5!r{KyKQ8lL;-q2)TGMLmy;^=zYx5dAeO*Z_ya5CE>Y05bx6l=7=NR$^hZRglZ2EUjvpt;`s*}~WFc+<4A zE!+Pfmpa|@U`h70!R!4fof#(c^UJ;WnW=GlO&)sR56zr>AVACv#c@ERaQI$I`CQNK zyt9x)$l{1;B8dZbxae=+_M-2uQ?uJnl2WsQO3N1NalivpagygsQz8+gH_V7QPb0lhKAO%)g0YUlt|z?l!O0ld(?Eg0 z7u-|--p#T9?serq3JG|5`@&jGTK&Dyi&5-v_N(n9S_POcJIw}>l;+zVkLSRI4GNXy zAe%>VzJAXOz;7qmgDqsJfm-ja?=?$JA!&%gj8G27JC4v4S(I_X>q5SlS2V5*WO|6+MqHUe`IRuszX8`SJX+Hq3t(CD~)p9p#x4nOYSpAiu zvk6|;ZW|$XBrk$Y^>i%wOJ7KGOQ^X^CR48}VY+1D#6 zrJY@5*{n{-D&?+;+N?M7dHQ~h-g%`fu22ReZI72xx&*`WXjw0Rd)jBG8Ju&CczYK6 zzRF{@V+17vd*xE~eEz#^4A`L-({j8S+~snK$4+e6PHfgCPK8%|;|foaTnFkJuPG(6 z!AoqhWUY%c81tj%jHD^$g3EtzTG;=~qdyVN@7}|m-Y*=G$WA`p$G%U$X{1o7v$Q-E zi}g9;IFdo0<`2U>n>4sTZArQu6mm?&jg>w9O7}INd{!#c-3^`lLk%%r;c7F01~1ri zzt(xaKGj$;da`*8j5qvkzw4#5ccahTr0%LOt*DT*C*U!dfl$N5|PBqXXf_2p3*gCYH3I zM-}mU8|m1yik{(8nsXF`o0ba<=VHwx8tuEf_@>v(OAus3+2ew4zH`Mx6iRqO3g5z# z>}`fNOGAl&$H5<;>o-`%ZwryB*NWDa{d@RA3jgb<{zs-CeB$AOTRiSftQuF%cO1p7 zXIqlbv1O*SCI+=FdbG5#aK|V2lGion?eNzT8R%LKPQ2#5PEvXd4OP}oSsy|rUvoZh z%cu?6yJu+>u_=O1_NBRBHf>yb0cf+P?>d(Z9C2!jXn#c3$jB(cJ-LDAO)ypgv`ei&g`*|z!Z+7(M&k=m4PX&utYJ$PMu^$5)k0tyjb_%(AZc63WHjuV`4yr&4J)&=v0mcMZ(FgNkd#q z(dM~M_@$0$xpNmb(cHNlt9ZT83=S{y4d;Tk{cHU8NZt|;_&k6+UzX#yr?$4XBW_0* z7Z)>_k>Ap1?rq2$#3lYV20|ZPSJ1^U~ec{2&TH-IEcTr%pPA@HR?#OR1G^DO)kvK zYa4e5i7eFte(G#daNroWASI!c;9KqU^^TwW7?%WK`Em6GQ7j-v(++q@lZ)PKG&eIy-rW-==a4brDu-@xE5okAva zzm|MXSZ!+Gb=|JDwe>#pP%!D>9}RG^``XpB97 z&#CXOYhPrik=DzDGG>XTVTF8&r4+$V0N5$(o?{?S&vb*=^D8w|W5BN-y$6-)I7j57 zWp0mE6%{%EkhqQx>bwBZTww#`(7Vdg($XH5_PFq7e9bBF3kX@MOB-2W%(?A_;QE<+ zfBEh@O@c^+t#p=`jI3;x<_mq>dShD!WgB}Q|dsut9(EVS_QYG}r(ee<(9UYJ(1Gd&qeF3lXT({`k_Mxl@ zj2lF6r(SDxOdJ{PYD^)#?_#8>gPBI3#&b!9LgC6FKAz$h z-zF#H+tJ&wuJG=jo(Dt(y0o^|3^-1F)yRRY7YrY=Po3T$=!1@&1A69R4Bm1zf4TjQ zmz|8Q@Tn-h*MD;Kf1co>8|&%Wo<6?bMMk%x+x>I5ckuheu>^UE#02)x|6=bu1DeXV zwj<8SSg|mo(qvQ+5fD(S5C%p^hNdD#X-ZI}1cXpTNP?q+B2AGdC7>wMMIcB^P$7tv zAks{LC@r*r5J*V>cEB0+UhjSHci->lmw#e%&OZC>z4ltqde*c4j200qxqszxAzkl9 zKn7-V*!etpU!%2~v-R~stp#!mlFwD2C*qBJIz#@j73@5zAUMJiz0G5?Nq9$so`I7+{?}F>w!xPy+Feh)Tn#nxoqb) z5}L#z+8`o*L5W%iA8^hSHO6yh0%coC(9=5l!tcDO;knN=-Kl_kI4hoNDs8*`AsATx z^m5BIZM6!h=7nQwqre@wKm*RNbg*+tu+1&27G-}2b7|8x=IN9{-y4Gwr&2HuRN1^I zbg!Cc&ra^3HpMeCD3QV8bE~CI6S!7H%Y;4`=2~+T9zXTW1e2+Wu{0tRrX^Mlk)cv$ z&W;8bWuZ0(kM|x#2~G#2FXH8pH=Rd%VNCmby6CVUySv<|N6xMu3t#W6GnN&aU{Ee@ zy4CiUvzv2nlJ+!tb8BLlyh4fTC+pMqi}Oc*uxgYV^m~y@^qCluwThJ;)H!cgb>_mp zg^qW*L!GA$uIxpSMRkyT=?9t=<5Ut>%$Lmw?dZfFKbYJ@-PinUV@z!H`-(+HEX{rc zWTiM~duc8)13p2gU;FOr$FJynT1-J77P`V7-3Gz5h0~m-g<2cLJ_IOD?%)GJw>+)s zX(*5XqNWgsh6%q?EBuOBjMSFQi-%>jHoL*$g?F?M=I7GwhaHS{v#4&Uv#7aG?8#!H zthl>RF^7oH4HoF9u~sA!m|`T!R8d-a#RifdriFr4GA7D~-N=UYJ$3P|u!E>zImaP5 z6z__=0F)j7!D0Pc^4xwuM1oxMhay1`y>Qtoae5RUHhy=Y@at$1A-?r%gSa_hLm zA3*^PUG&JA>mpB?lvgRTAAWCm>$0M}cf-%ejd}1LSNM?qyT4j#T4DC;=@!)%SF?Ou zA*-(sfb-!*b4uKw)b)^wPX>MmM`@QvMHlZ3n!el!4d0-ThHMQNx%3J(yP*092kOWx z8!^jZj=g=@!B0p?NYu!Rw6sliMy@lP-3>fD}JZCtn%TJz|Y9{}PmztWY?6#DJ z|Kw~?Wjla(T(qCmyFuyeC;gFXSpe>D*!?dYWcJNAFM*@GfGUBzs1xrG>R?Sd75i;P zAlCwbzuUnNVTv>-tw;z)88}R^)CBV>;1xg0kfn=Bhg5TA)~RHLQW?KiKfms$W^s{h zXYDtM;I9Wohi2}AR}rmT?~=tqrjEh5I688k&*PK^&X(HG($9=(q+<^1@A&b6wbuV@47x4tr@#QE|w&q9y;HvvO}ImBqT0OKs%7a~nX5C0#+aK>eq@So+V) z#Gi}G{t&4PjeOV6v)@x;K&8Zi=%<7Kc#YTKZ3=ZUTSF$+lye)?ABpKP!i*dFYNvhK zhG6> zIQS&LuN+y}W_t4R-(3sX`OQ*&q`w4;kNb3CKC>OMx7_;Xys(9hH5 zK7s>yLDx$yT3-E>F^CoNrz(6{D_!f|suntI+l)BDTXKgi zN%M%eHA7NTgK?ScAX4T-)yfv5Q%1q)T`(c}hu?JvC&nNzcxwpSvF6dm58B)!_i<=+ zx5TVaeyd3;QNg^SxU@K{1|QKGY#ECz3VZOP#-QgpJ~7WhU>xi0hDWwROFDb-ODlmU z$#$!HVBm~N3|qCd(7*9pxvMS#bN~(9nYSS5?*^M`c7bCnx~Vi52`u2l*~Jny*ieNI zuC2uIXAswv!>wX{Jjjn-9>12e!4Q24aE?AmZT!4dBy~U&^N16No|rYC-5z0wylgN| z#`z)fjI=r`mk;s1V9+XEeRajWFvr?b!>r10hCU6&0?!jsVnX~rPXl?y29I+834Is05b-o#xnIyzdQpKf8=2+l(PTjyK8 zEUvGnamjjx6*$yfE-6p`8%e!Ks0^BMGJfBxHP1B;-r#7}<55Ik30c(MiYc}XGgDj&YflFQ=`K@_G2VC;yb8$yBc81?M;6*NU6rY{M&S}8 zo6m+5t`i!k^CORQ_pusB-;Hk0EYZo<9@xhYMR7urBCc=#^<+VIJjG%Gt~E8~pWO6z zotnU<%{r=a=(iLpm3wZfta&-nn2Vu;%-WLRcBhd1P_q*kxorv~yewY$sawR4CyD5Z zMe8DBJBkwrZO;WUbQ?*_yAL3@+~t`3;8_?9)-ChLit>v$SrUk%2l+#5M&4gAK)$}Z zYv0!V$R7(`^yWE_vu3lBzkf-fvqdDWscU`q1-)2ahGDg4k)R`u4iMe)>MTEq-RmQjojp@<;?h5~i#(T&$10EHZ)G-9&5@H7Wt6{U;>CEL5h z;t!K8rxy3IA_i?!wCvairrBOz&PmmHE&Bjg$FH1j+O@z09Yt@+{8qZX0G>tZq9yD^BH3 zv92*BN0-@&X`lr_Wc=yX#g}#oB09N9O#*!f(!ubP?IWpv0-%dLXV#T9J!Uhu`s858ksSo3k?4T{58 z9Lk0-vldFroIkQx!zCw()>Bd_PQ*1ve)EWLUJLr?fHog1_F?FHmQZuFgAWD#*TIU7 z7=Hk1xY2-je3}EinoR73{i$YEJGwo zN=hPz#2c9}Hqv8TEB{Et<@)V!P|KRs(3IaFJtJGDr71=N$dkTB!eRiSOfe9Z7e!$W zkIm)}Z%?&MU$h>)9-|+KSDX_);|nB@PIK4`lcfxxj!KQ8Ui@qV#n)aBAVjS3YTyrI zOMI);>$xyQ(dHbVJSkIOvjo_!blI(^N_N`re|lq0iS^(q5HXsix=?c#InT0Y8kBQ-zKDG|xYUfbJjF8|q2vvRf%AIa2s6%`jJFt1WE@D4;j&$HsO{O(=(%;Q5fLh>819*?L5Z*!$H3q25 zd&6t_97PyD=wX}Te}mphN#c=TuwB0-N@fgG*T zMI5sGCz}IlFY*ywYDWcBR{x6&RfUdZ*4Fkr${3$5nj7U}iD|ZOMXSDl9{$H0sHQVu z35J0D5PG?^MlhGaAVd&O-J(3+7aV>HID)8j9bk79T^Jv^qpo|YT8xF=f%e5v=qEPf zxj`Cb#mVJt##p{>Qnf5VT9tC?UI>|!Q=WUNzMIyKaJz54@APawUIczaYaBlQ&yT%7 zPZbKih|x#4qlU~_$q(8WMa5E^3L^(mw~cfp8b&d{TsV;cQzR5WXk~r8)HXw};UAW5 zoFvjYb8N)!&(`Di#KRC#8ttWQAEna2eSox&q8S*vrh&Kh=UAoPngVgP+j&yWfvzha zfA1P!jp@s@{RO_zYmgusb zjl+W5j`I2E(}Ab1xdkdt{hhO3{OtXI`0hWs7l5WL1+^Iv&}83moE5eAE{1kyeoot; zKf3ml!u%2KquU-Fd9Ee#ahu-Y7a%LEY{SyRz3u9UuR$Z}nYE1WUqh(zWh}_;SCf`X zO9w6la`ujy$d3swD=s{2w+UNue{dn^=YKmd zs@5!&CfD%&|M;8>^P8XW>s#cxwbsk|WKF&ZFuK!&vG}K49;DsY8HH*$2;pb)2q_O^ z(Vq^eM6~0KIPiTJ64GE)h28hi6Ra6~Zd@oSju^7&G~0ux)&iySCl(S}+p0QqT*Yp8UnZSblj7VRmzA^=+gAPZt4zwz=#ZW?^>I&N~k+ukx^~LIJBjHDN1| zwJDI2KD?pF=Uu*%{&FpW)3DT1NOkk`Dfrm1YCH+*N%khYUH^NOcZF?RYau_dmnW>3e%o{Lre47>>l;yKho0 zUpYXi=`u?j*?MgU?d8eEBnDC!9SboZDF&Q9Y|;}Z%<|o zIbe;Ye)U*@X(Jr#wq%e&E3$&byau!Sc-gcbH~_jiOz8gj;ihn1{x^H}i`Doa-pO~_ z0pB$P|F152E2+vNbB52DfF6w&FeL@|4o2wC!eSpid4rm)kL|bhfM+musagRU$lJ21 z#uh!h0oaO0hb#cC9z5l8hoAiJlC5JD_d~Z?M!`03D_|dwgB=N&3$me~eqEb#ywTpL zw(D4$r2#AZjy8}AOciCSA~pZhXEr%Yvsqfg+nq|T5g(>DeqkvH`6V9YkYui}n z>28$4#?iQUhgL%jW!PL+5*s9N>3V*s(x=j66pz1e?*4Y8GbZO}{!v|jybo}cremTa{van@|?xpuw5oAr72o3;*S$Bp`HC0}&Dd9*z=&j7t zfP#!@XOA0ZD1wl46aP~W6s(y&{L0B6_N^HSu6&7=T{Tz}GVgzk`u5@Pk9bN-qG(EQ zzy4zCQC}_~FTC4BxWfZNcp#?luR0WDcEXnnbnDz`K+XT)J!x}4!Du7T6r%_s&hn<6 zcEMa~{U+Q_@Jf7L5HbBT8@p2SAGeu$rFHh?EJE$BPXa7DY_kG*eGiUjP&CCO2JArN zC>n*VB;Xvqc$ilr3_6nmASB-*C&% z?7WAVO76^S2|nh<*GZ=sjJ;X_`RC*Ft&6EeR++2asx3ZjZ0N(SD{E>aoncY#5r$^_ z_(E`1TThSQ{R8}xK*aF`Wcm(b2w^R#oO(s#Gv{uTWtS||?Skpg@i z!68zhc8siT)E76LrGrBO4a}ucs~j$Sea;ezk}yx0lmh!bOxJWOJh5th1NX_xD?>4+_Kz0eZjdWRZo`U8I!{gkJmp77CR032FVLlwTVaZcZbrY> z?{to`+8@;rQ~azru6NcPP8PKut$eenOZD7T??eT-xMezR?}a~kD$a|km9PhE>q>$j zYcq5a34>hhcyrN~MITa)Gdpk!0+G7)%{y8<45(YB3`-jeA_-7epZRk!jEvpH)uXE& zF>r$FfF6MOH%W`l&;0If?=>SzvL-YV#J*4j(AVO6S-BdR5}oUW>x`~W9Y+|5TJ%IcSlPvp2Sen#EZKI7j*6|2Am3B{{tlKh5e-N)gQGK%X*aNZ9k^Tm|q-_ zzsfIi5h;|6ZG6N7P*^Dg7`j8A=(#3^CWJ_yub?BrNg@nL{!?R`$|0d_wy4R_OfC9h z8Qu<}G@1$NE9j(ZDKvNg?y7ke#f9sP;&D!MO1m&x zILeWCT`cLUee~{ATmuKeZSIbrAaVJiS3>EeIGgGRXlOUl8|EY0W+HMoZ%^(Gp4=y2 zTk-5J!$;mw7x-&8z(e5y_ynj$EzIhWTGEVC4yxNvK6rA1yTNfHc#^z;e_ebPa6;pJ zsx88fru{UphmSB-^J!}^A_2m<{I-2e)wn;uEb+IKJ`n2gBAZlD3w=NCia!D$efm?C zF5cWEUC=%R?2aLplZ*7Cm$b8qk?S?&ao3%}h8nwgo4^3OX=GsXbza zz5V^^<+e697ijSc&4N`Yr7WS+dVvLZ)P$_iU!*sGK8*e$i~R?OJl~BG5DR!OpVT<< zspA4=npiX@>L{=jWuffbFe8@=6sNYyyeEeF*FGD6q9Ud#JzE zTl!7|v^1NDLB}f@{DF43Xv@m~&6hk_JbxXlEMV0yc~Zb5p5}nQ0Q;rs zplKNXG$&p{5EPu*%UX>*n2U&N0AM&^dF>IPpB%t(B~m&#+U>IU>FsJ;>68ugS_`(7 z?K+XQ_{gnONlD?0?8C}@-UJa14A13{XWus7!NcYUg!=xct1nMSMp7%DXycwo9pF*< zt=Bk7fU~%`>XTH~gA-H9IFodQ1-+Yk*osL11#rC~XExivj*5PF=lEN#Kri6`@ z=vKT~qvYmPV@&Z!gBFFtpMI7Z!|$WEv078LEr;8I;%jw44lm?rzwY@qsKM=4mgttos0c0AAr54!wV8ZU{#FsSxC+HqG!qw$kR{DpiDuU}QpvO4(1nxEaOk3zS~q^f=&;6;I5Iu+2hf`J1OZLm=Uw?FtuE zOHoW>hAhOn2O9!1p35B$I<|qhMH^Dq_Tw>^o{*@GF!NT+BWXbf#`V8GO$>t+-q^Te zlc0V>yGCeH;;=^2#!Q6f&KASRKW*@m+pACYKIC@E`Qhb)-)sY{ZO&gn8`vB<3Yx+s zI3`%7>!gFyK=GG9{KbluTV4yl1)*lp#mWK~>OkMz+Mt2lX!=>EU|O-7CUS1bU`7OJKjIU8VQ;hTBmdMehA+>3o-snC&04mKK;GEj{k&*Ouqo$ zwP!QvfZW%N%hENE`B|?*e!-X%sKdmy1-)i~>xPLR*5g{iSz_Im>(fk}aDq{EuCk!{ ztzc@8#g;5sdGz}c2a-%aoCAz$`sxodhp)^(!E!-^4kuMk_{2dSo2kD0onkcdNFPU+ zB1aZ(<&&S@zbAS&YYD1!F3AV8W@pe2_WUL$KSb5{{!h~R@D>$n2g43HgOIRkGYIp; zqol3QCe=;2k|AcfPZV2mcq0tFA;`AYrry=VpcOEi6)}Sw^uP6fPsBFXN=Un^23UDZ zpBtanevomf4uoTofOYtu5h07xCi6#B(UqTYNNJ^T`QX4@aMsk#Eq+XRS4x9Apbxvq z-)_gsEA($^w;&s9c{vYJ?$IyQSP0w~zV_2Wuz5XfLk!S1J@ zh@%&HdKVZ>rfA!6gN4OJs)u??S>8KMR1&P=b&e^wZ<1NA3if=OAB!*fYSiRIp8}^m zz-S~332W9D$h!=0kKBIOD7B1NU>raqOx?ANLRP;XxnF!{l)oKfXZGeR%xmxUr56pJ zFU;t&=p|xzPmdcpA|j%c79obg%Z~I_vYEvPZwaBJxZ9L8R%@T`jQ$lLERTW`P%e-K zLsNn$$}^^iQ1)GPkGtq&QS?aV#wyqVN!A$)?pl+stwRxJ7{$^*;eX$hLWII6!3O0kE< za|(~QO!yjuL1OPAnjNRG3-4Dz?lms$zK#8EZcq%|haZ5z@`fma%UGUpeS&AOu+K{F z8VVoIKzk`t6RUgSlcg&mdt;aP9xk3enB>HE%AY%)CjX~e>T7+$>yvHDK_%pFH&MuO znHk7uAa3t+b`ju*oNBL>cljcsDA}m;^)RY%eFpLP zq*w15@AIh_$j}bbMOsPtp~pTpTIyb}uWo%K+(^4~x_0OOY+ zWS*J3>@7zUs!)D-83@GBRpj}NhYug_cZmro=p1Y;0+V4Fgf`$Jx*Ol933_$J-pi}q zBN@OPp_R_y|8%}&4CJ^X$v&VA=7}=KBByXdR!V9<(drMtYZk5wa6~lyaDeg*k9W2Q z-6s3<_^#^X$~pJS;IhmAz3uMbzV@1PBHNb#n7J`AOr;Mb{$Fx5Pj^2*Lj??|!kE;T z&zee>>>Bu1I2iCH5P7Vf(Mz|GD0(;i+$oIBfY~vc~ie{X7Su|zD4k;}WHuw2fuj};Q@tg*yEaht(#TurRP-NJR81i|F zJc%&lSAdIIYZ(09J^PuFR(JQxWE;LS5nWQN6GT}Xgi$^15RG_pL1pYOE&!UE)4yeM zufG$VUVt@T2n9xQUpa5Zwxs0;4BNB7W_ZI{@5W!e^gWpzwl3Y4d^oktn2cRB@@~%s z51Lrr^REVgUtWo?TS{L6D=Axmv47rX=Q1qdX<1f8S``YC9yTI|RvN09Ef*uXj+Sab z@56mE()K&J?N^%<%sz}LAIZ}0Vq>lhyr$jnkyfv>XgFlLk24E$py(b(_NyoSVgWyW))LwF z9-na<0~aj5{piK%rwBseJR*_rIG+Z29shZiYtB;0Lzn`9CI z!)~_${e_vo9#6OQkqH|EJv2A_3>eNGoP1h~tUN8GihS5Vq zL&Bd~=7_>_HXa$PaiXC3-XG)?!uoeX+`lmp%lrBlHa|7Tjf~d0;$ZJ&T?h{4srf}&=cWR*1rq6HEV3btV zyFc@Zfr~)o!C3*Y?DSC;C(u`2&dqx9wH_02E^;aYq;1-iSb1+Fov4rR>= z9S1|r<^3Av1+pVk;zD=m@03yI#?KE1fqZSgzxzkk*mOgSfhxM{+L;hwch)unXVsP` zUo|W=dJSHZPy+Q(HkQ`ibErFz(u?tl4<$st-@}jVaXVy@LuXjyZ>g|?bZnf#0U0|RygnCRy$}#x-mk@=l6PZDTmo-FhZjyqzZ)UN z^xHVb{9KJTWzm0xgeNsKox^+1x5Kw@TigXyd4IY;AL2O8>z!S(%D>}Ws9(p~mIHxY zc_W?qpP}L3+744g0Gn%B_9Q~}LbZb^z&z$h(}79s-{QHK$;}V8p|9@BUDM_Bi$5-l zVP>8b==q>{QjS5D%eO1%pXwYg}azAQImQ>#U6}8*&kc?diZ>ig)mBi@T@L{XdXP%WCA5)>lH7`&! zQB#xe76j2HMVRxRAQS+;OtsOL2grt7(ohDjCiyR=m%Z09+cz~l^t5#&yA?UvKew2Y zx(@;l^u(@o7i%(AtVa<1bcldM`MvE~*dDpXgQ|iFS;I3{Aynao7Y*}utlk>ra4?V? zC+xX)Z%9RQOWkk2^S38UY3;-2@wz35i-UdT&Wt-2C3!TB;UBE0CKV)*j+iX%tib8H z%A9uSuuB1FN%(SGkFe`i!BB()P#i$*(f!Iud_Mhz5$NW21a~rJ;XNZ(R=N#K;qmZ9 zEEJd|1XH>>4lGX!jEhwPatCKOp#TtnTZQ;!8fxQ zT{cq0vb5h1Y>M zXIUF^i#b}SC<~`$FuTA#D0AH`_8bMJhNe`gb~aWD&OT4Blzhfpv7@*5qSgh2bc+zE zO?O|P1Qx)FWd_idqr)qB=+|H3uNwUcr$s}W;hAYhzkK;h4s#i5zs%tn!VZN`c zr=t~)nIw%8weDs>Kx!p5#bJ^eb^O*n7pZy|Aif}~!F6<9Q!u4wk0Y0_l#E_}S6`{z5O+30%VtpQ$_rwj$M7BAJv z(;=I;(WmadQa8OK@_e_d`JDGeA3fq;rEnvKz1@~HW+5q(5;DHWCrUZm5}c#LPv%Dc zA@>+rCsqz=4(cGFUe!2lHqBx_B5i06oECn;kjR+nPV(`FQU(^A=(KB=gQF|kI{?07 zXO9BBJkSkc(tba9J2COB`C~< zvxJ7}+!nbte}ksqB4Oqw1HcZ&rZ2@RQB+&4iDp$t8O_+Va`-F3)qXGQosW( z>HA4@pnI)D=FHUq}|9b{-iPtu|KQQ5X zq!00~RW`P&39!D4N1bW1_EU#p&Vr)ahI)P_8P*gIQf|2(w-S?LI_x2?@~yof}7w?^^;?!mcjzQ&ndmD)t^T@vzHm zH%MmTw=T|?@aTU)jlK&d{a1gy96YrY3sjwPbOg)DLfA_D$t<2b*ZgF*r@Q+BAr=mU z?egGWyLRmfNWx{lS&ClbYK1*8(~T4apTquR|2?K*gOFM_nijIqQS99O*qrGKj%2U zGn+Wxk#l3+`=0eFcs@QP4GTuPQ>WM_<7%vaqsTfr=4^gn3M5$6ft!7e#eQEncwZwPdor^&+7>zFD&wy#Ow^_9e{90Y_qmHEBc?j!bIYmVID`j}@owjK#TJ?v zlGmeTd}(aWw?9u$u*%mtSdCbR)Uy)Cx7QXuv3j-jgyy zN?#unUN5X~#J~UpoR_$gQa56EqO7#^`m`n&(x~h{Vy(1McXzi(b8KuZb();r_Ux^E z^Ejx42NCtu!=1kggxhmig*nUW3trN?1pfrMhsfoOiZ)^~Lhypi?$ULP>DnEERpY#o zJ=OvCE(p- zXUVWbcjgw|;@OI2Vvzazztd4)Bh99U%#Us}75Vf@GM!l)fIziO+})M6Xzt&H*$u8+ zo`;#+T-=2iS0Z9*Th8DDw$}*wT>eL(q_Wa=&e7a2zq=Ay?MSiKFBUUcJUi{1+F3l> zzT4s$7~YmE#Mx)HD-SXG_+oB8kI`QpBoTveIXMl6m}n7@cHp4QwjHKk>ZolYq3R%% zqYf~hTPsFUMD|~8f8MGdOAIvGSBiiy4r_iX#n?Q#)`VjCUj6ifgjSvZlS zx#GCBeiClZi);Y)NYc>glcwrZ!tA`EJf&-Qg-1FzJ}HY1Fh3KX#|HS&^{AhrhkycE z`AB19<4QO6qCSoQHz&40h7YNh-UB-)?9rAT3I#DehfR8)K!)MMtefqq=BGUzec zP;BP)!7RKdTXwBU7FtqWfNjhpSiVZr5;J8ifzy*&x=|%KmZ> z9VNx?U}%^t^Wz3UuTJ2nfUfrccEm$aKCE*QR1)6W0cGTG^drjN+ZZ?E!OvGv$Lg_D<})$rD|UaJ=*oxX!~yB2GxoUh@g7D%2*nDiELbjJ->q~L8R`Jt5#t_BBvZQ?bXqi~vj@7k+uHy>k^wao0UB;6?Y&hp zo#n%t&Wj1Q zQ8=DY&SERR)<=i^0P=E$*ggkC{8vDx5UPFV@8_o;xCWS%{rlz;NeMuUtcKc&6h6&u|JPy(5HFws<5&w zQ>)RE+7k>{M#`qHR$9k_(>BTN*g)dt{jT>iCl^lk4aCOiPVoU@+4R`u#)C0Uq8 zfNE8DrxpVA z>tiUtJ()oQm6@|T+52zs3r#`sqjMKy#?*@q4xh-5z;*NrXW$cZjF4$K0yK3v(T}g+ zgbcOj`VOshS6`7KTwn^WqE-XKP+K zWHDyfrHvd({4*BHzl?QEhdjSL%c{j!yE64CPn=d-BOS#`hO{37GGM$sGwO`=oE07WL2nWV`LiRH2lI;F~K2=Faa{^$UHeF|CyzWISb z6q0#I9(F5Bt*&<{9u|$p>U(>zRvL=RhjA_meid+Vj(8P8rcPYV(n>EaeP@~`SN?ef zS(JKft7%5L~Db3fa87OsqYvMABaZ=tCmBz?T8b=K_9S&japIk)h z96r2%^m%2yR5Peoy^>4OwD54DLR~rc{8f-mk7nS%1PbCq1kN6u`b_Y2JD(K$*7Oct zg+*(Pb{OpXycmq__e6JPdp&#h3~Z0hfZk9(0)(}|eg*4yc9Ab>Ne11jyBOsnaG}_f zM<^@SQ#~aLaJF3EK_l2zZwMvJk_%V(+qi#JFFL10-z!XT88WpF64vrB441HcBus}dwAxeRy0_8= zpdq&OA=DICz@HHqcz{IZw!2H?4%5N0C-Rq}ff9w|XbzcjG#dCQd%ozJ%6)}zE#F?~ zvV8ZCPBMBc&T22ankXK-E+y17}5sP{DCk->w}$vu33Gw|FkB(JlC3 zW#Y-|3xq1Z)ilBgY-W%<>F<}`89(o?6xJYot?_vC`qI+UEuX`I*mU$8VqK^)&=u!R zsLOA^OVY6ZmLDLTdA`*Gbc+=y_GRZqB`_|?F_87y+xIF$tkFVl?>#b`&F(|~?KwVO z+#f67bJC-y#jXea25GS+NyQOt)A_f*@49f;04_}G8`_%_6vo?rI3PX^)L?)cDE@{v zHufY*yJV>JFv-bO(Ln>|C{RobkpRvDIAqp;{uR7Y;dIpBipt_IRl~9jftL;-rPuzt zt-2^LDiKqxjQ;ciWb#PUseb}BqW26CrHJZzj~T3SwC$P$1>7WUQBhI-^IDX+9<&M) z5C|ZUI&~1r{YU~?CcPU+fv!(!j4T-_HG4LLh(jXgT_8o=;rXR=SpDI0Y0wm{DlZX} zmexr~F_Ztt%Y3zYzgi5N+u__PUIUZ2KnqmMUr3b#S#OmE6T*_;AF#a_sAO(Pun;$I zyW>+MKt=HPt;k}^Zm~?_D4kMZ8sq@j6R5jV1w6PU-UMX56aMU_ZHbhPd}qsR$H4(V zGw!NfBhw`cO^A^V2`z6bxqkq+rY_73QZdW8!3y|O1pVQfnvd3#cUDVxZELfDvjDw9 zJN|OwM=8!pq>pzDaL)-A=f?dj@qO1+yGKx7>h3*&ZgQ(mij(+nZ}zt2{wK2yb(g+5 zbu*}4UF^AHTpE7HGr{?(^^g>_Fm_9xtgcP`qBsqNhUFuGVzSb0vt<-wUBkNV`TCf{ z!5w-02@fQ?OS8?+DR?A-GzTCPz!5@pd5!}YZr6op$>+z62^}M-P@&&8bQpO?z|=q5 zk|$3+8I8FQ25C&5RA35^ojVOO0<&|Why44*=S1z);f+*;RFL@#*YoE`T&H$};uOzj zrjT2cee^^6O{MB;-i+i!)Rfe=t|k*6O)tglN-pNlZ8{My;n{r#)>%Q%r!V*k9y2O3 zo62nqx9k(6rT*C)Jle5A&T%@ogdwej>EmGJpvBv0DIuI!&rE13IlHs?ap$f(DRv|Q zHFW^o>Iob&t|p!C;33w)qU6*F3S@%MNdO#!V@5oirX70h4e^8`^ouy-*O55ro};$p zaG6fLNl;qbg9q>yWxQ(BA3{|B?J^wCtG?nLO7d60}v z{C$dZ`{NDv)op5sar-^40}E&tPgybi3+#aC?dI=>AB~s?voBv4@0+Z0p7Y z75k741j`H`*-&*f1)Dbuo4iZ4qpggqR3S!GMiFybez;_o1?6r$U5@awhu+w5@E+Q^ z^3W}-R=ILUE{Q|}c%ioTHtqNZp<)G=J2v)j269P$W@gb|$yXr^2DS8d%17hRIB%Gd z0yftqKjxf`f;RB-eA`rpF!sKjM?T~KFpw{y)u***!;I3>>K!*LV*w^9etr63ldJkA zdFh-;;M^_i0=Rbo%;UiC3wLxFFuyggAaKOCXGloqN@3i(u&`jWASO1MROTV65FT-r zsr)F;-UB2GPuQczJ01blvgIp((IlwS0W)1ZS4I;xV2?da9^d^tV6D~tsp1%lWh`B?cD#2)@A>a7FyjifmKw?$Ikcd6_b?lxeVft^8F`^eh>~5M7DFz+|Oc zhoeeQ4k!O`C39toyDS7^*FO7>J=ZgVDS0U6dF-!oe?tOV`S34_%1XDpIG_vGlSru! z@&W6iw5sZiJs%YQfrpTpRs|+cmqn9U81ZqwjN{pyuNmZDd(O%}%7Mfk*iu(_5m3)O zn}M$-+O``AmUrXhM~7meGT?0jGnj?t@_E2fcy_qY8C=JI4$#d%xJa)FI> zCkg#IWAFZ|@=v%5ACS`;<_`=`oNNl38AylQ7U#?N*eC5tvcloRd`@wOh2bw&dLqJ@ z^Oyki$Llt`>xBnTj?!rpn;U`K8I68?0C(SyGryZTYdzbbU{2W9cwR*Nam6GhxboTE zZrQ~?a4d8sG8aU526FoVZrPdGI9;DA6;#m2?ii`9%tA(_K{oX3fy3z9NPB}2Stxe0 zH7}|F#H^FTFHwG(O@g}^X96DWYJAnPYt*O8Qs=ag1Hfb}L z0^uzd!2c34&e0l)3YHl{fRC7=F9~45<&#qm+3)P=53 z0cwX8!h>TEDxTei0EtCx$(&fj>MnQ592%%EGL&DQAppU%aq!Rlw`Q1iXB zFi9mrukZb_j?qe}!0=6<^XzpJR+W<)j6NEoBu$Xoag$epqVJxjRtGD1hnh-1R!!yW zFczKG48_BTDgcob71h7&?S{^pIL8dp&9g(1Xa3T^{Ra~ZH=7wn_F;Vqx|BpvV0tfr z+gs#Rd*6%OTNxctfHTW^cY;APon~4bQ|W=L1V5H1)NbLRKsvviT@sxji1P(P+*fpL ztaFjt5JSe&EQ&>KLcdmPF(a6g-+=f_I0%!Wh{{hJKHPJiYjcEvWHKov>8b>srv<2d zD76_##ukcRSW*VyXkJtr`ATv0>(s?kbFR&PLxgD39FQ;)TMAntI!jEF)j*(Fa)~qv zQNQpdvReG{Q}2K-rKpW3I_tLra@HTH(x$@k^ftXx8l6goYS}P_KG|8F6o?F2RD#^~ zzCSt%_}5B+ z2-?mQ%o*Tb3GW0^hkZRdAwfB=7M%7+qVZRr?Kp(;vcz2hAv@(60BrQ}f+@}&brvCB z!Mz;#;Qq^5fY$?V806MN`~g9w1o%NUlmcLJpUPnRg=%Tk7KK>Bo^n7p4paHA75dL% zdm-)~_FTpw6y%|%`zoCV558sC?HSMKnOehT;YP=%c|^FAZyz`p;v-AF%E-6fW$(Y{>26mN+#>^0it+@`aWF@oLDe1(xI1^~{cllRgx40P zDrEO?`3iwILA(3!i}l={2^#vAo3y5^q-4{fHUKzO&wx5+cp5;nr*GXU#}!$=NemHa z*ziGS^6!Q5u)erEH?JFt=5xI`0A2-duJhES+v~~F=8}``y9ILO-8cBHytR;BA(Np< zmJc4BB8(esHggLnb=#Zmo6m+Obk;ATcBF!F-2Z0`e7l9kD5X2T$@Qal2~+u2;GzoL zXiFs%3LBx=3ZU7wwE)Wk6~Ox^8aHwP@q%sk5jFM8(GU=`TR#efKE5Q-{K)aa8THty zoUE2O=}GJ)MSMID!qVyVi9>za7EwcioAeCIT!n++<7B}gUVWdLpcj_4Q7w^38W@8TZv8`S}H7DH5m z6TAAx98WjnBwj!mIa^XSIBG8`M#NSIeP3{fksrx zbaAgykE;qZfXp=>>C(oXT?x5XCHwKc`cboEQ8PWW_t-owO^W3>;7thk3it@&q+ln< zLRBbA7jN-|A2*vSm48cokZuIL=q2?2+Q=n9t0T=F_b$0HmwQE6#t$HKwHUId1z_1q z<+BxF_&;4oDUKNCs75va@aeGZj{`m@cqySzz8Q*JTUxF%R7Yp~{s=&^{c9+I z7mS#+ovhdPCTpAfdHWS$seld@r$VDJ>~b3{TLEmT6}ZMU$5fDFB#H=A0& z+C;YEsJX$AOsvMPz!y(IT^g3d#@_1qlQS$Rs4es$h$N zH9%A*ts+7g3Yf$YNmMkcf&>wWB$1#D0YZpO31mEX01N%TzUzC}_v5T}*75n3mE@W3 zaqsK8_THf3rdicKMK5=IriUTYV%00SAlI+PrAl52XOwYT5l%9-(JAJlfK~8Ls|p8x ztGhg(=bm;BO#h{O+e7Z`L?;(tX6U*3DsY!JR}W#27_~d-zdX}t@?1)d)^M_SjZe_0 zIN9(%Q4>C~m0z!M_nd%jaL3NdhLK-UziWf+ym3I^sQ2?|xGi_6mw@Il0$kxg)*858 zS#}pKdxhFWQEU#5Mdb6kYItyWky(tY;2ml#t6mdHa2YszGMQ&HDMY*!9$8mLRIXam z9um0BkXKXllbUg@hVMlq)R^7;xv@W~kz-1foQ$@UvQT2YHaom8^l=$OI~m(x-B(s* z;2Nz8S=&R~W@CeaC%=|bKTO*qGUDr=cGKUa+-n?~`KQ-a1j`1=khyqBwa(!=*zyX? zQ_>G5AGC(Hr{x{3QrLK3_WU8oK*T?d@Yt$~e0xb8H2}o@PxF#|{TJI72#B-Bmtqb(bWfyQSjd@TwYey-v4 z{MS3UQB}=ubS)&;U;u685V9gi9j=2|yPC#-(f)UMS}92?Gd=N3P*6}~hD-k23#J#e zl0u!1`UY$C0yfeYPoM4)TMVCxh#-;_FLCQM_Wp2g5=fv4)C$>Atv6A*pllFH+4l6} zp72{tCDD>cH_m7WTf*}7jCTQMU0ki45PF1)8UdmkkM_rQ-EpL;?^jFR_JWq_W0RS6 z@%oyQTHk z^%@9S{2{X>{ziCEM5v0!F zE(1EV&-|CBHI?61**uWd-6=D;#zTBMWyq&PP&N;{g$3pLW^@&&0ZN3%MCFMn8FPGdz($m5e+Lb(8lzd1> z6RV|eJRMgq((cNuVUeYh-ga&E56cSBYHxE|Zo}m%G$46#g zbh*`eIEq&+iexT$v0|%LvNt6RM0c@E5n`o>A@%$SQf!j>(1i#H-qbti`vLi%iAo#{ zaizbc0Cfv~htuGSt*UFl8Q2DdUFnUgBPKGI9^fp&jJc`{RAxQrc9Na@^nfU zkoi1hZCdp;sryyBp&=8*RTwanmsB_?bkwvCjQai>yjW{~DUjT5LW!v)LFORZX~p&a z+(aF?&fp`HkE_&P2O8Mw_)}PV-M|?A-ay`Ujd^$R?`9@Q{E%p**51}3F7<^44)d=w zm$bWkL1jJE1INIdfRMXVEZEdHNj01Lw&q->4s&UEt;LL-r*lG4^_PYIUK+}!=i?6f z{m3Fc)*0(ujI8IK;kNSeXdk_Zm)Ih-{MVbum0lkKnVjGyD=}ao)s30AdB$+ z_W)NlNO(*S6Z69!W5ZKdc=iMP_;f!>8X`pJ6d4)sd!8hNb>c-47)5Of6468(6# zYVZ;p_6_h-R=32d&-?_w3yC}H06_7F>4QTTryFF98}>yN1c4(N`dxRFjEDVaF7 zodUWD2Rw5!o(Hkb8J|A|Fl(q3O<`==l=hH`AJQTf;)w| z33TJB1dsOzBVIjClO`y)aBtXv`3fTY>Sjwm%k{Z zWFG#5>3PbpnSG|bpL!cvlooNeAn*ItRp)ck?K4tZt#`x~{?`nf zEBOqg6ZV*MlG z!9g~*)LY#`sY;d~C66_|kF9Fjht1;mG^od4W{b*j!;*T()+DUVS0pn=yoWtns_lbR2+pb{ zfx7ydtr~*zmO-X5Ec*F_R8j(h^-J9eUfT96A5oK7ri{iot0Pi?nOr=cl@2YUTbl zde*sDKv&2#x-fTCRu$!pXH`j`_6&j{5>*+eR`M4ef17n!PA@!fr2S*B*S=2O@e4lj z08|gdNUxw98ts1Yp1S{LKJt<0g4KkYnQd{dptPlKD~~~mod|vOHMD>ve^pjr^Q-FX zEe}aPa33EdCgI}NVKd!A(fC6`%N-%!MLb<4?-@kYDcM)j9o-S=(H065PF8D%1R0)D zz=mg#+V50aHPtOAu7($24irzc%PT#QxxzFS4x?UrDI_d{y(eJTbvLr!Gzwu3+<|My zbCLcVI4QX#B}jw>j_hb{Dy&eZW^4AJ3Vi=t~h^Ufr!Kp>CM4Kjz$7VcHURPYo*>DG2 znZ<9|Hnyoil>eY~0N1;H{QkEcbwAhdoW8lH#<#ZBxJzB|#u(Y?Z-vIHo>Wh=>1ny4 z6Q?vdTuywQS}htp<~l+aB{n=12}lV#a8znKhc*kawLZ3nXm5mXa<0*2bG9Eh`YvhY z-Tpo?JMkOBkz;q>sLsnvkb^mmJW-TIvxjJVK)#4(L#rUwSUB}GxTCm^0kJ-XT)d>N zO^3L^LdES3t4jOHX}rg+=i1k8-#xXWq{at-_)vun;&s6hqsN*h^6PRBG?AZ|ttYRz zw9?+{=v={CeOr|NRkaRt!pT6) z(@piE{+7G3w!ZkuFKW~NatZ#sZ4}Mk5Fh#&us6jdO`6rMN6PaY=q-<5zlKZsehB8P z&9-XbzXmAX(y3hq!*(eH{JhsB<|`+4EhEnXe;fr8yS;WyPb;uf4>zqV@O@p(x?7mT z*AX<1u4ru(BC4l(oIZPV+f+8dGW^d%9u>jo&z{@5Wx{_ zAd9W3)VH$u>ONI6AWcK1KM&5Nl;6RgAcL%fgq_?En^;F;3zLcitN<(1|N9*zMbM7!eaIH+SRcZY1j{-*!II zukju_EIVB^z$Yoox^r6|ohPci5CAlYR1yQ(NGVz_`mIY{duy1*lU)+sV=R69uK>(} zCP(_PDFX^(62F2T>O(mN0R8qMt!NCVjtEm-I4Di)i{=}Scgo8!wq?52ia-S!h1~>N zDKbjPdNVLE&@BJ4frRa{YR@v%hERUwFAA9ceE zS!6K3$A|qSGBVN`@8Z0HzEFpNb!Bco)_;rHi)#$c1oaAb^f>fOGV9?#WWf<|a}B2+ z%I`G?1;o0G?;F;nq@MZY;hcCwZssphCo#h> zyG9bz<109IPxnYGXGacvY-g1pFV?=)sCOU(7}~b1a#xOsoiaw?_g_9)>P6ka*l6YJRU_>&p~`AzjXr#3<#GQb2s1%2eU=jgI%A(rO*2T%4{q=y zW;aTfVV6sQ7rQ+eC$p;GhZk!*rDV46vcp-~y*w1oHKz`v5d67`mUI-;KgC=wtFvq# z4TvqeUdrd$XTrj2OfU(D_bR=+67>Y+vMzy+^u9qtmc#dkD8;z|IGHyhxB;tt2m-rN zf!ad(k$`r3jbbk3rUwPzk?A%UHfsG$;@ULz_xHckS5Wc2%%P8x?32QGNBei?H!SjY zM9;51*2~j3d*otkR$`~$O-}E?T*HMn*nrF&@>Aj`B;;r!c7W8B@xZu%tGm{Rlm39H` z`3`bQX9=9CsLxXxF_E6t9{f`KRch}p7wE>fQ|%7abe_>bI@dEe#DZfh9|NT;5^-J< zl&1#cSR@z0Va9Oxu@|C>Ojba7_QD(h&TvK+!K`?+H%3ZaZ(@#>@$Ns-MhQA!S)`bq z&ZY!*H^7}pcCRm>1j&U4=q7gAw>VjFeTUq-cNgR3%XU@3VD=9YMFyhnW5GBMIjK>A zB%st$76^-n%DR@*@L3k-6-UV7FY*FS{{e8}FzZi3d3f^A07s zRL;I8Ad7YrjP=zbeW|kQl8~IFCxivoN+XKWXkDyAT1iU*D;L_bzvjiMGF|EwrBcZm zAv7V|>~HO|vWa{ZVGdc{we?qV#*r^5SiAVFe-+`YdN&?7y7 z9l>u8uKpzJRnus~t+1{{QSFE0LgC{~ega-D*6q5~6*hdNe~7yufn65J4as}GDDQPH zWIcao+X7c?V>e;-j8A{M>g~f_yI&a+K{@lJf=mX^1JHRM*>w@Qs`Xs=|M3I~^Subf zJS!>?nm38p(W=u5N>ySZ)oAD>=3Sjm36WMu9YaN{`VXb(pws1wNR#Hrhd2r_2{hEe+RR-a$|Ah6;p&d7=MetX2RSvzejOgkv1&KM7b5{Jxxk6N() zFkZYAjTV2M)1kiDzLl=r(q0i~(J%HTx~&A&!4{`O(HB8#;KmYqr0BS@sQ%){kYw*Y zfyQ)2m`DbKpdPC)M)c&8~=S_cdZ`)X1%m`Ac zsAo%k+U!*D9rK5{kylxR5f--SY<@xNGH|0U+d;blwRjRTaV2w|uX{bmlx68gRe>l9 zC9KE+?AGLEmbMi`ykMnFM-cp{uhSuf@^0?Qj9YO6-uvQQSRCSVoEM^c3ms*vPAjdk z7>p_w-vn|<%D}=C6Lw4d8U@IJq|t?y&?AILMKTS;(jN{H~eQQ%+LsF${VnK&G^m32>|?8b?NhE90Zh1op*4CvKwGHS9o z0D@|hZLKGa>*LZTTHj<#p$*8|JA2!a1fiQ~{sU3$UC+#D^_G(b zWy^a8-h_`{H9cBoOCRgX%&#e>t41GV2kn%UlHjj~H%6fIN^Gy3?rq2Rjto_2@!#FY zV44;|pMIF}(>xTvsrP-!?nmf+jMAY=+Jm|7!M~kd3o1hevSBcoG(7$n>7r#BD;<)o z)qAq5{jAMn7;#l`pp^V11Q9^(ON*keUo1UMxvr;u&%Bv-1|Mb)I9TH zt|x9Mft!^zY)Y0!@Mto49!l;+D#c{*l(|%u4iokJ!vUZ?&*TE5k0)|LD>_Q(r7@3Q zh9+k5Wv(10!ETo~M@&%5D^oj;a+FneyKHXBMzds!n_HXF^kUx7I>_-&SeZu=)94ha z?;5E@5?4ODKIT!%&6aeA-7L7id9`kEYggNCwYjG*VJGRE)hvy@SQe&3E(R{qh9lU1 zNq9G*tI%L1KV?_*yR&Pn74H&I%%+M<^g$^#9@RV@em_1f2qC|nlU7-|k-@qzSGp*}IBUua^hG}OP!(i0o& z*CsoqMPfClIHKd6(W;zpvWrF6aed6T1gq``GNBoET3YO z`SrV4`yEHMD8ejz_~GOu6||KqkX|sT9F5;OPxmWO_U^{MOt1%(qx)|qS_b3HjS;jg zqLRd2)B>IvR-SDLwsK`z$?K)a^&+pUOv^(<8y2Ybc=~v10AMdX9O`7bFC5oep8qaS+55;f3de(!VOvEH5b|@ zP<{Q!YH%q_I{?pGucuO}8jq%U@>-C~;FPPaN%9ka5EzRQm2n`{@ogtqHOL$-D52x? zH3B9;CXnD9LB$Y{F90`yegljniKA+3TjQn=)o01IoLh}nc;@(b~_fzmL&^ANR zr3eslTjl`8H}mKa$yYTiUOX2-GIN9y5%+J82VB6<6+phg#^Ve67o>c=8NRR$)Ihzj;A{T+J<&aVB;-5d1rVq-nU8==;Q&e>c?ll93miXUUj^aIH5 z#I@Em3r85JjG9g;9r9f=$@e?f8q-y0fKy$ECWZ3d`)RJ+Is{8ej6E41npdt!d{fws zXk?k0PEOhQU&aPnQv=!9C^6NCbMj&c(`XIuL2jVmc#MSRK5IZy@(IrD_70G=f+%!x zcAi}_3qaZ+@jW=KLp4>4C#_eWUExIVQ` zWh;^;N>w3k_M{ZYmX6^tVtJT&20o< zF6N9N`jlrhC%(`^T=m|&oxP#voAl1=+1$fyccsh4c5{GLBC}CK!#k>9{?UY9uAI{i z@Szm%2?E4A(AE}E9Z%i`pFTU}nqVIDtkLwEvjf^$>JlAbVc?#n^zpncA6CqvLY~I<#B> z(&zZ%uStTsB&o}o$XH(c>r6$afykX4zy)cHBLc9DjHDN*c1ME5e41l85L>13mb?~t z*;ywpAX%KHgm6Wf2Z%R8ih3swNMik6(&fKybZKerNZ*f8G`CO6{qgns5K - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/acs.html"},"description":"Access Condition System (ACS) ENiGMA½ uses an Access Condition System (ACS) that is both familiar to oldschool BBS operators and has it’s own style. With ACS, SysOp’s are able to control access to various areas of the system based on various conditions such as group membership, connection type, etc. Various touch points in the system are configured to allow for acs checks. In some cases ACS is a simple boolean check while others (via ACS blocks) allow to define what conditions must be true for certain rights such as read and write (though others exist as well).","url":"/enigma-bbs/configuration/acs.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Access Condition System (ACS)","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • +
    diff --git a/configuration/archivers.html b/configuration/archivers.html index 2fbde173..53cbe3eb 100644 --- a/configuration/archivers.html +++ b/configuration/archivers.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/archivers.html"},"description":"Archivers ENiGMA½ can detect and process various archive formats such as zip and arj for a variety of tasks from file upload processing to EchoMail bundle compress/decompression. The archives section of config.hjson is used to override defaults, add new handlers, and so on.","url":"/enigma-bbs/configuration/archivers.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Archivers","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2277,7 +2309,9 @@

    Archivers are manged via the archives:archivers configuration block of config.hjson. Each entry in this section defines an external archiver that can be referenced in other sections of config.hjson as and in code. Entries define how to compress, decompress (a full archive), list, and extract (specific files from an archive).

    -

    :bulb: Generally you do not need to anything beyond installing supporting binaries. No config.hjson editing necessary; Please see External Binaries!

    +
    +

    :bulb: Generally you do not need to anything beyond installing supporting binaries. No config.hjson editing necessary; Please see External Binaries!

    +

    Archiver Configuration

    Archiver entries in config.hjson are mostly self explanatory with the exception of list commands that require some additional information. The args member for an entry is an array of arguments to pass to cmd. Some variables are available to args that will be expanded by the system:

    diff --git a/configuration/colour-codes.html b/configuration/colour-codes.html index e3deb562..f10e45db 100644 --- a/configuration/colour-codes.html +++ b/configuration/colour-codes.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/colour-codes.html"},"description":"ENiGMA½ supports Renegade-style pipe colour codes for formatting strings. You’ll see them used throughout your configuration, and can also be used in places like onelinerz, rumourz, full screen editor etc.","url":"/enigma-bbs/configuration/colour-codes.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Colour Codes","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/configuration/config-files.html b/configuration/config-files.html index c07d93fb..fc2c4459 100644 --- a/configuration/config-files.html +++ b/configuration/config-files.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/config-files.html"},"description":"General Information ENiGMA½ configuration files such as the system config, menus and themes are formatted in the HJSON format.","url":"/enigma-bbs/configuration/config-files.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Configuration Files","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2278,7 +2310,9 @@

    Hot-Reload

    Nearly all of ENiGMA½’s configuration can be hot-reloaded. That is, a live system can have it’s configuration modified and it will be loaded in place.

    -

    :bulb: Monitoring live logs is useful when making live changes. The system will complain if something is wrong!

    +
    +

    :bulb: Monitoring live logs is useful when making live changes. The system will complain if something is wrong!

    +

    Common Directives

    Includes

    @@ -2338,7 +2372,9 @@ }
    -

    :information_source: An unresolved @reference will be left intact.

    +
    +

    :information_source: An unresolved @reference will be left intact.

    +

    Environment Variables

    Especially in a container environment such as Docker, environment variable access in configuration files can become very handy. ENiGMA½ provides a flexible way to access variables using the @environment directive. The most basic form of @environment:VAR_NAME produces a string value. Additionally a :type suffix can be supplied to coerece the value to a particular type. Variables pointing to a comma separated list can be turned to arrays using an additional :array suffix.

    @@ -2440,11 +2476,17 @@ -

    :bulb: bool may be used as an alias to boolean.

    +
    +

    :bulb: bool may be used as an alias to boolean.

    +
    -

    :bulb: timestamp values can be in any form that moment can parse.

    +
    +

    :bulb: timestamp values can be in any form that moment can parse.

    +
    -

    :information_source: An unresolved or invalid @environment will be left intact.

    +
    +

    :information_source: An unresolved or invalid @environment will be left intact.

    +

    Consider the following fragment:

    {
    diff --git a/configuration/config-hjson.html b/configuration/config-hjson.html
    index e37192ee..4a2a0e08 100644
    --- a/configuration/config-hjson.html
    +++ b/configuration/config-hjson.html
    @@ -17,11 +17,11 @@
     
     
     
    -
    +
     
     
     
    +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/config-hjson.html"},"description":"System Configuration The main system configuration file, config.hjson both overrides defaults and provides additional configuration such as message areas. Defaults lived in core/config_default.js.","url":"/enigma-bbs/configuration/config-hjson.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"System Configuration","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"}
     
     
       
    @@ -2249,6 +2249,38 @@
     
       
       
    +
    +  
    +  
    +
    +  
    +
    +  
    +  
    +
    +  
    +
    +  
    +
    +  
    +    
    +      
    +    
    +  
  • Modding
  • + @@ -2277,7 +2309,9 @@

    The default path is /enigma-bbs/config/config.hjson though this can be overridden using the --config parameter when invoking main.js.

    -

    :information_source: See also Configuration Files. Additionally HJSON General Information may be helpful for more information on the HJSON format.

    +
    +

    :information_source: See also Configuration Files. Additionally HJSON General Information may be helpful for more information on the HJSON format.

    +

    Creating a Configuration

    Your initial configuration skeleton should be created using the oputil.js command line utility. From your enigma-bbs root directory:

    diff --git a/configuration/creating-config.html b/configuration/creating-config.html index e38a6fe1..229211f0 100644 --- a/configuration/creating-config.html +++ b/configuration/creating-config.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/creating-config.html"},"description":"Configuration files in ENiGMA½ are simple UTF-8 encoded HJSON files. HJSON is just like JSON but simplified and much more resilient to human error.","url":"/enigma-bbs/configuration/creating-config.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Creating Initial Config Files","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/configuration/directory-structure.html b/configuration/directory-structure.html index 7d0bccb7..231978a2 100644 --- a/configuration/directory-structure.html +++ b/configuration/directory-structure.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/directory-structure.html"},"description":"All paths mentioned here are relative to the ENiGMA½ checkout directory.","url":"/enigma-bbs/configuration/directory-structure.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Directory Structure","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/configuration/email.html b/configuration/email.html index b1ce1d95..85d713c3 100644 --- a/configuration/email.html +++ b/configuration/email.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/email.html"},"description":"Email Support ENiGMA½ uses email to send password reset information to users. For it to work, you need to provide valid Nodemailer compatible email block in your config.hjson. Nodemailer supports SMTP in addition to many pre-defined services for ease of use. The transport block within email must be Nodemailer compatible.","url":"/enigma-bbs/configuration/email.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Email","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/configuration/event-scheduler.html b/configuration/event-scheduler.html index 61e45522..a5e6ed5f 100644 --- a/configuration/event-scheduler.html +++ b/configuration/event-scheduler.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/event-scheduler.html"},"description":"Event Scheduler The ENiGMA½ scheduler allows system operators to configure arbitrary events that can can fire based on date and/or time, or by watching for changes in a file. Events can kick off internal handlers, custom modules, or binaries & scripts.","url":"/enigma-bbs/configuration/event-scheduler.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Event Scheduler","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2319,7 +2351,9 @@

    An @watch clause monitors a specified file for changes and takes the following form: @watch:<path> where <path> is a fully qualified path.

    -

    :bulb: If you would like to have a schedule and watch a file for changes, place the @watch clause second and separated with the word or. For example: every 24 hours or @watch:/path/to/somefile.txt.

    +
    +

    :bulb: If you would like to have a schedule and watch a file for changes, place the @watch clause second and separated with the word or. For example: every 24 hours or @watch:/path/to/somefile.txt.

    +

    Actions

    Events can kick off actions by calling a method (function) provided by the system or custom module in addition to executing arbritary binaries or scripts.

    diff --git a/configuration/external-binaries.html b/configuration/external-binaries.html index 9d3ac6bd..160ed33b 100644 --- a/configuration/external-binaries.html +++ b/configuration/external-binaries.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/external-binaries.html"},"description":"External Support Binaries ENiGMA½ relies on various external binaries in order to perform common tasks such as processing file archives and extracting information from uploads/file imports, some legacy transfer protocols, etc.","url":"/enigma-bbs/configuration/external-binaries.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"External Support Binaries","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2356,9 +2388,13 @@ -

    :information_source: For more information see core/config_default.js

    +
    +

    :information_source: For more information see core/config_default.js

    +
    -

    :information_source: For information on changing configuration or adding more archivers see Archivers.

    +
    +

    :information_source: For information on changing configuration or adding more archivers see Archivers.

    +

    File Transfer Protocols

    Handlers for legacy file transfer protocols such as Z-Modem and Y-Modem.

    diff --git a/configuration/file-transfer-protocols.html b/configuration/file-transfer-protocols.html index e650e3e7..b097ec0b 100644 --- a/configuration/file-transfer-protocols.html +++ b/configuration/file-transfer-protocols.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/file-transfer-protocols.html"},"description":"ENiGMA½ currently relies on external executable binaries for “legacy” file transfer protocols such as X, Y, and ZModem. Remember that ENiGMA½ also support modern web (HTTP/HTTPS) downloads!","url":"/enigma-bbs/configuration/file-transfer-protocols.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Transfer Protocols","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/configuration/hjson.html b/configuration/hjson.html index 432204ad..d338b505 100644 --- a/configuration/hjson.html +++ b/configuration/hjson.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/hjson.html"},"description":"JSON for Humans! HJSON is the configuration file format used by ENiGMA½ for System Configuration, Menus, etc. HJSON is is JSON for humans!","url":"/enigma-bbs/configuration/hjson.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"HJSON Config Files","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2321,7 +2353,9 @@

    Hot-Reload A.K.A. Live Editing

    ENiGMA½’s configuration, menu, and theme files can edited while your BBS is running. When a file is saved, it is hot-reloaded into the running system. If users are currently connected and you change a menu for example, the next reload of that menu will show the changes.

    -

    :information_source: See also Configuration Files

    +
    +

    :information_source: See also Configuration Files

    +

    CaSe SeNsiTiVE

    Configuration keys are case sensitive. That means if a configuration key is boardName for example, boardname, or BOARDNAME will not work.

    diff --git a/configuration/menu-hjson.html b/configuration/menu-hjson.html index 802e692c..647e9ee2 100644 --- a/configuration/menu-hjson.html +++ b/configuration/menu-hjson.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/menu-hjson.html"},"description":"Menu HJSON The core of a ENiGMA½ based BBS is it’s menus driven by what will be referred to as menu.hjson. Throughout ENiGMA½ documentation, when menu.hjson is referenced, we’re actually talking about config/menus/yourboardname-*.hjson. These files determine the menus (or screens) a user can see, the order they come in, how they interact with each other, ACS configuration, and so on. Like all configuration within ENiGMA½, menu configuration is done in HJSON format.","url":"/enigma-bbs/configuration/menu-hjson.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Menu HSJON","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2275,9 +2307,13 @@

    The core of a ENiGMA½ based BBS is it’s menus driven by what will be referred to as menu.hjson. Throughout ENiGMA½ documentation, when menu.hjson is referenced, we’re actually talking about config/menus/yourboardname-*.hjson. These files determine the menus (or screens) a user can see, the order they come in, how they interact with each other, ACS configuration, and so on. Like all configuration within ENiGMA½, menu configuration is done in HJSON format.

    -

    :information_source: See also HJSON General Information for more information on the HJSON file format.

    +
    +

    :information_source: See also HJSON General Information for more information on the HJSON file format.

    +
    -

    :bulb: Entries in menu.hjson are often referred to as blocks or sections. Each entry defines a menu. A menu in this sense is something the user can see or visit. Examples include but are not limited to:

    +
    +

    :bulb: Entries in menu.hjson are often referred to as blocks or sections. Each entry defines a menu. A menu in this sense is something the user can see or visit. Examples include but are not limited to:

    +

    As you can see a menu can be very simple.

    -

    :information_source: Remember that the top level menu may include additional files using the includes directive. See Configuration Files for more information on this.

    +
    +

    :information_source: Remember that the top level menu may include additional files using the includes directive. See Configuration Files for more information on this.

    +

    Common Menu Entry Members

    Below is a table of common menu entry members. These members apply to most entries, though entries that are backed by a specialized module (ie: module: bbs_list) may differ. Menus that use their own module contain a module declaration:

    diff --git a/configuration/security.html b/configuration/security.html index 777f0ad0..f8b33cf6 100644 --- a/configuration/security.html +++ b/configuration/security.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/security.html"},"description":"Security Unlike in the golden era of BBSing, modern Internet-connected systems are prone to hacking attempts, eavesdropping, etc. While plain-text passwords, insecure data over Plain Old Telephone Service (POTS), and so on was good enough then, modern systems must employ protections against attacks. ENiGMA½ comes with many security features that help keep the system and your users secure — not limited to: Passwords are never stored in plain-text, but instead are stored using Password-Based Key Derivation Function 2 (PBKDF2). Even the system operator can never know your password! Alternatives to insecure Telnet logins are built in: SSH and secure WebSockets for example. A built in web server with TLS support (aka HTTPS). Optional Two-Factor Authentication (2FA) via One-Time-Password (OTP) for users, supporting Google Authenticator, Time-Based One-Time Password Algorithm (TOTP, RFC-6238), and HMAC-Based One-Time Password Algorithm (HOTP, RFC-4266).","url":"/enigma-bbs/configuration/security.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Security","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2290,7 +2322,9 @@
  • The web server enabled and exposed over TLS (HTTPS).
  • -

    :information_source: For WebSockets and the web server, ENiGMA½ may listen on insecure channels if behind a secure web proxy.

    +
    +

    :information_source: For WebSockets and the web server, ENiGMA½ may listen on insecure channels if behind a secure web proxy.

    +

    User Registration Flow

    Due to the nature of 2FA/OTP, even if enabled on your system, users must opt-in and enable this feature on their account. Users must also have a valid email address such that a registration link can be sent to them. To opt-in, users must enable the option, which will cause the system to email them a registration link. Following the link provides the following:

    @@ -2301,9 +2335,13 @@
  • A confirmation prompt in which the user must enter a OTP code. If entered correctly, this validates everything is set up properly and 2FA/OTP will be enabled for the account. Backup codes will also be provided at this time. Future logins will now prompt the user for their OTP after they enter their standard password.
  • -

    :warning: Serving 2FA/OTP registration links over insecure (HTTP) can expose secrets intended for the user and is highly discouraged!

    +
    +

    :warning: Serving 2FA/OTP registration links over insecure (HTTP) can expose secrets intended for the user and is highly discouraged!

    +
    -

    :memo: +ops can also manually enable or disable 2FA/OTP for a user using oputil, but this is generally discouraged.

    +
    +

    :memo: +ops can also manually enable or disable 2FA/OTP for a user using oputil, but this is generally discouraged.

    +

    Recovery

    In the situation that a user loses their 2FA/OTP device (such as a lost phone with Google Auth), there are some options:

    diff --git a/configuration/sysop-setup.html b/configuration/sysop-setup.html index 5d512008..9986441a 100644 --- a/configuration/sysop-setup.html +++ b/configuration/sysop-setup.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/configuration/sysop-setup.html"},"description":"SySop privileges will be granted to the first user to log into a fresh ENiGMA½ installation. +ops belong to the sysop user group by default.","url":"/enigma-bbs/configuration/sysop-setup.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"SysOp Setup","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/filebase/acs.html b/filebase/acs.html index 824153fa..af0c76d2 100644 --- a/filebase/acs.html +++ b/filebase/acs.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/acs.html"},"description":"File Base ACS ACS Codes may be used to control access to File Base areas by specifying an acs string in a file area’s definition. If no acs is supplied in a file area definition, the following defaults apply to an area: read : GM[users]: List/view the area and it’s contents. write : GM[sysops]: Upload. download : GM[users]: Download.","url":"/enigma-bbs/filebase/acs.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"ACS","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/filebase/first-file-area.html b/filebase/first-file-area.html index 9670ae3f..03abe05b 100644 --- a/filebase/first-file-area.html +++ b/filebase/first-file-area.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/first-file-area.html"},"description":"Configuring a File Base ENiGMA½ offers a powerful and flexible file base. Configuration of file the file base and areas is handled via the fileBase section of config.hjson.","url":"/enigma-bbs/filebase/first-file-area.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Configuring a File Base","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/filebase/index.html b/filebase/index.html index 6ec6d30c..6cf42693 100644 --- a/filebase/index.html +++ b/filebase/index.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/"},"description":"About File Areas","url":"/enigma-bbs/filebase/","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"About File Areas","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/filebase/network-mounts-and-symlinks.html b/filebase/network-mounts-and-symlinks.html index 877f8cb1..bfe4a078 100644 --- a/filebase/network-mounts-and-symlinks.html +++ b/filebase/network-mounts-and-symlinks.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/network-mounts-and-symlinks.html"},"description":"Network Mounts & Symlinks With many Bulletin Board Systems running on small headless boxes such as Raspberry Pis, it may not be practical to have all files you would like to make available in your file base. One solution to this is to utilize network mounts. Add in symbolic links to make things even easier!","url":"/enigma-bbs/filebase/network-mounts-and-symlinks.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Network Mounts & Symlinks","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/filebase/tic-support.html b/filebase/tic-support.html index 27ae492b..7046e959 100644 --- a/filebase/tic-support.html +++ b/filebase/tic-support.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/tic-support.html"},"description":"TIC Support ENiGMA½ supports FidoNet-Style TIC file attachments by mapping TIC areas to local file areas.","url":"/enigma-bbs/filebase/tic-support.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"TIC Support","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/filebase/uploads.html b/filebase/uploads.html index 1635a06f..296861f6 100644 --- a/filebase/uploads.html +++ b/filebase/uploads.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/uploads.html"},"description":"Uploads The default ACS for file areas in ENiGMA½ is to allow regular users ‘read’ and sysops ‘read/write’. Read ACS includes listing and downloading while write allows for uploading. See File Base ACS for more information.","url":"/enigma-bbs/filebase/uploads.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Uploads","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2288,9 +2320,13 @@ } -

    :information_source: Remember that uploads in a particular area are stored using the first storage tag defined in that area.

    +
    +

    :information_source: Remember that uploads in a particular area are stored using the first storage tag defined in that area.

    +
    -

    :bulb: Any ACS checks are allowed. See ACS

    +
    +

    :bulb: Any ACS checks are allowed. See ACS

    +
    diff --git a/filebase/web-access.html b/filebase/web-access.html index 7af9e095..4c4f9f93 100644 --- a/filebase/web-access.html +++ b/filebase/web-access.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/filebase/web-access.html"},"description":"Temporary web HTTP(S) URLs can be used to download files using the built in web server. Temporary links expire after fileBase::web::expireMinutes (default 24 hours). The full URL given to users is built using contentServers::web::domain and will default to HTTPS (https://) if enabled with a fallback to HTTP. The end result is users are given a temporary web link that may look something like this: https://xibalba.l33t.codes:44512/f/h7JK","url":"/enigma-bbs/filebase/web-access.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Web Access","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/index.html b/index.html index 42b5eb1e..ca69cff9 100644 --- a/index.html +++ b/index.html @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/installation/docker.html b/installation/docker.html index 6f664658..249580d6 100644 --- a/installation/docker.html +++ b/installation/docker.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/docker.html"},"description":"You’ll need Docker installed before going any further. How to do so are out of scope of these docs, but you can find full instructions for every operating system on the Docker website.","url":"/enigma-bbs/installation/docker.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Docker","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2314,13 +2346,17 @@ if you make any changes to your host config folder they will persist, and you ca

    docker restart ENiGMABBS

    -

    :bulb: Configuration will be stored in $(pwd)/enigma-bbs/config.

    +
    +

    :bulb: Configuration will be stored in $(pwd)/enigma-bbs/config.

    +
    -

    :bulb: Windows users - you’ll need to switch out $(pwd)/enigma-bbs/config for a Windows-style path.

    +
    +

    :bulb: Windows users - you’ll need to switch out $(pwd)/enigma-bbs/config for a Windows-style path.

    +

    Volumes

    -

    Containers by their nature are ephermeral. Meaning, stuff you want to keep (config, database, mail) needs +

    Containers by their nature are ephermeral. Meaning, stuff you want to keep (config, database, mail) needs to be stored outside of the running container. As such, the following volumes are mountable:

    diff --git a/installation/hardware/rpi.html b/installation/hardware/rpi.html index eed3d3db..c9eb6604 100644 --- a/installation/hardware/rpi.html +++ b/installation/hardware/rpi.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/hardware/rpi.html"},"description":"All Raspberry Pi models work great with ENiGMA½! Keep in mind compiling the dependencies with npm install will take some time and may appear to hang. It’s still working - just be patient and let it complete.","url":"/enigma-bbs/installation/hardware/rpi.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Raspberry Pi","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/installation/hardware/windows.html b/installation/hardware/windows.html index 34c9d27b..bbe37913 100644 --- a/installation/hardware/windows.html +++ b/installation/hardware/windows.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/hardware/windows.html"},"description":"Installation Under Windows","url":"/enigma-bbs/installation/hardware/windows.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Installation Under Windows","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/installation/install-script.html b/installation/install-script.html index d430c240..562678de 100644 --- a/installation/install-script.html +++ b/installation/install-script.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/install-script.html"},"description":"Install Script Under most Linux/UNIX like environments (Linux, BSD, OS X, …) new users can simply execute the install.sh script to get everything up and running. Cut + paste the following into your terminal:","url":"/enigma-bbs/installation/install-script.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Install Script","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2283,13 +2315,15 @@ on GitHub before running it!

    The script will install nvm, Node.js and grab the latest ENiGMA BBS from GitHub. It will also guide you through creating a basic configuration file, and recommend some packages to install.

    -

    :information_source: After installing:

    - + diff --git a/installation/installation-methods.html b/installation/installation-methods.html index 8d1a3f5b..91bd30af 100644 --- a/installation/installation-methods.html +++ b/installation/installation-methods.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/installation-methods.html"},"description":"Installation Methods There are multiple ways of installing ENiGMA BBS, depending on your level of experience and desire to do things manually versus have it automated for you.","url":"/enigma-bbs/installation/installation-methods.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Installation Methods","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/installation/manual.html b/installation/manual.html index ac8872d4..2803966f 100644 --- a/installation/manual.html +++ b/installation/manual.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/manual.html"},"description":"For Linux environments it’s recommended you run the install script. If you like to do things manually, read on…","url":"/enigma-bbs/installation/manual.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Manual Installation","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2302,7 +2334,9 @@ are OK) for Windows users. Note that you should only need the Visual C++
    curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash
     
    -

    :information_source: Do not cut+paste the above command! Visit the NVM page and run the latest version!

    +
    +

    :information_source: Do not cut+paste the above command! Visit the NVM page and run the latest version!

    +

    Next, install Node.js with NVM:

    nvm install 12
    @@ -2326,9 +2360,13 @@ npm install # yarn also works
     
     

    ENiGMA BBS makes use of a few packages for archive and legacy protocol support. They’re not pre-requisites for running ENiGMA, but without them you’ll miss certain functionality. Once installed, they should be made available on your systems PATH.

    -

    :information_source: Please see External Binaries for information on setting these up.

    +
    +

    :information_source: Please see External Binaries for information on setting these up.

    +
    -

    :information_source: Additional information in Archivers and File Transfer Protocols

    +
    +

    :information_source: Additional information in Archivers and File Transfer Protocols

    +

    Config Files

    You’ll need a basic configuration to get started. The main system configuration is handled via config/config.hjson. This is an HJSON file (compliant JSON is also OK). See Configuration for more information.

    diff --git a/installation/network.html b/installation/network.html index 3f97de46..d7f2fe6b 100644 --- a/installation/network.html +++ b/installation/network.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/network.html"},"description":"Hosting an ENIGMA instance from your Home Network","url":"/enigma-bbs/installation/network.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Network Setup","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/installation/production.html b/installation/production.html index 529e1f4e..23e26078 100644 --- a/installation/production.html +++ b/installation/production.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/production.html"},"description":"If you’ve become convinced you would like a “production” BBS running ENiGMA½ a more advanced installation may be in order.","url":"/enigma-bbs/installation/production.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Production Installation","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/installation/testing.html b/installation/testing.html index 1ed33fad..090e6c3a 100644 --- a/installation/testing.html +++ b/installation/testing.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/installation/testing.html"},"description":"Once you’ve completed your chosen installation method, it’s time to test!","url":"/enigma-bbs/installation/testing.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Testing Your Installation","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/messageareas/bso-import-export.html b/messageareas/bso-import-export.html index dad83b40..7ad475c8 100644 --- a/messageareas/bso-import-export.html +++ b/messageareas/bso-import-export.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/bso-import-export.html"},"description":"BSO Import / Export The scanner/tosser module ftn_bso provides Binkley Style Outbound (BSO) import/toss and scan/export of messages EchoMail and NetMail messages. Configuration is supplied in config.hjson under scannerTossers.ftn_bso.","url":"/enigma-bbs/messageareas/bso-import-export.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"BSO Import / Export","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2275,7 +2307,9 @@

    BSO Import / Export

    The scanner/tosser module ftn_bso provides Binkley Style Outbound (BSO) import/toss and scan/export of messages EchoMail and NetMail messages. Configuration is supplied in config.hjson under scannerTossers.ftn_bso.

    -

    :information_source: ENiGMA½’s ftn_bso module is not a mailer and makes no attempts to perform packet transport! An external mailer such as Binkd is required for this task!

    +
    +

    :information_source: ENiGMA½’s ftn_bso module is not a mailer and makes no attempts to perform packet transport! An external mailer such as Binkd is required for this task!

    +

    Configuration

    Let’s look at some of the basic configuration:

    diff --git a/messageareas/configuring-a-message-area.html b/messageareas/configuring-a-message-area.html index deb8ea7f..1c5bca63 100644 --- a/messageareas/configuring-a-message-area.html +++ b/messageareas/configuring-a-message-area.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/configuring-a-message-area.html"},"description":"General Information In ENiGMA½, a message base is divided into two logical grouping components: Message Conferences and Areas. Message conferences are top level containers while areas are for a specific topic. Messages are always stored internally with a area tag.","url":"/enigma-bbs/messageareas/configuring-a-message-area.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Base","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2280,7 +2312,9 @@

    Each conference is represented by a entry under messageConferences. Each entries top level key is it’s conference tag.

    -

    :bulb: It is highly recommended to use snake_case style message conference tags and area tags!

    +
    +

    :bulb: It is highly recommended to use snake_case style message conference tags and area tags!

    +
    diff --git a/messageareas/ftn.html b/messageareas/ftn.html index 298e005b..10a5a6b8 100644 --- a/messageareas/ftn.html +++ b/messageareas/ftn.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/ftn.html"},"description":"FidoNet-Style Networks (FTN) FidoNet proper and other FidoNet-Style networks are supported by ENiGMA½. A bit of configuration and you’ll be up and running in no time!","url":"/enigma-bbs/messageareas/ftn.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"FidoNet-Style Networks (FTN)","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2289,7 +2321,9 @@ scannerTossers.ftn_bso: General configuration for the scanner/tosser (import/export) process. This is also where we configure per-node (uplink) settings. -

    :information_source: ENiGMA½’s ftn_bso module is not a mailer and makes no attempts to perform packet transport! An external utility such as Binkd is required for this task.

    +
    +

    :information_source: ENiGMA½’s ftn_bso module is not a mailer and makes no attempts to perform packet transport! An external utility such as Binkd is required for this task.

    +

    Networks

    The networks block is a per-network configuration where each entry’s ID (or “key”) may be referenced elsewhere in config.hjson. For example, consider two networks: ArakNet (araknet) and fsxNet (fsxnet):

    @@ -2363,7 +2397,9 @@ }
    -

    :bulb: You can import AREAS.BBS or FTN style .NA files using oputil!

    +
    +

    :bulb: You can import AREAS.BBS or FTN style .NA files using oputil!

    +

    A More Complete Example

    Below is a more complete example illustrating some of the concepts above:

    @@ -2393,7 +2429,9 @@ } -

    :information_source: Remember for a complete FTN experience, you’ll probably also want to configure FTN/BSO scanner/tosser settings.

    +
    +

    :information_source: Remember for a complete FTN experience, you’ll probably also want to configure FTN/BSO scanner/tosser settings.

    +

    FTN/BSO Scanner Tosser

    Please see the FTN/BSO Scanner/Tosser documentation for information on this area.

    diff --git a/messageareas/message-networks.html b/messageareas/message-networks.html index 69ef3973..b2ab2db3 100644 --- a/messageareas/message-networks.html +++ b/messageareas/message-networks.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/message-networks.html"},"description":"Message Networks ENiGMA½ supports external networks such as FidoNet-Style (FTN) and QWK by the way of importing and exporting to/from it’s own internal format. This allows for a very flexible system that can easily be extended by creating new network modules.","url":"/enigma-bbs/messageareas/message-networks.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Networks","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2284,7 +2316,9 @@ messageNetworks.<name>.areas: Provides mapping of ENiGMA½ area tags to their external counterparts. -

    :information_source: A related section under scannerTossers.<name> may provide configuration for scanning (importing) and tossing (exporting) messages for a particular network type. As an example, FidoNet-Style networks often work with BinkleyTerm Style Outbound (BSO) and thus the FTN/BSO scanner/tosser (ftn_bso) module.

    +
    +

    :information_source: A related section under scannerTossers.<name> may provide configuration for scanning (importing) and tossing (exporting) messages for a particular network type. As an example, FidoNet-Style networks often work with BinkleyTerm Style Outbound (BSO) and thus the FTN/BSO scanner/tosser (ftn_bso) module.

    +

    Currently Supported Networks

    The following networks are supported out of the box. Remember that you can create modules to add others if desired!

    diff --git a/messageareas/netmail.html b/messageareas/netmail.html index 3f9bf18a..9e2664d6 100644 --- a/messageareas/netmail.html +++ b/messageareas/netmail.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/netmail.html"},"description":"ENiGMA support import and export of Netmail from the Private Mail area. RiPuk @ 21:1/136 and RiPuk <21:1/136> ‘To’ address formats are supported.","url":"/enigma-bbs/messageareas/netmail.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Netmail","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/messageareas/qwk.html b/messageareas/qwk.html index 5a8e2b72..9d8fb060 100644 --- a/messageareas/qwk.html +++ b/messageareas/qwk.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/messageareas/qwk.html"},"description":"QWK and QWK-Net Style Networks As like all other networks such as FidoNet-Style (FTN) networks, ENiGMA½ considers QWK external to the system but can import and export the format.","url":"/enigma-bbs/messageareas/qwk.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"QWK Support","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2288,7 +2320,9 @@

    Configuration

    QWK configuration occurs in the messageNetworks.qwk config block of config.hjson. As QWK wants to deal with conference numbers and ENiGMA½ uses area tags (conferences and conference tags are only used for logical grouping), a mapping can be made.

    -

    :information_source: During a regular, non QWK-Net exports, conference numbers can be auto-generated. Note that for QWK-Net style networks, you will need to create mappings however.

    +
    +

    :information_source: During a regular, non QWK-Net exports, conference numbers can be auto-generated. Note that for QWK-Net style networks, you will need to create mappings however.

    +

    Example:

    {
    diff --git a/misc/user-interrupt.html b/misc/user-interrupt.html
    index 6d9f5996..a444117d 100644
    --- a/misc/user-interrupt.html
    +++ b/misc/user-interrupt.html
    @@ -17,11 +17,11 @@
     
     
     
    -
    +
     
     
     
    +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/misc/user-interrupt.html"},"description":"User Interruptions ENiGMA½ provides functionality to “interrupt” a user for various purposes such as a node-to-node message. User interruptions can be queued and displayed at the next opportune time such as when switching to a new menu, or realtime if appropriate.","url":"/enigma-bbs/misc/user-interrupt.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"User Interruptions","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"}
     
     
       
    @@ -2249,6 +2249,38 @@
     
       
       
    +
    +  
    +  
    +
    +  
    +
    +  
    +  
    +
    +  
    +
    +  
    +
    +  
    +    
    +      
    +    
    +  
  • Modding
  • + diff --git a/modding/autosig-edit.html b/modding/autosig-edit.html index 3deb25db..42e51923 100644 --- a/modding/autosig-edit.html +++ b/modding/autosig-edit.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/autosig-edit.html"},"description":"The Auto Signature Editor The built in autosig_edit module allows users to edit their auto signatures (AKA “autosig”).","url":"/enigma-bbs/modding/autosig-edit.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Auto Signature Editor","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/bbs-list.html b/modding/bbs-list.html index c52af6d6..3caf032c 100644 --- a/modding/bbs-list.html +++ b/modding/bbs-list.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/bbs-list.html"},"description":"The BBS List Module The built in bbs_list module provides the ability for users to manage entries to other Bulletin Board Systems.","url":"/enigma-bbs/modding/bbs-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"BBS List","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/door-servers.html b/modding/door-servers.html index 726831ef..56896445 100644 --- a/modding/door-servers.html +++ b/modding/door-servers.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/door-servers.html"},"description":"The bbs_link Module Native support for BBSLink doors is provided via the bbs_link module.","url":"/enigma-bbs/modding/door-servers.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Door Servers","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/existing-mods.html b/modding/existing-mods.html index 47f503ba..574551c5 100644 --- a/modding/existing-mods.html +++ b/modding/existing-mods.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/existing-mods.html"},"description":"Many “addon” modules exist and have been released. Below are a few:","url":"/enigma-bbs/modding/existing-mods.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Existing Mods","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/file-area-list.html b/modding/file-area-list.html index 85f09ca4..f19a17c3 100644 --- a/modding/file-area-list.html +++ b/modding/file-area-list.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-area-list.html"},"description":"The File Area List Module The built in file_area_list module provides a very flexible file listing UI.","url":"/enigma-bbs/modding/file-area-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Area List","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/file-base-download-manager.html b/modding/file-base-download-manager.html index 6deb88e0..1bf0a04d 100644 --- a/modding/file-base-download-manager.html +++ b/modding/file-base-download-manager.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-base-download-manager.html"},"description":"File Base Download Manager Module The file_base_download_manager module provides a download queue manager for “legacy” (X/Y/Z-Modem, etc.) downloads. Web (HTTP/HTTPS) download functionality can be optionally available when the web content server is enabled.","url":"/enigma-bbs/modding/file-base-download-manager.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Base Download Manager","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/file-base-web-download-manager.html b/modding/file-base-web-download-manager.html index e03d25e1..4af68788 100644 --- a/modding/file-base-web-download-manager.html +++ b/modding/file-base-web-download-manager.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-base-web-download-manager.html"},"description":"File Base Web Download Manager Module The file_base_web_download_manager module provides a download queue manager for web (HTTP/HTTPS) based downloads. This module relies on having the web server enabled at a minimum.","url":"/enigma-bbs/modding/file-base-web-download-manager.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Base Web Download Manager","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/file-transfer-protocol-select.html b/modding/file-transfer-protocol-select.html index f52e3d1c..70b02de6 100644 --- a/modding/file-transfer-protocol-select.html +++ b/modding/file-transfer-protocol-select.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/file-transfer-protocol-select.html"},"description":"The Rumorz Module The built in file_transfer_protocol_select module provides a way to select a legacy file transfer protocol (X/Y/Z-Modem, etc.) for upload/downloads.","url":"/enigma-bbs/modding/file-transfer-protocol-select.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"File Transfer Protocol Select","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/last-callers.html b/modding/last-callers.html index 020bb5c5..d57985d8 100644 --- a/modding/last-callers.html +++ b/modding/last-callers.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/last-callers.html"},"description":"The Last Callers Module The built in last_callers module provides flexible retro last callers mod.","url":"/enigma-bbs/modding/last-callers.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Last Callers","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/local-doors.html b/modding/local-doors.html index f3888609..c0e461f2 100644 --- a/modding/local-doors.html +++ b/modding/local-doors.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/local-doors.html"},"description":"Local Doors ENiGMA½ has many ways to add doors to your system. In addition to the many built in door server modules, local doors are of course also supported using the ! The abracadabra module!","url":"/enigma-bbs/modding/local-doors.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Local Doors","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2275,7 +2307,9 @@

    Local Doors

    ENiGMA½ has many ways to add doors to your system. In addition to the many built in door server modules, local doors are of course also supported using the ! The abracadabra module!

    -

    :information_source: See also Let’s add a DOS door to Enigma½ BBS by Robbie Whiting for a great writeup on adding doors!

    +
    +

    :information_source: See also Let’s add a DOS door to Enigma½ BBS by Robbie Whiting for a great writeup on adding doors!

    +

    The abracadabra Module

    The abracadabra module provides a generic and flexible solution for many door types. Through this module you can execute native processes & scripts directly, and perform I/O through standard I/O (stdio) or a temporary TCP server.

    diff --git a/modding/menu-modules.html b/modding/menu-modules.html index f8283c4a..53c20c4e 100644 --- a/modding/menu-modules.html +++ b/modding/menu-modules.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/menu-modules.html"},"description":"Menu Modules Menu entries found within menu.hjson are backed by menu modules.","url":"/enigma-bbs/modding/menu-modules.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Menu Modules","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/msg-area-list.html b/modding/msg-area-list.html index cd514b40..e566d927 100644 --- a/modding/msg-area-list.html +++ b/modding/msg-area-list.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/msg-area-list.html"},"description":"The Message Area List Module The built in msg_area_list module provides a menu to display and change between message areas in the users current conference.","url":"/enigma-bbs/modding/msg-area-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Area List","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/msg-conf-list.html b/modding/msg-conf-list.html index c4305f5a..15a80078 100644 --- a/modding/msg-conf-list.html +++ b/modding/msg-conf-list.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/msg-conf-list.html"},"description":"The Message Conference List Module The built in msg_conf_list module provides a menu to display and change between message conferences.","url":"/enigma-bbs/modding/msg-conf-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Message Conference List","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/node-msg.html b/modding/node-msg.html index 962d70b9..c78b0041 100644 --- a/modding/node-msg.html +++ b/modding/node-msg.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/node-msg.html"},"description":"The Node to Node Messaging Module The node to node messaging (node_msg) module allows users to send messages to one or more users on different nodes. Messages delivered to nodes follow standard User Interruption rules.","url":"/enigma-bbs/modding/node-msg.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Node to Node Messaging","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/onelinerz.html b/modding/onelinerz.html index 9c63dddd..8601c58c 100644 --- a/modding/onelinerz.html +++ b/modding/onelinerz.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/onelinerz.html"},"description":"The Onelinerz Module The built in onelinerz module provides a retro onelinerz system.","url":"/enigma-bbs/modding/onelinerz.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Onelinerz","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/rumorz.html b/modding/rumorz.html index 21c1cc85..8dd8cdee 100644 --- a/modding/rumorz.html +++ b/modding/rumorz.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/rumorz.html"},"description":"The Rumorz Module The built in rumorz module provides a classic interface for users to add and view rumorz!","url":"/enigma-bbs/modding/rumorz.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Rumorz","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/set-newscan-date.html b/modding/set-newscan-date.html index bd59cf99..536f30ce 100644 --- a/modding/set-newscan-date.html +++ b/modding/set-newscan-date.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/set-newscan-date.html"},"description":"Set Newscan Date Module The set_newscan_date module allows setting newscan dates (aka pointers) for message conferences and areas as well as within the file base. Users can select specific conferences/areas or all (where applicable).","url":"/enigma-bbs/modding/set-newscan-date.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Set Newscan Date Module","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/show-art.html b/modding/show-art.html index 5a96d87e..c43a7579 100644 --- a/modding/show-art.html +++ b/modding/show-art.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/show-art.html"},"description":"The Show Art Module The built in show_art module add some advanced ways in which you can configure your system to display art assets beyond what a standard menu entry can provide. For example, based on user selection of a file or message base area.","url":"/enigma-bbs/modding/show-art.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"The Show Art Module","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/telnet-bridge.html b/modding/telnet-bridge.html index a62010eb..db1347e2 100644 --- a/modding/telnet-bridge.html +++ b/modding/telnet-bridge.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/telnet-bridge.html"},"description":"Telnet Bridge The telnet_bridge module allows “bridged” Telnet connections from your board to other Telnet services (such as other BBSes!).","url":"/enigma-bbs/modding/telnet-bridge.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Telnet Bridge","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/top-x.html b/modding/top-x.html index 9b122ec1..e919c266 100644 --- a/modding/top-x.html +++ b/modding/top-x.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/top-x.html"},"description":"The TopX Module The built in top_x module allows for displaying oLDSKOOL (?!) top user stats for the week, month, etc. Ops can configure what stat(s) are displayed and how far back in days the stats are considered.","url":"/enigma-bbs/modding/top-x.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"TopX","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/user-2fa-otp-config.html b/modding/user-2fa-otp-config.html index 4ae627e6..7fd3a33c 100644 --- a/modding/user-2fa-otp-config.html +++ b/modding/user-2fa-otp-config.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/user-2fa-otp-config.html"},"description":"The 2FA/OTP Config Module The user_2fa_otp_config module provides opt-in, configuration, and viewing of Two-Factor Authentication via One-Time-Password (2FA/OTP) settings. In order to allow users access to 2FA/OTP, the system must be properly configured. See Security for more information.","url":"/enigma-bbs/modding/user-2fa-otp-config.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"2FA/OTP Config","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2275,7 +2307,9 @@

    The 2FA/OTP Config Module

    The user_2fa_otp_config module provides opt-in, configuration, and viewing of Two-Factor Authentication via One-Time-Password (2FA/OTP) settings. In order to allow users access to 2FA/OTP, the system must be properly configured. See Security for more information.

    -

    :information_source: By default, the 2FA/OTP configuration menu may only be accessed by users connected securely (ACS SC). It is highly recommended to leave this default as accessing these settings over a plain-text connection could expose private secrets!

    +
    +

    :information_source: By default, the 2FA/OTP configuration menu may only be accessed by users connected securely (ACS SC). It is highly recommended to leave this default as accessing these settings over a plain-text connection could expose private secrets!

    +

    Configuration

    diff --git a/modding/user-list.html b/modding/user-list.html index e1a300e4..3bcea920 100644 --- a/modding/user-list.html +++ b/modding/user-list.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/user-list.html"},"description":"The User List Module The built in user_list module provides basic user list functionality.","url":"/enigma-bbs/modding/user-list.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"User List","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/modding/wfc.html b/modding/wfc.html new file mode 100644 index 00000000..5cb75c8e --- /dev/null +++ b/modding/wfc.html @@ -0,0 +1,2517 @@ + + + + + + + + + + + +Waiting For Caller (WFC) | ENiGMA½ BBS Software + + + + + + + + + + + + + + + + + +
    + +
    +
    +
    + + +
    +

    Waiting For Caller (WFC)

    +

    The Waiting For Caller (WFC) Module

    +

    The wfc.js module provides a Waiting For Caller (WFC) type dashboard from a bygone era. Many traditional features are available including newer concepts for modern times. Node spy is left out as it feels like something that should be left in the past.

    + +

    WFC

    + +

    Accessing the WFC

    +

    By default, the WFC may be accessed via the !WFC main menu command when connected over a secure connection via a user with the proper ACS. This can be configured as per any other menu in the system. Note that ENiGMA½ does not expose the WFC as a standalone application as this would be much less flexible. To connect locally, simply use your favorite terminal or for example: ssh -l yourname localhost 8889. See Security below for more information.

    + +

    Security

    +

    The system allows any user with the proper security to access the WFC / system operator functionality. The security policy is enforced by ACS with the default of SCAF2ID1GM[wfc], meaning the following are true:

    + +
      +
    1. Securely Connected (such as SSH or Secure WebSocket, but not Telnet)
    2. +
    3. +Auth Factor 2+. That is, the user has 2FA enabled.
    4. +
    5. User ID of 1 (root/admin)
    6. +
    7. The user belongs to the wfc group.
    8. +
    + +
    +

    :information_source: Due to the above, the WFC screen is disabled by default as at a minimum, you’ll need to add your user to the wfc group. See also Security for more information on keeping your system secure!

    +
    + +

    To change the ACS required, specify a alternative acs in the config block. For example:

    +
    mainMenuWaitingForCaller: {
    +    config: {
    +        // initial +op over secure connection only
    +        acs: SCID1GM[sysops]
    +    }
    +}
    +
    + +
    +

    :lock: ENiGMA½ will enforce ACS of at least SC (secure connection)

    +
    + +

    Theming

    +

    The following MCI codes are available:

    +
      +
    • +VM1: Node status list with the following format items available: +
        +
      • +text: Username or *Pre Auth*.
      • +
      • +action: Current action/menu.
      • +
      • +affils: Any affiliations related to the if authenticated, else “N/A”.
      • +
      • +authenticated: Boolean rather the node is authenticated (logged in) or not.
      • +
      • +availIndicator: Indicator of availability (e.g. for messaging)? Displayed via statusAvailableIndicators or system theme. See also Themes.
      • +
      • +isAvailalbe: Boolean rather the node is availalbe (e.g. for messaging) or not.
      • +
      • +isSecure: Is the node securely connected (ie: SSL)?
      • +
      • +isVisible: Boolean rather the node is visible to others or not.
      • +
      • +node: The node ID.
      • +
      • +realName: Real name of authenticated user, or “N/A”.
      • +
      • +serverName: Name of connected server such as “Telnet” or “SSH”.
      • +
      • +timeOn: How long the node has been connected.
      • +
      • +timeOnMinutes: How long in minutes the node has been connected.
      • +
      • +userId: User ID of authenticated node, or 0 if not yet authenticated.
      • +
      • +userName: User name of authenticated user or “Pre Auth
      • +
      • +visIndicator: Indicator of visibility. Displayed via statusVisibleIndicators or system theme. See also Themes.
      • +
      • +remoteAddress: A friendly formatted remote address such as a IPv4 or IPv6 address.
      • +
      +
    • +
    • +VM2: Quick log with the following format keys available: +
        +
      • +timestamp: Log entry timestamp in quickLogTimestampFormat format.
      • +
      • +level: Log entry level from Bunyan.
      • +
      • +levelIndicator: Level indicators can be overridden with the quickLogLevelIndicators key (see defaults below)
      • +
      • +quickLogLevelIndicators: A map defaulting to the following`: +
          +
        • +trace : T +
        • +
        • +debug: D +
        • +
        • +info: I +
        • +
        • +warn: W +
        • +
        • +error: E +
        • +
        • +fatal: F +
        • +
        +
      • +
      • +nodeId: Node ID.
      • +
      • +sessionId: Session ID.
      • +
      • +quickLogLevelMessagePrefixes: A map of log level names (see above) to message prefixes. Commonly used for changing message color with pipe codes, such as |04 for red errors.
      • +
      • +message: Log message.
      • +
      +
    • +
    • MCI 10…99: Custom entries with the following format keys available: +
        +
      • +nowDate: Current date in the dateFormat style, defaulting to short.
      • +
      • +nowTime: Current time in the timeFormat style, defaulting to short.
      • +
      • +now: Current date and/or time in nowDateTimeFormat format.
      • +
      • +processUptimeSeconds: Process (the BBS) uptime in seconds.
      • +
      • +totalCalls: Total calls to the system.
      • +
      • +totalPosts: Total posts to the system.
      • +
      • +totalUsers: Total users on the system.
      • +
      • +totalFiles: Total number of files on the system.
      • +
      • +totalFileBytes: Total size in bytes of the file base.
      • +
      • +callsToday: Number of calls today.
      • +
      • +postsToday: Number of posts today.
      • +
      • +uploadsToday: Number of uploads today.
      • +
      • +uploadBytesToday: Total size in bytes of uploads today.
      • +
      • +downloadsToday: Number of downloads today.
      • +
      • +downloadsBytesToday: Total size in bytes of uploads today.
      • +
      • +newUsersToday: Number of new users today.
      • +
      • +currentUserName: Current user name.
      • +
      • +currentUserRealName: Current user’s real name.
      • +
      • +lastLoginUserName: Last login username.
      • +
      • +lastLoginRealName: Last login user’s real name.
      • +
      • +lastLoginDate: Last login date in dateFormat format.
      • +
      • +lastLoginTime: Last login time in timeFormat format.
      • +
      • +lastLogin: Last login date/time.
      • +
      • +totalMemoryBytes: Total system memory in bytes.
      • +
      • +freeMemoryBytes: Free system memory in bytes.
      • +
      • +systemAvgLoad: System average load.
      • +
      • +systemCurrentLoad: System current load.
      • +
      • +newPrivateMail: Number of new private mail for current user.
      • +
      • +newMessagesAddrTo: Number of new messages addressed to the current user.
      • +
      • +availIndicator: Is the current user availalbe? Displayed via statusAvailableIndicators or system theme. See also Themes.
      • +
      • +visIndicator: Is the current user visible? Displayed via statusVisibleIndicators or system theme. See also Themes.
      • +
      • +processBytesIngress: Ingress bytes since ENiGMA started.
      • +
      • +processBytesEgress: Egress bytes since ENiGMA started.
      • +
      +
    • +
    + +
    +

    :information_source: While Standard MCI codes work on any menu, they will not refresh. For values that may change over time, please use the custom format values above.

    +
    + +
    + + +
    +
    +
    +
    + + + + diff --git a/modding/whos-online.html b/modding/whos-online.html index ce6be409..6ac1712b 100644 --- a/modding/whos-online.html +++ b/modding/whos-online.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/modding/whos-online.html"},"description":"The Who’s Online Module The built in whos_online module provides a basic who’s online mod.","url":"/enigma-bbs/modding/whos-online.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Who’s Online","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -30,9 +30,9 @@
    diff --git a/servers/contentservers/gopher.html b/servers/contentservers/gopher.html index eae08135..fd65f922 100644 --- a/servers/contentservers/gopher.html +++ b/servers/contentservers/gopher.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/contentservers/gopher.html"},"description":"The Gopher Content Server The Gopher content server provides access to publicly exposed message conferences and areas over Gopher (gopher://) as well as any other content you wish to serve in your Gopher Hole!","url":"/enigma-bbs/servers/contentservers/gopher.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Gopher Server","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2338,11 +2370,17 @@ The Gopher protocol serves content that contains host/domain and port even when {publicPort}: The public port from your config. -

    :information_source: See Wikipedia for more information on the gophermap format.

    +
    +

    :information_source: See Wikipedia for more information on the gophermap format.

    +
    -

    :information_source: See RFC 1436 for the original Gopher spec.

    +
    +

    :information_source: See RFC 1436 for the original Gopher spec.

    +
    -

    :bulb: Tools such as gfu may help you with gophermap’s

    +
    +

    :bulb: Tools such as gfu may help you with gophermap’s

    +

    Example Gophermap

    An example gophermap living in enigma-bbs/gopher:

    diff --git a/servers/contentservers/nntp.html b/servers/contentservers/nntp.html index 07af7499..223a1dc6 100644 --- a/servers/contentservers/nntp.html +++ b/servers/contentservers/nntp.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/contentservers/nntp.html"},"description":"The NNTP Content Server The NNTP content server provides access to publicly exposed message conferences and areas over either secure NNTPS (NNTP over TLS or nttps://) and/or non-secure NNTP (nntp://).","url":"/enigma-bbs/servers/contentservers/nntp.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"NNTP Server","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/servers/contentservers/web-server.html b/servers/contentservers/web-server.html index 17bce1a6..4050952b 100644 --- a/servers/contentservers/web-server.html +++ b/servers/contentservers/web-server.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/contentservers/web-server.html"},"description":"ENiGMA½ comes with a built in content server for supporting both HTTP and HTTPS. Currently the File Bases registers routes for file downloads, password reset email links are handled via the server, and static files can also be served for your BBS. Other features will likely come in the future or you can easily write your own!","url":"/enigma-bbs/servers/contentservers/web-server.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Web Server","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2395,7 +2427,9 @@

    If you don’t have a TLS certificate for your domain, a good source for a certificate can be Let’s Encrypt who supplies free and trusted TLS certificates. A common strategy is to place another web server such as Caddy in front of ENiGMA½ acting as a transparent proxy and TLS termination point.

    -

    :information_source: Keep in mind that the SSL certificate provided by Let’s Encrypt’s Certbot is by default stored in a privileged location; if your ENIGMA instance is not running as root (which it should not be!), you’ll need to copy the SSL certificate somewhere else in order for ENIGMA to use it.

    +
    +

    :information_source: Keep in mind that the SSL certificate provided by Let’s Encrypt’s Certbot is by default stored in a privileged location; if your ENIGMA instance is not running as root (which it should not be!), you’ll need to copy the SSL certificate somewhere else in order for ENIGMA to use it.

    +

    Static Routes

    diff --git a/servers/loginservers/ssh.html b/servers/loginservers/ssh.html index 2cde9d1a..9279e478 100644 --- a/servers/loginservers/ssh.html +++ b/servers/loginservers/ssh.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/loginservers/ssh.html"},"description":"SSH Login Server The ENiGMA½ SSH login server allows secure user logins over SSH (ssh://).","url":"/enigma-bbs/servers/loginservers/ssh.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"SSH Server","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/servers/loginservers/telnet.html b/servers/loginservers/telnet.html index dab03b4c..2da358ae 100644 --- a/servers/loginservers/telnet.html +++ b/servers/loginservers/telnet.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/loginservers/telnet.html"},"description":"Telnet Login Server The Telnet login server provides a standard non-secure Telnet login experience.","url":"/enigma-bbs/servers/loginservers/telnet.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Telnet Server","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/servers/loginservers/websocket.html b/servers/loginservers/websocket.html index a94a4458..b7b459e8 100644 --- a/servers/loginservers/websocket.html +++ b/servers/loginservers/websocket.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/servers/loginservers/websocket.html"},"description":"WebSocket Login Server The WebSocket Login Server provides secure (wss://) as well as non-secure (ws://) WebSocket login access. This is often combined with a browser based WebSocket client such as VTX or fTelnet.","url":"/enigma-bbs/servers/loginservers/websocket.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Web Socket / Web Interface Server","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + diff --git a/sitemap.xml b/sitemap.xml index ee672f9e..fb11ebbd 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,343 +2,347 @@ /enigma-bbs/installation/installation-methods.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/install-script.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/docker.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/manual.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/hardware/rpi.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/hardware/windows.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/network.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/testing.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/installation/production.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/creating-config.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/sysop-setup.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/config-files.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/config-hjson.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/hjson.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/menu-hjson.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/directory-structure.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/external-binaries.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/archivers.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/file-transfer-protocols.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/email.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/colour-codes.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/event-scheduler.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/acs.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/configuration/security.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/misc/user-interrupt.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/filebase/ -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/filebase/first-file-area.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/filebase/acs.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/filebase/uploads.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/filebase/web-access.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/filebase/tic-support.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/filebase/network-mounts-and-symlinks.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/messageareas/configuring-a-message-area.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/messageareas/message-networks.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/messageareas/bso-import-export.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/messageareas/netmail.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/messageareas/qwk.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/messageareas/ftn.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/general.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/themes.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/mci.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/button_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/edit_text_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/full_menu_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/horizontal_menu_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/mask_edit_text_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/multi_line_edit_text_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/predefined_label_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/spinner_menu_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/text_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/toggle_menu_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/art/views/vertical_menu_view.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/servers/loginservers/telnet.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/servers/loginservers/ssh.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/servers/loginservers/websocket.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/servers/contentservers/web-server.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/servers/contentservers/gopher.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/servers/contentservers/nntp.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/local-doors.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/door-servers.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/telnet-bridge.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/existing-mods.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/file-area-list.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/last-callers.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/whos-online.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/user-list.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/msg-conf-list.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/msg-area-list.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/bbs-list.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/rumorz.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/file-transfer-protocol-select.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/onelinerz.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/show-art.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/file-base-download-manager.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/file-base-web-download-manager.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/set-newscan-date.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/node-msg.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/top-x.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/user-2fa-otp-config.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/autosig-edit.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/modding/menu-modules.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/admin/administration.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/admin/oputil.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/admin/updating.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 /enigma-bbs/troubleshooting/monitoring-logs.html -2022-08-01T21:06:07+00:00 +2022-08-04T18:38:35+00:00 + + +/enigma-bbs/modding/wfc.html +2022-08-04T18:38:35+00:00 /enigma-bbs/ diff --git a/troubleshooting/monitoring-logs.html b/troubleshooting/monitoring-logs.html index 93dfd0b7..532aeffc 100644 --- a/troubleshooting/monitoring-logs.html +++ b/troubleshooting/monitoring-logs.html @@ -17,11 +17,11 @@ - + +{"mainEntityOfPage":{"@type":"WebPage","@id":"/enigma-bbs/troubleshooting/monitoring-logs.html"},"description":"Monitoring Logs ENiGMA½ does not produce much to stdout. Logs are produced by Bunyan which outputs each entry as a JSON object.","url":"/enigma-bbs/troubleshooting/monitoring-logs.html","@type":"BlogPosting","publisher":{"@type":"Organization","logo":{"@type":"ImageObject","url":"/enigma-bbs/assets/images/enigma-logo.png"}},"headline":"Monitoring Logs","dateModified":"2022-08-04T18:38:35+00:00","datePublished":"2022-08-04T18:38:35+00:00","@context":"https://schema.org"} @@ -2249,6 +2249,38 @@ + + + + + + + + + + + + + + + + + +
  • Modding
  • + @@ -2265,6 +2297,8 @@ MENU + Waiting For Caller (WFC) » +
    @@ -2321,6 +2355,8 @@ « Updating + Waiting For Caller (WFC) » +