OS4 DepotLogo by Nickman 
(anonymous IP: 18.118.227.69,2194) 
 HomeRecentStatsSearchSubmitUploadsMirrorsContactInfoDisclaimerConfigAdmin
 Menu

 Features
   Crashlogs
   Bug tracker
   Locale browser
 

 Categories

   o Audio (343)
   o Datatype (51)
   o Demo (203)
   o Development (596)
   o Document (22)
   o Driver (97)
   o Emulation (147)
   o Game (1005)
   o Graphics (497)
   o Library (115)
   o Network (232)
   o Office (66)
   o Utility (924)
   o Video (69)

Total files: 4367

Full index file
Recent index file

 Links

  Amigans.net
  OpenAmiga
  Aminet
  IntuitionBase


Support the site


 Readme for:  Network » Chat » amigagpt.lha

AmigaGPT

Description: App for chatting to ChatGPT
Download: amigagpt.lha       (TIPS: Use the right click menu if your browser takes you back here all the time)
Size: 910kb
Version: 1.4.6
Date: 14 Apr 2024
Author: Cameron Armstrong (Nightfox)
Submitter: Samir Hawamdeh
Homepage: https://github.com/sacredbanana/AmigaGPT
Requirements: AmigaOS 4.x + AmiSSL 5.14 or higher
Category: network/chat
Replaces: network/chat/amigagpt.lha
License: Other
Distribute: yes
Min OS Version: 4.0
FileID: 12904
 
Videos:
Comments: 0
Snapshots: 0
Videos: 1
Downloads: 30  (Current version)
523  (Accumulated)
Votes: 3 (0/0)  (30 days/7 days)

Show comments Show snapshots Show videos Show content Show crashlogs Replace file 
AmigaGPT is a text generation program that runs on the classic AmigaOS.
Utilising the power of the OpenAI's GPT-3 and GPT-4 architectures, this program
brings state-of-the-art language modeling to your Amiga computer.

Features:
- Generates text based on input prompts
- UI customisation
- Full conversation history
- Text-to-speech

Requirements:
- OCS/ECS/AGA Amiga
- Motorola 68020 or higher CPU or PPC for AmigaOS 4.x
- AmigaOS 3.9 and AmigaOS 3.X (included in Amiga Forever) supported but
 3.2 or higher recommended. AmigaOS 4.1 version also included.
- AmiSSL 5.9 or higher (http://aminet.net/util/libs/AmiSSL-5.14-OS3.lha)
- Internet access using a TCP/IP stack such as Roadshow 
(http://roadshow.apc-tcp.de/index-en.php)
- An active OpenAI API key
- For speech on AmigaOS 3.x, any version of narrator.device
- For speech on AmigaOS 4.x, Flite Device
 (http://aminet.net/package/mus/misc/flite_device)

Installation:
1. Install AmiSSL and a TCP/IP stack if not already done so
2. Unpack the archive to a directory of your choice.
3. Run the Installer script included in the package.
4. Follow the prompts to complete the installation.

Optional steps to enable speech functionality:
AmigaGPT supports reading the output aloud. How AmigaGPT does this depends on
whether you are using AmigaOS 3.x or 4.x

AmigaOS 3.x:

Speech on AmigaOS 3.x requires a file called `narrator.device` which cannot be
included with AmigaGPT because it is still under copyright. 
Therefore, you must copy this file legally from yourWorkbench disks so that
AmigaGPT will be able to synthesise speech. 
There are 2 versions of `narrator.device`
supported, v34 and v37. 

v34 is the original version that came with Workbench 1.x. v37 was an updated
version included with Workbench 2.0.x. 
It has more features and sounds more natural, however it does sound quite
different which is why AmigaGPT supports you installing both versions and your
choice of version to be used can be selected in the Speech menu in the app.

Regardless of which version of `narrator.device` you choose to install
(or both), AmigaGPT requires that you install the free third party
`translator.library` v43. 
This works with both versions of `narrator.device`.

Installing `translator.library` v43:
Since `translator.library` v43 is not available as a standalone install, you
will need to install v42 and then patch it to v43.

* Download http://aminet.net/util/libs/translator42.lha and extract the archive
to any convenient location on your Amiga such as `RAM:`
* Navigate to that directory and double click the `Install` program
* Run the installer using all the default settings
* Download http://aminet.net/util/libs/Tran43pch.lha and once again extract it
to a location of your choice
* Navigate to that directory and double click the `Install` program
* Run the installer using all the default settings
* Reboot your Amiga - It will not work until the system is restarted

Installing `narrator.device` v34:
* Insert your Workbench 1.x disk and copy `df0:devs/narrator.device` to
 `{AmigaGPTProgramDirectory}/devs/speech/34`

Installing `narrator.device` v37
* Insert your Workbench 2.0.x (you cannot use 2.1 because the speech libraries
 were removed after version 2.0.4) disk and copy `df0:devs/narrator.device` to
`{AmigaGPTProgramDirectory}/devs/speech/37`

AmigaOS 4.x:

Speech on AmigaOS 4.x is done with the help of Flite Device.

- Download Flite Device from http://aminet.net/package/mus/misc/flite_device
- Extract the archive and run the installer

Launching AmigaGPT:
* Launch the application by double-clicking the AmigaGPT icon
* You may also launch the app in the command line but before you do, run the
command `STACK 20000` to give the program 20kb of stack since the default
 stack size for apps launched from the shell is 4kb and this is not enough for
 AmigaGPT and will cause random crashes due to stack overflow. This is not
 required when you launch the app by double clicking the icon since the stack
 size is saved in the icon.

Usage:
When launched, AmigaGPT presents you with a choice of opening the app in a new
screen or opening in Workbench. If you open in a new screen you have the ability
to create a screen for the app to open in. AmigaGPT supports anything from
320x200 all the way up to 4k resolution if using a video card for RTG.
Bear in mind text will appear very tiny in resolutions above 1080p so you may
want to increase the font size settings from the View menu when the app opens.

When launching for the first time you will need to enter your OpenAI API key
before you can start chatting. If you haven't already done so, create an OpenAI
account and navigate to https://platform.openai.com/account/api-keys to generate
an API key for use with AmigaGPT.
When the app has opened, you are presented with a text input box. You can type
any prompt into this box and press "Send" to see the GPT-4 model's response.
The generated text appears in the box above the input. You can choose to have
this text read aloud using the "Speech" menu option. You can also select which
model for OpenAI to use in the "OpenAI" menu option.

To the left of the chat box is a conversation list which you can use to go to
another saved conversation. New conversations can be created with the "New chat"
button and conversations can be removed with the "Delete chat" button.

In the "Edit" menu, you'll find basic text editing commands like Cut, Copy,
Paste and Clear. The "View" menu allows you to change the font used in the chat
and the UI.

The "Project" menu includes an "About" option, which displays information about
the program.

Developing:
Source code hosted at https://github.com/sacredbanana/AmigaGPT
You can either compile the code natively or with the Docker container.

------
Native
------

*Building the AmigaOS 3.x app*

If you would like to build this project from source you will need Bebbo's
amiga-gcc toolchain here https://github.com/bebbo/amiga-gcc

Once installed, get the required other SDK's from
https://github.com/sacredbanana/AmigaSDK-gcc and put these in your Amiga dev
environment created in the above step.

*Building the AmigaOS 4.x app*
Get this toolchain set up https://github.com/sba1/adtools

Once installed, get the required other SDK's from
https://github.com/sacredbanana/AmigaSDK-gcc and put these in your Amiga dev
environment created in the above step.

------
Docker
------

You may use an all-in-one Docker image that is able to compile both the AmigaOS
3.x and AmigaOS 4.x versions of the app.

Just install Docker on your machine and run the `build_os3.sh` or `build_os4.sh`
scripts depending on which version of the app you want to build. If you want to
perform a clean build, you can set the environment variable `CLEAN=1` for
example you can run `CLEAN=1 ./build_os3.sh`.

The build app will be saved to the `/out` directory.

Contributing:

We welcome contributions to AmigaGPT! If you have a bug to report, a feature to
suggest, or a change you'd like to make to the code, please open a new issue or
submit a pull request.

Contributors:

Code:
- Cameron Armstrong (sacredbanana/Nightfox)
 https://github.com/sacredbanana/

Art:
- Mauricio Sandoval - Icon design

Special Thanks:
- Bebbo for creating the Amiga GCC toolchain https://github.com/bebbo
- OpenAI for making this all possible https://openai.com
- EAB and everyone in it for answering my questions https://eab.abime.net/
- Hyperion Entertainment for bringing us AmigaOS 3.2
 https://www.hyperion-entertainment.com

Changelog:

------------------
1.4.6 (2024-04-13)
------------------

- Send button no longer appears in top left corner after closing a generated
  image for Amiga 3.X

------------------
1.4.5 (2024-04-06)
------------------
- Fixes the stack size calculation so it will no longer warn you that the stack
size is too small if it really isn't #12

------------------
1.4.4 (2024-03-23)
------------------
- Fixes a bug in chat mode in AmigaOS 3.X where the send button stays disabled
after an error occurs
- Change the stack size in the program .info file to the recommended 32768 bytes
- Fix bug where accents were not loaded properly resulting in the speech to
fail. If you get an error when generating speech, go to the menu and set the
accent again

------------------
1.4.3 (2024-03-07)
------------------
- Updated to the latest OpenAI chat models
- Fix crash when config.json doesn't exist
- Fix crash when selecting the root menu items
- Adjust screen colours to enhance visibility
- Improved error handling for connection errors
- Use a stack cookie to set minimum stack size to 32768 bytes (AmigaOS 3.1.4 or
higher required)
- Shows a warning if the stack size is smaller than 32768 bytes (AmigaOS 3 only)
- Send button no longer appears in corner of screen on image mode in 3.X after
an error message is dismissed

------------------
1.4.2 (2024-01-31)
------------------
- Replaced clicktabs for AmigaOS 3.X since the version is too old and will
crash. 3.X users can select the mode at startup.

------------------
1.4.1 (2024-01-20)
------------------
- Fixed bug where the prompt textbox remains in a readonly state when switching
from image mode to chat mode

------------------
1.4.0 (2024-01-20)
------------------
- AI image generation! Switch between chat and image generation mode by clicking
the tabs at the top of the screen
- Colour tweaks
- Status bar shows more information and colours
- About screen can now be dismissed with any key press or mouse click
- The OpenAI API key requester now populates with the existing key if it exists
so you can more easily find and fix typos in the key
- Added the ability to set the chat system (new "Chat System" menu item)
- Fix crash when having a conversation

------------------
1.3.1 (2023-12-02)
------------------
- Fix pasting into chat input textbox (AmigaOS 3.2 and AmigaOS 4.1 only for now)
- Remove trailing newline from user messages
- Enclose all user lines in asterisks to make bold
- Fix memory leak that was present in downloading responses from OpenAI

------------------
1.3.0 (2023-11-12)
------------------
- Native PPC version for AmigaOS 4.1
- Scrollbar works again
- Improve response handling from OpenAI preventing a crash
- Latest OpenAI models added

------------------
1.2.1 (2023-11-04)
------------------
- Now fully backwards compatible with Cloanto's AmigaOS 3.X (included in Amiga
Forever)

------------------
1.2.0 (2023-10-04)
------------------
- Now fully backwards compatible with AmigaOS 3.9

------------------
1.1.0 (2023-07-22)
------------------
- Now supports characters from Western languages other than English
- Blank responses from OpenAI no longer cause a crash

------------------
1.0.1 (2023-06-24)
------------------
- After setting UI font, the font is now applied fully without needing to
restart the app

----------------
1.0 (2023-06-17)
----------------
- Initial release


License:

--------
AmigaGPT
--------

MIT License

Copyright (c) 2023-2024 Cameron Armstrong

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is furnished
to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

--------------------
THIRD PARTY LICENSES
--------------------

------
json-c
------

Copyright (c) 2009-2012 Eric Haszlakiewicz

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

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

Copyright (c) 2004, 2005 Metaparadigm Pte Ltd

Permission is hereby granted, free of charge, to any person obtaining a copy of
this software and associated documentation files (the "Software"), to deal in
the Software without restriction, including without limitation the rights to
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
the Software, and to permit persons to whom the Software is furnished to do so,
subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-----
Flite
-----

Flite is free software.

We have kept the core code to BSD-like copyright, thus the system is free to use
in commercial products, with commercial extensions.  
GPLvcode is only included as part of the build process and does not taint any of
the run-time code.  

Note the PalmOS code uses BSD code that requires acknowledgements in any
distribution documentation.

As a collection it is distributed under the following license.  
Note a few files in this distribution have a different but equally free
non-conflicting licence, see below.

                  Language Technologies Institute                      
                     Carnegie Mellon University                        
                      Copyright (c) 1999-2008                          
                        All Rights Reserved.

/*  Permission is hereby granted, free of charge, to use and         */
/*  distribute this software and its documentation without           */
/*  restriction, including without limitation the rights to use,     */
/*  copy, modify, merge, publish, distribute, sublicense, and/or     */
/*  sell copies of this work, and to permit persons to whom this     */
/*  work is furnished to do so, subject to the following conditions: */
/*                                                                   */
/*    1. The code must retain the above copyright notice, this list  */
/*       of conditions and the following disclaimer.                 */
/*    2. Any modifications must be clearly marked as such.           */
/*    3. Original authors' names are not deleted.                    */
/*                                                                   */    
/*  NAGOYA INSTITUTE OF TECHNOLOGY, NARA INSTITUTE OF SCIENCE AND    */
/*  TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, AND THE CONTRIBUTORS TO  */
/*  THIS WORK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,  */
/*  INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, */
/*  IN NO EVENT SHALL NAGOYA INSTITUTE OF TECHNOLOGY, NARA           */
/*  INSTITUTE OF SCIENCE AND TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, */
/*  NOR THE CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR      */
/*  CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM   */
/*  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,  */
/*  NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN        */
/*  CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.         */
/*                                                                   */
/*********************************************************************/

These functions are derived from the versions in festvox/src/vc/ as modified by
Tomoki Toda which in turn contain code derived from NITECH's HTS system.  
Their copyright has the same freedoms as Flite's but under NAIST, NITECH and/or
CMU.

src/audio/au_wince.c
src/utils/cst_file_stdio.c
src/utils/cst_mmap_posix.c
src/utils/cst_mmap_win32.c
src/utils/cst_mmap_none.c
src/utils/cst_file_wince.c
sapi/
      are copyright Cepstral, LLC rather than CMU but fall under the same
      free licence as the above, except for the owner.

doc/alice
   Is the first two chapters of Alice in Wonderland as distributed by the
   Gutenburg project and is now in the public domain

src/regex/regexp.c
src/regex/regsub.c

 *      Copyright (c) 1986 by University of Toronto.
 *      Written by Henry Spencer.  Not derived from licensed software.
 *
 *      Permission is granted to anyone to use this software for any
 *      purpose on any computer system, and to redistribute it freely,
 *      subject to the following restrictions:
 *
 *      1. The author is not responsible for the consequences of use of
 *              this software, no matter how awful, even if they arise
 *              from defects in it.
 *
 *      2. The origin of this software must not be misrepresented, either
 *              by explicit claim or by omission.
 *
 *      3. Altered versions must be plainly marked as such, and must not
 *              be misrepresented as being the original software.

src/speech/rateconv.c

 *	Copyright (c) 1992, 1995 by Markus Mummert
 *
 *	Redistribution and use of this software, modifcation and inclusion
 *	into other forms of software are permitted provided that the following
 *	conditions are met:
 *
 *	1. Redistributions of this software must retain the above copyright
 *	   notice, this list of conditions and the following disclaimer.
 *	2. If this software is redistributed in a modified condition
 *	   it must reveal clearly that it has been modified.

lang/usenglish/us_durz_cart.c
lang/usenglish/us_durz_cart.h
lang/usenglish/us_int_accent_cart.c
lang/usenglish/us_int_accent_cart.h
lang/usenglish/us_int_tone_cart.c
lang/usenglish/us_int_tone_cart.h
lang/usenglish/us_phoneset.c
lang/usenglish/us_f0lr.c
   These are directly (or indirectly) compiled/derived from files that are
   part of the Festival Speech Synthesis System (1.4.1).  Hence they have
   a joint copyright CMU/Edinburgh but with the same free licence

configure
   # Copyright (C) 1992, 93, 94, 95, 96 Free Software Foundation, Inc.
   #
   # This configure script is free software; the Free Software Foundation
   # gives unlimited permission to copy, distribute and modify it.

configure.sub
config.guess
missing
install-sh
mkinstalldirs
   Copyright FSF, and under the GPL, these files are only used for
   convenient configuration and are not part of the generated binary,
   and therefore do not impose any GPL restrctions on the rest of the
   system.  But as they are standard methods for configuration they 
   are included.

palm/include/peal.h
palm/include/pealstub.h
palm/arm_flite/pealstub.c
palm/m68k_flite/peal.c

/**********
 * Copyright (c) 2004 Greg Parker.  All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *
 * THIS SOFTWARE IS PROVIDED BY GREG PARKER ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 **********/

The whole Sun Microsystems math library was ported to Palm for this but its not
actually needed, though the include file is to allow bits of the system to
compile that currently linked in to the system, so we just have the include file
here

palm/include/fdlibm.h

 * ====================================================
 * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
 *
 * Developed at SunSoft, a Sun Microsystems, Inc. business.
 * Permission to use, copy, modify, and distribute this
 * software is freely granted, provided that this notice 
 * is preserved.
 * ====================================================

------------
Flite Device
------------

/* Copyright (c) 2013 Fredrik Wikstrom. All rights reserved.
**
** Redistribution and use in source and binary forms, with or without
** modification, are permitted provided that the following conditions
** are met:
**
** 1. Redistributions of source code must retain the above copyright
**    notice, this list of conditions and the following disclaimer.
**
** 2. Redistributions in binary form must reproduce the above copyright
**    notice, this list of conditions and the following disclaimer in the
**    documentation and/or other materials provided with the distribution.
**
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS `AS IS'
** AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
** IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
** ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
** LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
** CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
** SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
** INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
** CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
** ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
** POSSIBILITY OF SUCH DAMAGE.
*/






Copyright © 2004-2024 by Björn Hagström All Rights Reserved