• Log InLog In
  • Register
Liquid`
Team Liquid Liquipedia
EDT 19:25
CEST 01:25
KST 08:25
  • Home
  • Forum
  • Calendar
  • Streams
  • Liquipedia
  • Features
  • Store
  • EPT
  • TL+
  • StarCraft 2
  • Brood War
  • Smash
  • Heroes
  • Counter-Strike
  • Overwatch
  • Liquibet
  • Fantasy StarCraft
  • TLPD
  • StarCraft 2
  • Brood War
  • Blogs
Forum Sidebar
Events/Features
News
Featured News
Power Rank - Esports World Cup 202530RSL Season 1 - Final Week8[ASL19] Finals Recap: Standing Tall15HomeStory Cup 27 - Info & Preview18Classic wins Code S Season 2 (2025)16
Community News
BSL Team Wars - Bonyth, Dewalt, Hawk & Sziky teams1Weekly Cups (July 14-20): Final Check-up0Esports World Cup 2025 - Brackets Revealed19Weekly Cups (July 7-13): Classic continues to roll8Team TLMC #5 - Submission re-extension4
StarCraft 2
General
Power Rank - Esports World Cup 2025 RSL Revival patreon money discussion thread The GOAT ranking of GOAT rankings Esports World Cup 2025 - Final Player Roster Why doesnt SC2 scene costream tournaments
Tourneys
Esports World Cup 2025 Sparkling Tuna Cup - Weekly Open Tournament Sea Duckling Open (Global, Bronze-Diamond) FEL Cracov 2025 (July 27) - $8000 live event RSL: Revival, a new crowdfunded tournament series
Strategy
How did i lose this ZvP, whats the proper response
Custom Maps
External Content
Mutation # 483 Kill Bot Wars Mutation # 482 Wheel of Misfortune Mutation # 481 Fear and Lava Mutation # 480 Moths to the Flame
Brood War
General
BSL Team Wars - Bonyth, Dewalt, Hawk & Sziky teams BW General Discussion BGH Auto Balance -> http://bghmmr.eu/ Flash Announces (and Retracts) Hiatus From ASL Corsair Pursuit Micro?
Tourneys
[Megathread] Daily Proleagues [BSL 2v2] ProLeague Season 3 - Friday 21:00 CET The Casual Games of the Week Thread BWCL Season 63 Announcement
Strategy
Simple Questions, Simple Answers I am doing this better than progamers do.
Other Games
General Games
Nintendo Switch Thread Stormgate/Frost Giant Megathread [MMORPG] Tree of Savior (Successor of Ragnarok) Path of Exile CCLP - Command & Conquer League Project
Dota 2
Official 'what is Dota anymore' discussion
League of Legends
Heroes of the Storm
Simple Questions, Simple Answers Heroes of the Storm 2.0
Hearthstone
Heroes of StarCraft mini-set
TL Mafia
TL Mafia Community Thread Vanilla Mini Mafia
Community
General
Things Aren’t Peaceful in Palestine US Politics Mega-thread Russo-Ukrainian War Thread The Games Industry And ATVI Stop Killing Games - European Citizens Initiative
Fan Clubs
SKT1 Classic Fan Club! Maru Fan Club
Media & Entertainment
[\m/] Heavy Metal Thread Anime Discussion Thread Movie Discussion! [Manga] One Piece Korean Music Discussion
Sports
2024 - 2025 Football Thread Formula 1 Discussion TeamLiquid Health and Fitness Initiative For 2023 NBA General Discussion
World Cup 2022
Tech Support
Computer Build, Upgrade & Buying Resource Thread
TL Community
The Automated Ban List
Blogs
Ping To Win? Pings And Their…
TrAiDoS
momentary artworks from des…
tankgirl
from making sc maps to makin…
Husyelt
StarCraft improvement
iopq
Socialism Anyone?
GreenHorizons
Customize Sidebar...

Website Feedback

Closed Threads



Active: 605 users

Coach AI has arrived !

Forum Index > Closed
Post a Reply
1 2 3 4 Next All
Moataz
Profile Joined January 2018
Egypt267 Posts
Last Edited: 2018-11-07 12:42:07
April 22 2018 11:38 GMT
#1
==================
Coach AI has arrived !
==================

This simple BWAPI-AI/UDAI (User defined AI) is not designed to compete with another UDAI or human, instead its made to help me/newbie/intermediate/advanced/top players to test and sense and remember things that aren't easy/possible before.

Note: This works only with v1.16.1 using ChaosLauncher, it also works with ICCUP, you'll even get the win points, it wouldn't be a cheat but rather a declared treachery, but if one of the players is Computer, ICCUP server won't log the game.

========================================
List of features this helper UDAI currently has:
========================================
  • RealTime track of the number of workers assigned to Minerals and same for Gas.
  • RealTime track of the number of killed enemies.
  • Customizable notification sound and period when worker production stopped (1s), idle worker exist (5s) or you've missed multitasking (10s).
  • RealTime track of the number & type of idle production buildings, and warning when one idle for 10s (for Zerg, only the number of Larvae displayed).
  • RealTime track of the number & type of idle fighting units (only non-worker units that canAttackMove: HT, Siege-Mode Tank, Lurker cannot, Medics can !, also note that Hold position units aren't idle), and warning when one idle for 20s.
  • RealTime intel about all current enemies.
  • RealTime track of the number until supplies blocked and the number of supply units needed to max army.
  • autoTrainWorkers which train 1 worker @time from each base until 50 workers exist (for Zerg only 1 Hatchery is used for producing).
  • autoMine makes workers gather Minerals/Gas automatically like in SC2, so there is no idle worker.
  • autoBuildSuppliesBeforeBlocked when its 6 from being blocked (for Zerg only 1 Hatchery is used for producing), to disable it you can set this value to something like -200.
  • Detecting the game speed, by just looking at the FPS value: 24=Fastest, 21=Faster, 18=Fast, 15=Normal, etc..
  • Prevent the player from queuing 3 units from the same production building.
  • AnyRace_CoachAI.json:
    Allows the player to modify/disable/enable many values, also this config file can display a text block that appear constantly during the game (most of us might forget what was planned before the game, so a written BO and tips on the game screen might be a good practice for memory).
  • Message shortcuts the player can input and UDAI can understand:
    c1="show me the money", c2="black sheep wall", c3="operation cwal", c4="power overwhelming", c5="staying alive", c6="there is no cow level".
    UDAI=only in multiplayer (ICCUP/LAN) to acknowledge superiority from the non-CoachAI player, and that the CoachAI-player is not cheating by having intel about him.
  • RealTime track and record of the Macro actions build/train/upgrade and its time (the MacroLog).
  • Hotkeys tracker/counter to encourage more actions (more APM).
  • New hotkeys:
    F5=Toggle between the display of the MacroLog & the Hotkeys tracker/counter. Up,Down=Scroll through the MacroLog when more than one page exists.
    While on the Hotkeys tracker screen, you can press Control to display more of the enemies killed, Shift to briefly look at the multitask measures.
    F6=Displays units/buildings info, toggle the display mode of in progress units/buildings.
    F7=Switches between the preset game plans.
    F8=Switches between the current enemies infos, and also drawing the selected enemy army in the dark/fog, also pressing Shift toggles the display mode.
    F9=Finds the idle workers (similar to SC2).
    F11=Displays some walling tips.
  • Game info is drawn even when the game is paused.
  • Multitasking++:
    + Show Spoiler +
    Screen Multitasking:
    • A counter for each screen you step into, with total jumps during the game, the average stay @1 screen, the total stay on each screen for above 5s (customizable live, by editing totalTimeOnScreenOrSelectionAbove) and finally, a customizable notification sound when you stay @1 screen for above 10s (customizable live, by editing sameScreenOrSelectionWarningEvery).

    Selection Multitasking:
    • A counter for each selection you select, with total switches during the game, the average focus @1 selection, the total focus on each selection for above 5s (customizable live, by editing totalTimeOnScreenOrSelectionAbove) and finally, a customizable notification sound when you focus @1 selection for above 10s (customizable live, by editing sameScreenOrSelectionWarningEvery).

  • WorkersCut log (only 2+ seconds cut is calculated): to see when exactly in the game you've stopped making workers and for how long (I personally record my screen to see what I was doing, because replay is not always an option).
  • Prevent making more workers after the default 9 min (to punish the player who doesn't make the ideal amount of workers early on), ofc you can change this default 9 min in the config file (workersProductionStoppedDuring).
  • Custom countdownTimer: just like seen in some missions, but you can use it in any map to practice/polish specific task/timing, when the timer ends the game will too, you can set the countdownTimer to whatever value you like (in seconds), it works whether its a game start or a saved game, use the "dontDrift" value in the config file to change it.
============================
Features on both game and replay:
============================
  • RealTime track of the number/type of units/buildings and also the ones in progress, and the remaining build time for each one in progress, also the remaining time for each Tech/Upgrade in progress.
  • The most accurate RealTime measure of Macro train/build/upgrade (Terran repairs not accounted), because most people tend to measure it just by the used supplies at specific time or by inaccurate replay analysis tools, on replay you can know @any second who is the best Macro player (same as the score screen you see at the end of game/replay).
  • Buildings that has Rally Point will draw a line to the RP.
  • Displaying the number of mineral workers on each Nexus/CC/Hatchery.
  • Displaying buildings gaps values and ground units sizes, for quick and easy reference to better walling (activated by pressing F11).
  • Minerals Above measure that counts the time of being above 250/500/750/1000 minerals.
  • Workers production stopped measure (Workers Cut), counts the time that Nexus/CC has been idle, if you have 2 bases the counter will be doubled, 3 -> tripled, etc.., it works for P & T, not Z, the default period for counting is the 1st 9m (540s), you can modify this by editing workersProductionStoppedDuring value in the .json file.
  • Idle Workers measure displays the number of idle workers, and the total lost time (as with Workers Cut, this increase when there is more Idle Workers).
  • Showing how many unit/building has been lost during the game/replay (just select one of the same type).
===================
Features on replay only:
===================
  • Showing the replay duration beforehand, and also the replay name, date, game title, game type and the map used.
  • Easily distinguishing which players against which players on team replays, (even SC:R doesn't has this !, maybe time to write some code lazy Blizzard ?)
  • During team replays showing if playerX allied with playerY, and if playerY also did the same.
  • RealTime track of taken tech & upgrades (you need to select any player's unit to display the infos, you'll find the Minerals Above counter with the same color as the selected player).
  • For understanding replays better, RealTime track of each unit order and drawing a line to the order target if there is a target.
  • Display each player BO on replay, how the log works ?.
  • Automatically highlight idle workers.
  • Displaying live score of produced/killed/lost units/buildings, to get the current state of players, this is about unit/building control (more close to micro, same as the score screen you see at the end of game/replay).
  • Recording the max number of idle workers of each player, and when that happened.
  • The screen will automatically move to where a Nuclear launch, Comsat scan or Storm is positioned.
  • An intuitive/easier way to toggle vision of the selected player (and his allies) by pressing F7 (SCR requires that you blind ALL other players individually to get the vision of 1 player which is not smart, here we just need to select a player/or 1 of his allies to see the required vision).
  • You can ask the CoachAI questions like:
    Who wins? (or just "?"), How old r u?, r u male/female, who won the latest world cup?
    I'm kidding, he'll only answer the 1st 1.
Default/editable values:
==================
  • "autoTrainWorkers": true
  • "autoMine": false
  • "autoBuildSuppliesBeforeBlocked": 6
  • "maxWorkers": 50
  • "maxProductionBuildingQueue": 2
  • "totalTimeOnScreenOrSelectionAbove": 5

  • "sameScreenOrSelectionWarningEvery": 10
  • "workerCutWarningEvery": 1
  • "idleWorkerWarningEvery": 5
  • "idleProductionBuildingWarningEvery": 10
  • "idleFightingUnitWarningEvery": 20

  • "workersProductionStoppedDuring": 540
  • "logWorkersAndSupplyProduction": true
  • "logUnitsProduction": true
  • "replayLogUnitsFor": 420
  • "replayLogSupplyFor": 40

  • "dontDrift": -1
Screen shots:
===========
[image loading]
[image loading]
[image loading]
[image loading]
[image loading]
[image loading]
[image loading]
[image loading]
[image loading]

Installation:
=========
  • Extract the .7z file contents from this topic to SC v1.16.1 folder.
  • Extract CoachAI.zip contents to StarCraft\bwapi-data folder.
  • Watch 1m from this video, but change the AI from Protoss_McRave.dll to AnyRace_CoachAI.dll.
Download
c++ source code

Known bugs:
+ Show Spoiler +
- When hotkeyed unit(s)/building lost, it still appear as valid on the Hotkeys tracker.


Thanks:
+ Show Spoiler +
- BWAPI-AIs devs @ https://discord.gg/XGy52Q, specially @N00byEdge, @PurpleWave
- CoachAI also depend slightly on https://github.com/icza/screp
"All who believe in Allah and the last day, either say good or be silent." Muhammad
L_Master
Profile Blog Joined April 2009
United States8017 Posts
April 22 2018 18:08 GMT
#2
Interesting idea, could definitely see this being a nice cue for newer players.
EffOrt and Soulkey Hwaiting!
Moataz
Profile Joined January 2018
Egypt267 Posts
Last Edited: 2018-04-24 00:09:21
April 24 2018 00:04 GMT
#3
On April 23 2018 03:08 L_Master wrote:
Interesting idea, could definitely see this being a nice cue for newer players.

In every game, even top gamers forget things (like an idle worker here or there, maybe 5 workers !), so its not for newer players.
Did you try it, or just read the description ?
"All who believe in Allah and the last day, either say good or be silent." Muhammad
BisuDagger
Profile Blog Joined October 2009
Bisutopia19231 Posts
April 24 2018 01:31 GMT
#4
On April 24 2018 09:04 Moataz wrote:
Show nested quote +
On April 23 2018 03:08 L_Master wrote:
Interesting idea, could definitely see this being a nice cue for newer players.

In every game, even top gamers forget things (like an idle worker here or there, maybe 5 workers !), so its not for newer players.
Did you try it, or just read the description ?

I'd argue that top players are intentionally leaving workers idle in mid to late game. They strategically spend their apm on more important actions such as micro on units, defending and attacking, managing drops etc. Pros are generally aware that they macrod up a few workers and get to them a few minutes late without it being a big deal.
ModeratorFormer Afreeca Starleague Caster: http://afreeca.tv/ASL2ENG2
Golgotha
Profile Blog Joined January 2011
Korea (South)8418 Posts
April 24 2018 04:07 GMT
#5
Awesome stuff. I remember there was something similar back in the day. It didn't do as much as this, but it had build order helper. Can you add that?
Moataz
Profile Joined January 2018
Egypt267 Posts
Last Edited: 2018-07-20 01:04:05
April 24 2018 07:26 GMT
#6
On April 24 2018 10:31 BisuDagger wrote:
Show nested quote +
On April 24 2018 09:04 Moataz wrote:
On April 23 2018 03:08 L_Master wrote:
Interesting idea, could definitely see this being a nice cue for newer players.

In every game, even top gamers forget things (like an idle worker here or there, maybe 5 workers !), so its not for newer players.
Did you try it, or just read the description ?

I'd argue that top players are intentionally leaving workers idle in mid to late game. They strategically spend their apm on more important actions such as micro on units, defending and attacking, managing drops etc. Pros are generally aware that they macrod up a few workers and get to them a few minutes late without it being a big deal.

I'm not saying intentionally, of course they were busy, (Best has 7 idle workers from 3 bases @7:09 in this replay), but won the game.

Edit: sometimes they don't even know that they have idle one, or they don't know how to find them easily, also 11 idle workers from 3 bases @9:31 from the same replay.
On April 24 2018 13:07 Golgotha wrote:
Awesome stuff. I remember there was something similar back in the day. It didn't do as much as this, but it had build order helper. Can you add that?

You mean that, the link is dead, but that was a little different it was only for replays. I'll add a config file that do as in the ToDo, Is that what you mean ?
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Golgotha
Profile Blog Joined January 2011
Korea (South)8418 Posts
April 24 2018 08:09 GMT
#7
On April 24 2018 16:26 Moataz wrote:
Show nested quote +
On April 24 2018 10:31 BisuDagger wrote:
On April 24 2018 09:04 Moataz wrote:
On April 23 2018 03:08 L_Master wrote:
Interesting idea, could definitely see this being a nice cue for newer players.

In every game, even top gamers forget things (like an idle worker here or there, maybe 5 workers !), so its not for newer players.
Did you try it, or just read the description ?

I'd argue that top players are intentionally leaving workers idle in mid to late game. They strategically spend their apm on more important actions such as micro on units, defending and attacking, managing drops etc. Pros are generally aware that they macrod up a few workers and get to them a few minutes late without it being a big deal.

I'm not saying intentionally, of course they were busy, (Best has 7 idle workers from 3 bases @7:09 in this replay), but won the game.
Show nested quote +
On April 24 2018 13:07 Golgotha wrote:
Awesome stuff. I remember there was something similar back in the day. It didn't do as much as this, but it had build order helper. Can you add that?

You mean that, the link is dead, but that was a little different it was only for replays. I'll add a config file that do as in the ToDo, Is that what you mean ?


I remember something else. not just BO in the replay. but this old yoda program that supposedly allowed you to follow a BO on-screen. it's not that important but I thought that was cool and useful for fresh players. cant find the site. that site had a bunch of tools.
Moataz
Profile Joined January 2018
Egypt267 Posts
Last Edited: 2018-04-24 17:10:13
April 24 2018 17:09 GMT
#8
Few days, and the config file will be capable of that and more.
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Moataz
Profile Joined January 2018
Egypt267 Posts
April 28 2018 04:58 GMT
#9
Updated to v2.0
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Sheridan
Profile Joined October 2016
60 Posts
April 28 2018 09:29 GMT
#10
Wow, a built in text display that is customizable. crazy. can you use that during a ranked match? that would help new folks so much. and having it customizable to show what you need...can't believe it. it's kinda like the build order helper someone created for SC2.
Moataz
Profile Joined January 2018
Egypt267 Posts
April 29 2018 15:10 GMT
#11
I don't think you'll get points by making BWAPI AI play instead of you, but sure can be used in ICCUP/LAN.
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Moataz
Profile Joined January 2018
Egypt267 Posts
May 02 2018 10:51 GMT
#12
Updated to v2.5
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Golgotha
Profile Blog Joined January 2011
Korea (South)8418 Posts
Last Edited: 2018-05-02 13:58:52
May 02 2018 13:57 GMT
#13
Moataz, can the BO text be used on SC:R ladder? or would it be stopped by anti-hack? these tools are great for newcomers and struggling players, but it would b nice if we could have them on ladder and not just on iccup. btw your work is underrated bro. amazing stuff.
Moataz
Profile Joined January 2018
Egypt267 Posts
May 03 2018 14:19 GMT
#14
Thanks Golgotha, no problem I'm not a Royal Family Member here, or having liquipedia access !.
Unfortunately BWAPI AIs doesn't even work with v1.18+, I'm not sure if they are going to make SC:R support BWAPI as they've said.
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Moataz
Profile Joined January 2018
Egypt267 Posts
May 06 2018 08:18 GMT
#15
================
Upcoming features:
================
- RealTime track of the number & type of units/buildings and also the ones in progress.
- Detecting the game speed, by just looking at the FPS value: 24=Fastest, 21=Faster, 18=Fast, etc..
- Applying the macro measure to replays: @1v1/BGH/Teams replays you can know @any second, which one is the best Macro player, and no, you can't get it by looking @his used supplies.
- Workers production stopped for: works for P & T, not Z. This calculates the seconds in which each Nexus/CC has been idle (workers cut), with the ability to customize this calculation for only the 1st specified minutes.
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Moataz
Profile Joined January 2018
Egypt267 Posts
May 08 2018 13:08 GMT
#16
Updated to v2.8
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Moataz
Profile Joined January 2018
Egypt267 Posts
May 16 2018 13:03 GMT
#17
Updated to v2.8.1
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Moataz
Profile Joined January 2018
Egypt267 Posts
May 27 2018 00:11 GMT
#18
Updated to v2.9
"All who believe in Allah and the last day, either say good or be silent." Muhammad
Gorgonoth
Profile Joined August 2017
United States468 Posts
May 27 2018 01:16 GMT
#19
I miss the old graphics looking that nice
Moataz
Profile Joined January 2018
Egypt267 Posts
May 27 2018 10:30 GMT
#20
You mean compared to SC:R, I'm glad I don't use SC:R at all.
"All who believe in Allah and the last day, either say good or be silent." Muhammad
1 2 3 4 Next All
Please log in or register to reply.
Live Events Refresh
Next event in 10h 36m
[ Submit Event ]
Live Streams
Refresh
StarCraft 2
Liquid`TLO 218
Nathanias 207
StarCraft: Brood War
Hyuk 660
NaDa 60
Aegong 51
League of Legends
Dendi1088
syndereN210
Counter-Strike
Fnx 1618
flusha418
Super Smash Bros
AZ_Axe71
Other Games
tarik_tv8702
Grubby2636
FrodaN1802
Day[9].tv542
shahzam338
C9.Mang0281
Maynarde141
ViBE135
Livibee101
Liquid`Ken15
rubinoeu4
Organizations
Other Games
gamesdonequick945
BasetradeTV25
StarCraft 2
Blizzard YouTube
StarCraft: Brood War
BSLTrovo
sctven
[ Show 17 non-featured ]
StarCraft 2
• RyuSc2 40
• IndyKCrew
• sooper7s
• AfreecaTV YouTube
• Migwel
• intothetv
• LaughNgamezSOOP
• Kozan
StarCraft: Brood War
• Diggity18
• STPLYoutube
• ZZZeroYoutube
• BSLYoutube
Dota 2
• masondota22328
League of Legends
• Doublelift4438
Other Games
• imaqtpie1493
• Scarra1179
• Day9tv542
Upcoming Events
Esports World Cup
10h 36m
ByuN vs Zoun
SHIN vs TriGGeR
Cyan vs ShoWTimE
Rogue vs HeRoMaRinE
Clem vs Solar
Reynor vs Maru
herO vs Cure
Serral vs Classic
Esports World Cup
1d 10h
Esports World Cup
2 days
CranKy Ducklings
3 days
BSL20 Non-Korean Champi…
3 days
CSO Cup
3 days
BSL20 Non-Korean Champi…
3 days
Bonyth vs Sziky
Dewalt vs Hawk
Hawk vs QiaoGege
Sziky vs Dewalt
Mihu vs Bonyth
Zhanhun vs QiaoGege
QiaoGege vs Fengzi
FEL
4 days
BSL20 Non-Korean Champi…
4 days
BSL20 Non-Korean Champi…
4 days
Bonyth vs Zhanhun
Dewalt vs Mihu
Hawk vs Sziky
Sziky vs QiaoGege
Mihu vs Hawk
Zhanhun vs Dewalt
Fengzi vs Bonyth
[ Show More ]
Sparkling Tuna Cup
6 days
Online Event
6 days
Liquipedia Results

Completed

CSL Xiamen Invitational
Championship of Russia 2025
Murky Cup #2

Ongoing

Copa Latinoamericana 4
Jiahua Invitational
BSL20 Non-Korean Championship
Esports World Cup 2025
CC Div. A S7
Underdog Cup #2
FISSURE Playground #1
BLAST.tv Austin Major 2025
ESL Impact League Season 7
IEM Dallas 2025
PGL Astana 2025
Asian Champions League '25

Upcoming

CSLPRO Last Chance 2025
CSLPRO Chat StarLAN 3
BSL Season 21
RSL Revival: Season 2
SEL Season 2 Championship
uThermal 2v2 Main Event
FEL Cracov 2025
HCC Europe
ESL Pro League S22
StarSeries Fall 2025
FISSURE Playground #2
BLAST Open Fall 2025
BLAST Open Fall Qual
Esports World Cup 2025
BLAST Bounty Fall 2025
BLAST Bounty Fall Qual
IEM Cologne 2025
TLPD

1. ByuN
2. TY
3. Dark
4. Solar
5. Stats
6. Nerchio
7. sOs
8. soO
9. INnoVation
10. Elazer
1. Rain
2. Flash
3. EffOrt
4. Last
5. Bisu
6. Soulkey
7. Mini
8. Sharp
Sidebar Settings...

Advertising | Privacy Policy | Terms Of Use | Contact Us

Original banner artwork: Jim Warren
The contents of this webpage are copyright © 2025 TLnet. All Rights Reserved.