Copy disabled (too large)
Download .txt
Showing preview only (12,488K chars total). Download the full file to get everything.
Repository: frandallfarmer/neohabitat
Branch: master
Commit: ad83a2208b32
Files: 3061
Total size: 11.4 MB
Directory structure:
gitextract_jl17cbj0/
├── .claude/
│ └── skills/
│ └── habitat/
│ └── SKILL.md
├── .dockerignore
├── .gitattributes
├── .gitignore
├── .travis.yml
├── Dockerfile
├── LICENSE
├── PROTOCOL.md
├── README-RealC64.md
├── README.md
├── astroturf/
│ ├── app.py
│ ├── astroturf.py
│ ├── custom_escapes_table.yml
│ └── popustop/
│ ├── afront1.json
│ ├── afront2.json
│ ├── afront3.json
│ ├── aprominade2.json
│ ├── basement.json
│ ├── bboard.json
│ ├── elby.json
│ ├── elby1000.json
│ ├── elevator1.json
│ ├── hall1.json
│ ├── hall11000.json
│ ├── hall2.json
│ ├── hall21000.json
│ ├── hall3.json
│ ├── hall31000.json
│ ├── hall4.json
│ ├── hall41000.json
│ ├── lobby.json
│ ├── popustop.i
│ ├── roof.json
│ ├── stairs.json
│ ├── turf1.json
│ ├── turf10.json
│ ├── turf2.json
│ ├── turf3.json
│ ├── turf4.json
│ ├── turf5.json
│ ├── turf6.json
│ ├── turf7.json
│ ├── turf8.json
│ └── turf9.json
├── bootstrap
├── bridge/
│ ├── .gitignore
│ ├── Habitat2ElkoBridge.js
│ ├── defaults.elko
│ ├── hcode.js
│ ├── package.json
│ └── run
├── data/
│ └── .gitignore
├── db/
│ ├── .gitignore
│ ├── Back4t/
│ │ ├── back4t_01.json
│ │ ├── back4t_02.json
│ │ ├── back4t_03.json
│ │ ├── back4t_04.json
│ │ ├── back4t_05.json
│ │ ├── back4t_11.json
│ │ ├── back4t_12.json
│ │ ├── back4t_13.json
│ │ ├── back4t_14.json
│ │ ├── back4t_15.json
│ │ ├── back4t_20.json
│ │ ├── back4t_21.json
│ │ ├── back4t_22.json
│ │ ├── back4t_23.json
│ │ ├── back4t_24.json
│ │ ├── back4t_25.json
│ │ ├── back4t_30.json
│ │ ├── back4t_31.json
│ │ ├── back4t_32.json
│ │ ├── back4t_33.json
│ │ ├── back4t_34.json
│ │ ├── back4t_35.json
│ │ ├── back4t_41.json
│ │ ├── back4t_42.json
│ │ ├── back4t_43.json
│ │ ├── back4t_44.json
│ │ ├── back4t_45.json
│ │ ├── back4t_51.json
│ │ ├── back4t_52.json
│ │ ├── back4t_53.json
│ │ ├── back4t_54.json
│ │ ├── back4t_55.json
│ │ ├── back4t_56.json
│ │ ├── back4t_61.json
│ │ ├── back4t_62.json
│ │ ├── back4t_63.json
│ │ ├── back4t_64.json
│ │ ├── back4t_65.json
│ │ ├── back4t_71.json
│ │ ├── back4t_72.json
│ │ ├── back4t_73.json
│ │ ├── back4t_74.json
│ │ └── back4t_75.json
│ ├── Backroom/
│ │ ├── TBD_Sign.json.fragment
│ │ ├── context-frontyard.json
│ │ ├── context-hall.json
│ │ ├── context-library.json
│ │ ├── context-simple.json
│ │ ├── context-staging.json
│ │ ├── context-steve1.json
│ │ ├── context-steve2.json
│ │ ├── context-table.json
│ │ ├── context-test.json
│ │ ├── context-turf.json
│ │ └── context-vendo.json
│ ├── Beach/
│ │ ├── beach_0a.json
│ │ ├── beach_0b.json
│ │ ├── beach_0c.json
│ │ ├── beach_0d.json
│ │ ├── beach_0e.json
│ │ ├── beach_0f.json
│ │ ├── beach_1a.json
│ │ ├── beach_1b.json
│ │ ├── beach_1c.json
│ │ ├── beach_1d.json
│ │ ├── beach_1e.json
│ │ ├── beach_1f.json
│ │ ├── beach_1g.json
│ │ ├── beach_2a.json
│ │ ├── beach_2b.json
│ │ ├── beach_2c.json
│ │ ├── beach_2d.json
│ │ ├── beach_2e.json
│ │ └── beach_2f.json
│ ├── Capture_flag/
│ │ ├── CTF_6405.json
│ │ ├── CTF_7000.json
│ │ ├── CTF_7001.json
│ │ ├── CTF_7002.json
│ │ ├── CTF_7003.json
│ │ ├── CTF_7004.json
│ │ ├── CTF_7010.json
│ │ ├── CTF_7011.json
│ │ ├── CTF_7012.json
│ │ ├── CTF_7013.json
│ │ ├── CTF_7014.json
│ │ ├── CTF_7015.json
│ │ ├── CTF_7016.json
│ │ ├── CTF_7017.json
│ │ ├── CTF_7018.json
│ │ ├── CTF_7019.json
│ │ └── CTF_7020.json
│ ├── Desert/
│ │ ├── Desert_1a.json
│ │ ├── Desert_1b.json
│ │ ├── Desert_1c.json
│ │ ├── Desert_1d.json
│ │ ├── Desert_1e.json
│ │ ├── Desert_1f.json
│ │ ├── Desert_2a.json
│ │ ├── Desert_2b.json
│ │ ├── Desert_2c.json
│ │ ├── Desert_2d.json
│ │ ├── Desert_2e.json
│ │ ├── Desert_2f.json
│ │ ├── Desert_3a.json
│ │ ├── Desert_3b.json
│ │ ├── Desert_3c.json
│ │ ├── Desert_3d.json
│ │ ├── Desert_3e.json
│ │ ├── Desert_3f.json
│ │ ├── Desert_4a.json
│ │ ├── Desert_4b.json
│ │ ├── Desert_4c.json
│ │ ├── Desert_4d.json
│ │ ├── Desert_4e.json
│ │ ├── Desert_4f.json
│ │ ├── Desert_5a.json
│ │ ├── Desert_5b.json
│ │ ├── Desert_5c.json
│ │ ├── Desert_5d.json
│ │ ├── Desert_5e.json
│ │ └── Desert_5f.json
│ ├── Dnalsi/
│ │ ├── dnalsi_02.json
│ │ ├── dnalsi_03.json
│ │ ├── dnalsi_04.json
│ │ ├── dnalsi_05.json
│ │ ├── dnalsi_08.json
│ │ ├── dnalsi_09.json
│ │ ├── dnalsi_0a.json
│ │ ├── dnalsi_11.json
│ │ ├── dnalsi_12.json
│ │ ├── dnalsi_15.json
│ │ ├── dnalsi_18.json
│ │ ├── dnalsi_19.json
│ │ ├── dnalsi_1a.json
│ │ ├── dnalsi_1b.json
│ │ ├── dnalsi_1c.json
│ │ ├── dnalsi_1d.json
│ │ ├── dnalsi_21.json
│ │ ├── dnalsi_25.json
│ │ ├── dnalsi_26.json
│ │ ├── dnalsi_28.json
│ │ ├── dnalsi_29.json
│ │ ├── dnalsi_2a.json
│ │ ├── dnalsi_2b.json
│ │ ├── dnalsi_2c.json
│ │ ├── dnalsi_2d.json
│ │ ├── dnalsi_30.json
│ │ ├── dnalsi_31.json
│ │ ├── dnalsi_36.json
│ │ ├── dnalsi_37.json
│ │ ├── dnalsi_38.json
│ │ ├── dnalsi_39.json
│ │ ├── dnalsi_3a.json
│ │ ├── dnalsi_3b.json
│ │ ├── dnalsi_3c.json
│ │ ├── dnalsi_3d.json
│ │ ├── dnalsi_40.json
│ │ ├── dnalsi_47.json
│ │ ├── dnalsi_48.json
│ │ ├── dnalsi_49.json
│ │ ├── dnalsi_4a.json
│ │ ├── dnalsi_4b.json
│ │ ├── dnalsi_4c.json
│ │ ├── dnalsi_50.json
│ │ ├── dnalsi_57.json
│ │ ├── dnalsi_58.json
│ │ ├── dnalsi_59.json
│ │ ├── dnalsi_5a.json
│ │ ├── dnalsi_5b.json
│ │ ├── dnalsi_5c.json
│ │ ├── dnalsi_60.json
│ │ ├── dnalsi_61.json
│ │ ├── dnalsi_62.json
│ │ ├── dnalsi_63.json
│ │ ├── dnalsi_64.json
│ │ ├── dnalsi_65.json
│ │ ├── dnalsi_66.json
│ │ ├── dnalsi_67.json
│ │ ├── dnalsi_68.json
│ │ ├── dnalsi_69.json
│ │ ├── dnalsi_6a.json
│ │ ├── dnalsi_6b.json
│ │ ├── dnalsi_6c.json
│ │ ├── dnalsi_71.json
│ │ ├── dnalsi_72.json
│ │ ├── dnalsi_73.json
│ │ ├── dnalsi_74.json
│ │ ├── dnalsi_75.json
│ │ ├── dnalsi_76.json
│ │ ├── dnalsi_78.json
│ │ ├── dnalsi_79.json
│ │ ├── dnalsi_7a.json
│ │ ├── dnalsi_7b.json
│ │ ├── dnalsi_7c.json
│ │ ├── dnalsi_82.json
│ │ ├── dnalsi_83.json
│ │ ├── dnalsi_84.json
│ │ ├── dnalsi_85.json
│ │ ├── dnalsi_92.json
│ │ ├── dnalsi_93.json
│ │ ├── dnalsi_94.json
│ │ ├── dnalsi_cave1_0a.json
│ │ ├── dnalsi_cave1_0b.json
│ │ ├── dnalsi_cave1_1a.json
│ │ ├── dnalsi_cave1_1b.json
│ │ ├── dnalsi_cave2_0c.json
│ │ ├── dnalsi_cave2_0d.json
│ │ ├── dnalsi_cave2_1a.json
│ │ ├── dnalsi_cave2_1b.json
│ │ ├── dnalsi_cave2_1c.json
│ │ ├── dnalsi_cave2_1d.json
│ │ ├── dnalsi_cave2_1e.json
│ │ ├── dnalsi_cave2_2a.json
│ │ ├── dnalsi_cave2_2b.json
│ │ ├── dnalsi_cave2_2c.json
│ │ ├── dnalsi_cave2_2d.json
│ │ ├── dnalsi_cave2_2e.json
│ │ ├── dnalsi_cave2_3a.json
│ │ ├── dnalsi_cave3_0c.json
│ │ ├── dnalsi_cave3_1a.json
│ │ ├── dnalsi_cave3_1c.json
│ │ ├── dnalsi_cave3_2a.json
│ │ ├── dnalsi_cave3_2b.json
│ │ ├── dnalsi_cave3_2c.json
│ │ └── dnalsi_cave3_3c.json
│ ├── Empty/
│ │ └── context-empty.json
│ ├── HabitatDocuments.html
│ ├── Hatchery/
│ │ └── hatchery.json
│ ├── Hell/
│ │ └── hell_1a.json
│ ├── I5/
│ │ ├── I5_1310.json
│ │ ├── I5_7200.json
│ │ ├── I5_7201.json
│ │ ├── I5_7202.json
│ │ ├── I5_7203.json
│ │ ├── I5_7204.json
│ │ ├── I5_7205.json
│ │ ├── I5_7206.json
│ │ ├── I5_7207.json
│ │ ├── I5_7208.json
│ │ ├── I5_7209.json
│ │ └── I5_7210.json
│ ├── Makefile
│ ├── Popustop/
│ │ ├── 136.elby.line54.json
│ │ ├── 136.elby.line56.json
│ │ ├── 144.elby.line154.json
│ │ ├── 144.elby.line156.json
│ │ ├── 152.elby.line254.json
│ │ ├── 152.elby.line256.json
│ │ ├── 160.elby.line354.json
│ │ ├── 160.elby.line356.json
│ │ ├── 168.elby.line454.json
│ │ ├── 168.elby.line456.json
│ │ ├── 184.elby.line554.json
│ │ ├── 184.elby.line556.json
│ │ ├── 192.elby.line654.json
│ │ ├── 192.elby.line656.json
│ │ ├── 200.elby.line754.json
│ │ ├── 200.elby.line756.json
│ │ ├── 216.elby.line854.json
│ │ ├── 216.elby.line856.json
│ │ ├── 224.elby1000.line954.json
│ │ ├── 224.elby1000.line956.json
│ │ ├── 232.elby1000.line1054.json
│ │ ├── 232.elby1000.line1056.json
│ │ ├── Popustop.100.json
│ │ ├── Popustop.1000.json
│ │ ├── Popustop.1001.json
│ │ ├── Popustop.1002.json
│ │ ├── Popustop.1003.json
│ │ ├── Popustop.1004.json
│ │ ├── Popustop.1005.json
│ │ ├── Popustop.1006.json
│ │ ├── Popustop.1007.json
│ │ ├── Popustop.1008.json
│ │ ├── Popustop.1009.json
│ │ ├── Popustop.101.json
│ │ ├── Popustop.1010.json
│ │ ├── Popustop.1011.json
│ │ ├── Popustop.1012.json
│ │ ├── Popustop.1013.json
│ │ ├── Popustop.1014.json
│ │ ├── Popustop.1015.json
│ │ ├── Popustop.1016.json
│ │ ├── Popustop.1017.json
│ │ ├── Popustop.1018.json
│ │ ├── Popustop.1019.json
│ │ ├── Popustop.102.json
│ │ ├── Popustop.1020.json
│ │ ├── Popustop.1021.json
│ │ ├── Popustop.1022.json
│ │ ├── Popustop.1023.json
│ │ ├── Popustop.1024.json
│ │ ├── Popustop.1025.json
│ │ ├── Popustop.1026.json
│ │ ├── Popustop.1027.json
│ │ ├── Popustop.1028.json
│ │ ├── Popustop.1029.json
│ │ ├── Popustop.103.json
│ │ ├── Popustop.1030.json
│ │ ├── Popustop.1031.json
│ │ ├── Popustop.1032.json
│ │ ├── Popustop.1033.json
│ │ ├── Popustop.1034.json
│ │ ├── Popustop.1035.json
│ │ ├── Popustop.1036.json
│ │ ├── Popustop.1037.json
│ │ ├── Popustop.1038.json
│ │ ├── Popustop.1039.json
│ │ ├── Popustop.104.json
│ │ ├── Popustop.1040.json
│ │ ├── Popustop.1041.json
│ │ ├── Popustop.1042.json
│ │ ├── Popustop.1043.json
│ │ ├── Popustop.1044.json
│ │ ├── Popustop.1045.json
│ │ ├── Popustop.1046.json
│ │ ├── Popustop.1047.json
│ │ ├── Popustop.1048.json
│ │ ├── Popustop.1049.json
│ │ ├── Popustop.105.json
│ │ ├── Popustop.1050.json
│ │ ├── Popustop.1051.json
│ │ ├── Popustop.1052.json
│ │ ├── Popustop.1053.json
│ │ ├── Popustop.1054.json
│ │ ├── Popustop.1055.json
│ │ ├── Popustop.1056.json
│ │ ├── Popustop.1057.json
│ │ ├── Popustop.1058.json
│ │ ├── Popustop.1059.json
│ │ ├── Popustop.106.json
│ │ ├── Popustop.1060.json
│ │ ├── Popustop.1061.json
│ │ ├── Popustop.1062.json
│ │ ├── Popustop.1063.json
│ │ ├── Popustop.1064.json
│ │ ├── Popustop.1065.json
│ │ ├── Popustop.1066.json
│ │ ├── Popustop.1067.json
│ │ ├── Popustop.1068.json
│ │ ├── Popustop.1069.json
│ │ ├── Popustop.107.json
│ │ ├── Popustop.1070.json
│ │ ├── Popustop.1071.json
│ │ ├── Popustop.108.json
│ │ ├── Popustop.109.json
│ │ ├── Popustop.110.json
│ │ ├── Popustop.1100.json
│ │ ├── Popustop.1101.json
│ │ ├── Popustop.1102.json
│ │ ├── Popustop.1103.json
│ │ ├── Popustop.1104.json
│ │ ├── Popustop.1105.json
│ │ ├── Popustop.1106.json
│ │ ├── Popustop.1107.json
│ │ ├── Popustop.1108.json
│ │ ├── Popustop.1109.json
│ │ ├── Popustop.111.json
│ │ ├── Popustop.1110.json
│ │ ├── Popustop.1111.json
│ │ ├── Popustop.1112.json
│ │ ├── Popustop.1113.json
│ │ ├── Popustop.1114.json
│ │ ├── Popustop.1115.json
│ │ ├── Popustop.1116.json
│ │ ├── Popustop.1117.json
│ │ ├── Popustop.1118.json
│ │ ├── Popustop.1119.json
│ │ ├── Popustop.112.json
│ │ ├── Popustop.1120.json
│ │ ├── Popustop.1121.json
│ │ ├── Popustop.1122.json
│ │ ├── Popustop.1123.json
│ │ ├── Popustop.1124.json
│ │ ├── Popustop.1125.json
│ │ ├── Popustop.1126.json
│ │ ├── Popustop.1127.json
│ │ ├── Popustop.1128.json
│ │ ├── Popustop.1129.json
│ │ ├── Popustop.113.json
│ │ ├── Popustop.1130.json
│ │ ├── Popustop.1131.json
│ │ ├── Popustop.1132.json
│ │ ├── Popustop.1133.json
│ │ ├── Popustop.1134.json
│ │ ├── Popustop.1135.json
│ │ ├── Popustop.1136.json
│ │ ├── Popustop.1137.json
│ │ ├── Popustop.1138.json
│ │ ├── Popustop.1139.json
│ │ ├── Popustop.114.json
│ │ ├── Popustop.1140.json
│ │ ├── Popustop.1141.json
│ │ ├── Popustop.1142.json
│ │ ├── Popustop.1143.json
│ │ ├── Popustop.1144.json
│ │ ├── Popustop.1145.json
│ │ ├── Popustop.1146.json
│ │ ├── Popustop.1147.json
│ │ ├── Popustop.1148.json
│ │ ├── Popustop.1149.json
│ │ ├── Popustop.115.json
│ │ ├── Popustop.1150.json
│ │ ├── Popustop.1151.json
│ │ ├── Popustop.1152.json
│ │ ├── Popustop.1153.json
│ │ ├── Popustop.1154.json
│ │ ├── Popustop.1155.json
│ │ ├── Popustop.1156.json
│ │ ├── Popustop.1157.json
│ │ ├── Popustop.1158.json
│ │ ├── Popustop.1159.json
│ │ ├── Popustop.116.json
│ │ ├── Popustop.1160.json
│ │ ├── Popustop.1161.json
│ │ ├── Popustop.1162.json
│ │ ├── Popustop.1163.json
│ │ ├── Popustop.1164.json
│ │ ├── Popustop.1165.json
│ │ ├── Popustop.1166.json
│ │ ├── Popustop.1167.json
│ │ ├── Popustop.1168.json
│ │ ├── Popustop.1169.json
│ │ ├── Popustop.117.json
│ │ ├── Popustop.1170.json
│ │ ├── Popustop.1171.json
│ │ ├── Popustop.118.json
│ │ ├── Popustop.119.json
│ │ ├── Popustop.120.json
│ │ ├── Popustop.121.json
│ │ ├── Popustop.122.json
│ │ ├── Popustop.123.json
│ │ ├── Popustop.124.json
│ │ ├── Popustop.125.json
│ │ ├── Popustop.126.json
│ │ ├── Popustop.127.json
│ │ ├── Popustop.128.json
│ │ ├── Popustop.129.json
│ │ ├── Popustop.130.json
│ │ ├── Popustop.131.json
│ │ ├── Popustop.132.json
│ │ ├── Popustop.133.json
│ │ ├── Popustop.134.json
│ │ ├── Popustop.135.json
│ │ ├── Popustop.136.json
│ │ ├── Popustop.137.json
│ │ ├── Popustop.138.json
│ │ ├── Popustop.139.json
│ │ ├── Popustop.140.json
│ │ ├── Popustop.141.json
│ │ ├── Popustop.142.json
│ │ ├── Popustop.143.json
│ │ ├── Popustop.144.json
│ │ ├── Popustop.145.json
│ │ ├── Popustop.146.json
│ │ ├── Popustop.147.json
│ │ ├── Popustop.148.json
│ │ ├── Popustop.149.json
│ │ ├── Popustop.150.json
│ │ ├── Popustop.151.json
│ │ ├── Popustop.152.json
│ │ ├── Popustop.153.json
│ │ ├── Popustop.154.json
│ │ ├── Popustop.155.json
│ │ ├── Popustop.156.json
│ │ ├── Popustop.157.json
│ │ ├── Popustop.158.json
│ │ ├── Popustop.159.json
│ │ ├── Popustop.160.json
│ │ ├── Popustop.161.json
│ │ ├── Popustop.162.json
│ │ ├── Popustop.163.json
│ │ ├── Popustop.164.json
│ │ ├── Popustop.165.json
│ │ ├── Popustop.166.json
│ │ ├── Popustop.167.json
│ │ ├── Popustop.168.json
│ │ ├── Popustop.169.json
│ │ ├── Popustop.170.json
│ │ ├── Popustop.171.json
│ │ ├── Popustop.200.json
│ │ ├── Popustop.201.json
│ │ ├── Popustop.202.json
│ │ ├── Popustop.203.json
│ │ ├── Popustop.204.json
│ │ ├── Popustop.205.json
│ │ ├── Popustop.206.json
│ │ ├── Popustop.207.json
│ │ ├── Popustop.208.json
│ │ ├── Popustop.209.json
│ │ ├── Popustop.210.json
│ │ ├── Popustop.211.json
│ │ ├── Popustop.212.json
│ │ ├── Popustop.213.json
│ │ ├── Popustop.214.json
│ │ ├── Popustop.215.json
│ │ ├── Popustop.216.json
│ │ ├── Popustop.217.json
│ │ ├── Popustop.218.json
│ │ ├── Popustop.219.json
│ │ ├── Popustop.220.json
│ │ ├── Popustop.221.json
│ │ ├── Popustop.222.json
│ │ ├── Popustop.223.json
│ │ ├── Popustop.224.json
│ │ ├── Popustop.225.json
│ │ ├── Popustop.226.json
│ │ ├── Popustop.227.json
│ │ ├── Popustop.228.json
│ │ ├── Popustop.229.json
│ │ ├── Popustop.230.json
│ │ ├── Popustop.231.json
│ │ ├── Popustop.232.json
│ │ ├── Popustop.233.json
│ │ ├── Popustop.234.json
│ │ ├── Popustop.235.json
│ │ ├── Popustop.236.json
│ │ ├── Popustop.237.json
│ │ ├── Popustop.238.json
│ │ ├── Popustop.239.json
│ │ ├── Popustop.240.json
│ │ ├── Popustop.241.json
│ │ ├── Popustop.242.json
│ │ ├── Popustop.243.json
│ │ ├── Popustop.244.json
│ │ ├── Popustop.245.json
│ │ ├── Popustop.246.json
│ │ ├── Popustop.247.json
│ │ ├── Popustop.248.json
│ │ ├── Popustop.249.json
│ │ ├── Popustop.250.json
│ │ ├── Popustop.251.json
│ │ ├── Popustop.252.json
│ │ ├── Popustop.253.json
│ │ ├── Popustop.254.json
│ │ ├── Popustop.255.json
│ │ ├── Popustop.256.json
│ │ ├── Popustop.257.json
│ │ ├── Popustop.258.json
│ │ ├── Popustop.259.json
│ │ ├── Popustop.260.json
│ │ ├── Popustop.261.json
│ │ ├── Popustop.262.json
│ │ ├── Popustop.263.json
│ │ ├── Popustop.264.json
│ │ ├── Popustop.265.json
│ │ ├── Popustop.266.json
│ │ ├── Popustop.267.json
│ │ ├── Popustop.268.json
│ │ ├── Popustop.269.json
│ │ ├── Popustop.270.json
│ │ ├── Popustop.271.json
│ │ ├── Popustop.300.json
│ │ ├── Popustop.301.json
│ │ ├── Popustop.302.json
│ │ ├── Popustop.303.json
│ │ ├── Popustop.304.json
│ │ ├── Popustop.305.json
│ │ ├── Popustop.306.json
│ │ ├── Popustop.307.json
│ │ ├── Popustop.308.json
│ │ ├── Popustop.309.json
│ │ ├── Popustop.310.json
│ │ ├── Popustop.311.json
│ │ ├── Popustop.312.json
│ │ ├── Popustop.313.json
│ │ ├── Popustop.314.json
│ │ ├── Popustop.315.json
│ │ ├── Popustop.316.json
│ │ ├── Popustop.317.json
│ │ ├── Popustop.318.json
│ │ ├── Popustop.319.json
│ │ ├── Popustop.320.json
│ │ ├── Popustop.321.json
│ │ ├── Popustop.322.json
│ │ ├── Popustop.323.json
│ │ ├── Popustop.324.json
│ │ ├── Popustop.325.json
│ │ ├── Popustop.326.json
│ │ ├── Popustop.327.json
│ │ ├── Popustop.328.json
│ │ ├── Popustop.329.json
│ │ ├── Popustop.330.json
│ │ ├── Popustop.331.json
│ │ ├── Popustop.332.json
│ │ ├── Popustop.333.json
│ │ ├── Popustop.334.json
│ │ ├── Popustop.335.json
│ │ ├── Popustop.336.json
│ │ ├── Popustop.337.json
│ │ ├── Popustop.338.json
│ │ ├── Popustop.339.json
│ │ ├── Popustop.340.json
│ │ ├── Popustop.341.json
│ │ ├── Popustop.342.json
│ │ ├── Popustop.343.json
│ │ ├── Popustop.344.json
│ │ ├── Popustop.345.json
│ │ ├── Popustop.346.json
│ │ ├── Popustop.347.json
│ │ ├── Popustop.348.json
│ │ ├── Popustop.349.json
│ │ ├── Popustop.350.json
│ │ ├── Popustop.351.json
│ │ ├── Popustop.352.json
│ │ ├── Popustop.353.json
│ │ ├── Popustop.354.json
│ │ ├── Popustop.355.json
│ │ ├── Popustop.356.json
│ │ ├── Popustop.357.json
│ │ ├── Popustop.358.json
│ │ ├── Popustop.359.json
│ │ ├── Popustop.360.json
│ │ ├── Popustop.361.json
│ │ ├── Popustop.362.json
│ │ ├── Popustop.363.json
│ │ ├── Popustop.364.json
│ │ ├── Popustop.365.json
│ │ ├── Popustop.366.json
│ │ ├── Popustop.367.json
│ │ ├── Popustop.368.json
│ │ ├── Popustop.369.json
│ │ ├── Popustop.370.json
│ │ ├── Popustop.371.json
│ │ ├── Popustop.400.json
│ │ ├── Popustop.401.json
│ │ ├── Popustop.402.json
│ │ ├── Popustop.403.json
│ │ ├── Popustop.404.json
│ │ ├── Popustop.405.json
│ │ ├── Popustop.406.json
│ │ ├── Popustop.407.json
│ │ ├── Popustop.408.json
│ │ ├── Popustop.409.json
│ │ ├── Popustop.410.json
│ │ ├── Popustop.411.json
│ │ ├── Popustop.412.json
│ │ ├── Popustop.413.json
│ │ ├── Popustop.414.json
│ │ ├── Popustop.415.json
│ │ ├── Popustop.416.json
│ │ ├── Popustop.417.json
│ │ ├── Popustop.418.json
│ │ ├── Popustop.419.json
│ │ ├── Popustop.420.json
│ │ ├── Popustop.421.json
│ │ ├── Popustop.422.json
│ │ ├── Popustop.423.json
│ │ ├── Popustop.424.json
│ │ ├── Popustop.425.json
│ │ ├── Popustop.426.json
│ │ ├── Popustop.427.json
│ │ ├── Popustop.428.json
│ │ ├── Popustop.429.json
│ │ ├── Popustop.430.json
│ │ ├── Popustop.431.json
│ │ ├── Popustop.432.json
│ │ ├── Popustop.433.json
│ │ ├── Popustop.434.json
│ │ ├── Popustop.435.json
│ │ ├── Popustop.436.json
│ │ ├── Popustop.437.json
│ │ ├── Popustop.438.json
│ │ ├── Popustop.439.json
│ │ ├── Popustop.440.json
│ │ ├── Popustop.441.json
│ │ ├── Popustop.442.json
│ │ ├── Popustop.443.json
│ │ ├── Popustop.444.json
│ │ ├── Popustop.445.json
│ │ ├── Popustop.446.json
│ │ ├── Popustop.447.json
│ │ ├── Popustop.448.json
│ │ ├── Popustop.449.json
│ │ ├── Popustop.450.json
│ │ ├── Popustop.451.json
│ │ ├── Popustop.452.json
│ │ ├── Popustop.453.json
│ │ ├── Popustop.454.json
│ │ ├── Popustop.455.json
│ │ ├── Popustop.456.json
│ │ ├── Popustop.457.json
│ │ ├── Popustop.458.json
│ │ ├── Popustop.459.json
│ │ ├── Popustop.460.json
│ │ ├── Popustop.461.json
│ │ ├── Popustop.462.json
│ │ ├── Popustop.463.json
│ │ ├── Popustop.464.json
│ │ ├── Popustop.465.json
│ │ ├── Popustop.466.json
│ │ ├── Popustop.467.json
│ │ ├── Popustop.468.json
│ │ ├── Popustop.469.json
│ │ ├── Popustop.470.json
│ │ ├── Popustop.471.json
│ │ ├── Popustop.500.json
│ │ ├── Popustop.501.json
│ │ ├── Popustop.502.json
│ │ ├── Popustop.503.json
│ │ ├── Popustop.504.json
│ │ ├── Popustop.505.json
│ │ ├── Popustop.506.json
│ │ ├── Popustop.507.json
│ │ ├── Popustop.508.json
│ │ ├── Popustop.509.json
│ │ ├── Popustop.510.json
│ │ ├── Popustop.511.json
│ │ ├── Popustop.512.json
│ │ ├── Popustop.513.json
│ │ ├── Popustop.514.json
│ │ ├── Popustop.515.json
│ │ ├── Popustop.516.json
│ │ ├── Popustop.517.json
│ │ ├── Popustop.518.json
│ │ ├── Popustop.519.json
│ │ ├── Popustop.520.json
│ │ ├── Popustop.521.json
│ │ ├── Popustop.522.json
│ │ ├── Popustop.523.json
│ │ ├── Popustop.524.json
│ │ ├── Popustop.525.json
│ │ ├── Popustop.526.json
│ │ ├── Popustop.527.json
│ │ ├── Popustop.528.json
│ │ ├── Popustop.529.json
│ │ ├── Popustop.530.json
│ │ ├── Popustop.531.json
│ │ ├── Popustop.532.json
│ │ ├── Popustop.533.json
│ │ ├── Popustop.534.json
│ │ ├── Popustop.535.json
│ │ ├── Popustop.536.json
│ │ ├── Popustop.537.json
│ │ ├── Popustop.538.json
│ │ ├── Popustop.539.json
│ │ ├── Popustop.540.json
│ │ ├── Popustop.541.json
│ │ ├── Popustop.542.json
│ │ ├── Popustop.543.json
│ │ ├── Popustop.544.json
│ │ ├── Popustop.545.json
│ │ ├── Popustop.546.json
│ │ ├── Popustop.547.json
│ │ ├── Popustop.548.json
│ │ ├── Popustop.549.json
│ │ ├── Popustop.550.json
│ │ ├── Popustop.551.json
│ │ ├── Popustop.552.json
│ │ ├── Popustop.553.json
│ │ ├── Popustop.554.json
│ │ ├── Popustop.555.json
│ │ ├── Popustop.556.json
│ │ ├── Popustop.557.json
│ │ ├── Popustop.558.json
│ │ ├── Popustop.559.json
│ │ ├── Popustop.560.json
│ │ ├── Popustop.561.json
│ │ ├── Popustop.562.json
│ │ ├── Popustop.563.json
│ │ ├── Popustop.564.json
│ │ ├── Popustop.565.json
│ │ ├── Popustop.566.json
│ │ ├── Popustop.567.json
│ │ ├── Popustop.568.json
│ │ ├── Popustop.569.json
│ │ ├── Popustop.570.json
│ │ ├── Popustop.571.json
│ │ ├── Popustop.600.json
│ │ ├── Popustop.601.json
│ │ ├── Popustop.602.json
│ │ ├── Popustop.603.json
│ │ ├── Popustop.604.json
│ │ ├── Popustop.605.json
│ │ ├── Popustop.606.json
│ │ ├── Popustop.607.json
│ │ ├── Popustop.608.json
│ │ ├── Popustop.609.json
│ │ ├── Popustop.610.json
│ │ ├── Popustop.611.json
│ │ ├── Popustop.612.json
│ │ ├── Popustop.613.json
│ │ ├── Popustop.614.json
│ │ ├── Popustop.615.json
│ │ ├── Popustop.616.json
│ │ ├── Popustop.617.json
│ │ ├── Popustop.618.json
│ │ ├── Popustop.619.json
│ │ ├── Popustop.620.json
│ │ ├── Popustop.621.json
│ │ ├── Popustop.622.json
│ │ ├── Popustop.623.json
│ │ ├── Popustop.624.json
│ │ ├── Popustop.625.json
│ │ ├── Popustop.626.json
│ │ ├── Popustop.627.json
│ │ ├── Popustop.628.json
│ │ ├── Popustop.629.json
│ │ ├── Popustop.630.json
│ │ ├── Popustop.631.json
│ │ ├── Popustop.632.json
│ │ ├── Popustop.633.json
│ │ ├── Popustop.634.json
│ │ ├── Popustop.635.json
│ │ ├── Popustop.636.json
│ │ ├── Popustop.637.json
│ │ ├── Popustop.638.json
│ │ ├── Popustop.639.json
│ │ ├── Popustop.640.json
│ │ ├── Popustop.641.json
│ │ ├── Popustop.642.json
│ │ ├── Popustop.643.json
│ │ ├── Popustop.644.json
│ │ ├── Popustop.645.json
│ │ ├── Popustop.646.json
│ │ ├── Popustop.647.json
│ │ ├── Popustop.648.json
│ │ ├── Popustop.649.json
│ │ ├── Popustop.650.json
│ │ ├── Popustop.651.json
│ │ ├── Popustop.652.json
│ │ ├── Popustop.653.json
│ │ ├── Popustop.654.json
│ │ ├── Popustop.655.json
│ │ ├── Popustop.656.json
│ │ ├── Popustop.657.json
│ │ ├── Popustop.658.json
│ │ ├── Popustop.659.json
│ │ ├── Popustop.660.json
│ │ ├── Popustop.661.json
│ │ ├── Popustop.662.json
│ │ ├── Popustop.663.json
│ │ ├── Popustop.664.json
│ │ ├── Popustop.665.json
│ │ ├── Popustop.666.json
│ │ ├── Popustop.667.json
│ │ ├── Popustop.668.json
│ │ ├── Popustop.669.json
│ │ ├── Popustop.670.json
│ │ ├── Popustop.671.json
│ │ ├── Popustop.700.json
│ │ ├── Popustop.701.json
│ │ ├── Popustop.702.json
│ │ ├── Popustop.703.json
│ │ ├── Popustop.704.json
│ │ ├── Popustop.705.json
│ │ ├── Popustop.706.json
│ │ ├── Popustop.707.json
│ │ ├── Popustop.708.json
│ │ ├── Popustop.709.json
│ │ ├── Popustop.710.json
│ │ ├── Popustop.711.json
│ │ ├── Popustop.712.json
│ │ ├── Popustop.713.json
│ │ ├── Popustop.714.json
│ │ ├── Popustop.715.json
│ │ ├── Popustop.716.json
│ │ ├── Popustop.717.json
│ │ ├── Popustop.718.json
│ │ ├── Popustop.719.json
│ │ ├── Popustop.720.json
│ │ ├── Popustop.721.json
│ │ ├── Popustop.722.json
│ │ ├── Popustop.723.json
│ │ ├── Popustop.724.json
│ │ ├── Popustop.725.json
│ │ ├── Popustop.726.json
│ │ ├── Popustop.727.json
│ │ ├── Popustop.728.json
│ │ ├── Popustop.729.json
│ │ ├── Popustop.730.json
│ │ ├── Popustop.731.json
│ │ ├── Popustop.732.json
│ │ ├── Popustop.733.json
│ │ ├── Popustop.734.json
│ │ ├── Popustop.735.json
│ │ ├── Popustop.736.json
│ │ ├── Popustop.737.json
│ │ ├── Popustop.738.json
│ │ ├── Popustop.739.json
│ │ ├── Popustop.740.json
│ │ ├── Popustop.741.json
│ │ ├── Popustop.742.json
│ │ ├── Popustop.743.json
│ │ ├── Popustop.744.json
│ │ ├── Popustop.745.json
│ │ ├── Popustop.746.json
│ │ ├── Popustop.747.json
│ │ ├── Popustop.748.json
│ │ ├── Popustop.749.json
│ │ ├── Popustop.750.json
│ │ ├── Popustop.751.json
│ │ ├── Popustop.752.json
│ │ ├── Popustop.753.json
│ │ ├── Popustop.754.json
│ │ ├── Popustop.755.json
│ │ ├── Popustop.756.json
│ │ ├── Popustop.757.json
│ │ ├── Popustop.758.json
│ │ ├── Popustop.759.json
│ │ ├── Popustop.760.json
│ │ ├── Popustop.761.json
│ │ ├── Popustop.762.json
│ │ ├── Popustop.763.json
│ │ ├── Popustop.764.json
│ │ ├── Popustop.765.json
│ │ ├── Popustop.766.json
│ │ ├── Popustop.767.json
│ │ ├── Popustop.768.json
│ │ ├── Popustop.769.json
│ │ ├── Popustop.770.json
│ │ ├── Popustop.771.json
│ │ ├── Popustop.800.json
│ │ ├── Popustop.801.json
│ │ ├── Popustop.802.json
│ │ ├── Popustop.803.json
│ │ ├── Popustop.804.json
│ │ ├── Popustop.805.json
│ │ ├── Popustop.806.json
│ │ ├── Popustop.807.json
│ │ ├── Popustop.808.json
│ │ ├── Popustop.809.json
│ │ ├── Popustop.810.json
│ │ ├── Popustop.811.json
│ │ ├── Popustop.812.json
│ │ ├── Popustop.813.json
│ │ ├── Popustop.814.json
│ │ ├── Popustop.815.json
│ │ ├── Popustop.816.json
│ │ ├── Popustop.817.json
│ │ ├── Popustop.818.json
│ │ ├── Popustop.819.json
│ │ ├── Popustop.820.json
│ │ ├── Popustop.821.json
│ │ ├── Popustop.822.json
│ │ ├── Popustop.823.json
│ │ ├── Popustop.824.json
│ │ ├── Popustop.825.json
│ │ ├── Popustop.826.json
│ │ ├── Popustop.827.json
│ │ ├── Popustop.828.json
│ │ ├── Popustop.829.json
│ │ ├── Popustop.830.json
│ │ ├── Popustop.831.json
│ │ ├── Popustop.832.json
│ │ ├── Popustop.833.json
│ │ ├── Popustop.834.json
│ │ ├── Popustop.835.json
│ │ ├── Popustop.836.json
│ │ ├── Popustop.837.json
│ │ ├── Popustop.838.json
│ │ ├── Popustop.839.json
│ │ ├── Popustop.840.json
│ │ ├── Popustop.841.json
│ │ ├── Popustop.842.json
│ │ ├── Popustop.843.json
│ │ ├── Popustop.844.json
│ │ ├── Popustop.845.json
│ │ ├── Popustop.846.json
│ │ ├── Popustop.847.json
│ │ ├── Popustop.848.json
│ │ ├── Popustop.849.json
│ │ ├── Popustop.850.json
│ │ ├── Popustop.851.json
│ │ ├── Popustop.852.json
│ │ ├── Popustop.853.json
│ │ ├── Popustop.854.json
│ │ ├── Popustop.855.json
│ │ ├── Popustop.856.json
│ │ ├── Popustop.857.json
│ │ ├── Popustop.858.json
│ │ ├── Popustop.859.json
│ │ ├── Popustop.860.json
│ │ ├── Popustop.861.json
│ │ ├── Popustop.862.json
│ │ ├── Popustop.863.json
│ │ ├── Popustop.864.json
│ │ ├── Popustop.865.json
│ │ ├── Popustop.866.json
│ │ ├── Popustop.867.json
│ │ ├── Popustop.868.json
│ │ ├── Popustop.869.json
│ │ ├── Popustop.870.json
│ │ ├── Popustop.871.json
│ │ ├── Popustop.900.json
│ │ ├── Popustop.901.json
│ │ ├── Popustop.902.json
│ │ ├── Popustop.903.json
│ │ ├── Popustop.904.json
│ │ ├── Popustop.905.json
│ │ ├── Popustop.906.json
│ │ ├── Popustop.907.json
│ │ ├── Popustop.908.json
│ │ ├── Popustop.909.json
│ │ ├── Popustop.910.json
│ │ ├── Popustop.911.json
│ │ ├── Popustop.912.json
│ │ ├── Popustop.913.json
│ │ ├── Popustop.914.json
│ │ ├── Popustop.915.json
│ │ ├── Popustop.916.json
│ │ ├── Popustop.917.json
│ │ ├── Popustop.918.json
│ │ ├── Popustop.919.json
│ │ ├── Popustop.920.json
│ │ ├── Popustop.921.json
│ │ ├── Popustop.922.json
│ │ ├── Popustop.923.json
│ │ ├── Popustop.924.json
│ │ ├── Popustop.925.json
│ │ ├── Popustop.926.json
│ │ ├── Popustop.927.json
│ │ ├── Popustop.928.json
│ │ ├── Popustop.929.json
│ │ ├── Popustop.930.json
│ │ ├── Popustop.931.json
│ │ ├── Popustop.932.json
│ │ ├── Popustop.933.json
│ │ ├── Popustop.934.json
│ │ ├── Popustop.935.json
│ │ ├── Popustop.936.json
│ │ ├── Popustop.937.json
│ │ ├── Popustop.938.json
│ │ ├── Popustop.939.json
│ │ ├── Popustop.940.json
│ │ ├── Popustop.941.json
│ │ ├── Popustop.942.json
│ │ ├── Popustop.943.json
│ │ ├── Popustop.944.json
│ │ ├── Popustop.945.json
│ │ ├── Popustop.946.json
│ │ ├── Popustop.947.json
│ │ ├── Popustop.948.json
│ │ ├── Popustop.949.json
│ │ ├── Popustop.950.json
│ │ ├── Popustop.951.json
│ │ ├── Popustop.952.json
│ │ ├── Popustop.953.json
│ │ ├── Popustop.954.json
│ │ ├── Popustop.955.json
│ │ ├── Popustop.956.json
│ │ ├── Popustop.957.json
│ │ ├── Popustop.958.json
│ │ ├── Popustop.959.json
│ │ ├── Popustop.960.json
│ │ ├── Popustop.961.json
│ │ ├── Popustop.962.json
│ │ ├── Popustop.963.json
│ │ ├── Popustop.964.json
│ │ ├── Popustop.965.json
│ │ ├── Popustop.966.json
│ │ ├── Popustop.967.json
│ │ ├── Popustop.968.json
│ │ ├── Popustop.969.json
│ │ ├── Popustop.970.json
│ │ ├── Popustop.971.json
│ │ ├── Popustop.afront2.line1106.json
│ │ ├── Popustop.aprominade2.line1107.json
│ │ ├── Popustop.bboard.line4.json
│ │ ├── Popustop.elevator1.line1055.json
│ │ ├── Popustop.elevator1.line155.json
│ │ ├── Popustop.elevator1.line255.json
│ │ ├── Popustop.elevator1.line355.json
│ │ ├── Popustop.elevator1.line455.json
│ │ ├── Popustop.elevator1.line55.json
│ │ ├── Popustop.elevator1.line555.json
│ │ ├── Popustop.elevator1.line655.json
│ │ ├── Popustop.elevator1.line755.json
│ │ ├── Popustop.elevator1.line855.json
│ │ ├── Popustop.elevator1.line955.json
│ │ ├── Popustop.hall1.line108.json
│ │ ├── Popustop.hall1.line125.json
│ │ ├── Popustop.hall1.line141.json
│ │ ├── Popustop.hall1.line160.json
│ │ ├── Popustop.hall1.line176.json
│ │ ├── Popustop.hall1.line192.json
│ │ ├── Popustop.hall1.line208.json
│ │ ├── Popustop.hall1.line225.json
│ │ ├── Popustop.hall1.line241.json
│ │ ├── Popustop.hall1.line25.json
│ │ ├── Popustop.hall1.line260.json
│ │ ├── Popustop.hall1.line276.json
│ │ ├── Popustop.hall1.line292.json
│ │ ├── Popustop.hall1.line308.json
│ │ ├── Popustop.hall1.line325.json
│ │ ├── Popustop.hall1.line341.json
│ │ ├── Popustop.hall1.line360.json
│ │ ├── Popustop.hall1.line376.json
│ │ ├── Popustop.hall1.line392.json
│ │ ├── Popustop.hall1.line408.json
│ │ ├── Popustop.hall1.line41.json
│ │ ├── Popustop.hall1.line425.json
│ │ ├── Popustop.hall1.line441.json
│ │ ├── Popustop.hall1.line460.json
│ │ ├── Popustop.hall1.line476.json
│ │ ├── Popustop.hall1.line492.json
│ │ ├── Popustop.hall1.line508.json
│ │ ├── Popustop.hall1.line525.json
│ │ ├── Popustop.hall1.line541.json
│ │ ├── Popustop.hall1.line560.json
│ │ ├── Popustop.hall1.line576.json
│ │ ├── Popustop.hall1.line592.json
│ │ ├── Popustop.hall1.line60.json
│ │ ├── Popustop.hall1.line608.json
│ │ ├── Popustop.hall1.line625.json
│ │ ├── Popustop.hall1.line641.json
│ │ ├── Popustop.hall1.line660.json
│ │ ├── Popustop.hall1.line676.json
│ │ ├── Popustop.hall1.line692.json
│ │ ├── Popustop.hall1.line708.json
│ │ ├── Popustop.hall1.line725.json
│ │ ├── Popustop.hall1.line741.json
│ │ ├── Popustop.hall1.line76.json
│ │ ├── Popustop.hall1.line760.json
│ │ ├── Popustop.hall1.line776.json
│ │ ├── Popustop.hall1.line792.json
│ │ ├── Popustop.hall1.line8.json
│ │ ├── Popustop.hall1.line808.json
│ │ ├── Popustop.hall1.line825.json
│ │ ├── Popustop.hall1.line841.json
│ │ ├── Popustop.hall1.line860.json
│ │ ├── Popustop.hall1.line876.json
│ │ ├── Popustop.hall1.line892.json
│ │ ├── Popustop.hall1.line92.json
│ │ ├── Popustop.hall11000.line1008.json
│ │ ├── Popustop.hall11000.line1025.json
│ │ ├── Popustop.hall11000.line1041.json
│ │ ├── Popustop.hall11000.line1060.json
│ │ ├── Popustop.hall11000.line1076.json
│ │ ├── Popustop.hall11000.line1092.json
│ │ ├── Popustop.hall11000.line908.json
│ │ ├── Popustop.hall11000.line925.json
│ │ ├── Popustop.hall11000.line941.json
│ │ ├── Popustop.hall11000.line960.json
│ │ ├── Popustop.hall11000.line976.json
│ │ ├── Popustop.hall11000.line992.json
│ │ ├── Popustop.hall2.line112.json
│ │ ├── Popustop.hall2.line12.json
│ │ ├── Popustop.hall2.line129.json
│ │ ├── Popustop.hall2.line145.json
│ │ ├── Popustop.hall2.line164.json
│ │ ├── Popustop.hall2.line180.json
│ │ ├── Popustop.hall2.line196.json
│ │ ├── Popustop.hall2.line212.json
│ │ ├── Popustop.hall2.line229.json
│ │ ├── Popustop.hall2.line245.json
│ │ ├── Popustop.hall2.line264.json
│ │ ├── Popustop.hall2.line280.json
│ │ ├── Popustop.hall2.line29.json
│ │ ├── Popustop.hall2.line296.json
│ │ ├── Popustop.hall2.line312.json
│ │ ├── Popustop.hall2.line329.json
│ │ ├── Popustop.hall2.line345.json
│ │ ├── Popustop.hall2.line364.json
│ │ ├── Popustop.hall2.line380.json
│ │ ├── Popustop.hall2.line396.json
│ │ ├── Popustop.hall2.line412.json
│ │ ├── Popustop.hall2.line429.json
│ │ ├── Popustop.hall2.line445.json
│ │ ├── Popustop.hall2.line45.json
│ │ ├── Popustop.hall2.line464.json
│ │ ├── Popustop.hall2.line480.json
│ │ ├── Popustop.hall2.line496.json
│ │ ├── Popustop.hall2.line512.json
│ │ ├── Popustop.hall2.line529.json
│ │ ├── Popustop.hall2.line545.json
│ │ ├── Popustop.hall2.line564.json
│ │ ├── Popustop.hall2.line580.json
│ │ ├── Popustop.hall2.line596.json
│ │ ├── Popustop.hall2.line612.json
│ │ ├── Popustop.hall2.line629.json
│ │ ├── Popustop.hall2.line64.json
│ │ ├── Popustop.hall2.line645.json
│ │ ├── Popustop.hall2.line664.json
│ │ ├── Popustop.hall2.line680.json
│ │ ├── Popustop.hall2.line696.json
│ │ ├── Popustop.hall2.line712.json
│ │ ├── Popustop.hall2.line729.json
│ │ ├── Popustop.hall2.line745.json
│ │ ├── Popustop.hall2.line764.json
│ │ ├── Popustop.hall2.line780.json
│ │ ├── Popustop.hall2.line796.json
│ │ ├── Popustop.hall2.line80.json
│ │ ├── Popustop.hall2.line812.json
│ │ ├── Popustop.hall2.line829.json
│ │ ├── Popustop.hall2.line845.json
│ │ ├── Popustop.hall2.line864.json
│ │ ├── Popustop.hall2.line880.json
│ │ ├── Popustop.hall2.line896.json
│ │ ├── Popustop.hall2.line96.json
│ │ ├── Popustop.hall21000.line1012.json
│ │ ├── Popustop.hall21000.line1029.json
│ │ ├── Popustop.hall21000.line1045.json
│ │ ├── Popustop.hall21000.line1064.json
│ │ ├── Popustop.hall21000.line1080.json
│ │ ├── Popustop.hall21000.line1096.json
│ │ ├── Popustop.hall21000.line912.json
│ │ ├── Popustop.hall21000.line929.json
│ │ ├── Popustop.hall21000.line945.json
│ │ ├── Popustop.hall21000.line964.json
│ │ ├── Popustop.hall21000.line980.json
│ │ ├── Popustop.hall21000.line996.json
│ │ ├── Popustop.hall3.line100.json
│ │ ├── Popustop.hall3.line116.json
│ │ ├── Popustop.hall3.line133.json
│ │ ├── Popustop.hall3.line149.json
│ │ ├── Popustop.hall3.line16.json
│ │ ├── Popustop.hall3.line168.json
│ │ ├── Popustop.hall3.line184.json
│ │ ├── Popustop.hall3.line200.json
│ │ ├── Popustop.hall3.line216.json
│ │ ├── Popustop.hall3.line233.json
│ │ ├── Popustop.hall3.line249.json
│ │ ├── Popustop.hall3.line268.json
│ │ ├── Popustop.hall3.line284.json
│ │ ├── Popustop.hall3.line300.json
│ │ ├── Popustop.hall3.line316.json
│ │ ├── Popustop.hall3.line33.json
│ │ ├── Popustop.hall3.line333.json
│ │ ├── Popustop.hall3.line349.json
│ │ ├── Popustop.hall3.line368.json
│ │ ├── Popustop.hall3.line384.json
│ │ ├── Popustop.hall3.line400.json
│ │ ├── Popustop.hall3.line416.json
│ │ ├── Popustop.hall3.line433.json
│ │ ├── Popustop.hall3.line449.json
│ │ ├── Popustop.hall3.line468.json
│ │ ├── Popustop.hall3.line484.json
│ │ ├── Popustop.hall3.line49.json
│ │ ├── Popustop.hall3.line500.json
│ │ ├── Popustop.hall3.line516.json
│ │ ├── Popustop.hall3.line533.json
│ │ ├── Popustop.hall3.line549.json
│ │ ├── Popustop.hall3.line568.json
│ │ ├── Popustop.hall3.line584.json
│ │ ├── Popustop.hall3.line600.json
│ │ ├── Popustop.hall3.line616.json
│ │ ├── Popustop.hall3.line633.json
│ │ ├── Popustop.hall3.line649.json
│ │ ├── Popustop.hall3.line668.json
│ │ ├── Popustop.hall3.line68.json
│ │ ├── Popustop.hall3.line684.json
│ │ ├── Popustop.hall3.line700.json
│ │ ├── Popustop.hall3.line716.json
│ │ ├── Popustop.hall3.line733.json
│ │ ├── Popustop.hall3.line749.json
│ │ ├── Popustop.hall3.line768.json
│ │ ├── Popustop.hall3.line784.json
│ │ ├── Popustop.hall3.line800.json
│ │ ├── Popustop.hall3.line816.json
│ │ ├── Popustop.hall3.line833.json
│ │ ├── Popustop.hall3.line84.json
│ │ ├── Popustop.hall3.line849.json
│ │ ├── Popustop.hall3.line868.json
│ │ ├── Popustop.hall3.line884.json
│ │ ├── Popustop.hall3.line900.json
│ │ ├── Popustop.hall31000.line1000.json
│ │ ├── Popustop.hall31000.line1016.json
│ │ ├── Popustop.hall31000.line1033.json
│ │ ├── Popustop.hall31000.line1049.json
│ │ ├── Popustop.hall31000.line1068.json
│ │ ├── Popustop.hall31000.line1084.json
│ │ ├── Popustop.hall31000.line1100.json
│ │ ├── Popustop.hall31000.line916.json
│ │ ├── Popustop.hall31000.line933.json
│ │ ├── Popustop.hall31000.line949.json
│ │ ├── Popustop.hall31000.line968.json
│ │ ├── Popustop.hall31000.line984.json
│ │ ├── Popustop.hall4.line104.json
│ │ ├── Popustop.hall4.line120.json
│ │ ├── Popustop.hall4.line137.json
│ │ ├── Popustop.hall4.line153.json
│ │ ├── Popustop.hall4.line172.json
│ │ ├── Popustop.hall4.line188.json
│ │ ├── Popustop.hall4.line20.json
│ │ ├── Popustop.hall4.line204.json
│ │ ├── Popustop.hall4.line220.json
│ │ ├── Popustop.hall4.line237.json
│ │ ├── Popustop.hall4.line253.json
│ │ ├── Popustop.hall4.line272.json
│ │ ├── Popustop.hall4.line288.json
│ │ ├── Popustop.hall4.line304.json
│ │ ├── Popustop.hall4.line320.json
│ │ ├── Popustop.hall4.line337.json
│ │ ├── Popustop.hall4.line353.json
│ │ ├── Popustop.hall4.line37.json
│ │ ├── Popustop.hall4.line372.json
│ │ ├── Popustop.hall4.line388.json
│ │ ├── Popustop.hall4.line404.json
│ │ ├── Popustop.hall4.line420.json
│ │ ├── Popustop.hall4.line437.json
│ │ ├── Popustop.hall4.line453.json
│ │ ├── Popustop.hall4.line472.json
│ │ ├── Popustop.hall4.line488.json
│ │ ├── Popustop.hall4.line504.json
│ │ ├── Popustop.hall4.line520.json
│ │ ├── Popustop.hall4.line53.json
│ │ ├── Popustop.hall4.line537.json
│ │ ├── Popustop.hall4.line553.json
│ │ ├── Popustop.hall4.line572.json
│ │ ├── Popustop.hall4.line588.json
│ │ ├── Popustop.hall4.line604.json
│ │ ├── Popustop.hall4.line620.json
│ │ ├── Popustop.hall4.line637.json
│ │ ├── Popustop.hall4.line653.json
│ │ ├── Popustop.hall4.line672.json
│ │ ├── Popustop.hall4.line688.json
│ │ ├── Popustop.hall4.line704.json
│ │ ├── Popustop.hall4.line72.json
│ │ ├── Popustop.hall4.line720.json
│ │ ├── Popustop.hall4.line737.json
│ │ ├── Popustop.hall4.line753.json
│ │ ├── Popustop.hall4.line772.json
│ │ ├── Popustop.hall4.line788.json
│ │ ├── Popustop.hall4.line804.json
│ │ ├── Popustop.hall4.line820.json
│ │ ├── Popustop.hall4.line837.json
│ │ ├── Popustop.hall4.line853.json
│ │ ├── Popustop.hall4.line872.json
│ │ ├── Popustop.hall4.line88.json
│ │ ├── Popustop.hall4.line888.json
│ │ ├── Popustop.hall4.line904.json
│ │ ├── Popustop.hall41000.line1004.json
│ │ ├── Popustop.hall41000.line1020.json
│ │ ├── Popustop.hall41000.line1037.json
│ │ ├── Popustop.hall41000.line1053.json
│ │ ├── Popustop.hall41000.line1072.json
│ │ ├── Popustop.hall41000.line1088.json
│ │ ├── Popustop.hall41000.line1104.json
│ │ ├── Popustop.hall41000.line920.json
│ │ ├── Popustop.hall41000.line937.json
│ │ ├── Popustop.hall41000.line953.json
│ │ ├── Popustop.hall41000.line972.json
│ │ ├── Popustop.hall41000.line988.json
│ │ ├── Popustop.lobby.line3.json
│ │ ├── Popustop.stairs.line1021.json
│ │ ├── Popustop.stairs.line121.json
│ │ ├── Popustop.stairs.line2.json
│ │ ├── Popustop.stairs.line21.json
│ │ ├── Popustop.stairs.line221.json
│ │ ├── Popustop.stairs.line321.json
│ │ ├── Popustop.stairs.line421.json
│ │ ├── Popustop.stairs.line521.json
│ │ ├── Popustop.stairs.line621.json
│ │ ├── Popustop.stairs.line721.json
│ │ ├── Popustop.stairs.line821.json
│ │ ├── Popustop.stairs.line921.json
│ │ ├── basement.line1.json
│ │ ├── item-Popustop.plaque.json
│ │ └── roof.line1105.json
│ ├── Streets/
│ │ ├── Aric_Ave_104_front.json
│ │ ├── Aric_Ave_104_interior.json
│ │ ├── Aric_Ave_14_front.json
│ │ ├── Aric_Ave_14_interior.json
│ │ ├── Aric_Ave_24_front.json
│ │ ├── Aric_Ave_24_interior.json
│ │ ├── Aric_Ave_34_front.json
│ │ ├── Aric_Ave_34_interior.json
│ │ ├── Aric_Ave_44_front.json
│ │ ├── Aric_Ave_44_interior.json
│ │ ├── Aric_Ave_54_front.json
│ │ ├── Aric_Ave_54_interior.json
│ │ ├── Aric_Ave_64_front.json
│ │ ├── Aric_Ave_64_interior.json
│ │ ├── Aric_Ave_74_front.json
│ │ ├── Aric_Ave_74_interior.json
│ │ ├── Aric_Ave_84_front.json
│ │ ├── Aric_Ave_84_interior.json
│ │ ├── Aric_Ave_94_front.json
│ │ ├── Aric_Ave_94_interior.json
│ │ ├── Aric_Ave_cross.json
│ │ ├── Aric_Ave_e_end.json
│ │ ├── Aric_Ave_w_end.json
│ │ ├── Baker_St_1021_front.json
│ │ ├── Baker_St_1021_interior.json
│ │ ├── Baker_St_121_front.json
│ │ ├── Baker_St_121_interior.json
│ │ ├── Baker_St_221_front.json
│ │ ├── Baker_St_221_interior.json
│ │ ├── Baker_St_321_front.json
│ │ ├── Baker_St_321_interior.json
│ │ ├── Baker_St_421_front.json
│ │ ├── Baker_St_421_interior.json
│ │ ├── Baker_St_521_front.json
│ │ ├── Baker_St_521_interior.json
│ │ ├── Baker_St_621_front.json
│ │ ├── Baker_St_621_interior.json
│ │ ├── Baker_St_721_front.json
│ │ ├── Baker_St_721_interior.json
│ │ ├── Baker_St_821_front.json
│ │ ├── Baker_St_821_interior.json
│ │ ├── Baker_St_921_front.json
│ │ ├── Baker_St_921_interior.json
│ │ ├── Baker_St_cross.json
│ │ ├── Baker_St_e_end.json
│ │ ├── Baker_St_w_end.json
│ │ ├── Bleem_St_108_front.json
│ │ ├── Bleem_St_108_interior.json
│ │ ├── Bleem_St_18_front.json
│ │ ├── Bleem_St_18_interior.json
│ │ ├── Bleem_St_28_front.json
│ │ ├── Bleem_St_28_interior.json
│ │ ├── Bleem_St_38_front.json
│ │ ├── Bleem_St_38_interior.json
│ │ ├── Bleem_St_48_front.json
│ │ ├── Bleem_St_48_interior.json
│ │ ├── Bleem_St_58_front.json
│ │ ├── Bleem_St_58_interior.json
│ │ ├── Bleem_St_68_front.json
│ │ ├── Bleem_St_68_interior.json
│ │ ├── Bleem_St_78_front.json
│ │ ├── Bleem_St_78_interior.json
│ │ ├── Bleem_St_88_front.json
│ │ ├── Bleem_St_88_interior.json
│ │ ├── Bleem_St_98_front.json
│ │ ├── Bleem_St_98_interior.json
│ │ ├── Bleem_St_cross.json
│ │ ├── Bleem_St_n_end.json
│ │ ├── Bleem_St_s_end.json
│ │ ├── Cross_Rd_cross.json
│ │ ├── Dice_Ave_101_front.json
│ │ ├── Dice_Ave_101_interior.json
│ │ ├── Dice_Ave_11_front.json
│ │ ├── Dice_Ave_11_interior.json
│ │ ├── Dice_Ave_21_front.json
│ │ ├── Dice_Ave_21_interior.json
│ │ ├── Dice_Ave_31_front.json
│ │ ├── Dice_Ave_31_interior.json
│ │ ├── Dice_Ave_41_front.json
│ │ ├── Dice_Ave_41_interior.json
│ │ ├── Dice_Ave_51_front.json
│ │ ├── Dice_Ave_51_interior.json
│ │ ├── Dice_Ave_61_front.json
│ │ ├── Dice_Ave_61_interior.json
│ │ ├── Dice_Ave_71_front.json
│ │ ├── Dice_Ave_71_interior.json
│ │ ├── Dice_Ave_81_front.json
│ │ ├── Dice_Ave_81_interior.json
│ │ ├── Dice_Ave_91_front.json
│ │ ├── Dice_Ave_91_interior.json
│ │ ├── Dice_Ave_cross.json
│ │ ├── Dice_Ave_n_end.json
│ │ ├── Dice_Ave_s_end.json
│ │ ├── Disk_Dr_1027_front.json
│ │ ├── Disk_Dr_1027_interior.json
│ │ ├── Disk_Dr_127_front.json
│ │ ├── Disk_Dr_127_interior.json
│ │ ├── Disk_Dr_227_front.json
│ │ ├── Disk_Dr_227_interior.json
│ │ ├── Disk_Dr_327_front.json
│ │ ├── Disk_Dr_327_interior.json
│ │ ├── Disk_Dr_427_front.json
│ │ ├── Disk_Dr_427_interior.json
│ │ ├── Disk_Dr_527_front.json
│ │ ├── Disk_Dr_527_interior.json
│ │ ├── Disk_Dr_627_front.json
│ │ ├── Disk_Dr_627_interior.json
│ │ ├── Disk_Dr_727_front.json
│ │ ├── Disk_Dr_727_interior.json
│ │ ├── Disk_Dr_827_front.json
│ │ ├── Disk_Dr_827_interior.json
│ │ ├── Disk_Dr_927_front.json
│ │ ├── Disk_Dr_927_interior.json
│ │ ├── Disk_Dr_cross.json
│ │ ├── Disk_Dr_n_end.json
│ │ ├── Disk_Dr_s_end.json
│ │ ├── EZ_St_1026_front.json
│ │ ├── EZ_St_1026_interior.json
│ │ ├── EZ_St_126_front.json
│ │ ├── EZ_St_126_interior.json
│ │ ├── EZ_St_226_front.json
│ │ ├── EZ_St_226_interior.json
│ │ ├── EZ_St_326_front.json
│ │ ├── EZ_St_326_interior.json
│ │ ├── EZ_St_426_front.json
│ │ ├── EZ_St_426_interior.json
│ │ ├── EZ_St_526_front.json
│ │ ├── EZ_St_526_interior.json
│ │ ├── EZ_St_626_front.json
│ │ ├── EZ_St_626_interior.json
│ │ ├── EZ_St_726_front.json
│ │ ├── EZ_St_726_interior.json
│ │ ├── EZ_St_826_front.json
│ │ ├── EZ_St_826_interior.json
│ │ ├── EZ_St_926_front.json
│ │ ├── EZ_St_926_interior.json
│ │ ├── EZ_St_cross.json
│ │ ├── EZ_St_n_end.json
│ │ ├── EZ_St_s_end.json
│ │ ├── Fast_Ln_1024_front.json
│ │ ├── Fast_Ln_1024_interior.json
│ │ ├── Fast_Ln_124_front.json
│ │ ├── Fast_Ln_124_interior.json
│ │ ├── Fast_Ln_224_front.json
│ │ ├── Fast_Ln_224_interior.json
│ │ ├── Fast_Ln_324_front.json
│ │ ├── Fast_Ln_324_interior.json
│ │ ├── Fast_Ln_424_front.json
│ │ ├── Fast_Ln_424_interior.json
│ │ ├── Fast_Ln_524_front.json
│ │ ├── Fast_Ln_524_interior.json
│ │ ├── Fast_Ln_624_front.json
│ │ ├── Fast_Ln_624_interior.json
│ │ ├── Fast_Ln_724_front.json
│ │ ├── Fast_Ln_724_interior.json
│ │ ├── Fast_Ln_824_front.json
│ │ ├── Fast_Ln_824_interior.json
│ │ ├── Fast_Ln_924_front.json
│ │ ├── Fast_Ln_924_interior.json
│ │ ├── Fast_Ln_cross.json
│ │ ├── Fast_Ln_n_end.json
│ │ ├── Fast_Ln_s_end.json
│ │ ├── Foon_Ave_107_front.json
│ │ ├── Foon_Ave_107_interior.json
│ │ ├── Foon_Ave_17_front.json
│ │ ├── Foon_Ave_17_interior.json
│ │ ├── Foon_Ave_27_front.json
│ │ ├── Foon_Ave_27_interior.json
│ │ ├── Foon_Ave_37_front.json
│ │ ├── Foon_Ave_37_interior.json
│ │ ├── Foon_Ave_47_front.json
│ │ ├── Foon_Ave_47_interior.json
│ │ ├── Foon_Ave_57_front.json
│ │ ├── Foon_Ave_57_interior.json
│ │ ├── Foon_Ave_67_front.json
│ │ ├── Foon_Ave_67_interior.json
│ │ ├── Foon_Ave_77_front.json
│ │ ├── Foon_Ave_77_interior.json
│ │ ├── Foon_Ave_87_front.json
│ │ ├── Foon_Ave_87_interior.json
│ │ ├── Foon_Ave_97_front.json
│ │ ├── Foon_Ave_97_interior.json
│ │ ├── Foon_Ave_cross.json
│ │ ├── Foon_Ave_n_end.json
│ │ ├── Foon_Ave_s_end.json
│ │ ├── HyperDr_1030_front.json
│ │ ├── HyperDr_1030_interior.json
│ │ ├── HyperDr_130_front.json
│ │ ├── HyperDr_130_interior.json
│ │ ├── HyperDr_230_front.json
│ │ ├── HyperDr_230_interior.json
│ │ ├── HyperDr_330_front.json
│ │ ├── HyperDr_330_interior.json
│ │ ├── HyperDr_430_front.json
│ │ ├── HyperDr_430_interior.json
│ │ ├── HyperDr_530_front.json
│ │ ├── HyperDr_530_interior.json
│ │ ├── HyperDr_630_front.json
│ │ ├── HyperDr_630_interior.json
│ │ ├── HyperDr_730_front.json
│ │ ├── HyperDr_730_interior.json
│ │ ├── HyperDr_830_front.json
│ │ ├── HyperDr_830_interior.json
│ │ ├── HyperDr_930_front.json
│ │ ├── HyperDr_930_interior.json
│ │ ├── HyperDr_cross.json
│ │ ├── HyperDr_n_end.json
│ │ ├── HyperDr_s_end.json
│ │ ├── IO_1017_front.json
│ │ ├── IO_1017_interior.json
│ │ ├── IO_117_front.json
│ │ ├── IO_117_interior.json
│ │ ├── IO_217_front.json
│ │ ├── IO_217_interior.json
│ │ ├── IO_317_front.json
│ │ ├── IO_317_interior.json
│ │ ├── IO_417_front.json
│ │ ├── IO_417_interior.json
│ │ ├── IO_517_front.json
│ │ ├── IO_517_interior.json
│ │ ├── IO_617_front.json
│ │ ├── IO_617_interior.json
│ │ ├── IO_717_front.json
│ │ ├── IO_717_interior.json
│ │ ├── IO_817_front.json
│ │ ├── IO_817_interior.json
│ │ ├── IO_917_front.json
│ │ ├── IO_917_interior.json
│ │ ├── IO_cross.json
│ │ ├── IO_e_end.json
│ │ ├── IO_w_end.json
│ │ ├── Janice_Ln_1025_front.json
│ │ ├── Janice_Ln_1025_interior.json
│ │ ├── Janice_Ln_125_front.json
│ │ ├── Janice_Ln_125_interior.json
│ │ ├── Janice_Ln_225_front.json
│ │ ├── Janice_Ln_225_interior.json
│ │ ├── Janice_Ln_325_front.json
│ │ ├── Janice_Ln_325_interior.json
│ │ ├── Janice_Ln_425_front.json
│ │ ├── Janice_Ln_425_interior.json
│ │ ├── Janice_Ln_525_front.json
│ │ ├── Janice_Ln_525_interior.json
│ │ ├── Janice_Ln_625_front.json
│ │ ├── Janice_Ln_625_interior.json
│ │ ├── Janice_Ln_725_front.json
│ │ ├── Janice_Ln_725_interior.json
│ │ ├── Janice_Ln_825_front.json
│ │ ├── Janice_Ln_825_interior.json
│ │ ├── Janice_Ln_925_front.json
│ │ ├── Janice_Ln_925_interior.json
│ │ ├── Janice_Ln_cross.json
│ │ ├── Janice_Ln_n_end.json
│ │ ├── Janice_Ln_s_end.json
│ │ ├── Kerner_1016_front.json
│ │ ├── Kerner_1016_interior.json
│ │ ├── Kerner_116_front.json
│ │ ├── Kerner_116_interior.json
│ │ ├── Kerner_216_front.json
│ │ ├── Kerner_216_interior.json
│ │ ├── Kerner_316_front.json
│ │ ├── Kerner_316_interior.json
│ │ ├── Kerner_416_front.json
│ │ ├── Kerner_416_interior.json
│ │ ├── Kerner_516_front.json
│ │ ├── Kerner_516_interior.json
│ │ ├── Kerner_616_front.json
│ │ ├── Kerner_616_interior.json
│ │ ├── Kerner_716_front.json
│ │ ├── Kerner_716_interior.json
│ │ ├── Kerner_816_front.json
│ │ ├── Kerner_816_interior.json
│ │ ├── Kerner_916_front.json
│ │ ├── Kerner_916_interior.json
│ │ ├── Kerner_cross.json
│ │ ├── Kerner_n_end.json
│ │ ├── Kerner_s_end.json
│ │ ├── Kings_Rd_1010_front.json
│ │ ├── Kings_Rd_1010_interior.json
│ │ ├── Kings_Rd_110_front.json
│ │ ├── Kings_Rd_110_interior.json
│ │ ├── Kings_Rd_210_front.json
│ │ ├── Kings_Rd_210_interior.json
│ │ ├── Kings_Rd_310_front.json
│ │ ├── Kings_Rd_310_interior.json
│ │ ├── Kings_Rd_410_front.json
│ │ ├── Kings_Rd_410_interior.json
│ │ ├── Kings_Rd_510_front.json
│ │ ├── Kings_Rd_510_interior.json
│ │ ├── Kings_Rd_610_front.json
│ │ ├── Kings_Rd_610_interior.json
│ │ ├── Kings_Rd_710_front.json
│ │ ├── Kings_Rd_710_interior.json
│ │ ├── Kings_Rd_810_front.json
│ │ ├── Kings_Rd_810_interior.json
│ │ ├── Kings_Rd_910_front.json
│ │ ├── Kings_Rd_910_interior.json
│ │ ├── Kings_Rd_cross.json
│ │ ├── Kings_Rd_e_end.json
│ │ ├── Kings_Rd_w_end.json
│ │ ├── Kludge_Ct_1018_front.json
│ │ ├── Kludge_Ct_1018_interior.json
│ │ ├── Kludge_Ct_118_front.json
│ │ ├── Kludge_Ct_118_interior.json
│ │ ├── Kludge_Ct_218_front.json
│ │ ├── Kludge_Ct_218_interior.json
│ │ ├── Kludge_Ct_318_front.json
│ │ ├── Kludge_Ct_318_interior.json
│ │ ├── Kludge_Ct_418_front.json
│ │ ├── Kludge_Ct_418_interior.json
│ │ ├── Kludge_Ct_518_front.json
│ │ ├── Kludge_Ct_518_interior.json
│ │ ├── Kludge_Ct_618_front.json
│ │ ├── Kludge_Ct_618_interior.json
│ │ ├── Kludge_Ct_718_front.json
│ │ ├── Kludge_Ct_718_interior.json
│ │ ├── Kludge_Ct_818_front.json
│ │ ├── Kludge_Ct_818_interior.json
│ │ ├── Kludge_Ct_918_front.json
│ │ ├── Kludge_Ct_918_interior.json
│ │ ├── Kludge_Ct_cross.json
│ │ ├── Kludge_Ct_n_end.json
│ │ ├── Kludge_Ct_s_end.json
│ │ ├── Lori_Ln_1013_front.json
│ │ ├── Lori_Ln_1013_interior.json
│ │ ├── Lori_Ln_113_front.json
│ │ ├── Lori_Ln_113_interior.json
│ │ ├── Lori_Ln_213_front.json
│ │ ├── Lori_Ln_213_interior.json
│ │ ├── Lori_Ln_313_front.json
│ │ ├── Lori_Ln_313_interior.json
│ │ ├── Lori_Ln_413_front.json
│ │ ├── Lori_Ln_413_interior.json
│ │ ├── Lori_Ln_513_front.json
│ │ ├── Lori_Ln_513_interior.json
│ │ ├── Lori_Ln_613_front.json
│ │ ├── Lori_Ln_613_interior.json
│ │ ├── Lori_Ln_713_front.json
│ │ ├── Lori_Ln_713_interior.json
│ │ ├── Lori_Ln_813_front.json
│ │ ├── Lori_Ln_813_interior.json
│ │ ├── Lori_Ln_913_front.json
│ │ ├── Lori_Ln_913_interior.json
│ │ ├── Lori_Ln_cross.json
│ │ ├── Lori_Ln_e_end.json
│ │ ├── Lori_Ln_w_end.json
│ │ ├── Milky_Wy_1028_front.json
│ │ ├── Milky_Wy_1028_interior.json
│ │ ├── Milky_Wy_128_front.json
│ │ ├── Milky_Wy_128_interior.json
│ │ ├── Milky_Wy_228_front.json
│ │ ├── Milky_Wy_228_interior.json
│ │ ├── Milky_Wy_328_front.json
│ │ ├── Milky_Wy_328_interior.json
│ │ ├── Milky_Wy_428_front.json
│ │ ├── Milky_Wy_428_interior.json
│ │ ├── Milky_Wy_528_front.json
│ │ ├── Milky_Wy_528_interior.json
│ │ ├── Milky_Wy_628_front.json
│ │ ├── Milky_Wy_628_interior.json
│ │ ├── Milky_Wy_728_front.json
│ │ ├── Milky_Wy_728_interior.json
│ │ ├── Milky_Wy_828_front.json
│ │ ├── Milky_Wy_828_interior.json
│ │ ├── Milky_Wy_928_front.json
│ │ ├── Milky_Wy_928_interior.json
│ │ ├── Milky_Wy_cross.json
│ │ ├── Milky_Wy_n_end.json
│ │ ├── Milky_Wy_s_end.json
│ │ ├── Mince_St_102_front.json
│ │ ├── Mince_St_102_interior.json
│ │ ├── Mince_St_12_front.json
│ │ ├── Mince_St_12_interior.json
│ │ ├── Mince_St_22_front.json
│ │ ├── Mince_St_22_interior.json
│ │ ├── Mince_St_32_front.json
│ │ ├── Mince_St_32_interior.json
│ │ ├── Mince_St_42_front.json
│ │ ├── Mince_St_42_interior.json
│ │ ├── Mince_St_52_front.json
│ │ ├── Mince_St_52_interior.json
│ │ ├── Mince_St_62_front.json
│ │ ├── Mince_St_62_interior.json
│ │ ├── Mince_St_72_front.json
│ │ ├── Mince_St_72_interior.json
│ │ ├── Mince_St_82_front.json
│ │ ├── Mince_St_82_interior.json
│ │ ├── Mince_St_92_front.json
│ │ ├── Mince_St_92_interior.json
│ │ ├── Mince_St_cross.json
│ │ ├── Mince_St_n_end.json
│ │ ├── Mince_St_s_end.json
│ │ ├── OutamyWy_1029_front.json
│ │ ├── OutamyWy_1029_interior.json
│ │ ├── OutamyWy_129_front.json
│ │ ├── OutamyWy_129_interior.json
│ │ ├── OutamyWy_229_front.json
│ │ ├── OutamyWy_229_interior.json
│ │ ├── OutamyWy_329_front.json
│ │ ├── OutamyWy_329_interior.json
│ │ ├── OutamyWy_429_front.json
│ │ ├── OutamyWy_429_interior.json
│ │ ├── OutamyWy_529_front.json
│ │ ├── OutamyWy_529_interior.json
│ │ ├── OutamyWy_629_front.json
│ │ ├── OutamyWy_629_interior.json
│ │ ├── OutamyWy_729_front.json
│ │ ├── OutamyWy_729_interior.json
│ │ ├── OutamyWy_829_front.json
│ │ ├── OutamyWy_829_interior.json
│ │ ├── OutamyWy_929_front.json
│ │ ├── OutamyWy_929_interior.json
│ │ ├── OutamyWy_cross.json
│ │ ├── OutamyWy_n_end.json
│ │ ├── OutamyWy_s_end.json
│ │ ├── Over_Ave_cross.json
│ │ ├── Pam_Pl_1014_front.json
│ │ ├── Pam_Pl_1014_interior.json
│ │ ├── Pam_Pl_114_front.json
│ │ ├── Pam_Pl_114_interior.json
│ │ ├── Pam_Pl_214_front.json
│ │ ├── Pam_Pl_214_interior.json
│ │ ├── Pam_Pl_314_front.json
│ │ ├── Pam_Pl_314_interior.json
│ │ ├── Pam_Pl_414_front.json
│ │ ├── Pam_Pl_414_interior.json
│ │ ├── Pam_Pl_514_front.json
│ │ ├── Pam_Pl_514_interior.json
│ │ ├── Pam_Pl_614_front.json
│ │ ├── Pam_Pl_614_interior.json
│ │ ├── Pam_Pl_714_front.json
│ │ ├── Pam_Pl_714_interior.json
│ │ ├── Pam_Pl_814_front.json
│ │ ├── Pam_Pl_814_interior.json
│ │ ├── Pam_Pl_914_front.json
│ │ ├── Pam_Pl_914_interior.json
│ │ ├── Pam_Pl_cross.json
│ │ ├── Pam_Pl_e_end.json
│ │ ├── Pam_Pl_w_end.json
│ │ ├── Pokey_Pl_1022_front.json
│ │ ├── Pokey_Pl_1022_interior.json
│ │ ├── Pokey_Pl_122_front.json
│ │ ├── Pokey_Pl_122_interior.json
│ │ ├── Pokey_Pl_222_front.json
│ │ ├── Pokey_Pl_222_interior.json
│ │ ├── Pokey_Pl_322_front.json
│ │ ├── Pokey_Pl_322_interior.json
│ │ ├── Pokey_Pl_422_front.json
│ │ ├── Pokey_Pl_422_interior.json
│ │ ├── Pokey_Pl_522_front.json
│ │ ├── Pokey_Pl_522_interior.json
│ │ ├── Pokey_Pl_622_front.json
│ │ ├── Pokey_Pl_622_interior.json
│ │ ├── Pokey_Pl_722_front.json
│ │ ├── Pokey_Pl_722_interior.json
│ │ ├── Pokey_Pl_822_front.json
│ │ ├── Pokey_Pl_822_interior.json
│ │ ├── Pokey_Pl_922_front.json
│ │ ├── Pokey_Pl_922_interior.json
│ │ ├── Pokey_Pl_cross.json
│ │ ├── Pokey_Pl_e_end.json
│ │ ├── Pokey_Pl_w_end.json
│ │ ├── Randy_Rd_103_front.json
│ │ ├── Randy_Rd_103_interior.json
│ │ ├── Randy_Rd_13_front.json
│ │ ├── Randy_Rd_13_interior.json
│ │ ├── Randy_Rd_23_front.json
│ │ ├── Randy_Rd_23_interior.json
│ │ ├── Randy_Rd_33_front.json
│ │ ├── Randy_Rd_33_interior.json
│ │ ├── Randy_Rd_43_front.json
│ │ ├── Randy_Rd_43_interior.json
│ │ ├── Randy_Rd_53_front.json
│ │ ├── Randy_Rd_53_interior.json
│ │ ├── Randy_Rd_63_front.json
│ │ ├── Randy_Rd_63_interior.json
│ │ ├── Randy_Rd_73_front.json
│ │ ├── Randy_Rd_73_interior.json
│ │ ├── Randy_Rd_83_front.json
│ │ ├── Randy_Rd_83_interior.json
│ │ ├── Randy_Rd_93_front.json
│ │ ├── Randy_Rd_93_interior.json
│ │ ├── Randy_Rd_cross.json
│ │ ├── Randy_Rd_e_end.json
│ │ ├── Randy_Rd_w_end.json
│ │ ├── RoadSt_1032_front.json
│ │ ├── RoadSt_1032_interior.json
│ │ ├── RoadSt_132_front.json
│ │ ├── RoadSt_132_interior.json
│ │ ├── RoadSt_232_front.json
│ │ ├── RoadSt_232_interior.json
│ │ ├── RoadSt_332_front.json
│ │ ├── RoadSt_332_interior.json
│ │ ├── RoadSt_432_front.json
│ │ ├── RoadSt_432_interior.json
│ │ ├── RoadSt_532_front.json
│ │ ├── RoadSt_532_interior.json
│ │ ├── RoadSt_632_front.json
│ │ ├── RoadSt_632_interior.json
│ │ ├── RoadSt_732_front.json
│ │ ├── RoadSt_732_interior.json
│ │ ├── RoadSt_832_front.json
│ │ ├── RoadSt_832_interior.json
│ │ ├── RoadSt_932_front.json
│ │ ├── RoadSt_932_interior.json
│ │ ├── RoadSt_cross.json
│ │ ├── RoadSt_n_end.json
│ │ ├── RoadSt_s_end.json
│ │ ├── Rocky_Rd_1015_front.json
│ │ ├── Rocky_Rd_1015_interior.json
│ │ ├── Rocky_Rd_115_front.json
│ │ ├── Rocky_Rd_115_interior.json
│ │ ├── Rocky_Rd_215_front.json
│ │ ├── Rocky_Rd_215_interior.json
│ │ ├── Rocky_Rd_315_front.json
│ │ ├── Rocky_Rd_315_interior.json
│ │ ├── Rocky_Rd_415_front.json
│ │ ├── Rocky_Rd_415_interior.json
│ │ ├── Rocky_Rd_515_front.json
│ │ ├── Rocky_Rd_515_interior.json
│ │ ├── Rocky_Rd_615_front.json
│ │ ├── Rocky_Rd_615_interior.json
│ │ ├── Rocky_Rd_715_front.json
│ │ ├── Rocky_Rd_715_interior.json
│ │ ├── Rocky_Rd_815_front.json
│ │ ├── Rocky_Rd_815_interior.json
│ │ ├── Rocky_Rd_915_front.json
│ │ ├── Rocky_Rd_915_interior.json
│ │ ├── Rocky_Rd_cross.json
│ │ ├── Rocky_Rd_e_end.json
│ │ ├── Rocky_Rd_w_end.json
│ │ ├── Saint_St_1019_front.json
│ │ ├── Saint_St_1019_interior.json
│ │ ├── Saint_St_119_front.json
│ │ ├── Saint_St_119_interior.json
│ │ ├── Saint_St_219_front.json
│ │ ├── Saint_St_219_interior.json
│ │ ├── Saint_St_319_front.json
│ │ ├── Saint_St_319_interior.json
│ │ ├── Saint_St_419_front.json
│ │ ├── Saint_St_419_interior.json
│ │ ├── Saint_St_519_front.json
│ │ ├── Saint_St_519_interior.json
│ │ ├── Saint_St_619_front.json
│ │ ├── Saint_St_619_interior.json
│ │ ├── Saint_St_719_front.json
│ │ ├── Saint_St_719_interior.json
│ │ ├── Saint_St_819_front.json
│ │ ├── Saint_St_819_interior.json
│ │ ├── Saint_St_919_front.json
│ │ ├── Saint_St_919_interior.json
│ │ ├── Saint_St_cross.json
│ │ ├── Saint_St_e_end.json
│ │ ├── Saint_St_w_end.json
│ │ ├── Spiff_Ln_1011_front.json
│ │ ├── Spiff_Ln_1011_interior.json
│ │ ├── Spiff_Ln_111_front.json
│ │ ├── Spiff_Ln_111_interior.json
│ │ ├── Spiff_Ln_211_front.json
│ │ ├── Spiff_Ln_211_interior.json
│ │ ├── Spiff_Ln_311_front.json
│ │ ├── Spiff_Ln_311_interior.json
│ │ ├── Spiff_Ln_411_front.json
│ │ ├── Spiff_Ln_411_interior.json
│ │ ├── Spiff_Ln_511_front.json
│ │ ├── Spiff_Ln_511_interior.json
│ │ ├── Spiff_Ln_611_front.json
│ │ ├── Spiff_Ln_611_interior.json
│ │ ├── Spiff_Ln_711_front.json
│ │ ├── Spiff_Ln_711_interior.json
│ │ ├── Spiff_Ln_811_front.json
│ │ ├── Spiff_Ln_811_interior.json
│ │ ├── Spiff_Ln_911_front.json
│ │ ├── Spiff_Ln_911_interior.json
│ │ ├── Spiff_Ln_cross.json
│ │ ├── Spiff_Ln_e_end.json
│ │ ├── Spiff_Ln_w_end.json
│ │ ├── StreetRd_1031_front.json
│ │ ├── StreetRd_1031_interior.json
│ │ ├── StreetRd_131_front.json
│ │ ├── StreetRd_131_interior.json
│ │ ├── StreetRd_231_front.json
│ │ ├── StreetRd_231_interior.json
│ │ ├── StreetRd_331_front.json
│ │ ├── StreetRd_331_interior.json
│ │ ├── StreetRd_431_front.json
│ │ ├── StreetRd_431_interior.json
│ │ ├── StreetRd_531_front.json
│ │ ├── StreetRd_531_interior.json
│ │ ├── StreetRd_631_front.json
│ │ ├── StreetRd_631_interior.json
│ │ ├── StreetRd_731_front.json
│ │ ├── StreetRd_731_interior.json
│ │ ├── StreetRd_831_front.json
│ │ ├── StreetRd_831_interior.json
│ │ ├── StreetRd_931_front.json
│ │ ├── StreetRd_931_interior.json
│ │ ├── StreetRd_cross.json
│ │ ├── StreetRd_n_end.json
│ │ ├── StreetRd_s_end.json
│ │ ├── Sunday_Dr_1020_front.json
│ │ ├── Sunday_Dr_1020_interior.json
│ │ ├── Sunday_Dr_120_front.json
│ │ ├── Sunday_Dr_120_interior.json
│ │ ├── Sunday_Dr_220_front.json
│ │ ├── Sunday_Dr_220_interior.json
│ │ ├── Sunday_Dr_320_front.json
│ │ ├── Sunday_Dr_320_interior.json
│ │ ├── Sunday_Dr_420_front.json
│ │ ├── Sunday_Dr_420_interior.json
│ │ ├── Sunday_Dr_520_front.json
│ │ ├── Sunday_Dr_520_interior.json
│ │ ├── Sunday_Dr_620_front.json
│ │ ├── Sunday_Dr_620_interior.json
│ │ ├── Sunday_Dr_720_front.json
│ │ ├── Sunday_Dr_720_interior.json
│ │ ├── Sunday_Dr_820_front.json
│ │ ├── Sunday_Dr_820_interior.json
│ │ ├── Sunday_Dr_920_front.json
│ │ ├── Sunday_Dr_920_interior.json
│ │ ├── Sunday_Dr_cross.json
│ │ ├── Sunday_Dr_e_end.json
│ │ ├── Sunday_Dr_w_end.json
│ │ ├── This_Way_105_front.json
│ │ ├── This_Way_105_interior.json
│ │ ├── This_Way_15_front.json
│ │ ├── This_Way_15_interior.json
│ │ ├── This_Way_25_front.json
│ │ ├── This_Way_25_interior.json
│ │ ├── This_Way_35_front.json
│ │ ├── This_Way_35_interior.json
│ │ ├── This_Way_45_front.json
│ │ ├── This_Way_45_interior.json
│ │ ├── This_Way_55_front.json
│ │ ├── This_Way_55_interior.json
│ │ ├── This_Way_65_front.json
│ │ ├── This_Way_65_interior.json
│ │ ├── This_Way_75_front.json
│ │ ├── This_Way_75_interior.json
│ │ ├── This_Way_85_front.json
│ │ ├── This_Way_85_interior.json
│ │ ├── This_Way_95_front.json
│ │ ├── This_Way_95_interior.json
│ │ ├── This_Way_cross.json
│ │ ├── This_Way_e_end.json
│ │ ├── This_Way_w_end.json
│ │ ├── Wacka_Rd_109_front.json
│ │ ├── Wacka_Rd_109_interior.json
│ │ ├── Wacka_Rd_19_front.json
│ │ ├── Wacka_Rd_19_interior.json
│ │ ├── Wacka_Rd_29_front.json
│ │ ├── Wacka_Rd_29_interior.json
│ │ ├── Wacka_Rd_39_front.json
│ │ ├── Wacka_Rd_39_interior.json
│ │ ├── Wacka_Rd_49_front.json
│ │ ├── Wacka_Rd_49_interior.json
│ │ ├── Wacka_Rd_59_front.json
│ │ ├── Wacka_Rd_59_interior.json
│ │ ├── Wacka_Rd_69_front.json
│ │ ├── Wacka_Rd_69_interior.json
│ │ ├── Wacka_Rd_79_front.json
│ │ ├── Wacka_Rd_79_interior.json
│ │ ├── Wacka_Rd_89_front.json
│ │ ├── Wacka_Rd_89_interior.json
│ │ ├── Wacka_Rd_99_front.json
│ │ ├── Wacka_Rd_99_interior.json
│ │ ├── Wacka_Rd_cross.json
│ │ ├── Wacka_Rd_e_end.json
│ │ ├── Wacka_Rd_w_end.json
│ │ ├── Warp_Dr_1023_front.json
│ │ ├── Warp_Dr_1023_interior.json
│ │ ├── Warp_Dr_123_front.json
│ │ ├── Warp_Dr_123_interior.json
│ │ ├── Warp_Dr_223_front.json
│ │ ├── Warp_Dr_223_interior.json
│ │ ├── Warp_Dr_323_front.json
│ │ ├── Warp_Dr_323_interior.json
│ │ ├── Warp_Dr_423_front.json
│ │ ├── Warp_Dr_423_interior.json
│ │ ├── Warp_Dr_523_front.json
│ │ ├── Warp_Dr_523_interior.json
│ │ ├── Warp_Dr_623_front.json
│ │ ├── Warp_Dr_623_interior.json
│ │ ├── Warp_Dr_723_front.json
│ │ ├── Warp_Dr_723_interior.json
│ │ ├── Warp_Dr_823_front.json
│ │ ├── Warp_Dr_823_interior.json
│ │ ├── Warp_Dr_923_front.json
│ │ ├── Warp_Dr_923_interior.json
│ │ ├── Warp_Dr_cross.json
│ │ ├── Warp_Dr_n_end.json
│ │ ├── Warp_Dr_s_end.json
│ │ ├── Wazoo_St_1012_front.json
│ │ ├── Wazoo_St_1012_interior.json
│ │ ├── Wazoo_St_112_front.json
│ │ ├── Wazoo_St_112_interior.json
│ │ ├── Wazoo_St_212_front.json
│ │ ├── Wazoo_St_212_interior.json
│ │ ├── Wazoo_St_312_front.json
│ │ ├── Wazoo_St_312_interior.json
│ │ ├── Wazoo_St_412_front.json
│ │ ├── Wazoo_St_412_interior.json
│ │ ├── Wazoo_St_512_front.json
│ │ ├── Wazoo_St_512_interior.json
│ │ ├── Wazoo_St_612_front.json
│ │ ├── Wazoo_St_612_interior.json
│ │ ├── Wazoo_St_712_front.json
│ │ ├── Wazoo_St_712_interior.json
│ │ ├── Wazoo_St_812_front.json
│ │ ├── Wazoo_St_812_interior.json
│ │ ├── Wazoo_St_912_front.json
│ │ ├── Wazoo_St_912_interior.json
│ │ ├── Wazoo_St_cross.json
│ │ ├── Wazoo_St_e_end.json
│ │ ├── Wazoo_St_w_end.json
│ │ ├── Wrong_Wy_106_front.json
│ │ ├── Wrong_Wy_106_interior.json
│ │ ├── Wrong_Wy_16_front.json
│ │ ├── Wrong_Wy_16_interior.json
│ │ ├── Wrong_Wy_26_front.json
│ │ ├── Wrong_Wy_26_interior.json
│ │ ├── Wrong_Wy_36_front.json
│ │ ├── Wrong_Wy_36_interior.json
│ │ ├── Wrong_Wy_46_front.json
│ │ ├── Wrong_Wy_46_interior.json
│ │ ├── Wrong_Wy_56_front.json
│ │ ├── Wrong_Wy_56_interior.json
│ │ ├── Wrong_Wy_66_front.json
│ │ ├── Wrong_Wy_66_interior.json
│ │ ├── Wrong_Wy_76_front.json
│ │ ├── Wrong_Wy_76_interior.json
│ │ ├── Wrong_Wy_86_front.json
│ │ ├── Wrong_Wy_86_interior.json
│ │ ├── Wrong_Wy_96_front.json
│ │ ├── Wrong_Wy_96_interior.json
│ │ ├── Wrong_Wy_cross.json
│ │ ├── Wrong_Wy_e_end.json
│ │ └── Wrong_Wy_w_end.json
│ ├── Text/
│ │ ├── .gitignore
│ │ ├── charset/
│ │ │ ├── charset.css
│ │ │ ├── charset.fon
│ │ │ ├── charset.pf
│ │ │ ├── index.html
│ │ │ └── specimen_files/
│ │ │ ├── css/
│ │ │ │ └── style.css
│ │ │ └── javascript/
│ │ │ ├── color-switcher.js
│ │ │ ├── parallax.js
│ │ │ ├── responsive-menu.js
│ │ │ └── scroll-animation.js
│ │ ├── text-02031988-rant-vol2-no4.json
│ │ ├── text-02031988-rant-vol2-no4.json.html
│ │ ├── text-02101988-rant-vol2-no5.json
│ │ ├── text-02101988-rant-vol2-no5.json.html
│ │ ├── text-02121988-weekendevents.json
│ │ ├── text-02121988-weekendevents.json.html
│ │ ├── text-02171988-rant-vol2-no6.json
│ │ ├── text-02171988-rant-vol2-no6.json.html
│ │ ├── text-02241988-rant-vol2-no7.json
│ │ ├── text-02241988-rant-vol2-no7.json.html
│ │ ├── text-03021988-rant-vol2-no8.json
│ │ ├── text-03021988-rant-vol2-no8.json.html
│ │ ├── text-03091988-rant-vol2-no9.json
│ │ ├── text-03091988-rant-vol2-no9.json.html
│ │ ├── text-03161988-rant-vol2-no9.json
│ │ ├── text-03161988-rant-vol2-no9.json.html
│ │ ├── text-03231988-rant-vol2-no10.json
│ │ ├── text-03231988-rant-vol2-no10.json.html
│ │ ├── text-03301988-rant-vol2-no8.json
│ │ ├── text-03301988-rant-vol2-no8.json.html
│ │ ├── text-04071988-rant-vol2-no8.json
│ │ ├── text-04071988-rant-vol2-no8.json.html
│ │ ├── text-04091988-rantflier.json
│ │ ├── text-04091988-rantflier.json.html
│ │ ├── text-04261988-rant-vol2-no8.json
│ │ ├── text-04261988-rant-vol2-no8.json.html
│ │ ├── text-04291988-rantflier.json
│ │ ├── text-04291988-rantflier.json.html
│ │ ├── text-08171987-rant-vol1-no1.json
│ │ ├── text-08171987-rant-vol1-no1.json.html
│ │ ├── text-09211987-rant-vol1-no2.json
│ │ ├── text-09211987-rant-vol1-no2.json.html
│ │ ├── text-10081987-rant-vol1-no4.json
│ │ ├── text-10081987-rant-vol1-no4.json.html
│ │ ├── text-1988-rant-vol0-no1-specialedition.json
│ │ ├── text-1988-rant-vol0-no1-specialedition.json.html
│ │ ├── text-blank.json
│ │ ├── text-blank.json.html
│ │ ├── text-bookofrecords.json.html
│ │ ├── text-captureflag.json
│ │ ├── text-captureflag.json.html
│ │ ├── text-captureflagunused.json
│ │ ├── text-captureflagunused.json.html
│ │ ├── text-crimehistory.json
│ │ ├── text-crimehistory.json.html
│ │ ├── text-dadasalesh.json
│ │ ├── text-dadasalesh.json.html
│ │ ├── text-dnalsiislandmap.json
│ │ ├── text-dnalsiislandmap.json.html
│ │ ├── text-elevatorhelp.1.json
│ │ ├── text-elevatorhelp.1.json.html
│ │ ├── text-habistockexchangenewsfall87.json
│ │ ├── text-habistockexchangenewsfall87.json.html
│ │ ├── text-habitatkeyboardmap.json
│ │ ├── text-habitatkeyboardmap.json.html
│ │ ├── text-historyofteleport.json
│ │ ├── text-historyofteleport.json.html
│ │ ├── text-historyoftournaments.json
│ │ ├── text-historyoftournaments.json.html
│ │ ├── text-key4823.json
│ │ ├── text-key4823.json.html
│ │ ├── text-key4824.json
│ │ ├── text-key4824.json.html
│ │ ├── text-key4829.json
│ │ ├── text-key4829.json.html
│ │ ├── text-mapofdowntownpop.json
│ │ ├── text-mapofdowntownpop.json.html
│ │ ├── text-missing.object.json
│ │ ├── text-missing.object.json.html
│ │ ├── text-plugh.json
│ │ ├── text-plugh.json.html
│ │ ├── text-popmap.json
│ │ ├── text-popmap.json.html
│ │ ├── text-popmap1988.json
│ │ ├── text-popmap1988.json.html
│ │ ├── text-portdir.json
│ │ ├── text-portdir.json.html
│ │ ├── text-rantflier1.json
│ │ ├── text-rantflier1.json.html
│ │ ├── text-savingthepasttextrestoration.json
│ │ ├── text-savingthepasttextrestoration.json.html
│ │ ├── text-stock.json
│ │ ├── text-stock.json.html
│ │ ├── text-stockaliens.json
│ │ ├── text-stockaliens.json.html
│ │ ├── text-stockblackthorn.json
│ │ ├── text-stockblackthorn.json.html
│ │ ├── text-stockinfocom.json
│ │ ├── text-stockinfocom.json.html
│ │ ├── text-stockmachuta.json
│ │ ├── text-stockmachuta.json.html
│ │ ├── text-stocknron.json
│ │ ├── text-stocknron.json.html
│ │ ├── text-stockoilbribe.json
│ │ ├── text-stockoilbribe.json.html
│ │ ├── text-stocksirtech.json
│ │ ├── text-stocksirtech.json.html
│ │ ├── text-telehistory.json
│ │ ├── text-telehistory.json.html
│ │ ├── text-teleporterhelp.json
│ │ ├── text-teleporterhelp.json.html
│ │ ├── text-thehabitatflyer.json
│ │ ├── text-thehabitatflyer.json.html
│ │ ├── text-weeklyrant.1.json
│ │ ├── text-weeklyrant.1.json.html
│ │ ├── text-weeklyrant.current.json
│ │ └── text-weeklyrant.current.json.html
│ ├── Users/
│ │ ├── user-aric.json
│ │ ├── user-chip.json
│ │ ├── user-devil.json
│ │ ├── user-elizabot.json
│ │ ├── user-empty.json
│ │ ├── user-janet.json
│ │ ├── user-jason.json
│ │ ├── user-keith.items.json
│ │ ├── user-keith.json
│ │ ├── user-keith2.json
│ │ ├── user-keith3.json
│ │ ├── user-pcollins.json
│ │ ├── user-randy.json
│ │ ├── user-rassilon.json
│ │ ├── user-ricky.json
│ │ ├── user-steve.json
│ │ ├── user-stu.json
│ │ ├── user-vonguard.json
│ │ └── user-welcomebot.json
│ ├── Welcome/
│ │ ├── welcomecenterext.json
│ │ ├── welcomecenterint.json
│ │ ├── welcomecenterinthatch.json
│ │ └── welcomecenterintvendo.json
│ ├── Woods/
│ │ ├── Woods_0i.json
│ │ ├── Woods_0j.json
│ │ ├── Woods_0k.json
│ │ ├── Woods_1164.json
│ │ ├── Woods_1284.json
│ │ ├── Woods_1i.json
│ │ ├── Woods_1j.json
│ │ ├── Woods_1k.json
│ │ ├── Woods_2f.json
│ │ ├── Woods_2i.json
│ │ ├── Woods_2j.json
│ │ ├── Woods_2k.json
│ │ ├── Woods_3c.json
│ │ ├── Woods_3d.json
│ │ ├── Woods_3f.json
│ │ ├── Woods_3i.json
│ │ ├── Woods_3j.json
│ │ ├── Woods_3k.json
│ │ ├── Woods_4f.json
│ │ ├── Woods_4g.json
│ │ ├── Woods_4h.json
│ │ ├── Woods_4i.json
│ │ ├── Woods_4j.json
│ │ ├── Woods_4k.json
│ │ ├── Woods_4l.json
│ │ ├── Woods_4m.json
│ │ ├── Woods_4t.json
│ │ ├── Woods_4u.json
│ │ ├── Woods_5a.json
│ │ ├── Woods_5b.json
│ │ ├── Woods_5c.json
│ │ ├── Woods_5d.json
│ │ ├── Woods_5e.json
│ │ ├── Woods_5f.json
│ │ ├── Woods_5g.json
│ │ ├── Woods_5h.json
│ │ ├── Woods_5i.json
│ │ ├── Woods_5j.json
│ │ ├── Woods_5k.json
│ │ ├── Woods_5l.json
│ │ ├── Woods_5m.json
│ │ ├── Woods_5n.json
│ │ ├── Woods_5o.json
│ │ ├── Woods_5p.json
│ │ ├── Woods_5q.json
│ │ ├── Woods_5r.json
│ │ ├── Woods_5s.json
│ │ ├── Woods_5t.json
│ │ ├── Woods_5u.json
│ │ ├── Woods_5v.json
│ │ ├── Woods_5w.json
│ │ ├── Woods_5x.json
│ │ ├── Woods_5y.json
│ │ ├── Woods_5z.json
│ │ ├── Woods_6a.json
│ │ ├── Woods_6b.json
│ │ ├── Woods_6c.json
│ │ ├── Woods_6d.json
│ │ ├── Woods_6e.json
│ │ ├── Woods_6f.json
│ │ ├── Woods_6g.json
│ │ ├── Woods_6h.json
│ │ ├── Woods_6i.json
│ │ ├── Woods_6j.json
│ │ ├── Woods_6k.json
│ │ ├── Woods_6l.json
│ │ ├── Woods_6m.json
│ │ ├── Woods_6n.json
│ │ ├── Woods_6o.json
│ │ ├── Woods_6p.json
│ │ ├── Woods_6q.json
│ │ ├── Woods_6r.json
│ │ ├── Woods_6s.json
│ │ ├── Woods_6t.json
│ │ ├── Woods_6u.json
│ │ ├── Woods_6v.json
│ │ ├── Woods_6w.json
│ │ ├── Woods_6x.json
│ │ ├── Woods_7a.json
│ │ ├── Woods_7b.json
│ │ ├── Woods_7c.json
│ │ ├── Woods_7d.json
│ │ ├── Woods_7e.json
│ │ ├── Woods_7f.json
│ │ ├── Woods_7g.json
│ │ ├── Woods_7h.json
│ │ ├── Woods_7k.json
│ │ ├── Woods_7l.json
│ │ ├── Woods_7m.json
│ │ ├── Woods_7n.json
│ │ ├── Woods_7o.json
│ │ ├── Woods_7p.json
│ │ ├── Woods_7q.json
│ │ ├── Woods_7r.json
│ │ ├── Woods_7s.json
│ │ ├── Woods_7t.json
│ │ ├── Woods_7u.json
│ │ ├── Woods_7v.json
│ │ ├── Woods_7w.json
│ │ ├── Woods_8g.json
│ │ ├── Woods_8h.json
│ │ ├── Woods_8q.json
│ │ ├── Woods_8r.json
│ │ ├── Woods_8s.json
│ │ ├── Woods_9q.json
│ │ ├── Woods_9r.json
│ │ ├── Woods_9s.json
│ │ ├── Woods_ap.json
│ │ ├── Woods_aq.json
│ │ ├── Woods_ar.json
│ │ ├── Woods_as.json
│ │ ├── Woods_bp.json
│ │ ├── Woods_bq.json
│ │ ├── Woods_br.json
│ │ ├── Woods_bs.json
│ │ ├── Woods_cm.json
│ │ ├── Woods_cn.json
│ │ ├── Woods_co.json
│ │ ├── Woods_cp.json
│ │ ├── Woods_cq.json
│ │ ├── Woods_cr.json
│ │ ├── Woods_cs.json
│ │ ├── Woods_dq.json
│ │ ├── Woods_dr.json
│ │ ├── Woods_ds.json
│ │ ├── Woods_dt.json
│ │ ├── Woods_eq.json
│ │ ├── Woods_er.json
│ │ ├── Woods_es.json
│ │ ├── Woods_et.json
│ │ ├── Woods_fq.json
│ │ ├── Woods_fr.json
│ │ ├── Woods_fs.json
│ │ ├── Woods_ft.json
│ │ ├── Woods_gq.json
│ │ ├── Woods_gr.json
│ │ └── Woods_gs.json
│ ├── classes-habitat.json
│ ├── convertClientDataToJava.js
│ ├── dbUtils.js
│ ├── dumpTeleportEntries.js
│ ├── generateBookOfRecords.js
│ ├── mongohelper.js
│ ├── new_Downtown/
│ │ ├── Downtown_10350.json
│ │ ├── Downtown_10351.json
│ │ ├── Downtown_10352.json
│ │ ├── Downtown_10385.json
│ │ ├── Downtown_10386.json
│ │ ├── Downtown_10456.json
│ │ ├── Downtown_10457.json
│ │ ├── Downtown_10458.json
│ │ ├── Downtown_10459.json
│ │ ├── Downtown_10473.json
│ │ ├── Downtown_10474.json
│ │ ├── Downtown_10475.json
│ │ ├── Downtown_10476.json
│ │ ├── Downtown_10477.json
│ │ ├── Downtown_10478.json
│ │ ├── Downtown_10479.json
│ │ ├── Downtown_1972.json
│ │ ├── Downtown_1974.json
│ │ ├── Downtown_1976.json
│ │ ├── Downtown_1977.json
│ │ ├── Downtown_1978.json
│ │ ├── Downtown_1979.json
│ │ ├── Downtown_1980.json
│ │ ├── Downtown_1g.json
│ │ ├── Downtown_1h.json
│ │ ├── Downtown_1i.json
│ │ ├── Downtown_1p.json
│ │ ├── Downtown_1q.json
│ │ ├── Downtown_1r.json
│ │ ├── Downtown_1t.json
│ │ ├── Downtown_1u.json
│ │ ├── Downtown_1v.json
│ │ ├── Downtown_2c.json
│ │ ├── Downtown_2d.json
│ │ ├── Downtown_2g.json
│ │ ├── Downtown_2i.json
│ │ ├── Downtown_2s.json
│ │ ├── Downtown_3b.json
│ │ ├── Downtown_3c.json
│ │ ├── Downtown_3d.json
│ │ ├── Downtown_3e.json
│ │ ├── Downtown_3f.json
│ │ ├── Downtown_3g.json
│ │ ├── Downtown_3h.json
│ │ ├── Downtown_3i.json
│ │ ├── Downtown_3j.json
│ │ ├── Downtown_3s.json
│ │ ├── Downtown_4a.json
│ │ ├── Downtown_4b.json
│ │ ├── Downtown_4c.json
│ │ ├── Downtown_4d.json
│ │ ├── Downtown_4e.json
│ │ ├── Downtown_4f.json
│ │ ├── Downtown_4g.json
│ │ ├── Downtown_4h.json
│ │ ├── Downtown_4i.json
│ │ ├── Downtown_4j.json
│ │ ├── Downtown_4k.json
│ │ ├── Downtown_4l.json
│ │ ├── Downtown_4m.json
│ │ ├── Downtown_4s.json
│ │ ├── Downtown_5a.json
│ │ ├── Downtown_5b.json
│ │ ├── Downtown_5c.json
│ │ ├── Downtown_5d.json
│ │ ├── Downtown_5e.json
│ │ ├── Downtown_5f.json
│ │ ├── Downtown_5g.json
│ │ ├── Downtown_5h.json
│ │ ├── Downtown_5i.json
│ │ ├── Downtown_5j.json
│ │ ├── Downtown_5k.json
│ │ ├── Downtown_5l.json
│ │ ├── Downtown_6a.json
│ │ ├── Downtown_6b.json
│ │ ├── Downtown_6c.json
│ │ ├── Downtown_6d.json
│ │ ├── Downtown_6e.json
│ │ ├── Downtown_6f.json
│ │ ├── Downtown_6g.json
│ │ ├── Downtown_6h.json
│ │ ├── Downtown_6i.json
│ │ ├── Downtown_6j.json
│ │ ├── Downtown_7a.json
│ │ ├── Downtown_7b.json
│ │ ├── Downtown_7c.json
│ │ ├── Downtown_7d.json
│ │ ├── Downtown_7e.json
│ │ ├── Downtown_7f.json
│ │ ├── Downtown_7g.json
│ │ ├── Downtown_7h.json
│ │ ├── Downtown_7i.json
│ │ ├── Downtown_7j.json
│ │ ├── Downtown_8c.json
│ │ ├── Downtown_8d.json
│ │ ├── Downtown_8e.json
│ │ ├── Downtown_8g.json
│ │ ├── Downtown_8i.json
│ │ ├── Downtown_9108.json
│ │ ├── Downtown_9135.json
│ │ ├── Downtown_9149.json
│ │ ├── Downtown_9174.json
│ │ ├── Downtown_9175.json
│ │ ├── Downtown_9176.json
│ │ ├── Downtown_9177.json
│ │ ├── Downtown_9178.json
│ │ ├── Downtown_9179.json
│ │ ├── Downtown_9191.json
│ │ ├── Downtown_9192.json
│ │ ├── Downtown_9193.json
│ │ ├── Downtown_9194.json
│ │ ├── Downtown_9195.json
│ │ ├── Downtown_9204.json
│ │ ├── Downtown_9205.json
│ │ ├── Downtown_9206.json
│ │ ├── Downtown_9208.json
│ │ ├── Downtown_9209.json
│ │ ├── Downtown_9215.json
│ │ ├── Downtown_9216.json
│ │ ├── Downtown_9229.json
│ │ ├── Downtown_9230.json
│ │ ├── Downtown_9231.json
│ │ ├── Downtown_9232.json
│ │ ├── Downtown_9233.json
│ │ ├── Downtown_9241.json
│ │ ├── Downtown_9d.json
│ │ ├── Downtown_9f.json
│ │ ├── Downtown_9g.json
│ │ ├── Downtown_9h.json
│ │ ├── Downtown_9j.json
│ │ ├── Downtown_9k.json
│ │ ├── avatars_court.json
│ │ ├── court_front.json
│ │ ├── item-Downtown.plaque.json
│ │ ├── rent_front1.json
│ │ ├── rent_front2.json
│ │ └── rent_front3.json
│ ├── package.json
│ ├── populateModels.js
│ ├── shell
│ ├── shell.js
│ ├── statics.json
│ ├── translateBookToHTML.js
│ └── writeHabitatUser.js
├── dev.sh
├── docker-compose.prod.yml
├── docker-compose.yml
├── habibots/
│ ├── .gitignore
│ ├── Dockerfile
│ ├── README.md
│ ├── assets/
│ │ ├── greeting.txt
│ │ ├── hatchery.txt
│ │ ├── tutoring.txt
│ │ └── vendoGreeting.txt
│ ├── bots/
│ │ ├── attacker.js
│ │ ├── connector.js
│ │ ├── conversationalist.js
│ │ ├── curser.js
│ │ ├── eliza.js
│ │ ├── greeter.js
│ │ ├── hatchery.js
│ │ ├── oracle.js
│ │ ├── protester.js
│ │ ├── tutor.js
│ │ ├── twitchchatter.js
│ │ └── walker.js
│ ├── constants.js
│ ├── habibot.js
│ ├── package.json
│ ├── run
│ └── util.js
├── incomplete/
│ ├── Back4t/
│ │ ├── back4t_01.json
│ │ ├── back4t_02.json
│ │ ├── back4t_03.json
│ │ ├── back4t_04.json
│ │ ├── back4t_05.json
│ │ ├── back4t_11.json
│ │ ├── back4t_12.json
│ │ ├── back4t_13.json
│ │ ├── back4t_14.json
│ │ ├── back4t_15.json
│ │ ├── back4t_20.json
│ │ ├── back4t_21.json
│ │ ├── back4t_22.json
│ │ ├── back4t_23.json
│ │ ├── back4t_24.json
│ │ ├── back4t_25.json
│ │ ├── back4t_30.json
│ │ ├── back4t_31.json
│ │ ├── back4t_32.json
│ │ ├── back4t_33.json
│ │ ├── back4t_34.json
│ │ ├── back4t_35.json
│ │ ├── back4t_41.json
│ │ ├── back4t_42.json
│ │ ├── back4t_43.json
│ │ ├── back4t_44.json
│ │ ├── back4t_45.json
│ │ ├── back4t_51.json
│ │ ├── back4t_52.json
│ │ ├── back4t_53.json
│ │ ├── back4t_54.json
│ │ ├── back4t_55.json
│ │ ├── back4t_56.json
│ │ ├── back4t_61.json
│ │ ├── back4t_62.json
│ │ ├── back4t_63.json
│ │ ├── back4t_64.json
│ │ ├── back4t_65.json
│ │ ├── back4t_71.json
│ │ ├── back4t_72.json
│ │ ├── back4t_73.json
│ │ ├── back4t_74.json
│ │ └── back4t_75.json
│ └── Beach/
│ ├── beach_0a.json
│ ├── beach_0b.json
│ ├── beach_0c.json
│ ├── beach_0d.json
│ ├── beach_0e.json
│ ├── beach_0f.json
│ ├── beach_1a.json
│ ├── beach_1b.json
│ ├── beach_1c.json
│ ├── beach_1d.json
│ ├── beach_1e.json
│ ├── beach_1f.json
│ ├── beach_1g.json
│ ├── beach_2a.json
│ ├── beach_2b.json
│ ├── beach_2c.json
│ ├── beach_2d.json
│ ├── beach_2e.json
│ └── beach_2f.json
├── installer/
│ └── windows/
│ ├── COPYING.txt
│ ├── LICENSE
│ ├── NeoHabitatInstaller.iss
│ ├── README.md
│ └── intro.txt
├── monitoring/
│ ├── grafana/
│ │ ├── dashboards/
│ │ │ └── bridge_v2.json
│ │ └── provisioning/
│ │ ├── dashboards/
│ │ │ └── dashboard.yml
│ │ └── datasources/
│ │ └── datasources.yml
│ ├── loki.yml
│ ├── otel-collector-config.yml
│ ├── prometheus.yml
│ ├── promtail.yml
│ └── tempo.yml
├── pom.xml
├── pushserver/
│ ├── README.md
│ ├── app.js
│ ├── bin/
│ │ └── pushserver
│ ├── config.dev.yml
│ ├── config.prod.yml
│ ├── config.vagrant.yml
│ ├── constants/
│ │ ├── ClassTable.js
│ │ └── Helpfiles.js
│ ├── habiproxy/
│ │ ├── actionTypes.js
│ │ ├── proxy.js
│ │ └── session.js
│ ├── package.json
│ ├── public/
│ │ ├── disks/
│ │ │ ├── Habitat-B.d64
│ │ │ └── Habitat-Boot.d64
│ │ ├── docs/
│ │ │ ├── help/
│ │ │ │ ├── help.class.0.md
│ │ │ │ ├── help.class.1.md
│ │ │ │ ├── help.class.10.md
│ │ │ │ ├── help.class.11.md
│ │ │ │ ├── help.class.12.md
│ │ │ │ ├── help.class.127.md
│ │ │ │ ├── help.class.129.md
│ │ │ │ ├── help.class.13.md
│ │ │ │ ├── help.class.130.md
│ │ │ │ ├── help.class.131.md
│ │ │ │ ├── help.class.132.md
│ │ │ │ ├── help.class.133.md
│ │ │ │ ├── help.class.134.md
│ │ │ │ ├── help.class.135.md
│ │ │ │ ├── help.class.136.md
│ │ │ │ ├── help.class.137.md
│ │ │ │ ├── help.class.138.md
│ │ │ │ ├── help.class.139.md
│ │ │ │ ├── help.class.140.md
│ │ │ │ ├── help.class.141.md
│ │ │ │ ├── help.class.143.md
│ │ │ │ ├── help.class.144.md
│ │ │ │ ├── help.class.150.md
│ │ │ │ ├── help.class.152.md
│ │ │ │ ├── help.class.154.md
│ │ │ │ ├── help.class.155.md
│ │ │ │ ├── help.class.156.md
│ │ │ │ ├── help.class.157.md
│ │ │ │ ├── help.class.158.md
│ │ │ │ ├── help.class.16.md
│ │ │ │ ├── help.class.17.md
│ │ │ │ ├── help.class.18.md
│ │ │ │ ├── help.class.2.md
│ │ │ │ ├── help.class.20.md
│ │ │ │ ├── help.class.21.md
│ │ │ │ ├── help.class.22.md
│ │ │ │ ├── help.class.23.md
│ │ │ │ ├── help.class.24.md
│ │ │ │ ├── help.class.25.md
│ │ │ │ ├── help.class.26.md
│ │ │ │ ├── help.class.27.md
│ │ │ │ ├── help.class.28.md
│ │ │ │ ├── help.class.29.md
│ │ │ │ ├── help.class.3.md
│ │ │ │ ├── help.class.30.md
│ │ │ │ ├── help.class.31.md
│ │ │ │ ├── help.class.32.md
│ │ │ │ ├── help.class.33.md
│ │ │ │ ├── help.class.35.md
│ │ │ │ ├── help.class.36.md
│ │ │ │ ├── help.class.37.md
│ │ │ │ ├── help.class.38.md
│ │ │ │ ├── help.class.39.md
│ │ │ │ ├── help.class.4.md
│ │ │ │ ├── help.class.40.md
│ │ │ │ ├── help.class.42.md
│ │ │ │ ├── help.class.43.md
│ │ │ │ ├── help.class.44.md
│ │ │ │ ├── help.class.45.md
│ │ │ │ ├── help.class.46.md
│ │ │ │ ├── help.class.47.md
│ │ │ │ ├── help.class.48.md
│ │ │ │ ├── help.class.49.md
│ │ │ │ ├── help.class.5.md
│ │ │ │ ├── help.class.52.md
│ │ │ │ ├── help.class.54.md
│ │ │ │ ├── help.class.55.md
│ │ │ │ ├── help.class.56.md
│ │ │ │ ├── help.class.57.md
│ │ │ │ ├── help.class.58.md
│ │ │ │ ├── help.class.6.md
│ │ │ │ ├── help.class.60.md
│ │ │ │ ├── help.class.61.md
│ │ │ │ ├── help.class.63.md
│ │ │ │ ├── help.class.64.md
│ │ │ │ ├── help.class.7.md
│ │ │ │ ├── help.class.74.md
│ │ │ │ ├── help.class.76.md
│ │ │ │ ├── help.class.82.md
│ │ │ │ ├── help.class.84.md
│ │ │ │ ├── help.class.85.md
│ │ │ │ ├── help.class.89.md
│ │ │ │ ├── help.class.90.md
│ │ │ │ ├── help.class.91.md
│ │ │ │ ├── help.class.94.md
│ │ │ │ ├── help.class.95.md
│ │ │ │ ├── help.class.96.md
│ │ │ │ ├── help.class.97.md
│ │ │ │ ├── help.does.not.exist.md
│ │ │ │ ├── help.impossible.md
│ │ │ │ ├── help.scenic.objects.md
│ │ │ │ └── help.unimplemented.md
│ │ │ └── region/
│ │ │ ├── A_TURF.md
│ │ │ ├── Backroom.md
│ │ │ ├── CTF.md
│ │ │ ├── Desert.md
│ │ │ ├── Dnalsi.md
│ │ │ ├── Downtown.md
│ │ │ ├── Downtown_10351.md
│ │ │ ├── Downtown_1972.md
│ │ │ ├── Downtown_1977.md
│ │ │ ├── Downtown_1978.md
│ │ │ ├── Downtown_1979.md
│ │ │ ├── Downtown_1980.md
│ │ │ ├── Downtown_2i.md
│ │ │ ├── Downtown_4c.md
│ │ │ ├── Downtown_4d.md
│ │ │ ├── Downtown_4h.md
│ │ │ ├── Downtown_4k.md
│ │ │ ├── Downtown_4l.md
│ │ │ ├── Downtown_4m.md
│ │ │ ├── Downtown_5c.md
│ │ │ ├── Downtown_5f.md
│ │ │ ├── Downtown_5h.md
│ │ │ ├── Downtown_5i.md
│ │ │ ├── Downtown_5j.html
│ │ │ ├── Downtown_5k.html
│ │ │ ├── Downtown_5l.md
│ │ │ ├── Downtown_7b.md
│ │ │ ├── Downtown_7i.md
│ │ │ ├── Downtown_8i.md
│ │ │ ├── Downtown_9g.md
│ │ │ ├── Downtown_9h.md
│ │ │ ├── Downtown_9j.md
│ │ │ ├── Downtown_9k.md
│ │ │ ├── EMULATOR_HELP.md
│ │ │ ├── I5.md
│ │ │ ├── NOT_FOUND.md
│ │ │ ├── Popustop.md
│ │ │ ├── Woods_gr.md
│ │ │ ├── Woods_gs.md
│ │ │ ├── YOUR_TURF.md
│ │ │ ├── avatars_court.md
│ │ │ ├── back4t_75.md
│ │ │ ├── court_front.md
│ │ │ ├── hatchery.md
│ │ │ ├── rent_front1.md
│ │ │ ├── rent_front2.md
│ │ │ ├── rent_front3.md
│ │ │ └── test.md
│ │ ├── javascripts/
│ │ │ ├── avatarSelector.js
│ │ │ ├── bootstrap3-typeahead.js
│ │ │ ├── emularity.js
│ │ │ ├── emulator.js
│ │ │ ├── es6-promise.js
│ │ │ ├── eventStream.js
│ │ │ ├── index.js
│ │ │ ├── rotate.js
│ │ │ └── utils.js
│ │ ├── stylesheets/
│ │ │ └── style.css
│ │ └── vice/
│ │ ├── hotkeys.txt
│ │ └── joymap.txt
│ ├── routes/
│ │ ├── api.js
│ │ ├── docs.js
│ │ ├── emulator.js
│ │ ├── events.js
│ │ └── index.js
│ ├── run
│ └── views/
│ ├── docPage.ejs
│ ├── emulator.ejs
│ ├── error.ejs
│ ├── events.ejs
│ ├── footer.ejs
│ ├── header.ejs
│ ├── index.ejs
│ └── vice_ini.ejs
├── recreate
├── regionator/
│ ├── Downtown_1h.rdl
│ ├── Downtown_1t.rdl
│ ├── Downtown_4c.rdl
│ ├── Woods_3c.rdl
│ ├── app.py
│ ├── back4t_20.rdl
│ ├── mod_defaults.yml
│ ├── mod_index.yml
│ ├── mod_renames.yml
│ ├── parse_object_db.py
│ ├── parse_region_db.py
│ ├── parser.py
│ ├── region.py
│ └── test.py
├── run
├── scripts/
│ └── deploy-bridge.sh
├── src/
│ └── main/
│ ├── java/
│ │ └── org/
│ │ └── made/
│ │ └── neohabitat/
│ │ ├── Coinop.java
│ │ ├── Constants.java
│ │ ├── Container.java
│ │ ├── Copyable.java
│ │ ├── Document.java
│ │ ├── HabitatMod.java
│ │ ├── HabitatVerbs.java
│ │ ├── Magical.java
│ │ ├── MailQueue.java
│ │ ├── MailQueueRecord.java
│ │ ├── Massive.java
│ │ ├── NeoHabitat.java
│ │ ├── Openable.java
│ │ ├── Oracular.java
│ │ ├── Polygonal.java
│ │ ├── Poster.java
│ │ ├── Seating.java
│ │ ├── Teleporter.java
│ │ ├── Toggle.java
│ │ ├── Walkable.java
│ │ ├── Weapon.java
│ │ └── mods/
│ │ ├── Amulet.java
│ │ ├── Aquarium.java
│ │ ├── Atm.java
│ │ ├── Avatar.java
│ │ ├── Bag.java
│ │ ├── Ball.java
│ │ ├── Bed.java
│ │ ├── Book.java
│ │ ├── Bottle.java
│ │ ├── Box.java
│ │ ├── Bridge.java
│ │ ├── Building.java
│ │ ├── Bureaucrat.java
│ │ ├── Bush.java
│ │ ├── Chair.java
│ │ ├── Changomatic.java
│ │ ├── Chest.java
│ │ ├── Club.java
│ │ ├── Coke_machine.java
│ │ ├── Compass.java
│ │ ├── Couch.java
│ │ ├── Countertop.java
│ │ ├── Crystal_ball.java
│ │ ├── Die.java
│ │ ├── Display_case.java
│ │ ├── Door.java
│ │ ├── Dropbox.java
│ │ ├── Drugs.java
│ │ ├── Elevator.java
│ │ ├── Escape_device.java
│ │ ├── Fake_gun.java
│ │ ├── Fence.java
│ │ ├── Flag.java
│ │ ├── Flashlight.java
│ │ ├── Flat.java
│ │ ├── Floor_lamp.java
│ │ ├── Fortune_machine.java
│ │ ├── Fountain.java
│ │ ├── Frisbee.java
│ │ ├── Game_piece.java
│ │ ├── Garbage_can.java
│ │ ├── Gemstone.java
│ │ ├── Ghost.java
│ │ ├── Glue.java
│ │ ├── Grenade.java
│ │ ├── Ground.java
│ │ ├── Gun.java
│ │ ├── Hand_of_god.java
│ │ ├── Head.java
│ │ ├── Hole.java
│ │ ├── Hot_tub.java
│ │ ├── House_cat.java
│ │ ├── Key.java
│ │ ├── Knick_knack.java
│ │ ├── Knife.java
│ │ ├── Magic_immobile.java
│ │ ├── Magic_lamp.java
│ │ ├── Magic_staff.java
│ │ ├── Magic_wand.java
│ │ ├── Mailbox.java
│ │ ├── Matchbook.java
│ │ ├── Movie_camera.java
│ │ ├── Paper.java
│ │ ├── Pawn_machine.java
│ │ ├── Picture.java
│ │ ├── Plant.java
│ │ ├── Plaque.java
│ │ ├── Pond.java
│ │ ├── Region.java
│ │ ├── Ring.java
│ │ ├── Rock.java
│ │ ├── Roof.java
│ │ ├── Safe.java
│ │ ├── Sensor.java
│ │ ├── Sex_changer.java
│ │ ├── Short_sign.java
│ │ ├── Shovel.java
│ │ ├── Sign.java
│ │ ├── Sky.java
│ │ ├── Spray_can.java
│ │ ├── Street.java
│ │ ├── Streetlamp.java
│ │ ├── Stun_gun.java
│ │ ├── Super_trapezoid.java
│ │ ├── Table.java
│ │ ├── Teleport.java
│ │ ├── Tokens.java
│ │ ├── Trapezoid.java
│ │ ├── Tree.java
│ │ ├── Vendo_front.java
│ │ ├── Vendo_inside.java
│ │ ├── Wall.java
│ │ ├── Window.java
│ │ └── Windup_toy.java
│ └── resources/
│ └── version.txt
├── test/
│ ├── ESP.elko
│ ├── MOTD.elko
│ ├── Telko.js
│ ├── about.elko
│ ├── alex.elko
│ ├── aric.elko
│ ├── avatar.elko
│ ├── cat-.elko
│ ├── cat.elko
│ ├── chair.elko
│ ├── chip.elko
│ ├── chipmonk-.elko
│ ├── chipmonk.elko
│ ├── choke.elko
│ ├── close.elko
│ ├── cop-.elko
│ ├── cop.elko
│ ├── couch.elko
│ ├── defaults.elko
│ ├── empty.elko
│ ├── f3.elko
│ ├── f5.elko
│ ├── f8.elko
│ ├── gesture.elko
│ ├── ghost.elko
│ ├── head.elko
│ ├── help.elko
│ ├── id.elko
│ ├── janet.elko
│ ├── library.elko
│ ├── magic.elko
│ ├── matt.elko
│ ├── open.elko
│ ├── package.json
│ ├── pay.elko
│ ├── quit.elko
│ ├── randy.elko
│ ├── read.elko
│ ├── region.elko
│ ├── shoot.elko
│ ├── shutdown.elko
│ ├── spray.elko
│ ├── stdin.elko
│ ├── steve.elko
│ ├── stu.elko
│ ├── table.elko
│ ├── teleport.elko
│ ├── test.elko
│ ├── throw.elko
│ ├── turf.elko
│ ├── unknown.elko
│ ├── walk.elko
│ ├── woman-.elko
│ └── woman.elko
├── tools/
│ ├── README.md
│ ├── elizabot.service
│ ├── log-parser/
│ │ ├── README.md
│ │ ├── SUMMARY.md
│ │ ├── habitat-log-analyzer.js
│ │ ├── log-parser.js
│ │ ├── package.json
│ │ ├── protocol-decoder.js
│ │ ├── qlink-decoder.js
│ │ ├── session-analyzer-example.txt
│ │ └── session-analyzer.js
│ ├── mongodb.repo
│ ├── vice/
│ │ ├── launch-vice.sh
│ │ └── neohabitat.vicerc
│ ├── vice_login_driver/
│ │ ├── AutoHotkey.ahk
│ │ ├── README.md
│ │ ├── app.js
│ │ └── package.json
│ ├── welcomebot.service
│ └── wireproxy/
│ ├── go.mod
│ └── main.go
├── vagrant/
│ └── build.sh
└── vice_tool.py
================================================
FILE CONTENTS
================================================
================================================
FILE: .claude/skills/habitat/SKILL.md
================================================
# Habitat VICE Automation
Drive the Habitat C64 client in VICE, automate boot/login, inspect game state, and read bridge/Elko logs for debugging.
## Quick Start
```python
from vice_tool import VICESession
v = VICESession()
v.launch() # Start VICE with remote monitor
v.boot_to_game("steve") # Splash → login → game
print(v.screen()) # Show C64 screen
print(v.bridge_logs()) # Show bridge_v2 logs
print(v.elko_logs()) # Show Elko server logs
print(f"PC=${v.registers()['PC']:04X}")
```
## Prerequisites
- VICE (x64sc) installed: `brew install vice`
- Docker stack running: `docker compose -f docker-compose.yml -f docker-compose.dev.yml up -d`
- launch-vice.sh enables remote monitor on port 6510
## API Reference
### Lifecycle
| Method | Description |
|--------|-------------|
| `launch(extra_args)` | Start VICE via launch-vice.sh, connect to monitor |
| `connect(retries, delay)` | Connect to existing VICE monitor on port 6510 |
| `close()` | Close socket + terminate VICE |
### Monitor Commands
| Method | Description |
|--------|-------------|
| `cmd(command, timeout)` | Send raw command, return response |
| `go(addr)` | Resume execution (optionally at addr) |
| `stop()` | Break into monitor |
| `step(count)` | Single-step N instructions |
| `go_and_wait(addr, timeout)` | Resume, wait for breakpoint hit |
### Memory
| Method | Description |
|--------|-------------|
| `read_byte(addr)` | Read single byte |
| `read_word(addr)` | Read 16-bit LE word |
| `read_block(addr, length)` | Read memory block → bytearray |
| `write_byte(addr, val)` | Write single byte |
| `write_bytes(addr, data)` | Write multiple bytes |
### Registers & Breakpoints
| Method | Description |
|--------|-------------|
| `registers()` | Get PC, A, X, Y, SP → dict |
| `set_breakpoint(addr)` | Set execution breakpoint |
| `delete_breakpoints()` | Delete all breakpoints |
### Input
| Method | Description |
|--------|-------------|
| `keybuf(text)` | Inject raw keybuf string (supports \\xNN) |
| `type_text(text)` | Type ASCII text (auto PETSCII conversion) |
| `press_return()` | Press RETURN |
| `press_f3()` / `press_f5()` / `press_f7()` | Press function keys |
### Screen
| Method | Description |
|--------|-------------|
| `screen()` | Get screen via monitor `sc` command |
| `read_screen_ram()` | Read $0400-$07E7, convert to ASCII |
| `wait_for_text(text, timeout)` | Poll screen until text appears |
### Habitat Boot
| Method | Description |
|--------|-------------|
| `boot_to_splash(wait)` | Launch VICE, wait for splash screen |
| `dismiss_splash()` | Press RETURN past splash |
| `login(name, wait_for_connect)` | Type name, accept host, wait for server |
| `wait_for_game(timeout)` | Poll until game entry at $0816 |
| `boot_to_game(name)` | Full sequence: splash → login → game |
### Docker Logs
| Method | Description |
|--------|-------------|
| `bridge_logs(lines)` | Recent bridge_v2 container logs |
| `elko_logs(lines)` | Recent neohabitat/Elko container logs |
## Boot Sequence Stages
1. **Splash** (0-8s) — Habitat logo, any key continues
2. **Launcher** (8-12s) — "Habitat Launcher", name prompt
3. **Host** (12-14s) — Edit host or RETURN to accept
4. **Connecting** (14-60s) — "Dialing NeoHabitat..." → "Connected!"
5. **Login JSON** (60-65s) — Sends `{"to":"bridge","op":"LOGIN","name":"..."}`
6. **Decompression** (65-120s) — Border flashes, screen blanked
7. **Game** (120s+) — $0816 contains $AD (LDA), screen visible
## Debugging Workflow
```python
v = VICESession()
v.connect() # Connect to already-running VICE
# Check game state
v.stop()
regs = v.registers()
print(f"PC=${regs['PC']:04X} A=${regs['A']:02X}")
print(v.screen())
# Read protocol state
print(f"INITST = ${v.read_byte(0x8CA4):02X}")
print(f"SEQOUT = ${v.read_byte(0x8CA1):02X}")
# Check bridge
print(v.bridge_logs())
# Resume
v.go()
```
## CLI Usage
```bash
python3 vice_tool.py --launch --regs # Launch + show registers
python3 vice_tool.py --boot steve # Full boot
python3 vice_tool.py --screen # Show screen (connect to existing)
python3 vice_tool.py --read 0816 # Read byte
python3 vice_tool.py --bridge-logs # Show bridge logs
python3 vice_tool.py --cmd "m 0400 0427" # Raw monitor command
```
================================================
FILE: .dockerignore
================================================
node_modules
**/node_modules
Dockerfile
docker-compose.yml
*.DS_store
.git
================================================
FILE: .gitattributes
================================================
build text eol=lf
run text eol=lf
*.sh text eol=lf
db/* text eol=lf
================================================
FILE: .gitignore
================================================
.idea/
.vagrant/
.dbshell
lib/
log/
node_modules/
pushserver/node_modules/
target/
hooks/
.classpath
.project
.settings
*.log
*.pyc
context.*
dependency-reduced-pom.xml
neohabitat.iml
usersDB.json
volumes/bridge_v2_bin/
================================================
FILE: .travis.yml
================================================
sudo: required
language: ruby
notifications:
slack: neohabitat:rLGUstSJGUC2eW9610GfoMBx
services:
- docker
before_install:
# Ensures that MySQL is stopped before continuing.
- sudo service mysql stop
# Builds everything locally.
- npm install && mvn clean package
# Logs the current version of docker-compose.
- docker-compose --version
# You will want this for logging. If one of your containers does not build for
# whatever reason it's best to report that now before your tests start
# otherwise it can be really tricky to debug why tests are failing sometimes.
- docker ps
script:
# Builds all local images.
- docker-compose build --pull
# Stands up all Docker-based services.
- docker-compose up -d
# Ugly hardwait to ensure that Docker services are up before functional tests execute.
- sleep 60
# Executes functional tests:
- cd test && npm run telko -- -p 2018 -f chip
================================================
FILE: Dockerfile
================================================
# Neoclassical Habitat
#
# VERSION 0.1.0
FROM quay.io/centos/centos:stream9
# Get a recent version of nodejs
RUN curl -fsSL https://rpm.nodesource.com/setup_20.x | bash -
# Installs base build dependencies.
RUN dnf -y install \
cronie \
git \
java-21-openjdk \
make \
maven \
nc \
net-tools \
nsolid \
procps \
vim \
wget && \
dnf clean all
# Installs Node dependencies.
RUN npm install -g supervisor
# Ensures that the codebase is homed at /neohabitat.
COPY . /neohabitat
# Adds a container log tailing utility.
RUN printf '#!/bin/bash\ntail -f /neohabitat/{bridge,elko_server}.log' > /usr/bin/habitail && chmod a+x /usr/bin/habitail
# Adds a cronjob to enable the updating of the Hall of Records.
RUN printf "*/5 * * * * root /bin/bash -c 'cd /neohabitat/db && NEOHABITAT_MONGO_HOST=neohabitatmongo:27017 make book' >> /var/log/hallofrecords.log\n" > /etc/cron.d/hall-of-records
# Builds the Neohabitat project.
WORKDIR /neohabitat
RUN rm -rf lib && mvn clean package
WORKDIR /neohabitat/bridge
RUN npm install
WORKDIR /neohabitat/habibots
RUN npm install
WORKDIR /neohabitat/pushserver
RUN npm install
WORKDIR /neohabitat/test
RUN npm install
WORKDIR /neohabitat
ENTRYPOINT /neohabitat/run
EXPOSE 1337 1701 1986 1987 2018 3000 9000
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2017 frandallfarmer
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.
================================================
FILE: PROTOCOL.md
================================================
# NeoHabitat Protocol Documentation
## Overview
This document describes the Habitat application protocol and Q-Link framing layer used by NeoHabitat. The protocol enables communication between C64 Habitat clients and the modern Elko-based server through a bidirectional translation bridge.
**Key Points**:
- Binary protocol originally designed for 1200 baud modems over X.25 packet networks
- Modern implementation uses TCP/IP for transport
- Q-Link framing provides packet delimiting and escape sequences
- Habitat application protocol uses 4-byte headers with variable payloads
- Bridge translates between binary Habitat protocol and JSON Elko messages
---
## Protocol Stack Architecture
```
┌─────────────────────────────────────────────────┐
│ C64 Habitat Client │
│ (Binary Habitat Protocol) │
└─────────────────┬───────────────────────────────┘
│ Binary packets over TCP/IP
│ (RS-232 at 1200 baud simulated)
┌─────────────────▼───────────────────────────────┐
│ Q-Link Framing Layer │
│ - Username:Z<packet> format │
│ - Byte stuffing (escape 0x0D, 0x5D) │
│ - 20-byte overhead per packet │
└─────────────────┬───────────────────────────────┘
│
┌─────────────────▼───────────────────────────────┐
│ Habitat2ElkoBridge (Node.js) │
│ - Translates Binary ↔ JSON │
│ - Manages NOID assignments │
│ - Throttles to 1200 baud timing │
│ - Splits large messages (>100 bytes) │
└─────────────────┬───────────────────────────────┘
│ JSON over line-delimited frames
┌─────────────────▼───────────────────────────────┐
│ Elko Server (Java) │
│ - Modern game logic │
│ - MongoDB persistence │
│ - Context/region management │
└─────────────────────────────────────────────────┘
```
### Service Ports
- **1986**: Modern direct bridge connection (recommended)
- **5190**: Legacy Q-Link connection method (deprecated)
- **1337**: Bridge internal listening port
- **9000**: Elko server port
- **27017**: MongoDB
- **3307**: MariaDB/MySQL
---
## Q-Link Framing Layer
### Historical Context
QuantumLink (Q-Link) was an online service for Commodore 64 launched in 1985. The Q-Link protocol provided:
- Reliable packet delivery over 300-1200 baud modems
- CRC error detection
- Packet sequencing and retransmission
- Flow control via windowing
NeoHabitat uses Q-Link Reloaded, a modern Java-based reimplementation of the Q-Link server.
### Q-Link Packet Structure
Original Q-Link packets have this format:
```
┌────┬────────────┬─────────────┬────┐
│0x5A│ CRC │ Payload │0x0D│
│ Z │ (4 bytes) │ (variable) │ CR │
└────┴────────────┴─────────────┴────┘
```
**For Habitat, the full structure is**:
```
┌──────────────┬────┬────────────┬──────┬────┬────┬─────────────┬────┐
│ Username: │0x5A│ CRC │ 0x55 │Ctrl│NOID│ Payload │0x0D│
│ │ Z │ (4 bytes) │ │ │ │ │ CR │
└──────────────┴────┴────────────┴──────┴────┴────┴─────────────┴────┘
User prefix ←─ Q-Link Wrapper ─→ ←─── Habitat Packet ────→
```
### Frame Detection
The bridge detects three framing modes (`Habitat2ElkoBridge.js:676-679`):
```javascript
UNKNOWN_FRAME = 0 // Initial state
DELIMITED_FRAME = 1 // JSON (lf-lf delimited)
QLR_FRAME = 2 // NAME:QLINKPACKET format
QLINK_FRAME = 3 // Binary Q-Link packets
```
### Client Connection Format
**Client → Bridge packets** start with:
- Username string followed by `:` (colon)
- Then `Z` (0x5A) character marking Q-Link data start
- CRC checksum (4 bytes, special encoding)
- Binary Habitat packet (escaped)
- End-of-message marker (0x0D, escaped if needed)
**Example**: `"Randy:Z<crc><binary_habitat_packet><0x0D>"`
### Q-Link Packet Constants
```java
CMD_START = 0x5A // 'Z' - marks start of Q-Link packet
FRAME_END = 0x0D // Carriage return - marks end of packet
```
### Escape Sequences
Q-Link uses byte-stuffing to avoid conflicts with control characters.
**Characters requiring escaping**:
- `0x0D` (carriage return / END_OF_MESSAGE)
- `0x5D` (escape character itself)
- `0x00` (null, optional)
**Escape algorithm** (`Habitat2ElkoBridge.js:322-334`):
1. When encountering a byte that needs escaping
2. Insert ESCAPE_CHAR (`0x5D`)
3. XOR the original byte with `0x55` (ESCAPE_XOR)
**Constants**:
```javascript
ESCAPE_CHAR = 0x5D
END_OF_MESSAGE = 0x0D
ESCAPE_XOR = 0x55
```
**Examples**:
- Byte `0x0D` → Escaped as `[0x5D, 0x58]` (0x0D ^ 0x55 = 0x58)
- Byte `0x5D` → Escaped as `[0x5D, 0x08]` (0x5D ^ 0x55 = 0x08)
- Byte `0x00` → Escaped as `[0x5D, 0x55]` (0x00 ^ 0x55 = 0x55)
**Descape algorithm**:
```javascript
function descape(buffer) {
result = []
for each byte in buffer:
if byte == ESCAPE_CHAR:
next_byte = read next byte
result.append(next_byte ^ ESCAPE_XOR)
else:
result.append(byte)
return result
}
```
### Packet Overhead
```javascript
PACKETOVERHEAD = 20 // Bytes added by Q-Link Protocol and Framing
```
This overhead is used for calculating transmission timing at 1200 baud.
---
### Q-Link CRC Algorithm
Q-Link uses a 16-bit CRC for error detection with polynomial `0xA001` (CRC16.java:31).
**Algorithm** (from original C64 disassembly):
```java
int crc = 0;
int poly = 0xA001;
for each byte in payload:
for (int bit = 0; bit < 8; bit++) {
crc = crc ^ (byte & 1); // XOR with low bit of data
byte = byte >> 1; // Shift data right
if ((crc & 1) != 0) { // If CRC low bit is set
crc = crc >> 1; // Shift CRC right
crc = crc ^ poly; // XOR with polynomial
} else {
crc = crc >> 1; // Just shift CRC right
}
}
}
```
**CRC Encoding** (from qlink protocol.txt):
The 16-bit CRC is encoded into 4 bytes for transmission:
```
CRC = 0x3E82 (example)
A = (crc & 0x00F0) | 0x01 = 0x81
B = (crc & 0x000F) | 0x40 = 0x42
C = (crc & 0xF000) >> 12 | 0x01 = 0x31
D = (crc & 0x0F00) >> 8 | 0x40 = 0x4E
Transmitted as: 0x5A 0x81 0x42 0x31 0x4E <payload> 0x0D
```
Each CRC nibble is encoded with specific OR masks:
- Low nibbles: OR with 0x01
- High nibbles: OR with 0x40
This encoding ensures all CRC bytes are printable ASCII (avoiding control characters).
**Example Packet**:
```
Raw payload: 0x7F 0x7F 0x23 0x05 0x09
CRC16: 0x3E82
Encoded CRC: [0x81, 0x42, 0x31, 0x4E]
Full packet: 0x5A 0x81 0x42 0x31 0x4E 0x7F 0x7F 0x23 0x05 0x09 0x0D
```
---
## Habitat Application Protocol
### Binary Packet Format
Every Habitat packet has this structure:
```
Offset Size Field Description
──────────────────────────────────────────────────────────
0 1 Magic 0x55 (MICROCOSM_ID_BYTE / '|')
1 1 Control Bit 7: END (0x80)
Bit 6: MIDDLE (0x40) - always set
Bit 5: START (0x20)
Bits 0-4: Sequence (0-31)
2 1 NOID Network Object ID (target)
3 1 Request Message type/operation number
4+ N Payload Variable-length arguments
```
### Header Breakdown
**Byte 0: Magic Number**
```
0x55 = MICROCOSM_ID_BYTE (also ASCII '|')
```
This signature identifies Habitat protocol packets.
**Byte 1: Control Byte** (`Habitat2ElkoBridge.js:816-823`)
Bit layout:
```
7 6 5 4 3 2 1 0
┌───┬───┬───┬───┬───┬───┬───┬───┐
│END│MID│STR│ Sequence Number │
└───┴───┴───┴───┴───┴───┴───┴───┘
```
- **Bit 7 (0x80)**: END flag - last packet in message
- **Bit 6 (0x40)**: MIDDLE flag - always set in Habitat
- **Bit 5 (0x20)**: START flag - first packet in message
- **Bits 0-4**: Sequence number (0-31) for request/reply matching
**Special Sequence Numbers**:
- `0xFA` (`PHANTOM_REQUEST`): Server-initiated message with no client request
- `0x1A`: Async packet sequence number
**Byte 2: NOID (Network Object ID)**
Identifies the target object for the message.
**Special NOIDs**:
```javascript
REGION_NOID = 0 // Messages to/from the region itself
UNASSIGNED_NOID = 256 // Ghost avatars (not rendered)
```
**Byte 3: Request Number**
Identifies the message type/operation. Each object class defines which request numbers it responds to.
### Packet Splitting
Large messages are split into chunks (`hcode.js:16-20`):
```javascript
MAX_PACKET_SIZE = 100 // Maximum payload size in bytes
SPLIT_START = 0x20 // First packet in sequence
SPLIT_MIDDLE = 0x40 // Middle packet (always set)
SPLIT_END = 0x80 // Last packet in sequence
```
**Multi-packet message control byte patterns**:
- **Single packet**: `START | MIDDLE | END` = `0xE0`
- **First of many**: `START | MIDDLE` = `0x60`
- **Middle packet**: `MIDDLE` = `0x40`
- **Last packet**: `MIDDLE | END` = `0xC0`
Example splitting sequence (`Habitat2ElkoBridge.js:486-509`):
```javascript
if (payload_length > MAX_PACKET_SIZE) {
for (start = 0; start < payload.length; start += MAX_PACKET_SIZE) {
chunk = payload.slice(start, start + MAX_PACKET_SIZE)
control = seq | SPLIT_MIDDLE
if (start == 0) control |= SPLIT_START
if (chunk.length < MAX_PACKET_SIZE) control |= SPLIT_END
send_packet(header | control, chunk)
}
}
```
---
## Message Types
### Region-Level Messages
Messages with `NOID = 0` (REGION_NOID) control region/session state (`hcode.js:25-47`):
```
Message ID Name Description
──────────────────────────────────────────────────────────
1 DESCRIBE Request region contents vector
2 I_QUIT Client disconnect notification
3 IM_ALIVE Keepalive/connection acknowledgment
4 CUSTOMIZE Avatar customization
5 FINGER_IN_QUE Catchup phase signal
6 HERE_I_AM Avatar materialization complete
7 PROMPT_REPLY User input response
8 HEREIS Object arrival notification
9 GOAWAY Object departure notification
10 PORT Avatar region transition
11 UPDATE_DISK Save state to disk
12 FIDDLE Modify object property
13 LIGHTING Change light level
14 MUSIC Play sound effect
15 OBJECT_TALKS Object speech/text display
16 WAIT_FOR_ANI Wait for animation completion
17 CAUGHT_UP Region synchronization complete
18 APPEAR Object appearing animation
19 CHANGE_CONT Change object container
20 PROMPT_USER Prompt for user input
21 BEEN_MOVED Forced movement notification
22 HOST_DUMP Debug dump request
```
### Object-Level Messages
Messages directed at specific objects use the object's NOID (`hcode.js:49-107`):
```
Request# Operation Common Objects
──────────────────────────────────────────────────
0 HELP All objects
1 GET Portable items
2 PUT Portable items
3 THROW Portable items
4 Various Object-specific (CLOSE, MAGIC, etc.)
5 Various Object-specific (OPEN, ON, etc.)
6 POSTURE Avatar
7 SPEAK Avatar
8 WALK Avatar, Ghost
9 NEWREGION Avatar, Ghost
10 DISCORPORATE Avatar
11 ESP Avatar
```
### Client Message Definitions by Class
Each object class defines which messages it responds to (`hcode.js:997-1548`).
**Example: Avatar**
```javascript
Avatar: {
clientMessages: {
0: { op:"HELP" },
4: { op:"GRAB" },
5: { op:"HAND" },
6: { op:"POSTURE" },
7: { op:"SPEAK" },
8: { op:"WALK" },
9: { op:"NEWREGION" },
10: { op:"DISCORPORATE" },
11: { op:"ESP" },
12: { op:"SITORSTAND" },
13: { op:"TOUCH" },
14: { op:"FNKEY" }
}
}
```
**Example: Portable Container (Bag, Box, etc.)**
```javascript
portableContainer: {
clientMessages: {
0: { op:"HELP" },
1: { op:"GET" },
2: { op:"PUT" },
3: { op:"THROW" },
4: { op:"CLOSECONTAINER" },
5: { op:"OPENCONTAINER" }
}
}
```
---
## Object Classes
158 object classes are defined, each with a unique class number (`hcode.js:419-525`):
```
Class# Name Class# Name
────────────────────────────────────────────
0 Region 37 Gun
1 Avatar 42 Key
2 Amulet 54 Paper
3 Ghost 55 Plaque
4 Atm 56 Short_sign
5 Game_piece 57 Sign
6 Bag 74 Teleport
7 Ball 76 Tokens
10 Book 80 Wall
12 Bottle 84 Changomatic
13 Box 85 Vendo_front
16 Club 86 Vendo_inside
17 Compass 87 Trapezoid
23 Door 90 Sex_changer
27 Fake_gun 91 Stun_gun
28 Elevator 127 Head
29 Flag 129 Aquarium
30 Flashlight 130 Bed
35 Grenade 134 Chair
36 Ground 140 Fortune_machine
... ... 158 Bureaucrat
```
### Class Inheritance
Classes inherit message handlers through shared definitions:
- **portable**: `GET, PUT, THROW, HELP`
- **portableContainer**: `GET, PUT, THROW, OPENCONTAINER, CLOSECONTAINER, HELP`
- **document**: `READ, HELP`
- **magical**: `GET, PUT, THROW, MAGIC, HELP`
- **weapon**: `GET, PUT, ATTACK, HELP`
- **help**: `HELP` only
---
## Server Operations
The bridge defines 80+ server-to-client operations (`hcode.js:109-417`):
```javascript
SERVER_OPS = {
"OBJECTSPEAK_$": { reqno: 15,
toClient: function (o,b) {
b.add(o.speaker);
b.add(o.text.substring(0, 114).getBytes());
}
},
"WALK$": { reqno: 8,
toClient: function (o,b) {
b.add(o.x);
b.add(o.y);
b.add(o.how);
}
},
"ATTACK$": { reqno: 9,
toClient: function (o, b) {
b.add(o.ATTACK_TARGET);
b.add(o.ATTACK_DAMAGE);
}
}
// ... 80+ more operations
}
```
Each operation defines:
- **reqno**: Request number (byte 3 of header)
- **toClient**: Function to encode JSON from Elko into binary for C64
---
## State Encoding
Objects serialize their state as byte arrays (`Habitat2ElkoBridge.js:935-1222`).
### Common State (All Objects)
```
Offset Field Size Description
────────────────────────────────────────────────
0 style 1 Visual style/variant
1 x 1 X position
2 y 1 Y position
3 orientation 1 Rotation/facing
4 gr_state 1 Graphic state index
5 container 1 Container NOID
```
**Total: 6 bytes**
### Region State
```
Offset Field Size Description
────────────────────────────────────────────────
0 terrain_type 1 Ground type
1 lighting 1 Light level (0-3)
2 depth 1 Y-depth (usually 32)
3 region_class 1 Region classification
4 Who_am_I 1 Avatar NOID (or 255=ghost)
5-8 bankBalance 4 Avatar's bank balance
```
**Total: 9 bytes**
### Avatar State (Extends Common)
```
Common 6 bytes (style, x, y, orientation, gr_state, container)
+
Offset Field Size Description
────────────────────────────────────────────────
6 activity 1 Current activity
7 action 1 Current action
8 health 1 Health (0-255, usually 255)
9 restrainer 1 Restraining object NOID
10-11 custom 2 Avatar customization colors
```
**Total: 12 bytes**
### Specialized Encodings
**Openable** (extends Common +3 bytes):
```
6 open_flags 1 Open/closed state
7 key_lo 1 Key number low byte
8 key_hi 1 Key number high byte
```
**Magical** (extends Common +1 byte):
```
6 magic_type 1 Magic effect type
```
**Toggle** (extends Common +1 byte):
```
6 on 1 On/off state
```
**Tokens** (extends Common +2 bytes):
```
6 denom_lo 1 Token value low byte
7 denom_hi 1 Token value high byte
```
**Key** (extends Common +2 bytes):
```
6 key_number_lo 1 Key ID low byte
7 key_number_hi 1 Key ID high byte
```
---
## Connection Handshake Sequence
Typical connection flow (`Habitat2ElkoBridge.js:756-914`):
### 1. Initial Connection
**Client** → Bridge:
```
"Randy:Z..."
```
Username string with colon, followed by 'Z' marker.
### 2. User Database Check
**Bridge** checks MongoDB for user, creates if needed with:
- Random avatar position (y: 128-159)
- Random customization colors
- Bank balance: 50,000 tokens
- Default items: Head, Paper, Tokens
### 3. Alive Handshake
**Client** → Bridge:
```
[0x55, seq|0x60, 0x00, 0x03, ...]
^ ^ ^
| | MESSAGE_IM_ALIVE (3)
| REGION_NOID (0)
seq|START|MIDDLE
```
**Bridge** → Client:
```
[0x55, 0xFA, 0x00, 0x03, 0x01, 0x30, 'B','A','D',' ','D','I','S','K']
^ ^ ^ ^ ^ ^
| | | | | "BAD DISK" message (ignored)
| | | | SUCCESS (1)
| | | MESSAGE_IM_ALIVE reply
| | REGION_NOID
| PHANTOM_REQUEST (no client seq)
Magic byte
```
### 4. Region Request
**Client** → Bridge:
```
[0x55, seq|0xE0, 0x00, 0x01]
^ ^ ^
| | MESSAGE_DESCRIBE (1)
| REGION_NOID
seq|START|MIDDLE|END
```
### 5. Enter Context
**Bridge** → Elko Server:
```json
{
"to": "session",
"op": "entercontext",
"context": "context-hatchery",
"user": "user-randy"
}
```
### 6. Region Population
**Elko** → Bridge (multiple messages):
```json
// Region object
{"op":"make", "obj":{"type":"item", "mods":[{"type":"Region", ...}]}}
// Avatar object
{"op":"make", "you":true, "obj":{"type":"user", "mods":[{"type":"Avatar", ...}]}}
// Contents (other avatars, items)
{"op":"make", "obj":{"type":"item", "mods":[{"type":"Box", ...}]}}
...
// Ready signal
{"op":"ready"}
```
### 7. Contents Vector Reply
**Bridge** accumulates all objects and sends complete region state:
```
[0x55, seq|0xE0, 0x00, 0x01, <Region State>, <Class List>, 0x00, <State Bundles>, 0x00]
^ ^ ^ ^ ^ ^ ^ ^
| | | | | | | Terminator
| | | | | | Object states concatenated
| | | | | Terminator
| | | | [noid1,class1,noid2,class2,...]
| | | 9 bytes of Region state
| | MESSAGE_DESCRIBE reply
| REGION_NOID
seq|START|MIDDLE|END
```
**Contents Vector Format**:
1. Region state (9 bytes)
2. Object class list (pairs of noid, class_number)
3. Terminator (0x00)
4. State bundles (concatenated object states, ordered by container nesting)
5. Terminator (0x00)
Objects are ordered so containers appear before their contents.
### 8. Client Renders
Client receives contents vector and renders the region with all objects.
---
## Protocol Translation Examples
### Client → Server (Binary to JSON)
**Binary packet** (Walk command):
```
[0x55, 0xE8, 0x01, 0x08, 0x50, 0x80, 0x02]
^ ^ ^ ^ ^ ^ ^
| | | | | | how=2
| | | | | y=128
| | | | x=80
| | | reqnum=8 (WALK)
| | noid=1 (avatar)
| seq=8, START|MIDDLE|END (0xE8 = 0x08|0xE0)
Magic
```
**Translated to JSON** (`Habitat2ElkoBridge.js:883-893`):
```json
{
"to": "user-randy",
"op": "WALK",
"x": 80,
"y": 128,
"how": 2
}
```
### Server → Client (JSON to Binary)
**JSON from Elko**:
```json
{
"op": "OBJECTSPEAK_$",
"noid": 5,
"speaker": 3,
"text": "Hello!"
}
```
**Binary packet** (`hcode.js:229-238`):
```
[0x55, 0xFA, 0x05, 0x0F, 0x03, 0x48, 0x65, 0x6C, 0x6C, 0x6F, 0x21]
^ ^ ^ ^ ^ ^------- "Hello!" in ASCII
| | | | |
| | | | speaker noid=3
| | | reqnum=15 (OBJECTSPEAK_$)
| | noid=5 (object speaking)
| PHANTOM_REQUEST (0xFA)
Magic
```
---
## Data Rate Throttling
The bridge simulates authentic C64 modem timing (`Habitat2ElkoBridge.js:357-361`):
```javascript
rate = 1200 // bits per second (default)
PACKETOVERHEAD = 20
function timeToXmit(bytes) {
// Calculate milliseconds to transmit
return (bytes + PACKETOVERHEAD) * 8 / rate * 1000
}
```
Messages are queued with delays (`Habitat2ElkoBridge.js:463-478`):
```javascript
function futureSend(connection, data) {
var now = new Date().getTime()
var when = connection.timeLastSent + timeToXmit(connection.lastSentLen)
if (when <= now) {
connection.write(data)
connection.timeLastSent = now
} else {
var delay = when - now
setTimeout(function() { connection.write(data) }, delay)
connection.timeLastSent = when
}
}
```
This ensures packets are sent at historically accurate intervals, preventing client buffer overruns.
---
## Debugging Protocol Issues
### Bridge Logging
The bridge uses Winston for detailed logging. Log levels:
- **error**: Critical failures
- **warn**: Recoverable issues
- **info**: Service events
- **debug**: Detailed protocol traces
### Log Patterns
**Client → Server** (`Habitat2ElkoBridge.js:826`):
```
client (<session>) -> [noid:<N> request:<R> seq:<S> ... [args]]
```
**Server → Client** (`Habitat2ElkoBridge.js:1384`):
```
server (<session>) -> <JSON>
```
**Binary → Client** (`Habitat2ElkoBridge.js:539`):
```
[<bytes>] -> client (<session>)
```
### Example Log Sequence
```
client (5:Randy) -> [noid:1 request:8 seq:5 ... [80,128,2]]
{"to":"user-randy","op":"WALK","x":80,"y":128,"how":2} -> server
server (5:Randy) -> {"op":"WALK$","noid":1,"x":80,"y":128,"how":2}
[85,225,1,8,80,128,2] -> client (5:Randy)
```
### Common Issues
#### 1. Malformed Packets
```
Badly formatted server message! Ignored: ...
```
**Cause**: Invalid JSON from Elko or corrupted binary from client
**Solution**: Check for protocol version mismatches
#### 2. JSON Parse Failures
```
JSON.parse failure client (...) -> Ignoring: ...
```
**Cause**: Incomplete JSON frame or non-JSON data
**Solution**: Verify line-delimited framing
#### 3. Unsupported Operations
```
*** Unsupported client message <reqnum> for <ref>. ***
```
**Cause**: Client sent operation not defined for object class
**Solution**: Check client code or add missing message handler
#### 4. NOID Reference Errors
```
Attempted to instantiate class '<type>' which is not supported.
```
**Cause**: Unknown object class in HCode definitions
**Solution**: Add class definition to hcode.js
#### 5. Escape Sequence Errors
**Symptom**: Framing breaks, messages truncated
**Cause**: Unescaped 0x0D or 0x5D in binary data
**Solution**: Verify escape/descape functions
### Packet Analysis Checklist
When debugging logs:
1. **Verify packet structure**:
- First byte = `0x55`
- Control byte has valid flags
- NOID exists in client state
- Request number valid for object class
2. **Check escape sequences**:
- All `0x0D` and `0x5D` bytes escaped
- Escaped bytes appear as `[0x5D, XOR'd value]`
- Descape before interpreting payload
3. **Validate message flow**:
- Region messages use NOID 0
- Object messages use assigned NOIDs
- Sequence numbers match requests
- Contents vector includes all objects
4. **Timing issues**:
- Bridge respects 1200 baud delays
- Large messages split correctly
- No buffer overruns on client
5. **Connection state**:
- Handshake completed (IM_ALIVE)
- Region entered (entercontext)
- Contents vector received
- Avatar NOID assigned
### Diagnostic Tools
**Packet Inspector** (hypothetical utility):
```javascript
function inspectPacket(bytes) {
console.log("Magic:", bytes[0].toString(16))
console.log("Control:", bytes[1].toString(16))
console.log(" END:", (bytes[1] & 0x80) ? "yes" : "no")
console.log(" START:", (bytes[1] & 0x20) ? "yes" : "no")
console.log(" Seq:", bytes[1] & 0x0F)
console.log("NOID:", bytes[2])
console.log("Request:", bytes[3])
console.log("Payload:", bytes.slice(4))
}
```
**Escape Validator**:
```javascript
function validateEscaping(bytes) {
for (let i = 0; i < bytes.length; i++) {
if (bytes[i] == 0x0D || bytes[i] == 0x5D) {
if (i == 0 || bytes[i-1] != 0x5D) {
console.error("Unescaped byte at", i, ":", bytes[i].toString(16))
}
}
}
}
```
---
## Protocol Constants Reference
### From hcode.js
```javascript
// Framing
MICROCOSM_ID_BYTE = 0x55
ESCAPE_CHAR = 0x5D
END_OF_MESSAGE = 0x0D
ESCAPE_XOR = 0x55
// Control byte flags
SPLIT_START = 0x20
SPLIT_MIDDLE = 0x40
SPLIT_END = 0x80
SPLIT_MASK = 0x1F // Extracts sequence number
// Special values
PHANTOM_REQUEST = 0xFA // Server-initiated, no client seq
REGION_NOID = 0 // Region/session messages
UNASSIGNED_NOID = 256 // Ghost avatars
// Limits
MAX_PACKET_SIZE = 100 // Maximum payload per packet
PACKETOVERHEAD = 20 // Q-Link framing overhead
```
### Message Types (Partial List)
```javascript
// Region messages (NOID=0)
MESSAGE_DESCRIBE = 1
MESSAGE_I_QUIT = 2
MESSAGE_IM_ALIVE = 3
MESSAGE_HEREIS = 8
MESSAGE_GOAWAY = 9
MESSAGE_FIDDLE = 12
MESSAGE_LIGHTING = 13
MESSAGE_OBJECT_TALKS = 15
// Object messages (vary by class)
MESSAGE_get = 1
MESSAGE_put = 2
MESSAGE_throw = 3
MESSAGE_walk = 8
MESSAGE_newregion = 9
MESSAGE_speak = 7
```
---
## Q-Link Flow Control and Sequencing
### Packet Sequencing
Q-Link implements reliable delivery via sequence numbers (QConnection.java:55-69):
```java
SEQ_DEFAULT = 0x7F // Initial sequence number
SEQ_LOW = 0x10 // Starting sequence after reset
QSIZE = 16 // Sliding window size (max unacknowledged)
```
**Sequence Flow**:
1. Both client and server start with `SEQ_DEFAULT` (0x7F)
2. After RESET/RESET_ACK exchange, sequences reset to `SEQ_LOW` (0x10)
3. Each Action packet increments the sequence: `SEQ_LOW` → `0x11` → `0x12` → ...
4. Sequence wraps after reaching maximum value
### Sliding Window Protocol
Q-Link uses a sliding window for flow control (QConnection.java:272-310):
**Window Size**: 16 packets (QSIZE)
**Send Logic**:
1. Queue outgoing Action packets
2. Send up to 16 unacknowledged packets
3. Stop sending when window is full
4. Start ping timer to check if client is responsive
**Receive Logic**:
1. Process incoming packet's receive sequence number
2. Free all sent packets up to and including that sequence
3. Slide window forward
4. Send more queued packets if space available
**Window Full Handling**:
- Client sends `WindowFull` command when buffer is full
- Server responds with `Ack` and pauses transmission
- Prevents buffer overflow on slow 1200 baud connections
### Keep-Alive and Ping
**Keep-Alive Timer** (QConnection.java:88-111):
- Scheduled every 60 seconds (configurable)
- Sends `Ping` command to client
- If no response within 60 seconds, closes connection
- Reset on any packet received
**Ping Timer** (QConnection.java:75-86):
- Activated when send queue backs up
- Fires every 2 seconds
- Prompts client to acknowledge received packets
- Helps drain send queue
### Error Handling
**CRC Errors**:
```
Server receives packet → CRC check fails → Send SequenceError
Client receives SequenceError → Retransmit all packets in window
```
**Sequence Errors**:
```
Expected sequence: 0x15
Received sequence: 0x17 (out of order)
Server sends SequenceError → Client retransmits from 0x15
```
**Maximum Consecutive Errors**: 20 (QConnection.java:43)
- Prevents infinite error loops
- Closes connection after threshold
---
## Additional Resources
### Source Files
**NeoHabitat Bridge**:
- **bridge/Habitat2ElkoBridge.js**: Main protocol bridge implementation
- **bridge/hcode.js**: Message definitions, class mappings, encoders
**Q-Link Reloaded Server**:
- **qlink/src/main/java/org/jbrain/qlink/connection/QConnection.java**: Q-Link connection handler
- **qlink/src/main/java/org/jbrain/qlink/connection/HabitatConnection.java**: Habitat-specific Q-Link proxy
- **qlink/src/main/java/org/jbrain/qlink/util/CRC16.java**: CRC16 algorithm implementation
- **qlink/src/main/java/org/jbrain/qlink/cmd/Command.java**: Q-Link command interface
- **qlink/reference/protocol/**: Original Q-Link protocol reverse engineering notes
**Documentation**:
- **neohabitat-doc/docs/getting_started.md**: Setup and architecture overview
- **neohabitat-doc/docs/images/packet.jpg**: Visual packet diagram
- **qlink/reference/protocol/qlink protocol.txt**: Q-Link protocol analysis
- **qlink/reference/protocol/general.txt**: C64 assembly code analysis
- **qlink/reference/protocol/qlinkfuncs.txt**: Q-Link command reference
### External Documentation
- [Elko Server](https://github.com/FUDCo/Elko): Modern server framework
- [QuantumLink Reloaded](https://github.com/ssalevan/qlink): Q-Link protocol implementation
- [Original Habitat Manual (1988)](https://frandallfarmer.github.io/neohabitat-doc/docs/Avatar%20Handbook.html)
- [NeoHabitat Wiki](https://github.com/frandallfarmer/neohabitat/wiki/Developers-Documentation)
- [Q-Link Protocol Archive](https://github.com/ssalevan/qlink/tree/master/reference/protocol): Original protocol documentation and reverse engineering
### Community
- [Discord](https://discord.gg/rspcX27Vt4): Developer discussions
- [GitHub Issues](https://github.com/frandallfarmer/neohabitat/issues): Bug reports
---
## Version History
- **2025-12-29**: Comprehensive protocol documentation compiled from:
- NeoHabitat bridge source code analysis
- Q-Link Reloaded server implementation
- Original Q-Link protocol reverse engineering notes
- C64 assembly code disassembly
- Protocol implements 1986 Lucasfilm Habitat binary format
- Modern bridge created 2016-2017 for NeoHabitat project
- Q-Link Reloaded server by Jim Brain (2005+)
---
## Acknowledgments
This documentation is based on:
**Original Systems**:
- **Habitat Protocol** (1985): Chip Morningstar, Randy Farmer, and Lucasfilm Games
- **QuantumLink Service** (1985): Quantum Computer Services (later AOL)
- Original Habitat was the world's first graphical MMO, running on Commodore 64
**Modern Implementations**:
- **Habitat2ElkoBridge.js**: Randy Farmer, Steve Salevan, and NeoHabitat contributors
- **Q-Link Reloaded**: Jim Brain (reverse engineering and Java implementation)
- **Elko Server**: Electric Communities / Randy Farmer
- **NeoHabitat Project**: Community-driven restoration effort
**Protocol Research**:
- Q-Link protocol reverse engineering by Jim Brain and the Commodore community
- C64 assembly disassembly and documentation
- Original Q-Link client analysis
NeoHabitat faithfully recreates the 1985 Habitat protocol for modern systems while preserving the authentic 1200 baud experience of the original QuantumLink dialup service.
================================================
FILE: README-RealC64.md
================================================
# Setting up a real C64 to play NeoHabitat
Guide written June 7th-29th 2017 by Goethe ([GitHub](https://github.com/napi-goethe) / [Website](http://www.carpeludum.com) / [Twitter](https://twitter.com/Goe_The)) and Flexman
with many thanks to the [NeoHabitat Discord](https://discord.gg/rspcX27Vt4) #troubleshooting and #c64 channel team: @stu, @glake1 and of course @randy
Last updated: 6/21/2023 by StuBlad to add the new NeoHabitat server address
## What hardware do you need
ffff
* A C64 (any model) or C128
* At least one floppy drive - I used a 1541-II. Tests with other drives pending.
* A **working** 5,25" floppy disk
* Disks die over time. Please make sure you have two that are still good. I wasted one hour of the NeoHabitat launch night testing with a weak/defective disk.
* Special hardware to use D64 disk images on a real C64 or special hardware to transfer them to real C64 floppy disks. Options are:
* Use D64 disk images on a real C64 (emulation of a real floppy drive)
* **Tested and working:**
* 1541 Ultimate / Ultimate II+
* **Not tested yet:**
* SD2IEC
* Transfer disk images to real C64 floppy disks
* **Tested and working:**
* 1541 Ultimate / Ultimate II+
* RR-Net MK3 expansion port ethernet adapter [available here from Individual Computers](https://icomp.de/shop-icomp/de/shop/product/rr-net-mk3.html)
* XAP transfer cable other possibilities exist, but have not been tested yet - the C64 community is welcome to test and add experiences, for example:
* **Not tested yet:**
* Other transfer cables (XM/XA etc.)
* Special hardware for connecting the C64 to the Internet via the serial port method (user port)
* **Tested and working:**
* The "Australian" userport WiFi modem [available here from Melbourne Console Reproductions](http://melbourneconsolerepros.com/product_info.php?products_id=125)
* The [Strikelink modem](https://1200baud.wordpress.com/2017/03/17/strikelink-c64-300-9600-baud-wifi-modem-on-sale/) works
* **Not tested yet:**
* Other C64 WiFi userport modems such as the U.S. one (cbmstuff.com)
* RR-Net MK3 (not ready for modem connection yet, modem emulation driver would have to be programmed first)
* Connecting the C64 to PC via RS-232 and emulating the modem via PC ([see here](http://orrtech.us/qlink/)).
* Using a [DreamPi](http://blog.kazade.co.uk/p/dreampi.html) as gateway
* 1541 Ultimate (not ready for modem connection yet)
## Required D64 disk images
The archive [`Neohabitat-RealC64.zip`](https://github.com/frandallfarmer/neohabitat-doc/blob/master/installers/Neohabitat-RealC64.zip) contains the exact files with which I was successful in connecting to NeoHabitat:
* `Habitat-Boot_v1.1-modemenabled.d64`
* `Habitat-B.d64`
## Guide Step 1 - Directly Use D64 images on real C64 or transfer D64 images to real C64 floppy disks
### DIRECT IMAGE USE options for step 1
#### (Option 1) DIRECT IMAGE USE using the 1541 Ultimate
* Use the D64 images (you could also use them with Vice on a PC)
* All you need is `Habitat-Boot_v1.1-modemenabled.d64` and `Habitat-B.d64`.
* Run them on your 1541-U directly
* Make sure that you only have one drive connected when you run the game. NeoHabitat won't start if you have more than one drive connected. If you have a C128 or SX64 with internal drive you have either to switch the drive or the drive emulation of the 1541-U/II+ off.
#### Using any other method
(To be written by the community, when successfully tested)
### TRANSFER options for step 1
#### (Option 1) TRANSFER using the 1541 Ultimate / II+
* Use the D64 images (you could also use them with Vice on a PC)
* All you need is `Habitat-Boot_v1.1-modemenabled.d64` and `Habitat-B.d64`
* Transfer them to disk (e.g. via disk copy utilities from the Action Cartdrige 6.0 included with your 1541-U/II+)
* Write `Habitat-Boot_v1.1-modemenabled.d64` to side A of your real C64 disk
* Write `Habitat-B.d64` to side B of your real C64 disk
* Make sure that you only have one drive connected when you run the game. NeoHabitat won't start if you have more than one drive connected. If you have a C128 or SX64 with internal drive you have either to switch the drive or the drive emulation of the 1541-U/II+ off.
#### (Option 2) TRANSFER using RR-Net MK3
Unfortunately, this is a hen-and-egg problem. You need **someone** to get you the C64 program `WARPCOPY06` from following step 1 to a real C64 disk, so you can continue with steps 2 and 3... Have you visited a retro computer party lately? :)
1. Get and start warpcopy06 [from CSDB here](http://csdb.dk/release/?id=147362)
2. Using warpcopy06, write `Habitat-Boot_v1.1-modemenabled.d64` to side A of your real C64 disk
3. Using warpcopy06, write `Habitat-B.d64` to side B of your real C64 disk
#### (Option 3) TRANSFER using OpenCBM's d64copy.exe and a XAP1541 cable
For this option, you need a XAP1541 cable and a PC with a parallel port (hardware) and OpenCBM (software). Writing of disk images is working with the serial part of the XAP1541 cable too (only slower), so you do not need to install a parallel cable to your 1541 disk drive (only when you want a fast transfer).
1. Get and install OpenCBM tools
2. Using d64copy, write `Habitat-Boot_v1.1-modemenabled.d64` to side A of your real C64 disk
3. Using d64copy, write `Habitat-B.d64` to side B of your real C64 disk
#### (Option 4) TRANSFER using your modem to get the files via BBS
Since you obviously have a modem for playing this game, you can connect to a Bulletin Board System which offers the game for download.
There currently isn't a BBS available that hosts the Habitat disk images but if you find one, feel free to add it to this guide!
#### Using any other method
(To be written by the community, when successfully tested)
## Guide Step 2 - Prepare the WiFi Modem for NeoHabitat
#### (Option 1) using Australian WiFi modem from Melbourne Console Reproductions
This section assumes you are familiar with the general setup of the modem according to it's user manual,
e.g. using Striketerm to issue modem commands.
1. Configure your WiFi modem to connect to your WiFi network (probably you already did that anyway)
2. For use with NeoHabitat, the modem needs to be set to 1200 baud
* `at$sb=1200`
3. If you are lazy, you can set the NeoHabitat Q-Link server to a speed dial slot, e.g. 0:
* `at&z0=habitat.themade.org:1986`
4. Don't forget to save the defaults
* `at&w`
#### (Option 2) using Alwyz Strikelink modem
1. Start [CCGMS](http://csdb.dk/release/index.php?id=156523). We assume you already did your Wifi settings and initialization,
and know how your modem works (e.g. using 9600 baud for the first command after it has been switchted on).
2. Change the baud rate to 1200 by typing "at$sb=1200". Press F7 and also change the baud rate there.
3. Type at&k0 for turning off hardware flow control
4. You could now dial the URL from the terminal, or use your phone book (press F7 and "A" for Autodialer/Phone Book)
5. Add habitat.themade.org with port 1986 to your phone book and call it from there by pressing "C". (You might want
to exit the phone book and save it with "S" when doing this the 1st time).
6. After you modem is connected, the blue light will turn off. You can press reset and proceed with the next step.
#### Using any other method
(To be written by the community, when successfully tested)
## Guide Step 3 - Boot NeoHabitat
* Insert disk `Habitat-Boot_v1.1-modemenabled.d64`
* Type in `LOAD"*",8,1`, wait a while and then type `RUN`
* Once the client has loaded, you should see the NeoHabitat title screen.
* Press `ENTER`.
* In the following screen, you can enter your desired user name.
* If your modem already is connected, you can proceed with step 4. If your modem is not connected because you don't have a reset button, or prefer to do it from within the game, press `F7` to enter Terminal mode to issue modem commands.
#### (Option 1) using Australian WiFi modem from Melbourne Console Reproductions
Currently, it may be that modem responses are garbled, but this does not affect functionality. Just disregard it and blindly type the required modem commands.
Here, you enter the commands required to connect the "Australian" WiFi modem to the NeoHabitat server:
* `ati`
* (modem responds with hello, and connects to your WiFi network)
* `atc1` (optional)
* (modem connects to your WiFi network, if first connection attempt has failed, which happens quite often to me)
* `atds0`
* (modem connects to speed dial 0, i.e. the NeoHabitat server)
Then you should see `CONNECT 1200` - then press `RUN/STOP`
If you don't see it, there may be a problem with your internet connection - or with the NeoHabitat server (it may be down from time to time).
#### (Option 1) using Strikelink modem
@flexman please add specifics for Strikelink modem here
#### Using any other method
(To be written by the community, when successfully tested)
## Guide Step 4 - Start NeoHabitat
After the modem commands have been issued and the connection to the NeoHabitat server is active and RUN/STOP has been pressed, simply press `RETURN`.
NeoHabitat has launched (some further stuff is loaded from disk).
When the message "Press Alt-N/Cmd-N" is displayed, insert or virtually-mount the Habitat-B disk.
Press `SPACE`.
After a short while, your avatar should hatch at the NeoHabitat Immigration center.
If the game stops loading before your avatar shows up, you might check your modem connection. In case the modem is not connected,
there will not be any error message, the game just will stop loading at this point.
# Enjoy NeoHabitat on your real C64!

And join the [Discord](https://discord.gg/rspcX27Vt4) for further discussions.
Please extend this guide for other connection methods (photo proof needed :) ).
## Open questions
* What is written on Habitat-B disk after insertion? Online status information? Room information? Also authentication information? How can it be deleted again so as to have a "clean" B disk image again?
================================================
FILE: README.md
================================================
NeoHabitat.org: The Neoclassical Habitat Server Project
=======================================================
[](https://github.com/frandallfarmer/neohabitat/blob/master/LICENSE)
[](https://twitter.com/NeoHabitatProj)
[Developer Discord](https://discord.gg/rspcX27Vt4)
We're recreating [Lucasfilm's Habitat](https://en.wikipedia.org/wiki/Habitat_(video_game)), the world's first MMO, using modern technology. We'd love it if you joined us!
Play Habitat Now!
-----------------
We maintain a demo server running the latest NeoHabitat code and you can connect to it at any time. There's often a few members of the regular crew hanging out there, so come say hey!
**Please note**: NeoHabitat is still in development, so there will likely be some instability. If you see anything weird, please [tell us about it in our Discord](https://discord.gg/rspcX27Vt4).
With all that out of the way, here's how to get started:
- If you want to use Habitat with a real C64, please switch over to [these instructions](https://github.com/frandallfarmer/neohabitat/blob/master/README-RealC64.md) for making disks and using modern connection hardware.
- You can also use our [web based client](http://habitat.themade.org) to connect via a browser. Just skip to **Step 2** below to learn how to get ingame.
### Step 1 - Download and Install either the Windows or OSX Habitat package (which comes with VICE, the C64 emulator)
**Windows**
- Download the [NeoHabitat installer](https://github.com/StuBlad/neohabitat-installer/releases/download/1.1/NeoHabitatInstaller1.1.exe)
- Run the installer.
- Tested on Windows 11 Home v22H2 but it should be fine on older versions of Windows.
- Check the **Launch NeoHabitat** box at the end of the installation, or Double-click the **NeoHabitat** icon on your desktop or in the Start Menu.
- Go to Step 2!
**OS X**
- Download [Neohabitat.dmg](https://github.com/frandallfarmer/neohabitat-doc/blob/master/installers/Neohabitat.dmg?raw=true) and double-click on the DMG file.
- Drag the **NeoHabitat** application to the **Applications** folder.
- **Launch the NeoHabitat application** you dragged to **Applications**.
**Please Note**: OS X may inform you that this app comes from an unknown developer upon first launch. If this happens, **open System Preferences** and click **Security & Privacy**. From the following pane, click **Open Anyway** to launch the NeoHabitat application.
**Linux and \*BSD**
- Install VICE and `nc` (netcat) via your package manager
- Extract the Windows release of [Neohabitat.zip](https://github.com/frandallfarmer/neohabitat-doc/blob/master/installers/Neohabitat.zip?raw=true) to get the `.d64` files and `fliplist-C64.vfl`
- Run the VICE C64 emulator with these options set:
`x64 -rsuser -rsuserdev 0 -rsdev1 '|nc 20.3.249.92 1986' -rsuserbaud 1200 -flipname fliplist-C64.vfl Habitat-Boot.d64`
- There is a bug in current versions of VICE which breaks this network support (https://sourceforge.net/p/vice-emu/bugs/1356). Versions including r38928 and earlier work.
### Step 2 - Login and play!
In a few moments, you'll be brought to the NeoHabitat splash screen:

Major thanks to **Gary Lake-Schaal** who developed our custom loader and built the original Habitat client from the original 1985 source!
At this point, **Press Enter** then enter your username:

**Press Enter again**, then wait until the Habitat client loads and asks you to insert your imagery disk:

At this point, **Press Alt-n or ⌘-n**, then **Press Enter**.
If all goes well, you'll materialize in downtown Populopolis:

### Step 3 - Learn How to Play
Welcome to NeoHabitat! There's a whole lot you can do here and thousands of exotic places to visit.
Before you go anywhere, **we highly recommend opening up our [Docent support software](http://habitat.themade.org)**. It's a browser based guide that'll help you navigate NeoHabitat, learn the controls and teach you about the history of the world. It's interactive and will update as you move around without you having to lift a finger.
If you are using the web based client mentioned earlier, the Docent support software is already active!
To learn about all the things you can do in more detail, read the [official Habitat manual](https://frandallfarmer.github.io/neohabitat-doc/docs/Avatar%20Handbook.html) from 1988.
Your default controls for NeoHabitat are mapped to the numpad and Right-CTRL.
* Right-Ctrl + Numpad 8 initiates the **"GO"** command
* Right-Ctrl + Numpad 2 initiates the **"DO"** comamnd
* Right-Ctrl + Numpad 6 initiates the **"GET"** command
* Right-Ctrl + Numpad 4 initiates the **"PUT"** command
There is also a [NeoHabitat Controls cheat sheet](https://github.com/StuBlad/neohabitat-installer/blob/master/Neohabitat/NeoHabitatControls.pdf) which tells you all of the keys you need to know.
For the most authentic experience, you'll also need to **hook up a joystick**, whether it's physical or virtual. To set one up, **open the Settings menu** then select **Joystick**. Habitat expects a joystick in **port #1**.
We have tested with various different gamepads that all work fine with Habitat. We have personally tested it with the Xbox 360 Wireless Controller for PC.
### Step 4 (Optional) - Controls
If you don't own a joystick and wish to change the controls to suit your needs then follow these steps:
- At the top of your VICE emulator, select "Settings"
- Hover your mouse over "Joystick Settings" and then select "Joystick Settings..." (Windows) or "Joystick" (OS X)
- A window should now popup saying "Joystick settings"
- For "Joystick #1", select "Keyset A"
- Click "Configure Keyset A" (Windows) or "Keyset" (OS X) and map the controls to whatever you like
- If you are running into issues, head on over to the #troubleshooting channel [on our Discord](https://discord.gg/rspcX27Vt4)
- If you have a **localized keyboard** (e.g. German QWERTZ) you might not be able to find some essential keys, like ":". It might help if you change "Settings - Keyboard Settings - Active Keymap" from Symbolic to Positional, the keyboard will behave like a C64 keyboard.
Help!
-----
If you're having trouble getting NeoHabitat working, don't worry, we're here to help! Come [join our Discord](https://discord.gg/rspcX27Vt4) and join our **#troubleshooting** room.
If you encounter a glitch whilst playing NeoHabitat, please check to see if it's been filed as an [issue](https://github.com/frandallfarmer/neohabitat/issues). If it hasn't, we'd appreciate it if you let us know what happened so we can investigate.
Developer Documentation
-----------------------
If you'd like to contribute to NeoHabitat, there are plenty of great opportunities! Come check our our extensive developer documentation:
- [Getting Started for Developers](https://github.com/frandallfarmer/neohabitat-doc/blob/master/docs/getting_started.md)
- [Developer Wiki](https://github.com/frandallfarmer/neohabitat/wiki/Developers-Documentation)
Have Fun!
---------
On behalf of the entire NeoHabitat Project, we hope that you have a great time, and we'll see you in-world!
================================================
FILE: astroturf/app.py
================================================
from __future__ import print_function
import argparse
import os
import sys
from glob import glob
from astroturf import Astroturf
ARG_PARSER = argparse.ArgumentParser(
description='Renders templated regions based upon Griddle input files',
)
ARG_PARSER.add_argument(
'--input_dir',
dest='input_dir',
default='.',
help='where the base Griddle and JSON template region files can be found',
)
ARG_PARSER.add_argument(
'--output_dir',
dest='output_dir',
default='astroturf',
help='where to output Neohabitat JSON region files',
)
def convert_files_in_dir(input_dir, output_dir):
griddle_base_files = glob(os.path.join(input_dir, '*.i'))
if not griddle_base_files:
print(' ! No .i file found in input dir, bailing...')
sys.exit(-1)
griddle_base_file = griddle_base_files[0]
region_proto_files = glob(os.path.join(input_dir, '*.json'))
if not region_proto_files:
print(' ! No .json files found in input dir, bailing...')
sys.exit(-2)
astroturf = Astroturf(input_dir, output_dir, griddle_base_file, region_proto_files)
success = astroturf.write_output_files()
if not success:
print(' ! Failed to convert all regions.')
sys.exit(-3)
if __name__ in '__main__':
args = ARG_PARSER.parse_args()
convert_files_in_dir(args.input_dir, args.output_dir)
================================================
FILE: astroturf/astroturf.py
================================================
from __future__ import print_function
import json
import os
import re
import string
import sys
import traceback
import uuid
import yaml
DOOR_CONNECTION_REGEX = re.compile(r'\((.*)\)')
STRING_REGEX = re.compile(r'"(.*)"')
REGION_SPECIFIER_REGEX = re.compile(r'([a-z])=(\(.*\)|\d+)')
OCTAL_REGEX_STRING = r'(!ASTROESC!\d\d\d)'
OCTAL_REGEX = re.compile(OCTAL_REGEX_STRING)
HEX_REGEX_STRING = r'(!ASTROESC!x[0-9a-f][0-9a-f])'
HEX_REGEX = re.compile(HEX_REGEX_STRING)
CUSTOM_ESCAPE_REGEX_STRING = r'(!ASTROESC![^0-9])'
CUSTOM_ESCAPE_REGEX = re.compile(CUSTOM_ESCAPE_REGEX_STRING)
CUSTOM_ESCAPES_TABLE = {}
with open('./custom_escapes_table.yml', 'r') as custom_escapes_table:
CUSTOM_ESCAPES_TABLE = yaml.load(custom_escapes_table)
def _strip_quotes(value):
if STRING_REGEX.match(value):
return STRING_REGEX.findall(value)[0]
else:
return value
def _custom_escape_to_ascii(custom_escape):
escape_char = custom_escape[10:11]
if escape_char in CUSTOM_ESCAPES_TABLE:
return int(CUSTOM_ESCAPES_TABLE[escape_char])
else:
# Handles \a-z or \A-Z cases.
if escape_char in string.lowercase or escape_char in string.uppercase:
return int(128 + string.lowercase.index(escape_char.lower()))
def _hex_escape_to_ascii(hex_escape):
hex_text = hex_escape[11:]
return int(hex_text, 16)
def _octal_escape_to_ascii(octal_escape):
octal_text = octal_escape[10:]
return int(octal_text, 8)
def _astroesc_text_to_ascii_string(text):
return ''.join(map(chr, _astroesc_text_to_ascii_int_list(text)))
def _astroesc_text_to_ascii_int_list(text):
range_to_replacement = []
print('Running escape logic for text: {}'.format(text))
def _get_replacement(index):
should_replace = False
for replace_start, replace_end, replacement in range_to_replacement:
if replace_start <= index < replace_end:
if index == replace_start:
return True, replacement
else:
return True, None
return False, None
for octal_match in OCTAL_REGEX.finditer(text):
octal_replace_tuple = (
octal_match.start(0),
octal_match.end(0),
_octal_escape_to_ascii(octal_match.groups()[0]),
)
print("Replacement for octal: {}: {}".format(octal_match.groups()[0], octal_replace_tuple))
range_to_replacement.append(octal_replace_tuple)
for hex_match in HEX_REGEX.finditer(text):
hex_replace_tuple = (
hex_match.start(0),
hex_match.end(0),
_hex_escape_to_ascii(hex_match.groups()[0]),
)
print("Replacement for hex: {}: {}".format(hex_match.groups()[0], hex_replace_tuple))
range_to_replacement.append(hex_replace_tuple)
for custom_match in CUSTOM_ESCAPE_REGEX.finditer(text):
custom_replace_tuple = (
custom_match.start(0),
custom_match.end(0),
_custom_escape_to_ascii(custom_match.groups()[0]),
)
print("Replacement for custom: {}: {}".format(custom_match.groups()[0], custom_replace_tuple))
range_to_replacement.append(custom_replace_tuple)
if range_to_replacement:
print('Replacements for text {}: \n{}'.format(text, range_to_replacement))
# Patches together an ASCII int array with all escaped replacements.
ascii_string = []
for i in range(len(text)):
should_replace, replacement = _get_replacement(i)
if should_replace:
if replacement is not None:
ascii_string.append(replacement)
else:
ascii_string.append(ord(text[i]))
print('ASCII for text {}:\n{}'.format(text, ascii_string))
return ascii_string
class AstroturfRegion(object):
west_linenumber = 0
north_linenumber = 0
east_linenumber = 0
south_linenumber = 0
def __init__(self, astroturf, line_number, line):
print(' - Reading line {}: {}'.format(line_number, line))
self.astroturf = astroturf
self.line_number = line_number
region_specifier, region_args = line.split('/')
split_args = []
for arg in re.split(r"""('.*?'|".*?"|\S+)""", region_args.strip()):
strip_arg = arg.strip()
if strip_arg:
split_args.append(strip_arg)
print("SPLIT ARGS:", split_args)
self.args = map(lambda arg: _strip_quotes(arg), split_args)
print("ARGS:", self.args)
self.door_connections = []
self._parse_region_specifier(region_specifier)
self.port_dir = ''
self.town_dir = ''
if not self.args:
self.region_ref = '{}.line{}'.format(self.region_proto, self.line_number)
self.region_name = '{} {}'.format(self.region_proto, self.line_number)
else:
if len(self.args) == 1:
self.region_ref = '{}.{}.line{}'.format(
self.args[0].replace(' ', '_'), self.region_proto, self.line_number)
self.region_name = '{} {}'.format(self.args[0], self.region_proto)
elif len(self.args) == 2:
self.region_ref = '{}.{}'.format(self.args[0].replace(' ', '_'), self.args[1])
self.region_name = '{} {}'.format(self.args[0], self.args[1])
else:
self.region_ref = '{}.{}.line{}'.format(self.args[-2].replace(' ', '_'),
self.region_proto, self.line_number)
self.region_name = '{} {}'.format(self.args[-2], self.region_proto)
self.port_dir = self.args[-1]
def _get_region_context(self, linenum):
return 'context-{}'.format(self.astroturf.regions[linenum - 1].region_ref)
@property
def output_filename(self):
return '{}.json'.format(self.region_ref)
@property
def template_dict(self):
template_dict = {
'is_turf': 'turf' in self.region_proto,
'turf_exit_connection': '',
'region_ref': self.region_ref,
'region_name': self.region_name,
'orientation': self.orientation,
'west_connection': '',
'north_connection': '',
'east_connection': '',
'south_connection': '',
'orientation_connection': '',
'town_dir': self.town_dir,
'port_dir': self.port_dir,
'nitty_bits': 3,
}
# Determines any arguments for templating purposes.
for i in range(len(self.args)):
key = 'arg_{}'.format(i+1)
template_dict[key] = self.args[i]
# Determines region and door connections.
for i in range(len(self.door_connections)):
key = 'door{}_connection'.format(i)
template_dict[key] = self._get_region_context(self.door_connections[i])
# Looks up region context references for all connections in ordinal directions.
if self.west_linenumber != 0:
template_dict['west_connection'] = self._get_region_context(self.west_linenumber)
template_dict['turf_exit_connection'] = template_dict['west_connection']
if self.north_linenumber != 0:
template_dict['north_connection'] = self._get_region_context(self.north_linenumber)
template_dict['turf_exit_connection'] = template_dict['north_connection']
if self.east_linenumber != 0:
template_dict['east_connection'] = self._get_region_context(self.east_linenumber)
template_dict['turf_exit_connection'] = template_dict['east_connection']
if self.south_linenumber != 0:
template_dict['south_connection'] = self._get_region_context(self.south_linenumber)
template_dict['turf_exit_connection'] = template_dict['south_connection']
# Populates the connection that is currently pointed in the direction of the region's
# orientation, typically a single door mounted on a Wall mod.
if self.orientation == 0:
template_dict['orientation_connection'] = template_dict['west_connection']
elif self.orientation == 1:
template_dict['orientation_connection'] = template_dict['north_connection']
elif self.orientation == 2:
template_dict['orientation_connection'] = template_dict['east_connection']
elif self.orientation == 3:
template_dict['orientation_connection'] = template_dict['south_connection']
return template_dict
def _parse_connection(self, direction, value):
if DOOR_CONNECTION_REGEX.match(value):
self.door_connections = map(lambda linenum: int(linenum),
DOOR_CONNECTION_REGEX.findall(value)[0].split())
else:
if direction == 'w':
self.west_linenumber = int(value)
elif direction == 'n':
self.north_linenumber = int(value)
elif direction == 'e':
self.east_linenumber = int(value)
elif direction == 's':
self.south_linenumber = int(value)
def _parse_region_specifier(self, region_specifier):
self.region_proto = region_specifier.strip().split()[0]
for region_elem in REGION_SPECIFIER_REGEX.findall(region_specifier):
elem_identifier, elem_value = region_elem
if elem_identifier == 'r':
self.orientation = int(elem_value.strip())
elif elem_identifier in set(['w', 'n', 'e', 's']):
self._parse_connection(elem_identifier, elem_value.strip())
def write_templated_region(self):
if self.region_proto not in self.astroturf.region_name_to_proto:
print(
' ! No prototype named {}.json found for region {} on line {}, skipping'.format(
self.region_proto, self.region_ref, self.line_number))
return False
output_location = os.path.join(self.astroturf.output_dir, self.output_filename)
print(' - Writing region {} from line {} to: {}'.format(
self.region_ref, self.line_number, output_location))
region_prototype = self.astroturf.region_name_to_proto[self.region_proto]
region_contents = (region_prototype % self.template_dict).replace('\\', '!ASTROESC!')
try:
# Tests whether the JSON parses after templating.
region_json = json.loads(region_contents)
ascii_converted_region = []
# If it does, converts all 'text' fields to 'ascii' equivalents.
for elko_obj in region_json:
ascii_converted_mods = []
for habitat_mod in elko_obj['mods']:
for key, value in habitat_mod.items():
if key == 'text':
habitat_mod['ascii'] = _astroesc_text_to_ascii_int_list(habitat_mod['text'])
del habitat_mod['text']
elif isinstance(value, str):
habitat_mod[key] = _astroesc_text_to_ascii_string(value)
ascii_converted_mods.append(habitat_mod)
elko_obj['mods'] = ascii_converted_mods
ascii_converted_region.append(elko_obj)
# Finally, writes out the fully-templated and escaped region.
with open(output_location, 'w') as output_file:
output_file.write(json.dumps(ascii_converted_region, indent=2))
print(' - Successully wrote region {} from line {} to: {}'.format(
self.region_ref, self.line_number, output_location))
return True
except Exception:
print(' ! JSON parse check for region {} from line {} failed; skipping:\n{}'.format(
self.region_ref, self.line_number, region_contents))
traceback.print_exc()
class Astroturf(object):
regions = []
region_name_to_proto = {}
def __init__(self,
input_dir, output_dir, base_griddle_filename, region_proto_filenames):
self.input_dir = input_dir
self.output_dir = output_dir
self.base_griddle_filename = base_griddle_filename
self.region_proto_filenames = region_proto_filenames
self._parse_base_griddle()
self._parse_region_prototypes()
def _parse_base_griddle(self):
print(' - Reading base .i file at: {}'.format(self.base_griddle_filename))
with open(self.base_griddle_filename, 'r') as base_griddle_file:
line_num = 0
total_lines = -1
for griddle_line in base_griddle_file.readlines():
if line_num == 0:
total_lines = int(griddle_line.strip())
else:
self.regions.append(AstroturfRegion(self, line_num, griddle_line.strip()))
line_num += 1
def _parse_region_prototypes(self):
for region_proto_filename in self.region_proto_filenames:
region_proto_name = os.path.split(region_proto_filename)[-1].split('.json')[0]
print(' - Reading region prototype file: {}'.format(region_proto_name))
with open(region_proto_filename, 'r') as region_proto_file:
self.region_name_to_proto[region_proto_name] = region_proto_file.read()
def write_output_files(self):
print(' - Outputting all templated regions...')
os.makedirs(self.output_dir)
failures = []
for region in self.regions:
success = region.write_templated_region()
if not success:
failures.append(region)
if not failures:
print(' - Successfully outputted all templated regions to: {}'.format(
self.output_dir))
return True
else:
print(' ! Failures encountered during the templating of the following regions:')
for failed_region in failures:
print(' + {}, region_proto: {}, line_number: {}'.format(
failed_region.region_ref, failed_region.region_proto,
failed_region.line_number))
return False
================================================
FILE: astroturf/custom_escapes_table.yml
================================================
# ASCII lookup table for custom Habitat text control characters:
# https://github.com/frandallfarmer/neohabitat/wiki/Habitat-Sign-Escape-and-Graphical-Character-Codes
---
'n': 10 # newline
'r': 13 # horizontal tab
'"': 34 # quote
"'": 39 # apostrophe
'\': 109 # backslash
' ': 128 # half space
'+': 129 # increment text width
'-': 130 # decrement text width
'(': 131 # increment text height
')': 132 # decrement text height
'h': 133 # half size characters
'R': 134 # sign carriage return
'>': 135 # cursor right
'<': 136 # cursor left
'^': 137 # cursor up
'v': 138 # cursor down
'd': 139 # move half character space down
'i': 140 # shift to inverse video
'#': 143 # double space
================================================
FILE: astroturf/popustop/afront1.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_1)s",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 5,
"type": "Wall",
"orientation": 164
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Ground",
"x": 0,
"y": 4,
"orientation": 228,
"style": 1
}
]
},
{
"type": "item",
"ref": "item-door.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 64,
"y": 33,
"orientation": 140,
"style": 0,
"open_flags": 2,
"connection": "context-%(region_ref)s"
}
]
},
{
"ref": "item-window1.%(region_ref)s",
"mods": [
{
"style": 0,
"orientation": 0,
"gr_state": 1,
"y": 51,
"x": 16,
"type": "Window"
}
],
"type": "item",
"name": "Window",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Street",
"x": 68,
"y": 8,
"gr_state": 6,
"orientation": 8
}
]
},
{
"type": "item",
"ref": "item-sign1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 32,
"y": 104,
"style": 4,
"orientation": 244,
"gr_state": 2,
"text": "\h%(arg_1)sc12"
}
]
},
{
"ref": "item-window2.%(region_ref)s",
"mods": [
{
"style": 0,
"orientation": 0,
"gr_state": 1,
"y": 51,
"x": 124,
"type": "Window"
}
],
"type": "item",
"name": "Window",
"in": "context-%(region_ref)s"
}
]
================================================
FILE: astroturf/popustop/afront2.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_1)s",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"depth": 25,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 5,
"type": "Wall",
"orientation": 164
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Ground",
"x": 0,
"y": 4,
"orientation": 220,
"style": 1
}
]
},
{
"type": "item",
"ref": "item-door.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 52,
"y": 33,
"orientation": 0,
"style": 4,
"open_flags": 2,
"connection": "context-Popustop.lobby.line3"
}
]
},
{
"type": "item",
"ref": "item-trap1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 52,
"y": 18,
"orientation": 8,
"trapezoid_type": 2,
"upper_left_x": 2,
"upper_right_x": 49,
"lower_left_x": 0,
"lower_right_x": 51,
"height": 14
}
]
},
{
"type": "item",
"ref": "item-sign1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 32,
"y": 104,
"style": 4,
"orientation": 244,
"gr_state": 2,
"text": " \h%(arg_1)s"
}
]
},
{
"type": "item",
"ref": "item-trap2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 16,
"y": 24,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 19,
"lower_left_x": 0,
"lower_right_x": 19,
"height": 144
}
]
},
{
"type": "item",
"ref": "item-supertrap1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 20,
"y": 40,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 11,
"lower_left_x": 0,
"lower_right_x": 11,
"height": 88,
"pattern_x_size": 0,
"pattern_y_size": 0,
"pattern": [
68,
68,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-supertrap2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 128,
"y": 40,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 11,
"lower_left_x": 0,
"lower_right_x": 11,
"height": 88,
"pattern_x_size": 0,
"pattern_y_size": 0,
"pattern": [
68,
68,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Street",
"x": 64,
"y": 12,
"gr_state": 1,
"orientation": 8
}
]
},
{
"type": "item",
"ref": "item-trap3.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 124,
"y": 24,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 19,
"lower_left_x": 0,
"lower_right_x": 19,
"height": 144
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 92,
"y": 33,
"orientation": 1,
"style": 4,
"open_flags": 2,
"connection": "context-Popustop.lobby.line3"
}
]
}
]
================================================
FILE: astroturf/popustop/afront3.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_1)s",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 5,
"type": "Wall",
"orientation": 164
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Ground",
"x": 0,
"y": 4,
"orientation": 228,
"style": 1
}
]
},
{
"type": "item",
"ref": "item-door.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 64,
"y": 33,
"orientation": 140,
"style": 0,
"open_flags": 2,
"connection": "context-%(region_ref)s"
}
]
},
{
"type": "item",
"ref": "item-street1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Street",
"x": 64,
"y": 16,
"gr_state": 1,
"orientation": 8
}
]
},
{
"type": "item",
"ref": "item-sign1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 32,
"y": 104,
"style": 4,
"orientation": 244,
"gr_state": 2,
"ascii": [
32,
32,
32,
32,
133,
80,
111,
112,
117,
115,
116,
111,
112
]
}
]
},
{
"type": "item",
"ref": "item-street2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Street",
"x": 64,
"y": 11,
"gr_state": 1,
"orientation": 8
}
]
},
{
"type": "item",
"ref": "item-supertrap1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 20,
"y": 40,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 11,
"lower_left_x": 0,
"lower_right_x": 11,
"height": 88,
"pattern_x_size": 0,
"pattern_y_size": 0,
"pattern": [
68,
68,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-supertrap2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 128,
"y": 40,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 11,
"lower_left_x": 0,
"lower_right_x": 11,
"height": 88,
"pattern_x_size": 0,
"pattern_y_size": 0,
"pattern": [
68,
68,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-supertrap3.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 144,
"y": 137,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 11,
"lower_left_x": 0,
"lower_right_x": 11,
"height": 120,
"pattern_x_size": 0,
"pattern_y_size": 0,
"pattern": [
68,
68,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-supertrap4.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 4,
"y": 137,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 11,
"lower_left_x": 0,
"lower_right_x": 11,
"height": 120,
"pattern_x_size": 0,
"pattern_y_size": 0,
"pattern": [
68,
68,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-trap1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 16,
"y": 24,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 19,
"lower_left_x": 0,
"lower_right_x": 19,
"height": 144
}
]
},
{
"type": "item",
"ref": "item-trap2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 124,
"y": 24,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 19,
"lower_left_x": 0,
"lower_right_x": 19,
"height": 144
}
]
},
{
"type": "item",
"ref": "item-trap3.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 140,
"y": 136,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 19,
"lower_left_x": 0,
"lower_right_x": 19,
"height": 144
}
]
},
{
"type": "item",
"ref": "item-trap4.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 0,
"y": 136,
"orientation": 140,
"trapezoid_type": 3,
"upper_left_x": 0,
"upper_right_x": 19,
"lower_left_x": 0,
"lower_right_x": 19,
"height": 144
}
]
}
]
================================================
FILE: astroturf/popustop/aprominade2.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_1)s",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"depth": 25,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-sky1.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 4,
"type": "Sky",
"orientation": 0
}
],
"type": "item",
"name": "Sky",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Ground",
"x": 0,
"y": 4,
"orientation": 228,
"style": 1
}
]
},
{
"ref": "item-sky2.%(region_ref)s",
"mods": [
{
"y": 3,
"x": 0,
"style": 0,
"type": "Sky",
"orientation": 228
}
],
"type": "item",
"name": "Sky",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-street1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Street",
"x": 68,
"y": 12,
"gr_state": 6,
"orientation": 8
}
]
},
{
"type": "item",
"ref": "item-supertrap1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 24,
"y": 48,
"orientation": 164,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 103,
"lower_left_x": 0,
"lower_right_x": 103,
"height": 216,
"pattern_x_size": 1,
"pattern_y_size": 7,
"pattern": [
85,
85,
90,
165,
90,
165,
90,
165,
90,
165,
90,
165,
90,
165,
90,
165,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-supertrap2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Super_trapezoid",
"x": 24,
"y": 48,
"orientation": 164,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 103,
"lower_left_x": 0,
"lower_right_x": 103,
"height": 144,
"pattern_x_size": 1,
"pattern_y_size": 1,
"pattern": [
102,
102,
153,
153,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0,
0
]
}
]
},
{
"type": "item",
"ref": "item-trap1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 78,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 86,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap3.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 72,
"y": 57,
"orientation": 0,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 4,
"lower_left_x": 0,
"lower_right_x": 4,
"height": 132
}
]
},
{
"type": "item",
"ref": "item-trap4.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 72,
"y": 49,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 135
}
]
},
{
"type": "item",
"ref": "item-trap5.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 66,
"y": 28,
"orientation": 8,
"trapezoid_type": 0,
"upper_left_x": 9,
"upper_right_x": 11,
"lower_left_x": 0,
"lower_right_x": 20,
"height": 20
}
]
},
{
"type": "item",
"ref": "item-trap6.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 70,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap7.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 94,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap8.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 102,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap9.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 110,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap10.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 118,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap11.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 62,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap12.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 54,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap13.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 46,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap14.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 38,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"type": "item",
"ref": "item-trap15.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Trapezoid",
"x": 30,
"y": 48,
"orientation": 140,
"trapezoid_type": 0,
"upper_left_x": 0,
"upper_right_x": 3,
"lower_left_x": 0,
"lower_right_x": 3,
"height": 143
}
]
},
{
"ref": "item-teleport.%(region_ref)s",
"mods": [
{
"y": 128,
"x": 132,
"address": "Pop-popustop",
"type": "Teleport",
"orientation": 236
}
],
"type": "item",
"name": "Teleport",
"in": "context-%(region_ref)s"
}
]
================================================
FILE: astroturf/popustop/basement.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "Basement",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 6,
"type": "Wall",
"orientation": 220
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"ref": "item-ground.%(region_ref)s",
"mods": [
{
"y": 4,
"x": 0,
"style": 1,
"type": "Ground",
"orientation": 220
}
],
"type": "item",
"name": "Ground",
"in": "context-%(region_ref)s"
},
{
"ref": "item-pond.%(region_ref)s",
"mods": [
{
"y": 16,
"x": 12,
"type": "Pond",
"orientation": 112,
"gr_state": 1
}
],
"type": "item",
"name": "Pond",
"in": "context-%(region_ref)s"
}
]
================================================
FILE: astroturf/popustop/bboard.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(region_name)s",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"depth": 24,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 4,
"type": "Wall",
"orientation": 220
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"ref": "item-ground.%(region_ref)s",
"mods": [
{
"y": 4,
"x": 0,
"style": 1,
"type": "Ground",
"orientation": 104
}
],
"type": "item",
"name": "Ground",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-table1.%(region_ref)s",
"name": "Test Table",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Table",
"style": 3,
"x": 12,
"y": 27,
"orientation": 244,
"gr_state": 0,
"open_flags": 3,
"key_lo": 5,
"key_hi": 5
}
]
},
{
"type": "item",
"ref": "item-table2.%(region_ref)s",
"name": "Test Table",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Table",
"style": 3,
"x": 12,
"y": 28,
"orientation": 244,
"gr_state": 1,
"open_flags": 3,
"key_lo": 5,
"key_hi": 5
}
]
},
{
"type": "item",
"ref": "item-table3.%(region_ref)s",
"name": "Test Table",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Table",
"style": 3,
"x": 92,
"y": 27,
"orientation": 244,
"gr_state": 0,
"open_flags": 3,
"key_lo": 5,
"key_hi": 5
}
]
},
{
"type": "item",
"ref": "item-table4.%(region_ref)s",
"name": "Test Table",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Table",
"style": 3,
"x": 92,
"y": 28,
"orientation": 244,
"gr_state": 1,
"open_flags": 3,
"key_lo": 5,
"key_hi": 5
}
]
},
{
"ref": "item-sign.%(region_ref)s",
"mods": [
{
"style": 0,
"orientation": 0,
"text": "\h\(%(arg_1)s BBS",
"gr_state": 5,
"y": 122,
"x": 28,
"type": "Sign"
}
],
"type": "item",
"name": "Sign",
"in": "context-%(region_ref)s"
}
]
================================================
FILE: astroturf/popustop/elby.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_8)s",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 4,
"type": "Wall",
"orientation": %(arg_7)s
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"ref": "item-ground.%(region_ref)s",
"mods": [
{
"y": 4,
"x": 0,
"style": 1,
"type": "Ground",
"orientation": 56
}
],
"type": "item",
"name": "Ground",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 68,
"y": 33,
"orientation": 172,
"open_flags": 2,
"connection": "%(orientation_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 66,
"y": 123,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_3)s-%(arg_4)s\R \h} "
}
]
},
{
"type": "item",
"ref": "item-sign2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 126,
"y": 123,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_5)s-%(arg_6)s\R \h\177 "
}
]
},
{
"type": "item",
"ref": "item-sign3.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 0,
"y": 123,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_1)s-%(arg_2)s\R \h~ "
}
]
},
{
"ref": "item-street.%(region_ref)s",
"mods": [
{
"orientation": 148,
"type": "Street",
"gr_state": 13,
"y": 8,
"x": 68
}
],
"type": "item",
"name": "Street",
"in": "context-%(region_ref)s"
},
{
"ref": "item-short_sign.%(region_ref)s",
"mods": [
{
"orientation": 0,
"type": "Short_sign",
"gr_state": 5,
"y": 19,
"x": 64,
"ascii": [
133,
69,
120,
105,
116,
134,
32,
128,
125
]
}
],
"type": "item",
"name": "Short_sign",
"in": "context-%(region_ref)s"
},
{
"ref": "item-tree1.%(region_ref)s",
"mods": [
{
"y": 30,
"x": 24,
"type": "Tree",
"orientation": 0,
"style": 6
}
],
"type": "item",
"name": "Tree",
"in": "context-%(region_ref)s"
},
{
"ref": "item-tree2.%(region_ref)s",
"mods": [
{
"y": 30,
"x": 132,
"type": "Tree",
"orientation": 1,
"style": 6
}
],
"type": "item",
"name": "Tree",
"in": "context-%(region_ref)s"
},
{
"ref": "item-garbage_can.%(region_ref)s",
"mods": [
{
"orientation": 229,
"type": "Garbage_can",
"gr_state": 0,
"style": 1,
"x": 20,
"y": 129,
"open_flags": 3
}
],
"type": "item",
"name": "Garbage_can",
"in": "context-%(region_ref)s"
}
]
================================================
FILE: astroturf/popustop/elby1000.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_8)s",
"mods": [
{
"town_dir": "%(town_dir)s",
"port_dir": "%(port_dir)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 4,
"type": "Wall",
"orientation": %(arg_7)s
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"ref": "item-ground.%(region_ref)s",
"mods": [
{
"y": 4,
"x": 0,
"style": 1,
"type": "Ground",
"orientation": 56
}
],
"type": "item",
"name": "Ground",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 68,
"y": 33,
"orientation": 172,
"open_flags": 2,
"connection": "%(orientation_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign1.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 66,
"y": 123,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_3)s-%(arg_4)s\R \h} "
}
]
},
{
"type": "item",
"ref": "item-sign2.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 123,
"y": 123,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_5)s-%(arg_6)s\R \h\177 "
}
]
},
{
"type": "item",
"ref": "item-sign3.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Sign",
"x": 0,
"y": 123,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_1)s-%(arg_2)s\R \h~ "
}
]
},
{
"ref": "item-street.%(region_ref)s",
"mods": [
{
"orientation": 148,
"type": "Street",
"gr_state": 13,
"y": 8,
"x": 68
}
],
"type": "item",
"name": "Street",
"in": "context-%(region_ref)s"
},
{
"ref": "item-short_sign.%(region_ref)s",
"mods": [
{
"orientation": 0,
"type": "Short_sign",
"gr_state": 5,
"y": 19,
"x": 64,
"ascii": [
133,
69,
120,
105,
116,
134,
32,
128,
125
]
}
],
"type": "item",
"name": "Short_sign",
"in": "context-%(region_ref)s"
},
{
"ref": "item-tree1.%(region_ref)s",
"mods": [
{
"y": 30,
"x": 24,
"type": "Tree",
"orientation": 0,
"style": 6
}
],
"type": "item",
"name": "Tree",
"in": "context-%(region_ref)s"
},
{
"ref": "item-tree2.%(region_ref)s",
"mods": [
{
"y": 30,
"x": 132,
"type": "Tree",
"orientation": 1,
"style": 6
}
],
"type": "item",
"name": "Tree",
"in": "context-%(region_ref)s"
},
{
"ref": "item-garbage_can.%(region_ref)s",
"mods": [
{
"orientation": 229,
"type": "Garbage_can",
"gr_state": 0,
"style": 1,
"x": 20,
"y": 129,
"open_flags": 3
}
],
"type": "item",
"name": "Garbage_can",
"in": "context-%(region_ref)s"
}
]
================================================
FILE: astroturf/popustop/elevator1.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_3)s:%(arg_1)s",
"mods": [
{
"town_dir": "%(arg_4)s",
"port_dir": "%(arg_4)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 4,
"type": "Wall",
"orientation": %(arg_2)s
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"ref": "item-ground.%(region_ref)s",
"mods": [
{
"y": 4,
"x": 0,
"style": 1,
"type": "Ground",
"orientation": 56
}
],
"type": "item",
"name": "Ground",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-door.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 8,
"y": 33,
"orientation": 204,
"open_flags": 2,
"connection": "%(west_connection)s"
}
]
},
{
"ref": "item-short_sign.%(region_ref)s",
"mods": [
{
"orientation": 0,
"type": "Short_sign",
"gr_state": 1,
"y": 122,
"x": 76,
"text": "\h\+\(\(\(%(arg_1)s"
}
],
"type": "item",
"name": "Short_sign",
"in": "context-%(region_ref)s"
},
{
"ref": "item-street.%(region_ref)s",
"mods": [
{
"orientation": 204,
"type": "Street",
"gr_state": 6,
"y": 7,
"x": 68
}
],
"type": "item",
"name": "Street",
"in": "context-%(region_ref)s"
},
{
"ref": "item-short_sign2.%(region_ref)s",
"mods": [
{
"orientation": 0,
"type": "Short_sign",
"gr_state": 1,
"y": 112,
"x": 8,
"ascii": [
83,
116,
97,
105,
114,
115
]
}
],
"type": "item",
"name": "Short_sign",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-elevator.%(region_ref)s",
"name": "Elevator",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Elevator",
"x": 48,
"y": 34,
"gr_state": 2,
"orientation": 141,
"address": "%(arg_3)s-%(arg_1)s"
}
]
}
]
================================================
FILE: astroturf/popustop/hall1.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": " %(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/hall11000.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/hall2.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": " %(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/hall21000.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/hall3.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": " %(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/hall31000.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/hall4.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": " %(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/hall41000.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_5)s",
"mods": [
{
"town_dir": "%(arg_6)s",
"port_dir": "%(arg_6)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"type": "item",
"ref": "item-wall.%(region_ref)s",
"name": "Wall",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Wall",
"style": 4,
"x": 0,
"y": 0,
"orientation": %(arg_4)s
}
]
},
{
"type": "item",
"ref": "item-ground.%(region_ref)s",
"name": "Ground",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Ground",
"style": 1,
"x": 0,
"y": 4,
"orientation": 56
}
]
},
{
"type": "item",
"ref": "item-door0.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 4,
"y": 33,
"orientation": 140,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door0_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree1.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 44,
"y": 29,
"orientation": 112
}
]
},
{
"type": "item",
"ref": "item-door1.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 68,
"y": 33,
"orientation": 148,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door1_connection)s"
}
]
},
{
"type": "item",
"ref": "item-tree2.%(region_ref)s",
"name": "Tree",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Tree",
"style": 6,
"x": 116,
"y": 29,
"orientation": 33
}
]
},
{
"type": "item",
"ref": "item-door2.%(region_ref)s",
"name": "Door",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Door",
"style": 0,
"x": 132,
"y": 33,
"orientation": 156,
"gr_state": 0,
"open_flags": 2,
"connection": "%(door2_connection)s"
}
]
},
{
"type": "item",
"ref": "item-sign.%(region_ref)s",
"name": "Sign",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Sign",
"style": 0,
"x": 8,
"y": 90,
"orientation": 0,
"gr_state": 1,
"text": "%(arg_1)s %(arg_2)s %(arg_3)s"
}
]
},
{
"type": "item",
"ref": "item-street.%(region_ref)s",
"name": "Street",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Street",
"style": 0,
"x": 68,
"y": 8,
"orientation": 144,
"gr_state": 6
}
]
}
]
================================================
FILE: astroturf/popustop/lobby.json
================================================
[
{
"ref": "context-%(region_ref)s",
"capacity": 64,
"type": "context",
"name": "%(arg_3)s:%(arg_1)s",
"mods": [
{
"town_dir": "%(arg_4)s",
"port_dir": "%(arg_4)s",
"depth": 29,
"type": "Region",
"orientation": %(orientation)s,
"neighbors": [
"%(north_connection)s",
"%(east_connection)s",
"%(south_connection)s",
"%(west_connection)s"
],
"realm": "Popustop",
"nitty_bits": %(nitty_bits)s
}
]
},
{
"ref": "item-wall.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 0,
"style": 4,
"type": "Wall",
"orientation": %(arg_2)s
}
],
"type": "item",
"name": "Wall",
"in": "context-%(region_ref)s"
},
{
"ref": "item-ground.%(region_ref)s",
"mods": [
{
"y": 4,
"x": 0,
"style": 1,
"type": "Ground",
"orientation": 56
}
],
"type": "item",
"name": "Ground",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-door.%(region_ref)s",
"in": "context-%(region_ref)s",
"name": ".",
"mods": [
{
"type": "Door",
"x": 8,
"y": 33,
"orientation": 204,
"open_flags": 2,
"connection": "%(west_connection)s"
}
]
},
{
"ref": "item-short_sign.%(region_ref)s",
"mods": [
{
"orientation": 0,
"type": "Short_sign",
"gr_state": 1,
"y": 122,
"x": 76,
"ascii": [
133,
129,
131,
131,
131,
76,
111,
98,
98,
121
]
}
],
"type": "item",
"name": "Short_sign",
"in": "context-%(region_ref)s"
},
{
"ref": "item-street.%(region_ref)s",
"mods": [
{
"orientation": 204,
"type": "Street",
"gr_state": 8,
"y": 7,
"x": 68
}
],
"type": "item",
"name": "Street",
"in": "context-%(region_ref)s"
},
{
"ref": "item-short_sign2.%(region_ref)s",
"mods": [
{
"orientation": 0,
"type": "Short_sign",
"gr_state": 1,
"y": 112,
"x": 8,
"ascii": [
83,
116,
97,
105,
114,
115
]
}
],
"type": "item",
"name": "Short_sign",
"in": "context-%(region_ref)s"
},
{
"ref": "item-vendo_front.%(region_ref)s",
"mods": [
{
"y": 0,
"x": 108,
"style": 1,
"type": "Vendo_front",
"orientation": 144
}
],
"type": "item",
"name": "Vendo_front",
"in": "item-vendo_inside.%(region_ref)s"
},
{
"ref": "item-vendo_inside.%(region_ref)s",
"mods": [
{
"y": 27,
"x": 108,
"style": 1,
"type": "Vendo_inside",
"orientation": 144
}
],
"type": "item",
"name": "Vendo_inside",
"in": "context-%(region_ref)s"
},
{
"ref": "item-short_sign3.%(region_ref)s",
"mods": [
{
"orientation": 0,
"type": "Short_sign",
"gr_state": 5,
"y": 21,
"x": 72,
"ascii": [
133,
69,
88,
73,
84,
134,
128,
128,
128,
125
]
}
],
"type": "item",
"name": "Short_sign",
"in": "context-%(region_ref)s"
},
{
"type": "item",
"ref": "item-elevator.%(region_ref)s",
"name": "Elevator",
"in": "context-%(region_ref)s",
"mods": [
{
"type": "Elevator",
"x": 48,
"y": 34,
"gr_state": 2,
"orientation": 141,
"address": "%(arg_3)s-%(arg_1)s"
}
]
}
]
================================================
FILE: astroturf/popustop/popustop.i
================================================
1106
basement r=0 w=0 n=2 e=0 s=0 /
stairs r=0 w=0 n=21 e=3 s=1 /"Lobby" 136 "Popustop" "}"
lobby r=0 w=2 n=4 e=1106 s=0 /"Lobby" 136 "Popustop" "}"
bboard r=0 w=0 n=0 e=0 s=3 /"Popustop"
turf8 r=1 w=0 n=8 e=0 s=0 /"Popustop" 124
turf3 r=1 w=0 n=8 e=0 s=0 /"Popustop" 125
turf1 r=1 w=0 n=8 e=0 s=0 /"Popustop" 126
hall1 r=3 w=12 n=0 e=54 s=(5 6 7) /124 125 126 136 "Popustop" "~"
turf10 r=1 w=0 n=12 e=0 s=0 /"Popustop" 127
turf9 r=1 w=0 n=12 e=0 s=0 /"Popustop" 128
turf4 r=1 w=0 n=12 e=0 s=0 /"Popustop" 129
hall2 r=3 w=16 n=0 e=8 s=(9 10 11) /127 128 129 136 "Popustop" "~"
turf1 r=1 w=0 n=16 e=0 s=0 /"Popustop" 130
turf4 r=1 w=0 n=16 e=0 s=0 /"Popustop" 131
turf9 r=1 w=0 n=16 e=0 s=0 /"Popustop" 132
hall3 r=3 w=20 n=0 e=12 s=(13 14 15) /130 131 132 136 "Popustop" "~"
turf8 r=1 w=0 n=20 e=0 s=0 /"Popustop" 133
turf4 r=1 w=0 n=20 e=0 s=0 /"Popustop" 134
turf6 r=1 w=0 n=20 e=0 s=0 /"Popustop" 135
hall4 r=3 w=0 n=0 e=16 s=(17 18 19) /133 134 135 136 "Popustop" "~"
stairs r=0 w=0 n=121 e=55 s=2 /1 136 "Popustop" "~"
turf9 r=3 w=0 n=0 e=0 s=25 /"Popustop" 136
turf7 r=3 w=0 n=0 e=0 s=25 /"Popustop" 137
turf8 r=3 w=0 n=0 e=0 s=25 /"Popustop" 138
hall1 r=1 w=0 n=(22 23 24) e=29 s=0 /136 137 138 136 "Popustop" "\177"
turf8 r=3 w=0 n=0 e=0 s=29 /"Popustop" 139
turf8 r=3 w=0 n=0 e=0 s=29 /"Popustop" 140
turf2 r=3 w=0 n=0 e=0 s=29 /"Popustop" 141
hall2 r=1 w=25 n=(26 27 28) e=33 s=0 /139 140 141 136 "Popustop" "\177"
turf1 r=3 w=0 n=0 e=0 s=33 /"Popustop" 142
turf9 r=3 w=0 n=0 e=0 s=33 /"Popustop" 143
turf2 r=3 w=0 n=0 e=0 s=33 /"Popustop" 144
hall3 r=1 w=29 n=(30 31 32) e=37 s=0 /142 143 144 136 "Popustop" "\177"
turf9 r=3 w=0 n=0 e=0 s=37 /"Popustop" 145
turf7 r=3 w=0 n=0 e=0 s=37 /"Popustop" 146
turf3 r=3 w=0 n=0 e=0 s=37 /"Popustop" 147
hall4 r=1 w=33 n=(34 35 36) e=56 s=0 /145 146 147 136 "Popustop" "\177"
turf4 r=2 w=0 n=0 e=41 s=0 /"Popustop" 112
turf9 r=2 w=0 n=0 e=41 s=0 /"Popustop" 113
turf5 r=2 w=0 n=0 e=41 s=0 /"Popustop" 114
hall1 r=0 w=(38 39 40) n=45 e=0 s=0 /112 113 114 136 "Popustop" "\177"
turf9 r=2 w=0 n=0 e=45 s=0 /"Popustop" 115
turf6 r=2 w=0 n=0 e=45 s=0 /"Popustop" 116
turf10 r=2 w=0 n=0 e=45 s=0 /"Popustop" 117
hall2 r=0 w=(42 43 44) n=49 e=0 s=41 /115 116 117 136 "Popustop" "\177"
turf6 r=2 w=0 n=0 e=49 s=0 /"Popustop" 118
turf6 r=2 w=0 n=0 e=49 s=0 /"Popustop" 119
turf2 r=2 w=0 n=0 e=49 s=0 /"Popustop" 120
hall3 r=0 w=(46 47 48) n=53 e=0 s=45 /118 119 120 136 "Popustop" "\177"
turf2 r=2 w=0 n=0 e=53 s=0 /"Popustop" 121
turf8 r=2 w=0 n=0 e=53 s=0 /"Popustop" 122
turf1 r=2 w=0 n=0 e=53 s=0 /"Popustop" 123
hall4 r=0 w=(50 51 52) n=54 e=0 s=49 /121 122 123 136 "Popustop" "\177"
elby r=3 w=8 n=55 e=88 s=53 /100 111 112 123 124 135 136 "Popustop"
elevator1 r=0 w=21 n=56 e=0 s=54 /1 136 "Popustop" "|"
elby r=1 w=37 n=60 e=92 s=55 /136 147 148 159 160 171 136 "Popustop"
turf5 r=2 w=0 n=0 e=60 s=0 /"Popustop" 148
turf5 r=2 w=0 n=0 e=60 s=0 /"Popustop" 149
turf1 r=2 w=0 n=0 e=60 s=0 /"Popustop" 150
hall1 r=0 w=(57 58 59) n=64 e=0 s=56 /148 149 150 136 "Popustop" "~"
turf8 r=2 w=0 n=0 e=64 s=0 /"Popustop" 151
turf3 r=2 w=0 n=0 e=64 s=0 /"Popustop" 152
turf9 r=2 w=0 n=0 e=64 s=0 /"Popustop" 153
hall2 r=0 w=(61 62 63) n=68 e=0 s=60 /151 152 153 136 "Popustop" "~"
turf10 r=2 w=0 n=0 e=68 s=0 /"Popustop" 154
turf6 r=2 w=0 n=0 e=68 s=0 /"Popustop" 155
turf5 r=2 w=0 n=0 e=68 s=0 /"Popustop" 156
hall3 r=0 w=(65 66 67) n=72 e=0 s=64 /154 155 156 136 "Popustop" "~"
turf6 r=2 w=0 n=0 e=72 s=0 /"Popustop" 157
turf4 r=2 w=0 n=0 e=72 s=0 /"Popustop" 158
turf1 r=2 w=0 n=0 e=72 s=0 /"Popustop" 159
hall4 r=0 w=(69 70 71) n=0 e=0 s=68 /157 158 159 136 "Popustop" "~"
turf3 r=1 w=0 n=76 e=0 s=0 /"Popustop" 100
turf6 r=1 w=0 n=76 e=0 s=0 /"Popustop" 101
turf1 r=1 w=0 n=76 e=0 s=0 /"Popustop" 102
hall1 r=3 w=80 n=0 e=0 s=(73 74 75) /100 101 102 136 "Popustop" "\177"
turf9 r=1 w=0 n=80 e=0 s=0 /"Popustop" 103
turf5 r=1 w=0 n=80 e=0 s=0 /"Popustop" 104
turf9 r=1 w=0 n=80 e=0 s=0 /"Popustop" 105
hall2 r=3 w=84 n=0 e=76 s=(77 78 79) /103 104 105 136 "Popustop" "\177"
turf3 r=1 w=0 n=84 e=0 s=0 /"Popustop" 106
turf7 r=1 w=0 n=84 e=0 s=0 /"Popustop" 107
turf3 r=1 w=0 n=84 e=0 s=0 /"Popustop" 108
hall3 r=3 w=88 n=0 e=80 s=(81 82 83) /106 107 108 136 "Popustop" "\177"
turf2 r=1 w=0 n=88 e=0 s=0 /"Popustop" 109
turf2 r=1 w=0 n=88 e=0 s=0 /"Popustop" 110
turf9 r=1 w=0 n=88 e=0 s=0 /"Popustop" 111
hall4 r=3 w=54 n=0 e=84 s=(85 86 87) /109 110 111 136 "Popustop" "\177"
turf7 r=3 w=0 n=0 e=0 s=92 /"Popustop" 160
turf9 r=3 w=0 n=0 e=0 s=92 /"Popustop" 161
turf5 r=3 w=0 n=0 e=0 s=92 /"Popustop" 162
hall1 r=1 w=56 n=(89 90 91) e=96 s=0 /160 161 162 136 "Popustop" "~"
turf10 r=3 w=0 n=0 e=0 s=96 /"Popustop" 163
turf1 r=3 w=0 n=0 e=0 s=96 /"Popustop" 164
turf6 r=3 w=0 n=0 e=0 s=96 /"Popustop" 165
hall2 r=1 w=92 n=(93 94 95) e=100 s=0 /163 164 165 136 "Popustop" "~"
turf8 r=3 w=0 n=0 e=0 s=100 /"Popustop" 166
turf2 r=3 w=0 n=0 e=0 s=100 /"Popustop" 167
turf5 r=3 w=0 n=0 e=0 s=100 /"Popustop" 168
hall3 r=1 w=96 n=(97 98 99) e=104 s=0 /166 167 168 136 "Popustop" "~"
turf10 r=3 w=0 n=0 e=0 s=104 /"Popustop" 169
turf4 r=3 w=0 n=0 e=0 s=104 /"Popustop" 170
turf5 r=3 w=0 n=0 e=0 s=104 /"Popustop" 171
hall4 r=1 w=100 n=(101 102 103) e=0 s=0 /169 170 171 136 "Popustop" "~"
turf7 r=1 w=0 n=108 e=0 s=0 /"Popustop" 224
turf4 r=1 w=0 n=108 e=0 s=0 /"Popustop" 225
turf1 r=1 w=0 n=108 e=0 s=0 /"Popustop" 226
hall1 r=3 w=112 n=0 e=154 s=(105 106 107) /224 225 226 144 "Popustop" "~"
turf4 r=1 w=0 n=112 e=0 s=0 /"Popustop" 227
turf10 r=1 w=0 n=112 e=0 s=0 /"Popustop" 228
turf4 r=1 w=0 n=112 e=0 s=0 /"Popustop" 229
hall2 r=3 w=116 n=0 e=108 s=(109 110 111) /227 228 229 144 "Popustop" "~"
turf10 r=1 w=0 n=116 e=0 s=0 /"Popustop" 230
turf2 r=1 w=0 n=116 e=0 s=0 /"Popustop" 231
turf4 r=1 w=0 n=116 e=0 s=0 /"Popustop" 232
hall3 r=3 w=120 n=0 e=112 s=(113 114 115) /230 231 232 144 "Popustop" "~"
turf10 r=1 w=0 n=120 e=0 s=0 /"Popustop" 233
turf5 r=1 w=0 n=120 e=0 s=0 /"Popustop" 234
turf5 r=1 w=0 n=120 e=0 s=0 /"Popustop" 235
hall4 r=3 w=0 n=0 e=116 s=(117 118 119) /233 234 235 144 "Popustop" "~"
stairs r=0 w=0 n=221 e=155 s=21 /2 144 "Popustop" "~"
turf7 r=3 w=0 n=0 e=0 s=125 /"Popustop" 236
turf9 r=3 w=0 n=0 e=0 s=125 /"Popustop" 237
turf1 r=3 w=0 n=0 e=0 s=125 /"Popustop" 238
hall1 r=1 w=0 n=(122 123 124) e=129 s=0 /236 237 238 144 "Popustop" "\177"
turf10 r=3 w=0 n=0 e=0 s=129 /"Popustop" 239
turf6 r=3 w=0 n=0 e=0 s=129 /"Popustop" 240
turf3 r=3 w=0 n=0 e=0 s=129 /"Popustop" 241
hall2 r=1 w=125 n=(126 127 128) e=133 s=0 /239 240 241 144 "Popustop" "\177"
turf9 r=3 w=0 n=0 e=0 s=133 /"Popustop" 242
turf5 r=3 w=0 n=0 e=0 s=133 /"Popustop" 243
turf2 r=3 w=0 n=0 e=0 s=133 /"Popustop" 244
hall3 r=1 w=129 n=(130 131 132) e=137 s=0 /242 243 244 144 "Popustop" "\177"
turf4 r=3 w=0 n=0 e=0 s=137 /"Popustop" 245
turf4 r=3 w=0 n=0 e=0 s=137 /"Popustop" 246
turf4 r=3 w=0 n=0 e=0 s=137 /"Popustop" 247
hall4 r=1 w=133 n=(134 135 136) e=156 s=0 /245 246 247 144 "Popustop" "\177"
turf3 r=2 w=0 n=0 e=141 s=0 /"Popustop" 212
turf3 r=2 w=0 n=0 e=141 s=0 /"Popustop" 213
turf8 r=2 w=0 n=0 e=141 s=0 /"Popustop" 214
hall1 r=0 w=(138 139 140) n=145 e=0 s=0 /212 213 214 144 "Popustop" "\177"
turf9 r=2 w=0 n=0 e=145 s=0 /"Popustop" 215
turf2 r=2 w=0 n=0 e=145 s=0 /"Popustop" 216
turf2 r=2 w=0 n=0 e=145 s=0 /"Popustop" 217
hall2 r=0 w=(142 143 144) n=149 e=0 s=141 /215 216 217 144 "Popustop" "\177"
turf8 r=2 w=0 n=0 e=149 s=0 /"Popustop" 218
turf5 r=2 w=0 n=0 e=149 s=0 /"Popustop" 219
turf5 r=2 w=0 n=0 e=149 s=0 /"Popustop" 220
hall3 r=0 w=(146 147 148) n=153 e=0 s=145 /218 219 220 144 "Popustop" "\177"
turf4 r=2 w=0 n=0 e=153 s=0 /"Popustop" 221
turf7 r=2 w=0 n=0 e=153 s=0 /"Popustop" 222
turf3 r=2 w=0 n=0 e=153 s=0 /"Popustop" 223
hall4 r=0 w=(150 151 152) n=154 e=0 s=149 /221 222 223 144 "Popustop" "\177"
elby r=3 w=108 n=155 e=188 s=153 /200 211 212 223 224 235 144 "Popustop"
elevator1 r=0 w=121 n=156 e=0 s=154 /2 144 "Popustop" "|"
elby r=1 w=137 n=160 e=192 s=155 /236 247 248 259 260 271 144 "Popustop"
turf4 r=2 w=0 n=0 e=160 s=0 /"Popustop" 248
turf5 r=2 w=0 n=0 e=160 s=0 /"Popustop" 249
turf5 r=2 w=0 n=0 e=160 s=0 /"Popustop" 250
hall1 r=0 w=(157 158 159) n=164 e=0 s=156 /248 249 250 144 "Popustop" "~"
turf5 r=2 w=0 n=0 e=164 s=0 /"Popustop" 251
turf8 r=2 w=0 n=0 e=164 s=0 /"Popustop" 252
turf3 r=2 w=0 n=0 e=164 s=0 /"Popustop" 253
hall2 r=0 w=(161 162 163) n=168 e=0 s=160 /251 252 253 144 "Popustop" "~"
turf9 r=2 w=0 n=0 e=168 s=0 /"Popustop" 254
turf10 r=2 w=0 n=0 e=168 s=0 /"Popustop" 255
turf9 r=2 w=0 n=0 e=168 s=0 /"Popustop" 256
hall3 r=0 w=(165 166 167) n=172 e=0 s=164 /254 255 256 144 "Popustop" "~"
turf6 r=2 w=0 n=0 e=172 s=0 /"Popustop" 257
turf1 r=2 w=0 n=0 e=172 s=0 /"Popustop" 258
turf6 r=2 w=0 n=0 e=172 s=0 /"Popustop" 259
hall4 r=0 w=(169 170 171) n=0 e=0 s=168 /257 258 259 144 "Popustop" "~"
turf1 r=1 w=0 n=176 e=0 s=0 /"Popustop" 200
turf2 r=1 w=0 n=176 e=0 s=0 /"Popustop" 201
turf3 r=1 w=0 n=176 e=0 s=0 /"Popustop" 202
hall1 r=3 w=180 n=0 e=0 s=(173 174 175) /200 201 202 144 "Popustop" "\177"
turf4 r=1 w=0 n=180 e=0 s=0 /"Popustop" 203
turf3 r=1 w=0 n=180 e=0 s=0 /"Popustop" 204
turf6 r=1 w=0 n=180 e=0 s=0 /"Popustop" 205
hall2 r=3 w=184 n=0 e=176 s=(177 178 179) /203 204 205 144 "Popustop" "\177"
turf7 r=1 w=0 n=184 e=0 s=0 /"Popustop" 206
turf5 r=1 w=0 n=184 e=0 s=0 /"Popustop" 207
turf9 r=1 w=0 n=184 e=0 s=0 /"Popustop" 208
hall3 r=3 w=188 n=0 e=180 s=(181 182 183) /206 207 208 144 "Popustop" "\177"
turf7 r=1 w=0 n=188 e=0 s=0 /"Popustop" 209
turf3 r=1 w=0 n=188 e=0 s=0 /"Popustop" 210
turf7 r=1 w=0 n=188 e=0 s=0 /"Popustop" 211
hall4 r=3 w=154 n=0 e=184 s=(185 186 187) /209 210 211 144 "Popustop" "\177"
turf9 r=3 w=0 n=0 e=0 s=192 /"Popustop" 260
turf2 r=3 w=0 n=0 e=0 s=192 /"Popustop" 261
turf2 r=3 w=0 n=0 e=0 s=192 /"Popustop" 262
hall1 r=1 w=156 n=(189 190 191) e=196 s=0 /260 261 262 144 "Popustop" "~"
turf2 r=3 w=0 n=0 e=0 s=196 /"Popustop" 263
turf6 r=3 w=0 n=0 e=0 s=196 /"Popustop" 264
turf4 r=3 w=0 n=0 e=0 s=196 /"Popustop" 265
hall2 r=1 w=192 n=(193 194 195) e=200 s=0 /263 264 265 144 "Popustop" "~"
turf6 r=3 w=0 n=0 e=0 s=200 /"Popustop" 266
turf7 r=3 w=0 n=0 e=0 s=200 /"Popustop" 267
turf9 r=3 w=0 n=0 e=0 s=200 /"Popustop" 268
hall3 r=1 w=196 n=(197 198 199) e=204 s=0 /266 267 268 144 "Popustop" "~"
turf10 r=3 w=0 n=0 e=0 s=204 /"Popustop" 269
turf1 r=3 w=0 n=0 e=0 s=204 /"Popustop" 270
turf2 r=3 w=0 n=0 e=0 s=204 /"Popustop" 271
hall4 r=1 w=200 n=(201 202 203) e=0 s=0 /269 270 271 144 "Popustop" "~"
turf4 r=1 w=0 n=208 e=0 s=0 /"Popustop" 324
turf7 r=1 w=0 n=208 e=0 s=0 /"Popustop" 325
turf4 r=1 w=0 n=208 e=0 s=0 /"Popustop" 326
hall1 r=3 w=212 n=0 e=254 s=(205 206 207) /324 325 326 152 "Popustop" "~"
turf1 r=1 w=0 n=212 e=0 s=0 /"Popustop" 327
turf6 r=1 w=0 n=212 e=0 s=0 /"Popustop" 328
turf10 r=1 w=0 n=212 e=0 s=0 /"Popustop" 329
hall2 r=3 w=216 n=0 e=208 s=(209 210 211) /327 328 329 152 "Popustop" "~"
turf6 r=1 w=0 n=216 e=0 s=0 /"Popustop" 330
turf5 r=1 w=0 n=216 e=0 s=0 /"Popustop" 331
turf4 r=1 w=0 n=216 e=0 s=0 /"Popustop" 332
hall3 r=3 w=220 n=0 e=212 s=(213 214 215) /330 331 332 152 "Popustop" "~"
turf4 r=1 w=0 n=220 e=0 s=0 /"Popustop" 333
turf6 r=1 w=0 n=220 e=0 s=0 /"Popustop" 334
turf7 r=1 w=0 n=220 e=0 s=0 /"Popustop" 335
hall4 r=3 w=0 n=0 e=216 s=(217 218 219) /333 334 335 152 "Popustop" "~"
stairs r=0 w=0 n=321 e=255 s=121 /3 152 "Popustop" "~"
turf8 r=3 w=0 n=0 e=0 s=225 /"Popustop" 336
turf6 r=3 w=0 n=0 e=0 s=225 /"Popustop" 337
turf2 r=3 w=0 n=0 e=0 s=225 /"Popustop" 338
hall1 r=1 w=0 n=(222 223 224) e=229 s=0 /336 337 338 152 "Popustop" "\177"
turf2 r=3 w=0 n=0 e=0 s=229 /"Popustop" 339
turf9 r=3 w=0 n=0 e=0 s=229 /"Popustop" 340
turf8 r=3 w=0 n=0 e=0 s=229 /"Popustop" 341
hall2 r=1 w=225 n=(226 227 228) e=233 s=0 /339 340 341 152 "Popustop" "\177"
turf9 r=3 w=0 n=0 e=0 s=233 /"Popustop" 342
turf1 r=3 w=0 n=0 e=0 s=233 /"Popustop" 343
turf3 r=3 w=0 n=0 e=0 s=233 /"Popustop" 344
hall3 r=1 w=229 n=(230 231 232) e=237 s=0 /342 343 344 152 "Popustop" "\177"
turf6 r=3 w=0 n=0 e=0 s=237 /"Popustop" 345
turf10 r=3 w=0 n=0 e=0 s=237 /"Popustop" 346
turf4 r=3 w=0 n=0 e=0 s=237 /"Popustop" 347
hall4 r=1 w=233 n=(234 235 236) e=256 s=0 /345 346 347 152 "Popustop" "\177"
turf7 r=2 w=0 n=0 e=241 s=0 /"Popustop" 312
turf4 r=2 w=0 n=0 e=241 s=0 /"Popustop" 313
turf7 r=2 w=0 n=0 e=241 s=0 /"Popustop" 314
hall1 r=0 w=(238 239 240) n=245 e=0 s=0 /312 313 314 152 "Popustop" "\177"
turf2 r=2 w=0 n=0 e=245 s=0 /"Popustop" 315
turf10 r=2 w=0 n=0 e=245 s=0 /"Popustop" 316
turf6 r=2 w=0 n=0 e=245 s=0 /"Popustop" 317
hall2 r=0 w=(242 243 244) n=249 e=0 s=241 /315 316 317 152 "Popustop" "\177"
turf9 r=2 w=0 n=0 e=249 s=0 /"Popustop" 318
turf10 r=2 w=0 n=0 e=249 s=0 /"Popustop" 319
turf5 r=2 w=0 n=0 e=249 s=0 /"Popustop" 320
hall3 r=0 w=(246 247 248) n=253 e=0 s=245 /318 319 320 152 "Popustop" "\177"
turf1 r=2 w=0 n=0 e=253 s=0 /"Popustop" 321
turf6 r=2 w=0 n=0 e=253 s=0 /"Popustop" 322
turf8 r=2 w=0 n=0 e=253 s=0 /"Popustop" 323
hall4 r=0 w=(250 251 252) n=254 e=0 s=249 /321 322 323 152 "Popustop" "\177"
elby r=3 w=208 n=255 e=288 s=253 /300 311 312 323 324 335 152 "Popustop"
elevator1 r=0 w=221 n=256 e=0 s=254 /3 152 "Popustop" "|"
elby r=1 w=237 n=260 e=292 s=255 /336 347 348 359 360 371 152 "Popustop"
turf10 r=2 w=0 n=0 e=260 s=0 /"Popustop" 348
turf6 r=2 w=0 n=0 e=260 s=0 /"Popustop" 349
turf4 r=2 w=0 n=0 e=260 s=0 /"Popustop" 350
hall1 r=0 w=(257 258 259) n=264 e=0 s=256 /348 349 350 152 "Popustop" "~"
turf2 r=2 w=0 n=0 e=264 s=0 /"Popustop" 351
turf7 r=2 w=0 n=0 e=264 s=0 /"Popustop" 352
turf6 r=2 w=0 n=0 e=264 s=0 /"Popustop" 353
hall2 r=0 w=(261 262 263) n=268 e=0 s=260 /351 352 353 152 "Popustop" "~"
turf7 r=2 w=0 n=0 e=268 s=0 /"Popustop" 354
turf3 r=2 w=0 n=0 e=268 s=0 /"Popustop" 355
turf3 r=2 w=0 n=0 e=268 s=0 /"Popustop" 356
hall3 r=0 w=(265 266 267) n=272 e=0 s=264 /354 355 356 152 "Popustop" "~"
turf1 r=2 w=0 n=0 e=272 s=0 /"Popustop" 357
turf3 r=2 w=0 n=0 e=272 s=0 /"Popustop" 358
turf3 r=2 w=0 n=0 e=272 s=0 /"Popustop" 359
hall4 r=0 w=(269 270 271) n=0 e=0 s=268 /357 358 359 152 "Popustop" "~"
turf9 r=1 w=0 n=276 e=0 s=0 /"Popustop" 300
turf1 r=1 w=0 n=276 e=0 s=0 /"Popustop" 301
turf2 r=1 w=0 n=276 e=0 s=0 /"Popustop" 302
hall1 r=3 w=280 n=0 e=0 s=(273 274 275) /300 301 302 152 "Popustop" "\177"
turf7 r=1 w=0 n=280 e=0 s=0 /"Popustop" 303
turf3 r=1 w=0 n=280 e=0 s=0 /"Popustop" 304
turf7 r=1 w=0 n=280 e=0 s=0 /"Popustop" 305
hall2 r=3 w=284 n=0 e=276 s=(277 278 279) /303 304 305 152 "Popustop" "\177"
turf7 r=1 w=0 n=284 e=0 s=0 /"Popustop" 306
turf4 r=1 w=0 n=284 e=0 s=0 /"Popustop" 307
turf2 r=1 w=0 n=284 e=0 s=0 /"Popustop" 308
hall3 r=3 w=288 n=0 e=280 s=(281 282 283) /306 307 308 152 "Popustop" "\177"
turf10 r=1 w=0 n=288 e=0 s=0 /"Popustop" 309
turf9 r=1 w=0 n=288 e=0 s=0 /"Popustop" 310
turf1 r=1 w=0 n=288 e=0 s=0 /"Popustop" 311
hall4 r=3 w=254 n=0 e=284 s=(285 286 287) /309 310 311 152 "Popustop" "\177"
turf8 r=3 w=0 n=0 e=0 s=292 /"Popustop" 360
turf4 r=3 w=0 n=0 e=0 s=292 /"Popustop" 361
turf10 r=3 w=0 n=0 e=0 s=292 /"Popustop" 362
hall1 r=1 w=256 n=(289 290 291) e=296 s=0 /360 361 362 152 "Popustop" "~"
turf8 r=3 w=0 n=0 e=0 s=296 /"Popustop" 363
turf9 r=3 w=0 n=0 e=0 s=296 /"Popustop" 364
turf1 r=3 w=0 n=0 e=0 s=296 /"Popustop" 365
hall2 r=1 w=292 n=(293 294 295) e=300 s=0 /363 364 365 152 "Popustop" "~"
turf2 r=3 w=0 n=0 e=0 s=300 /"Popustop" 366
turf4 r=3 w=0 n=0 e=0 s=300 /"Popustop" 367
turf9 r=3 w=0 n=0 e=0 s=300 /"Popustop" 368
hall3 r=1 w=296 n=(297 298 299) e=304 s=0 /366 367 368 152 "Popustop" "~"
turf9 r=3 w=0 n=0 e=0 s=304 /"Popustop" 369
turf7 r=3 w=0 n=0 e=0 s=304 /"Popustop" 370
turf1 r=3 w=0 n=0 e=0 s=304 /"Popustop" 371
hall4 r=1 w=300 n=(301 302 303) e=0 s=0 /369 370 371 152 "Popustop" "~"
turf1 r=1 w=0 n=308 e=0 s=0 /"Popustop" 424
turf4 r=1 w=0 n=308 e=0 s=0 /"Popustop" 425
turf7 r=1 w=0 n=308 e=0 s=0 /"Popustop" 426
hall1 r=3 w=312 n=0 e=354 s=(305 306 307) /424 425 426 160 "Popustop" "~"
turf5 r=1 w=0 n=312 e=0 s=0 /"Popustop" 427
turf5 r=1 w=0 n=312 e=0 s=0 /"Popustop" 428
turf10 r=1 w=0 n=312 e=0 s=0 /"Popustop" 429
hall2 r=3 w=316 n=0 e=308 s=(309 310 311) /427 428 429 160 "Popustop" "~"
turf4 r=1 w=0 n=316 e=0 s=0 /"Popustop" 430
turf8 r=1 w=0 n=316 e=0 s=0 /"Popustop" 431
turf2 r=1 w=0 n=316 e=0 s=0 /"Popustop" 432
hall3 r=3 w=320 n=0 e=312 s=(313 314 315) /430 431 432 160 "Popustop" "~"
turf2 r=1 w=0 n=320 e=0 s=0 /"Popustop" 433
turf6 r=1 w=0 n=320 e=0 s=0 /"Popustop" 434
turf2 r=1 w=0 n=320 e=0 s=0 /"Popustop" 435
hall4 r=3 w=0 n=0 e=316 s=(317 318 319) /433 434 435 160 "Popustop" "~"
stairs r=0 w=0 n=421 e=355 s=221 /4 160 "Popustop" "~"
turf7 r=3 w=0 n=0 e=0 s=325 /"Popustop" 436
turf6 r=3 w=0 n=0 e=0 s=325 /"Popustop" 437
turf7 r=3 w=0 n=0 e=0 s=325 /"Popustop" 438
hall1 r=1 w=0 n=(322 323 324) e=329 s=0 /436 437 438 160 "Popustop" "\177"
turf4 r=3 w=0 n=0 e=0 s=329 /"Popustop" 439
turf9 r=3 w=0 n=0 e=0 s=329 /"Popustop" 440
turf6 r=3 w=0 n=0 e=0 s=329 /"Popustop" 441
hall2 r=1 w=325 n=(326 327 328) e=333 s=0 /439 440 441 160 "Popustop" "\177"
turf2 r=3 w=0 n=0 e=0 s=333 /"Popustop" 442
turf8 r=3 w=0 n=0 e=0 s=333 /"Popustop" 443
turf6 r=3 w=0 n=0 e=0 s=333 /"Popustop" 444
hall3 r=1 w=329 n=(330 331 332) e=337 s=0 /442 443 444 160 "Popustop" "\177"
turf9 r=3 w=0 n=0 e=0 s=337 /"Popustop" 445
turf10 r=3 w=0 n=0 e=0 s=337 /"Popustop" 446
turf4 r=3 w=0 n=0 e=0 s=337 /"Popustop" 447
hall4 r=1 w=333 n=(334 335 336) e=356 s=0 /445 446 447 160 "Popustop" "\177"
turf4 r=2 w=0 n=0 e=341 s=0 /"Popustop" 412
turf6 r=2 w=0 n=0 e=341 s=0 /"Popustop" 413
turf2 r=2 w=0 n=0 e=341 s=0 /"Popustop" 414
hall1 r=0 w=(338 339 340) n=345 e=0 s=0 /412 413 414 160 "Popustop" "\177"
turf3 r=2 w=0 n=0 e=345 s=0 /"Popustop" 415
turf7 r=2 w=0 n=0 e=345 s=0 /"Popustop" 416
turf1 r=2 w=0 n=0 e=345 s=0 /"Popustop" 417
hall2 r=0 w=(342 343 344) n=349 e=0 s=341 /415 416 417 160 "Popustop" "\177"
turf2 r=2 w=0 n=0 e=349 s=0 /"Popustop" 418
turf4 r=2 w=0 n=0 e=349 s=0 /"Popustop" 419
turf1 r=2 w=0 n=0 e=349 s=0 /"Popustop" 420
hall3 r=0 w=(346 347 348) n=353 e=0 s=345 /418 419 420 160 "Popustop" "\177"
turf10 r=2 w=0 n=0 e=353 s=0 /"Popustop" 421
turf6 r=2 w=0 n=0 e=353 s=0 /"Popustop" 422
turf6 r=2 w=0 n=0 e=353 s=0 /"Popustop" 423
hall4 r=0 w=(350 351 352) n=354 e=0 s=349 /421 422 423 160 "Popustop" "\177"
elby r=3 w=308 n=355 e=388 s=353 /400 411 412 423 424 435 160 "Popustop"
elevator1 r=0 w=321 n=356 e=0 s=354 /4 160 "Popustop" "|"
elby r=1 w=337 n=360 e=392 s=355 /436 447 448 459 460 471 160 "Popustop"
turf1 r=2 w=0 n=0 e=360 s=0 /"Popustop" 448
turf5 r=2 w=0 n=0 e=360 s=0 /"Popustop" 449
turf6 r=2 w=0 n=0 e=360 s=0 /"Popustop" 450
hall1 r=0 w=(357 358 359) n=364 e=0 s=356 /448 449 450 160 "Popustop" "~"
turf6 r=2 w=0 n=0 e=364 s=0 /"Popustop" 451
turf5 r=2 w=0 n=0 e=364 s=0 /"Popustop" 452
turf6 r=2 w=0 n=0 e=364 s=0 /"Popustop" 453
hall2 r=0 w=(361 362 363) n=368 e=0 s=360 /451 452 453 160 "Popustop" "~"
turf1 r=2 w=0 n=0 e=368 s=0 /"Popustop" 454
turf4 r=2 w=0 n=0 e=368 s=0 /"Popustop" 455
turf2 r=2 w=0 n=0 e=368 s=0 /"Popustop" 456
hall3 r=0 w=(365 366 367) n=372 e=0 s=364 /454 455 456 160 "Popustop" "~"
turf6 r=2 w=0 n=0 e=372 s=0 /"Popustop" 457
turf10 r=2 w=0 n=0 e=372 s=0 /"Popustop" 458
turf4 r=2 w=0 n=0 e=372 s=0 /"Popustop" 459
hall4 r=0 w=(369 370 371) n=0 e=0 s=368 /457 458 459 160 "Popustop" "~"
turf3 r=1 w=0 n=376 e=0 s=0 /"Popustop" 400
turf5 r=1 w=0 n=376 e=0 s=0 /"Popustop" 401
turf5 r=1 w=0 n=376 e=0 s=0 /"Popustop" 402
hall1 r=3 w=380 n=0 e=0 s=(373 374 375) /400 401 402 160 "Popustop" "\177"
turf8 r=1 w=0 n=380 e=0 s=0 /"Popustop" 403
turf9 r=1 w=0 n=380 e=0 s=0 /"Popustop" 404
turf1 r=1 w=0 n=380 e=0 s=0 /"Popustop" 405
hall2 r=3 w=384 n=0 e=376 s=(377 378 379) /403 404 405 160 "Popustop" "\177"
turf7 r=1 w=0 n=384 e=0 s=0 /"Popustop" 406
turf3 r=1 w=0 n=384 e=0 s=0 /"Popustop" 407
turf5 r=1 w=0 n=384 e=0 s=0 /"Popustop" 408
hall3 r=3 w=388 n=0 e=380 s=(381 382 383) /406 407 408 160 "Popustop" "\177"
turf10 r=1 w=0 n=388 e=0 s=0 /"Popustop" 409
turf2 r=1 w=0 n=388 e=0 s=0 /"Popustop" 410
turf8 r=1 w=0 n=388 e=0 s=0 /"Popustop" 411
hall4 r=3 w=354 n=0 e=384 s=(385 386 387) /409 410 411 160 "Popustop" "\177"
turf7 r=3 w=0 n=0 e=0 s=392 /"Popustop" 460
turf1 r=3 w=0 n=0 e=0 s=392 /"Popustop" 461
turf7 r=3 w=0 n=0 e=0 s=392 /"Popustop" 462
hall1 r=1 w=356 n=(389 390 391) e=396 s=0 /460 461 462 160 "Popustop" "~"
turf9 r=3 w=0 n=0 e=0 s=396 /"Popustop" 463
turf10 r=3 w=0 n=0 e=0 s=396 /"Popustop" 464
turf5 r=3 w=0 n=0 e=0 s=396 /"Popustop" 465
hall2 r=1 w=392 n=(393 394 395) e=400 s=0 /463 464 465 160 "Popustop" "~"
turf2 r=3 w=0 n=0 e=0 s=400 /"Popustop" 466
turf5 r=3 w=0 n=0 e=0 s=400 /"Popustop" 467
turf7 r=3 w=0 n=0 e=0 s=400 /"Popustop" 468
hall3 r=1 w=396 n=(397 398 399) e=404 s=0 /466 467 468 160 "Popustop" "~"
turf2 r=3 w=0 n=0 e=0 s=404 /"Popustop" 469
turf7 r=3 w=0 n=0 e=0 s=404 /"Popustop" 470
turf3 r=3 w=0 n=0 e=0 s=404 /"Popustop" 471
hall4 r=1 w=400 n=(401 402 403) e=0 s=0 /469 470 471 160 "Popustop" "~"
turf5 r=1 w=0 n=408 e=0 s=0 /"Popustop" 524
turf1 r=1 w=0 n=408 e=0 s=0 /"Popustop" 525
turf8 r=1 w=0 n=408 e=0 s=0 /"Popustop" 526
hall1 r=3 w=412 n=0 e=454 s=(405 406 407) /524 525 526 168 "Popustop" "~"
turf5 r=1 w=0 n=412 e=0 s=0 /"Popustop" 527
turf3 r=1 w=0 n=412 e=0 s=0 /"Popustop" 528
turf8 r=1 w=0 n=412 e=0 s=0 /"Popustop" 529
hall2 r=3 w=416 n=0 e=408 s=(409 410 411) /527 528 529 168 "Popustop" "~"
turf8 r=1 w=0 n=416 e=0 s=0 /"Popustop" 530
turf2 r=1 w=0 n=416 e=0 s=0 /"Popustop" 531
turf1 r=1 w=0 n=416 e=0 s=0 /"Popustop" 532
hall3 r=3 w=420 n=0 e=412 s=(413 414 415) /530 531 532 168 "Popustop" "~"
turf1 r=1 w=0 n=420 e=0 s=0 /"Popustop" 533
turf5 r=1 w=0 n=420 e=0 s=0 /"Popustop" 534
turf5 r=1 w=0 n=420 e=0 s=0 /"Popustop" 535
hall4 r=3 w=0 n=0 e=416 s=(417 418 419) /533 534 535 168 "Popustop" "~"
stairs r=0 w=0 n=521 e=455 s=321 /5 168 "Popustop" "~"
turf8 r=3 w=0 n=0 e=0 s=425 /"Popustop" 536
turf1 r=3 w=0 n=0 e=0 s=425 /"Popustop" 537
turf6 r=3 w=0 n=0 e=0 s=425 /"Popustop" 538
hall1 r=1 w=0 n=(422 423 424) e=429 s=0 /536 537 538 168 "Popustop" "\177"
turf3 r=3 w=0 n=0 e=0 s=429 /"Popustop" 539
turf1 r=3 w=0 n=0 e=0 s=429 /"Popustop" 540
turf9 r=3 w=0 n=0 e=0 s=429 /"Popustop" 541
hall2 r=1 w=425 n=(426 427 428) e=433 s=0 /539 540 541 168 "Popustop" "\177"
turf2 r=3 w=0 n=0 e=0 s=433 /"Popustop" 542
turf3 r=3 w=0 n=0 e=0 s=433 /"Popustop" 543
turf4 r=3 w=0 n=0 e=0 s=433 /"Popustop" 544
hall3 r=1 w=429 n=(430 431 432) e=437 s=0 /542 543 544 168 "Popustop" "\177"
turf7 r=3 w=0 n=0 e=0 s=437 /"Popustop" 545
turf3 r=3 w=0 n=0 e=0 s=437 /"Popustop" 546
turf1 r=3 w=0 n=0 e=0 s=437 /"Popustop" 547
hall4 r=1 w=433 n=(434 435 436) e=456 s=0 /545 546 547 168 "Popustop" "\177"
turf5 r=2 w=0 n=0 e=441 s=0 /"Popustop" 512
turf2 r=2 w=0 n=0 e=441 s=0 /"Popustop" 513
turf3 r=2 w=0 n=0 e=441 s=0 /"Popustop" 514
hall1 r=0 w=(438 439 440) n=445 e=0 s=0 /512 513 514 168 "Popustop" "\177"
turf6 r=2 w=0 n=0 e=445 s=0 /"Popustop" 515
turf4 r=2 w=0 n=0 e=445 s=0 /"Popustop" 516
turf10 r=2 w=0 n=0 e=445 s=0 /"Popustop" 517
hall2 r=0 w=(442 443 444) n=449 e=0 s=441 /515 516 517 168 "Popustop" "\177"
turf5 r=2 w=0 n=0 e=449 s=0 /"Popustop" 518
turf10 r=2 w=0 n=0 e=449 s=0 /"Popustop" 519
turf1 r=2 w=0 n=0 e=449 s=0 /"Popustop" 520
hall3 r=0 w=(446 447 448) n=453 e=0 s=445 /518 519 520 168 "Popustop" "\177"
turf8 r=2 w=0 n=0 e=453 s=0 /"Popustop" 521
turf1 r=2 w=0 n=0 e=453 s=0 /"Popustop" 522
turf6 r=2 w=0 n=0 e=453 s=0 /"Popustop" 523
hall4 r=0 w=(450 451 452) n=454 e=0 s=449 /521 522 523 168 "Popustop" "\177"
elby r=3 w=408 n=455 e=488 s=453 /500 511 512 523 524 535 168 "Popustop"
elevator1 r=0 w=421 n=456 e=0 s=454 /5 168 "Popustop" "|"
elby r=1 w=437 n=460 e=492 s=455 /536 547 548 559 560 571 168 "Popustop"
turf1 r=2 w=0 n=0 e=460 s=0 /"Popustop" 548
turf4 r=2 w=0 n=0 e=460 s=0 /"Popustop" 549
turf8 r=2 w=0 n=0 e=460 s=0 /"Popustop" 550
hall1 r=0 w=(457 458 459) n=464 e=0 s=456 /548 549 550 168 "Popustop" "~"
turf2 r=2 w=0 n=0 e=464 s=0 /"Popustop" 551
turf4 r=2 w=0 n=0 e=464 s=0 /"Popustop" 552
turf6 r=2 w=0 n=0 e=464 s=0 /"Popustop" 553
hall2 r=0 w=(461 462 463) n=468 e=0 s=460 /551 552 553 168 "Popustop" "~"
turf4 r=2 w=0 n=0 e=468 s=0 /"Popustop" 554
turf7 r=2 w=0 n=0 e=468 s=0 /"Popustop" 555
turf2 r=2 w=0 n=0 e=468 s=0 /"Popustop" 556
hall3 r=0 w=(465 466 467) n=472 e=0 s=464 /554 555 556 168 "Popustop" "~"
turf5 r=2 w=0 n=0 e=472 s=0 /"Popustop" 557
turf1 r=2 w=0 n=0 e=472 s=0 /"Popustop" 558
turf4 r=2 w=0 n=0 e=472 s=0 /"Popustop" 559
hall4 r=0 w=(469 470 471) n=0 e=0 s=468 /557 558 559 168 "Popustop" "~"
turf5 r=1 w=0 n=476 e=0 s=0 /"Popustop" 500
turf9 r=1 w=0 n=476 e=0 s=0 /"Popustop" 501
turf4 r=1 w=0 n=476 e=0 s=0 /"Popustop" 502
hall1 r=3 w=480 n=0 e=0 s=(473 474 475) /500 501 502 168 "Popustop" "\177"
turf5 r=1 w=0 n=480 e=0 s=0 /"Popustop" 503
turf1 r=1 w=0 n=480 e=0 s=0 /"Popustop" 504
turf10 r=1 w=0 n=480 e=0 s=0 /"Popustop" 505
hall2 r=3 w=484 n=0 e=476 s=(477 478 479) /503 504 505 168 "Popustop" "\177"
turf7 r=1 w=0 n=484 e=0 s=0 /"Popustop" 506
turf9 r=1 w=0 n=484 e=0 s=0 /"Popustop" 507
turf2 r=1 w=0 n=484 e=0 s=0 /"Popustop" 508
hall3 r=3 w=488 n=0 e=480 s=(481 482 483) /506 507 508 168 "Popustop" "\177"
turf7 r=1 w=0 n=488 e=0 s=0 /"Popustop" 509
turf2 r=1 w=0 n=488 e=0 s=0 /"Popustop" 510
turf6 r=1 w=0 n=488 e=0 s=0 /"Popustop" 511
hall4 r=3 w=454 n=0 e=484 s=(485 486 487) /509 510 511 168 "Popustop" "\177"
turf10 r=3 w=0 n=0 e=0 s=492 /"Popustop" 560
turf2 r=3 w=0 n=0 e=0 s=492 /"Popustop" 561
turf8 r=3 w=0 n=0 e=0 s=492 /"Popustop" 562
hall1 r=1 w=456 n=(489 490 491) e=496 s=0 /560 561 562 168 "Popustop" "~"
turf10 r=3 w=0 n=0 e=0 s=496 /"Popustop" 563
turf2 r=3 w=0 n=0 e=0 s=496 /"Popustop" 564
turf6 r=3 w=0 n=0 e=0 s=496 /"Popustop" 565
hall2 r=1 w=492 n=(493 494 495) e=500 s=0 /563 564 565 168 "Popustop" "~"
turf8 r=3 w=0 n=0 e=0 s=500 /"Popustop" 566
turf7 r=3 w=0 n=0 e=0 s=500 /"Popustop" 567
turf7 r=3 w=0 n=0 e=0 s=500 /"Popustop" 568
hall3 r=1 w=496 n=(497 498 499) e=504 s=0 /566 567 568 168 "Popustop" "~"
turf8 r=3 w=0 n=0 e=0 s=504 /"Popustop" 569
turf1 r=3 w=0 n=0 e=0 s=504 /"Popustop" 570
turf3 r=3 w=0 n=0 e=0 s=504 /"Popustop" 571
hall4 r=1 w=500 n=(501 502 503) e=0 s=0 /569 570 571 168 "Popustop" "~"
turf8 r=1 w=0 n=508 e=0 s=0 /"Popustop" 624
turf3 r=1 w=0 n=508 e=0 s=0 /"Popustop" 625
turf9 r=1 w=0 n=508 e=0 s=0 /"Popustop" 626
hall1 r=3 w=512 n=0 e=554 s=(505 506 507) /624 625 626 184 "Popustop" "~"
turf2 r=1 w=0 n=512 e=0 s=0 /"Popustop" 627
turf9 r=1 w=0 n=512 e=0 s=0 /"Popustop" 628
turf10 r=1 w=0 n=512 e=0 s=0 /"Popustop" 629
hall2 r=3 w=516 n=0 e=508 s=(509 510 511) /627 628 629 184 "Popustop" "~"
turf4 r=1 w=0 n=516 e=0 s=0 /"Popustop" 630
turf10 r=1 w=0 n=516 e=0 s=0 /"Popustop" 631
turf4 r=1 w=0 n=516 e=0 s=0 /"Popustop" 632
hall3 r=3 w=520 n=0 e=512 s=(513 514 515) /630 631 632 184 "Popustop" "~"
turf6 r=1 w=0 n=520 e=0 s=0 /"Popustop" 633
turf6 r=1 w=0 n=520 e=0 s=0 /"Popustop" 634
turf5 r=1 w=0 n=520 e=0 s=0 /"Popustop" 635
hall4 r=3 w=0 n=0 e=516 s=(517 518 519) /633 634 635 184 "Popustop" "~"
stairs r=0 w=0 n=621 e=555 s=421 /6 184 "Popustop" "~"
turf1 r=3 w=0 n=0 e=0 s=525 /"Popustop" 636
turf6 r=3 w=0 n=0 e=0 s=525 /"Popustop" 637
turf4 r=3 w=0 n=0 e=0 s=525 /"Popustop" 638
hall1 r=1 w=0 n=(522 523 524) e=529 s=0 /636 637 638 184 "Popustop" "\177"
turf8 r=3 w=0 n=0 e=0 s=529 /"Popustop" 639
turf5 r=3 w=0 n=0 e=0 s=529 /"Popustop" 640
turf6 r=3 w=0 n=0 e=0 s=529 /"Popustop" 641
hall2 r=1 w=525 n=(526 527 528) e=533 s=0 /639 640 641 184 "Popustop" "\177"
turf2 r=3 w=0 n=0 e=0 s=533 /"Popustop" 642
turf6 r=3 w=0 n=0 e=0 s=533 /"Popustop" 643
turf9 r=3 w=0 n=0 e=0 s=533 /"Popustop" 644
hall3 r=1 w=529 n=(530 531 532) e=537 s=0 /642 643 644 184 "Popustop" "\177"
turf10 r=3 w=0 n=0 e=0 s=537 /"Popustop" 645
turf5 r=3 w=0 n=0 e=0 s=537 /"Popustop" 646
turf7 r=3 w=0 n=0 e=0 s=537 /"Popustop" 647
hall4 r=1 w=533 n=(534 535 536) e=556 s=0 /645 646 647 184 "Popustop" "\177"
turf9 r=2 w=0 n=0 e=541 s=0 /"Popustop" 612
turf4 r=2 w=0 n=0 e=541 s=0 /"Popustop" 613
turf2 r=2 w=0 n=0 e=541 s=0 /"Popustop" 614
hall1 r=0 w=(538 539 540) n=545 e=0 s=0 /612 613 614 184 "Popustop" "\177"
turf4 r=2 w=0 n=0 e=545 s=0 /"Popustop" 615
turf1 r=2 w=0 n=0 e=545 s=0 /"Popustop" 616
turf7 r=2 w=0 n=0 e=545 s=0 /"Popustop" 617
hall2 r=0 w=(542 543 544) n=549 e=0 s=541 /615 616 617 184 "Popustop" "\177"
turf10 r=2 w=0 n=0 e=549 s=0 /"Popustop" 618
turf9 r=2 w=0 n=0 e=549 s=0 /"Popustop" 619
turf9 r=2 w=0 n=0 e=549 s=0 /"Popustop" 620
hall3 r=0 w=(546 547 548) n=553 e=0 s=545 /618 619 620 184 "Popustop" "\177"
turf8 r=2 w=0 n=0 e=553 s=0 /"Popustop" 621
turf9 r=2 w=0 n=0 e=553 s=0 /"Popustop" 622
turf5 r=2 w=0 n=0 e=553 s=0 /"Popustop" 623
hall4 r=0 w=(550 551 552) n=554 e=0 s=549 /621 622 623 184 "Popustop" "\177"
elby r=3 w=508 n=555 e=588 s=553 /600 611 612 623 624 635 184 "Popustop"
elevator1 r=0 w=521 n=556 e=0 s=554 /6 184 "Popustop" "|"
elby r=1 w=537 n=560 e=592 s=555 /636 647 648 659 660 671 184 "Popustop"
turf8 r=2 w=0 n=0 e=560 s=0 /"Popustop" 648
turf5 r=2 w=0 n=0 e=560 s=0 /"Popustop" 649
turf8 r=2 w=0 n=0 e=560 s=0 /"Popustop" 650
hall1 r=0 w=(557 558 559) n=564 e=0 s=556 /648 649 650 184 "Popustop" "~"
turf5 r=2 w=0 n=0 e=564 s=0 /"Popustop" 651
turf6 r=2 w=0 n=0 e=564 s=0 /"Popustop" 652
turf4 r=2 w=0 n=0 e=564 s=0 /"Popustop" 653
hall2 r=0 w=(561 562 563) n=568 e=0 s=560 /651 652 653 184 "Popustop" "~"
turf10 r=2 w=0 n=0 e=568 s=0 /"Popustop" 654
turf1 r=2 w=0 n=0 e=568 s=0 /"Popustop" 655
turf5 r=2 w=0 n=0 e=568 s=0 /"Popustop" 656
hall3 r=0 w=(565 566 567) n=572 e=0 s=564 /654 655 656 184 "Popustop" "~"
turf4 r=2 w=0 n=0 e=572 s=0 /"Popustop" 657
turf2 r=2 w=0 n=0 e=572 s=0 /"Popustop" 658
turf10 r=2 w=0 n=0 e=572 s=0 /"Popustop" 659
hall4 r=0 w=(569 570 571) n=0 e=0 s=568 /657 658 659 184 "Popustop" "~"
turf8 r=1 w=0 n=576 e=0 s=0 /"Popustop" 600
turf6 r=1 w=0 n=576 e=0 s=0 /"Popustop" 601
turf9 r=1 w=0 n=576 e=0 s=0 /"Popustop" 602
hall1 r=3 w=580 n=0 e=0 s=(573 574 575) /600 601 602 184 "Popustop" "\177"
turf1 r=1 w=0 n=580 e=0 s=0 /"Popustop" 603
turf4 r=1 w=0 n=580 e=0 s=0 /"Popustop" 604
turf8 r=1 w=0 n=580 e=0 s=0 /"Popustop" 605
hall2 r=3 w=584 n=0 e=576 s=(577 578 579) /603 604 605 184 "Popustop" "\177"
turf4 r=1 w=0 n=584 e=0 s=0 /"Popustop" 606
turf10 r=1 w=0 n=584 e=0 s=0 /"Popustop" 607
turf7 r=1 w=0 n=584 e=0 s=0 /"Popustop" 608
hall3 r=3 w=588 n=0 e=580 s=(581 582 583) /606 607 608 184 "Popustop" "\177"
turf7 r=1 w=0 n=588 e=0 s=0 /"Popustop" 609
turf9 r=1 w=0 n=588 e=0 s=0 /"Popustop" 610
turf8 r=1 w=0 n=588 e=0 s=0 /"Popustop" 611
hall4 r=3 w=554 n=0 e=584 s=(585 586 587) /609 610 611 184 "Popustop" "\177"
turf5 r=3 w=0 n=0 e=0 s=592 /"Popustop" 660
turf5 r=3 w=0 n=0 e=0 s=592 /"Popustop" 661
turf8 r=3 w=0 n=0 e=0 s=592 /"Popustop" 662
hall1 r=1 w=556 n=(589 590 591) e=596 s=0 /660 661 662 184 "Popustop" "~"
turf2 r=3 w=0 n=0 e=0 s=596 /"Popustop" 663
turf2 r=3 w=0 n=0 e=0 s=596 /"Popustop" 664
turf3 r=3 w=0 n=0 e=0 s=596 /"Popustop" 665
hall2 r=1 w=592 n=(593 594 595) e=600 s=0 /663 664 665 184 "Popustop" "~"
turf10 r=3 w=0 n=0 e=0 s=600 /"Popustop" 666
turf7 r=3 w=0 n=0 e=0 s=600 /"Popustop" 667
turf7 r=3 w=0 n=0 e=0 s=600 /"Popustop" 668
hall3 r=1 w=596 n=(597 598 599) e=604 s=0 /666 667 668 184 "Popustop" "~"
turf5 r=3 w=0 n=0 e=0 s=604 /"Popustop" 669
turf1 r=3 w=0 n=0 e=0 s=604 /"Popustop" 670
turf5 r=3 w=0 n=0 e=0 s=604 /"Popustop" 671
hall4 r=1 w=600 n=(601 602 603) e=0 s=0 /669 670 671 184 "Popustop" "~"
turf9 r=1 w=0 n=608 e=0 s=0 /"Popustop" 724
turf5 r=1 w=0 n=608 e=0 s=0 /"Popustop" 725
turf8 r=1 w=0 n=608 e=0 s=0 /"Popustop" 726
hall1 r=3 w=612 n=0 e=654 s=(605 606 607) /724 725 726 192 "Popustop" "~"
turf7 r=1 w=0 n=612 e=0 s=0 /"Popustop" 727
turf5 r=1 w=0 n=612 e=0 s=0 /"Popustop" 728
turf10 r=1 w=0 n=612 e=0 s=0 /"Popustop" 729
hall2 r=3 w=616 n=0 e=608 s=(609 610 611) /727 728 729 192 "Popustop" "~"
turf1 r=1 w=0 n=616 e=0 s=0 /"Popustop" 730
turf7 r=1 w=0 n=616 e=0 s=0 /"Popustop" 731
turf8 r=1 w=0 n=616 e=0 s=0 /"Popustop" 732
hall3 r=3 w=620 n=0 e=612 s=(613 614 615) /730 731 732 192 "Popustop" "~"
turf6 r=1 w=0 n=620 e=0 s=0 /"Popustop" 733
turf2 r=1 w=0 n=620 e=0 s=0 /"Popustop" 734
turf7 r=1 w=0 n=620 e=0 s=0 /"Popustop" 735
hall4 r=3 w=0 n=0 e=616 s=(617 618 619) /733 734 735 192 "Popustop" "~"
stairs r=0 w=0 n=721 e=655 s=521 /7 192 "Popustop" "~"
turf5 r=3 w=0 n=0 e=0 s=625 /"Popustop" 736
turf3 r=3 w=0 n=0 e=0 s=625 /"Popustop" 737
turf4 r=3 w=0 n=0 e=0 s=625 /"Popustop" 738
hall1 r=1 w=0 n=(622 623 624) e=629 s=0 /736 737 738 192 "Popustop" "\177"
turf8 r=3 w=0 n=0 e=0 s=629 /"Popustop" 739
turf2 r=3 w=0 n=0 e=0 s=629 /"Popustop" 740
turf9 r=3 w=0 n=0 e=0 s=629 /"Popustop" 741
hall2 r=1 w=625 n=(626 627 628) e=633 s=0 /739 740 741 192 "Popustop" "\177"
turf4 r=3 w=0 n=0 e=0 s=633 /"Popustop" 742
turf1 r=3 w=0 n=0 e=0 s=633 /"Popustop" 743
turf6 r=3 w=0 n=0 e=0 s=633 /"Popustop" 744
hall3 r=1 w=629 n=(630 631 632) e=637 s=0 /742 743 744 192 "Popustop" "\177"
turf9 r=3 w=0 n=0 e=0 s=637 /"Popustop" 745
turf4 r=3 w=0 n=0 e=0 s=637 /"Popustop" 746
turf2 r=3 w=0 n=0 e=0 s=637 /"Popustop" 747
hall4 r=1 w=633 n=(634 635 636) e=656 s=0 /745 746 747 192 "Popustop" "\177"
turf10 r=2 w=0 n=0 e=641 s=0 /"Popustop" 712
turf5 r=2 w=0 n=0 e=641 s=0 /"Popustop" 713
turf4 r=2 w=0 n=0 e=641 s=0 /"Popustop" 714
hall1 r=0 w=(638 639 640) n=645 e=0 s=0 /712 713 714 192 "Popustop" "\177"
turf7 r=2 w=0 n=0 e=645 s=0 /"Popustop" 715
turf9 r=2 w=0 n=0 e=645 s=0 /"Popustop" 716
turf1 r=2 w=0 n=0 e=645 s=0 /"Popustop" 717
hall2 r=0 w=(642 643 644) n=649 e=0 s=641 /715 716 717 192 "Popustop" "\177"
turf2 r=2 w=0 n=0 e=649 s=0 /"Popustop" 718
turf10 r=2 w=0 n=0 e=649 s=0 /"Popustop" 719
turf3 r=2 w=0 n=0 e=649 s=0 /"Popustop" 720
hall3 r=0 w=(646 647 648) n=653 e=0 s=645 /718 719 720 192 "Popustop" "\177"
turf1 r=2 w=0 n=0 e=653 s=0 /"Popustop" 721
turf2 r=2 w=0 n=0 e=653 s=0 /"Popustop" 722
turf9 r=2 w=0 n=0 e=653 s=0 /"Popustop" 723
hall4 r=0 w=(650 651 652) n=654 e=0 s=649 /721 722 723 192 "Popustop" "\177"
elby r=3 w=608 n=655 e=688 s=653 /700 711 712 723 724 735 192 "Popustop"
elevator1 r=0 w=621 n=656 e=0 s=654 /7 192 "Popustop" "|"
elby r=1 w=637 n=660 e=692 s=655 /736 747 748 759 760 771 192 "Popustop"
turf7 r=2 w=0 n=0 e=660 s=0 /"Popustop" 748
turf9 r=2 w=0 n=0 e=660 s=0 /"Popustop" 749
turf5 r=2 w=0 n=0 e=660 s=0 /"Popustop" 750
hall1 r=0 w=(657 658 659) n=664 e=0 s=656 /748 749 750 192 "Popustop" "~"
turf1 r=2 w=0 n=0 e=664 s=0 /"Popustop" 751
turf4 r=2 w=0 n=0 e=664 s=0 /"Popustop" 752
turf1 r=2 w=0 n=0 e=664 s=0 /"Popustop" 753
hall2 r=0 w=(661 662 663) n=668 e=0 s=660 /751 752 753 192 "Popustop" "~"
turf10 r=2 w=0 n=0 e=668 s=0 /"Popustop" 754
turf10 r=2 w=0 n=0 e=668 s=0 /"Popustop" 755
turf3 r=2 w=0 n=0 e=668 s=0 /"Popustop" 756
hall3 r=0 w=(665 666 667) n=672 e=0 s=664 /754 755 756 192 "Popustop" "~"
turf2 r=2 w=0 n=0 e=672 s=0 /"Popustop" 757
turf2 r=2 w=0 n=0 e=672 s=0 /"Popustop" 758
turf1 r=2 w=0 n=0 e=672 s=0 /"Popustop" 759
hall4 r=0 w=(669 670 671) n=0 e=0 s=668 /757 758 759 192 "Popustop" "~"
turf2 r=1 w=0 n=676 e=0 s=0 /"Popustop" 700
turf10 r=1 w=0 n=676 e=0 s=0 /"Popustop" 701
turf2 r=1 w=0 n=676 e=0 s=0 /"Popustop" 702
hall1 r=3 w=680 n=0 e=0 s=(673 674 675) /700 701 702 192 "Popustop" "\177"
turf3 r=1 w=0 n=680 e=0 s=0 /"Popustop" 703
turf3 r=1 w=0 n=680 e=0 s=0 /"Popustop" 704
turf1 r=1 w=0 n=680 e=0 s=0 /"Popustop" 705
hall2 r=3 w=684 n=0 e=676 s=(677 678 679) /703 704 705 192 "Popustop" "\177"
turf4 r=1 w=0 n=684 e=0 s=0 /"Popustop" 706
turf3 r=1 w=0 n=684 e=0 s=0 /"Popustop" 707
turf8 r=1 w=0 n=684 e=0 s=0 /"Popustop" 708
hall3 r=3 w=688 n=0 e=680 s=(681 682 683) /706 707 708 192 "Popustop" "\177"
turf8 r=1 w=0 n=688 e=0 s=0 /"Popustop" 709
turf6 r=1 w=0 n=688 e=0 s=0 /"Popustop" 710
turf3 r=1 w=0 n=688 e=0 s=0 /"Popustop" 711
hall4 r=3 w=654 n=0 e=684 s=(685 686 687) /709 710 711 192 "Popustop" "\177"
turf5 r=3 w=0 n=0 e=0 s=692 /"Popustop" 760
turf5 r=3 w=0 n=0 e=0 s=692 /"Popustop" 761
turf4 r=3 w=0 n=0 e=0 s=692 /"Popustop" 762
hall1 r=1 w=656 n=(689 690 691) e=696 s=0 /760 761 762 192 "Popustop" "~"
turf4 r=3 w=0 n=0 e=0 s=696 /"Popustop" 763
turf5 r=3 w=0 n=0 e=0 s=696 /"Popustop" 764
turf4 r=3 w=0 n=0 e=0 s=696 /"Popustop" 765
hall2 r=1 w=692 n=(693 694 695) e=700 s=0 /763 764 765 192 "Popustop" "~"
turf4 r=3 w=0 n=0 e=0 s=700 /"Popustop" 766
turf3 r=3 w=0 n=0 e=0 s=700 /"Popustop" 767
turf9 r=3 w=0 n=0 e=0 s=700 /"Popustop" 768
hall3 r=1 w=696 n=(697 698 699) e=704 s=0 /766 767 768 192 "Popustop" "~"
turf1 r=3 w=0 n=0 e=0 s=704 /"Popustop" 769
turf9 r=3 w=0 n=0 e=0 s=704 /"Popustop" 770
turf2 r=3 w=0 n=0 e=0 s=704 /"Popustop" 771
hall4 r=1 w=700 n=(701 702 703) e=0 s=0 /769 770 771 192 "Popustop" "~"
turf9 r=1 w=0 n=708 e=0 s=0 /"Popustop" 824
turf2 r=1 w=0 n=708 e=0 s=0 /"Popustop" 825
turf10 r=1 w=0 n=708 e=0 s=0 /"Popustop" 826
hall1 r=3 w=712 n=0 e=754 s=(705 706 707) /824 825 826 200 "Popustop" "~"
turf8 r=1 w=0 n=712 e=0 s=0 /"Popustop" 827
turf10 r=1 w=0 n=712 e=0 s=0 /"Popustop" 828
turf3 r=1 w=0 n=712 e=0 s=0 /"Popustop" 829
hall2 r=3 w=716 n=0 e=708 s=(709 710 711) /827 828 829 200 "Popustop" "~"
turf10 r=1 w=0 n=716 e=0 s=0 /"Popustop" 830
turf1 r=1 w=0 n=716 e=0 s=0 /"Popustop" 831
turf1 r=1 w=0 n=716 e=0 s=0 /"Popustop" 832
hall3 r=3 w=720 n=0 e=712 s=(713 714 715) /830 831 832 200 "Popustop" "~"
turf2 r=1 w=0 n=720 e=0 s=0 /"Popustop" 833
turf8 r=1 w=0 n=720 e=0 s=0 /"Popustop" 834
turf3 r=1 w=0 n=720 e=0 s=0 /"Popustop" 835
hall4 r=3 w=0 n=0 e=716 s=(717 718 719) /833 834 835 200 "Popustop" "~"
stairs r=0 w=0 n=821 e=755 s=621 /8 200 "Popustop" "~"
turf2 r=3 w=0 n=0 e=0 s=725 /"Popustop" 836
turf8 r=3 w=0 n=0 e=0 s=725 /"Popustop" 837
turf1 r=3 w=0 n=0 e=0 s=725 /"Popustop" 838
hall1 r=1 w=0 n=(722 723 724) e=729 s=0 /836 837 838 200 "Popustop" "\177"
turf3 r=3 w=0 n=0 e=0 s=729 /"Popustop" 839
turf1 r=3 w=0 n=0 e=0 s=729 /"Popustop" 840
turf9 r=3 w=0 n=0 e=0 s=729 /"Popustop" 841
hall2 r=1 w=725 n=(726 727 728) e=733 s=0 /839 840 841 200 "Popustop" "\177"
turf1 r=3 w=0 n=0 e=0 s=733 /"Popustop" 842
turf4 r=3 w=0 n=0 e=0 s=733 /"Popustop" 843
turf9 r=3 w=0 n=0 e=0 s=733 /"Popustop" 844
hall3 r=1 w=729 n=(730 731 732) e=737 s=0 /842 843 844 200 "Popustop" "\177"
turf5 r=3 w=0 n=0 e=0 s=737 /"Popustop" 845
turf8 r=3 w=0 n=0 e=0 s=737 /"Popustop" 846
turf3 r=3 w=0 n=0 e=0 s=737 /"Popustop" 847
hall4 r=1 w=733 n=(734 735 736) e=756 s=0 /845 846 847 200 "Popustop" "\177"
turf7 r=2 w=0 n=0 e=741 s=0 /"Popustop" 812
turf1 r=2 w=0 n=0 e=741 s=0 /"Popustop" 813
turf4 r=2 w=0 n=0 e=741 s=0 /"Popustop" 814
hall1 r=0 w=(738 739 740) n=745 e=0 s=0 /812 813 814 200 "Popustop" "\177"
turf1 r=2 w=0 n=0 e=745 s=0 /"Popustop" 815
turf4 r=2 w=0 n=0 e=745 s=0 /"Popustop" 816
turf10 r=2 w=0 n=0 e=745 s=0 /"Popustop" 817
hall2 r=0 w=(742 743 744) n=749 e=0 s=741 /815 816 817 200 "Popustop" "\177"
turf9 r=2 w=0 n=0 e=749 s=0 /"Popustop" 818
turf2 r=2 w=0 n=0 e=749 s=0 /"Popustop" 819
turf1 r=2 w=0 n=0 e=749 s=0 /"Popustop" 820
hall3 r=0 w=(746 747 748) n=753 e=0 s=745 /818 819 820 200 "Popustop" "\177"
turf7 r=2 w=0 n=0 e=753 s=0 /"Popustop" 821
turf4 r=2 w=0 n=0 e=753 s=0 /"Popustop" 822
turf1 r=2 w=0 n=0 e=753 s=0 /"Popustop" 823
hall4 r=0 w=(750 751 752) n=754 e=0 s=749 /821 822 823 200 "Popustop" "\177"
elby r=3 w=708 n=755 e=788 s=753 /800 811 812 823 824 835 200 "Popustop"
elevator1 r=0 w=721 n=756 e=0 s=754 /8 200 "Popustop" "|"
elby r=1 w=737 n=760 e=792 s=755 /836 847 848 859 860 871 200 "Popustop"
turf3 r=2 w=0 n=0 e=760 s=0 /"Popustop" 848
turf1 r=2 w=0 n=0 e=760 s=0 /"Popustop" 849
turf1 r=2 w=0 n=0 e=760 s=0 /"Popustop" 850
hall1 r=0 w=(757 758 759) n=764 e=0 s=756 /848 849 850 200 "Popustop" "~"
turf1 r=2 w=0 n=0 e=764 s=0 /"Popustop" 851
turf1 r=2 w=0 n=0 e=764 s=0 /"Popustop" 852
turf10 r=2 w=0 n=0 e=764 s=0 /"Popustop" 853
hall2 r=0 w=(761 762 763) n=768 e=0 s=760 /851 852 853 200 "Popustop" "~"
turf8 r=2 w=0 n=0 e=768 s=0 /"Popustop" 854
turf3 r=2 w=0 n=0 e=768 s=0 /"Popustop" 855
turf9 r=2 w=0 n=0 e=768 s=0 /"Popustop" 856
hall3 r=0 w=(765 766 767) n=772 e=0 s=764 /854 855 856 200 "Popustop" "~"
turf6 r=2 w=0 n=0 e=772 s=0 /"Popustop" 857
turf4 r=2 w=0 n=0 e=772 s=0 /"Popustop" 858
turf2 r=2 w=0 n=0 e=772 s=0 /"Popustop" 859
hall4 r=0 w=(769 770 771) n=0 e=0 s=768 /857 858 859 200 "Popustop" "~"
turf6 r=1 w=0 n=776 e=0 s=0 /"Popustop" 800
turf10 r=1 w=0 n=776 e=0 s=0 /"Popustop" 801
turf10 r=1 w=0 n=776 e=0 s=0 /"Popustop" 802
hall1 r=3 w=780 n=0 e=0 s=(773 774 775) /800 801 802 200 "Popustop" "\177"
turf8 r=1 w=0 n=780 e=0 s=0 /"Popustop" 803
turf8 r=1 w=0 n=780 e=0 s=0 /"Popustop" 804
turf3 r=1 w=0 n=780 e=0 s=0 /"Popustop" 805
hall2 r=3 w=784 n=0 e=776 s=(777 778 779) /803 804 805 200 "Popustop" "\177"
turf6 r=1 w=0 n=784 e=0 s=0 /"Popustop" 806
turf8 r=1 w=0 n=784 e=0 s=0 /"Popustop" 807
turf9 r=1 w=0 n=784 e=0 s=0 /"Popustop" 808
hall3 r=3 w=788 n=0 e=780 s=(781 782 783) /806 807 808 200 "Popustop" "\177"
turf6 r=1 w=0 n=788 e=0 s=0 /"Popustop" 809
turf2 r=1 w=0 n=788 e=0 s=0 /"Popustop" 810
turf7 r=1 w=0 n=788 e=0 s=0 /"Popustop" 811
hall4 r=3 w=754 n=0 e=784 s=(785 786 787) /809 810 811 200 "Popustop" "\177"
turf7 r=3 w=0 n=0 e=0 s=792 /"Popustop" 860
turf2 r=3 w=0 n=0 e=0 s=792 /"Popustop" 861
turf3 r=3 w=0 n=0 e=0 s=792 /"Popustop" 862
hall1 r=1 w=756 n=(789 790 791) e=796 s=0 /860 861 862 200 "Popustop" "~"
turf9 r=3 w=0 n=0 e=0 s=796 /"Popustop" 863
turf10 r=3 w=0 n=0 e=0 s=796 /"Popustop" 864
turf8 r=3 w=0 n=0 e=0 s=796 /"Popustop" 865
hall2 r=1 w=792 n=(793 794 795) e=800 s=0 /863 864 865 200 "Popustop" "~"
turf10 r=3 w=0 n=0 e=0 s=800 /"Popustop" 866
turf9 r=3 w=0 n=0 e=0 s=800 /"Popustop" 867
turf10 r=3 w=0 n=0 e=0 s=800 /"Popustop" 868
hall3 r=1 w=796 n=(797 798 799) e=804 s=0 /866 867 868 200 "Popustop" "~"
turf1 r=3 w=0 n=0 e=0 s=804 /"Popustop" 869
turf9 r=3 w=0 n=0 e=0 s=804 /"Popustop" 870
turf8 r=3 w=0 n=0 e=0 s=804 /"Popustop" 871
hall4 r=1 w=800 n=(801 802 803) e=0 s=0 /869 870 871 200 "Popustop" "~"
turf1 r=1 w=0 n=808 e=0 s=0 /"Popustop" 924
turf8 r=1 w=0 n=808 e=0 s=0 /"Popustop" 925
turf8 r=1 w=0 n=808 e=0 s=0 /"Popustop" 926
hall1 r=3 w=812 n=0 e=854 s=(805 806 807) /924 925 926 216 "Popustop" "~"
turf7 r=1 w=0 n=812 e=0 s=0 /"Popustop" 927
turf8 r=1 w=0 n=812 e=0 s=0 /"Popustop" 928
turf7 r=1 w=0 n=812 e=0 s=0 /"Popustop" 929
hall2 r=3 w=816 n=0 e=808 s=(809 810 811) /927 928 929 216 "Popustop" "~"
turf3 r=1 w=0 n=816 e=0 s=0 /"Popustop" 930
turf10 r=1 w=0 n=816 e=0 s=0 /"Popustop" 931
turf6 r=1 w=0 n=816 e=0 s=0 /"Popustop" 932
hall3 r=3 w=820 n=0 e=812 s=(813 814 815) /930 931 932 216 "Popustop" "~"
turf6 r=1 w=0 n=820 e=0 s=0 /"Popustop" 933
turf7 r=1 w=0 n=820 e=0 s=0 /"Popustop" 934
turf5 r=1 w=0 n=820 e=0 s=0 /"Popustop" 935
hall4 r=3 w=0 n=0 e=816 s=(817 818 819) /933 934 935 216 "Popustop" "~"
stairs r=0 w=0 n=921 e=855 s=721 /9 216 "Popustop" "~"
turf3 r=3 w=0 n=0 e=0 s=825 /"Popustop" 936
turf2 r=3 w=0 n=0 e=0 s=825 /"Popustop" 937
turf7 r=3 w=0 n=0 e=0 s=825 /"Popustop" 938
hall1 r=1 w=0 n=(822 823 824) e=829 s=0 /936 937 938 216 "Popustop" "\177"
turf6 r=3 w=0 n=0 e=0 s=829 /"Popustop" 939
turf10 r=3 w=0 n=0 e=0 s=829 /"Popustop" 940
turf4 r=3 w=0 n=0 e=0 s=829 /"Popustop" 941
hall2 r=1 w=825 n=(826 827 828) e=833 s=0 /939 940 941 216 "Popustop" "\177"
turf10 r=3 w=0 n=0 e=0 s=833 /"Popustop" 942
turf9 r=3 w=0 n=0 e=0 s=833 /"Popustop" 943
turf8 r=3 w=0 n=0 e=0 s=833 /"Popustop" 944
hall3 r=1 w=829 n=(830 831 832) e=837 s=0 /942 943 944 216 "Popustop" "\177"
turf6 r=3 w=0 n=0 e=0 s=837 /"Popustop" 945
turf8 r=3 w=0 n=0 e=0 s=837 /"Popustop" 946
turf1 r=3 w=0 n=0 e=0 s=837 /"Popustop" 947
hall4 r=1 w=833 n=(834 835 836) e=856 s=0 /945 946 947 216 "Popustop" "\177"
turf2 r=2 w=0 n=0 e=841 s=0 /"Popustop" 912
turf8 r=2 w=0 n=0 e=841 s=0 /"Popustop" 913
turf6 r=2 w=0 n=0 e=841 s=0 /"Popustop" 914
hall1 r=0 w=(838 839 840) n=845 e=0 s=0 /912 913 914 216 "Popustop" "\177"
turf1 r=2 w=0 n=0 e=845 s=0 /"Popustop" 915
turf6 r=2 w=0 n=0 e=845 s=0 /"Popustop" 916
turf6 r=2 w=0 n=0 e=845 s=0 /"Popustop" 917
hall2 r=0 w=(842 843 844) n=849 e=0 s=841 /915 916 917 216 "Popustop" "\177"
turf10 r=2 w=0 n=0 e=849 s=0 /"Popustop" 918
turf2 r=2 w=0 n=0 e=849 s=0 /"Popustop" 919
turf1 r=2 w=0 n=0 e=849 s=0 /"Popustop" 920
hall3 r=0 w=(846 847 848) n=853 e=0 s=845 /918 919 920 216 "Popustop" "\177"
turf1 r=2 w=0 n=0 e=853 s=0 /"Popustop" 921
turf7 r=2 w=0 n=0 e=853 s=0 /"Popustop" 922
turf8 r=2 w=0 n=0 e=853 s=0 /"Popustop" 923
hall4 r=0 w=(850 851 852) n=854 e=0 s=849 /921 922 923 216 "Popustop" "\177"
elby r=3 w=808 n=855 e=888 s=853 /900 911 912 923 924 935 216 "Popustop"
elevator1 r=0 w=821 n=856 e=0 s=854 /9 216 "Popustop" "|"
elby r=1 w=837 n=860 e=892 s=855 /936 947 948 959 960 971 216 "Popustop"
turf5 r=2 w=0 n=0 e=860 s=0 /"Popustop" 948
turf2 r=2 w=0 n=0 e=860 s=0 /"Popustop" 949
turf7 r=2 w=0 n=0 e=860 s=0 /"Popustop" 950
hall1 r=0 w=(857 858 859) n=864 e=0 s=856 /948 949 950 216 "Popustop" "~"
turf2 r=2 w=0 n=0 e=864 s=0 /"Popustop" 951
turf8 r=2 w=0 n=0 e=864 s=0 /"Popustop" 952
turf1 r=2 w=0 n=0 e=864 s=0 /"Popustop" 953
hall2 r=0 w=(861 862 863) n=868 e=0 s=860 /951 952 953 216 "Popustop" "~"
turf8 r=2 w=0 n=0 e=868 s=0 /"Popustop" 954
turf3 r=2 w=0 n=0 e=868 s=0 /"Popustop" 955
turf1 r=2 w=0 n=0 e=868 s=0 /"Popustop" 956
hall3 r=0 w=(865 866 867) n=872 e=0 s=864 /954 955 956 216 "Popustop" "~"
turf8 r=2 w=0 n=0 e=872 s=0 /"Popustop" 957
turf7 r=2 w=0 n=0 e=872 s=0 /"Popustop" 958
turf7 r=2 w=0 n=0 e=872 s=0 /"Popustop" 959
hall4 r=0 w=(869 870 871) n=0 e=0 s=868 /957 958 959 216 "Popustop" "~"
turf5 r=1 w=0 n=876 e=0 s=0 /"Popustop" 900
turf1 r=1 w=0 n=876 e=0 s=0 /"Popustop" 901
turf4 r=1 w=0 n=876 e=0 s=0 /"Popustop" 902
hall1 r=3 w=880 n=0 e=0 s=(873 874 875) /900 901 902 216 "Popustop" "\177"
turf3 r=1 w=0 n=880 e=0 s=0 /"Popustop" 903
turf8 r=1 w=0 n=880 e=0 s=0 /"Popustop" 904
turf9 r=1 w=0 n=880 e=0 s=0 /"Popustop" 905
hall2 r=3 w=884 n=0 e=876 s=(877 878 879) /903 904 905 216 "Popustop" "\177"
turf1 r=1 w=0 n=884 e=0 s=0 /"Popustop" 906
turf7 r=1 w=0 n=884 e=0 s=0 /"Popustop" 907
turf9 r=1 w=0 n=884 e=0 s=0 /"Popustop" 908
hall3 r=3 w=888 n=0 e=880 s=(881 882 883) /906 907 908 216 "Popustop" "\177"
turf6 r=1 w=0 n=888 e=0 s=0 /"Popustop" 909
turf2 r=1 w=0 n=888 e=0 s=0 /"Popustop" 910
turf7 r=1 w=0 n=888 e=0 s=0 /"Popustop" 911
hall4 r=3 w=854 n=0 e=884 s=(885 886 887) /909 910 911 216 "Popustop" "\177"
turf9 r=3 w=0 n=0 e=0 s=892 /"Popustop" 960
turf5 r=3 w=0 n=0 e=0 s=892 /"Popustop" 961
turf7 r=3 w=0 n=0 e=0 s=892 /"Popustop" 962
hall1 r=1 w=856 n=(889 890 891) e=896 s=0 /960 961 962 216 "Popustop" "~"
turf1 r=3 w=0 n=0 e=0 s=896 /"Popustop" 963
turf6 r=3 w=0 n=0 e=0 s=896 /"Popustop" 964
turf5 r=3 w=0 n=0 e=0 s=896 /"Popustop" 965
hall2 r=1 w=892 n=(893 894 895) e=900 s=0 /963 964 965 216 "Popustop" "~"
turf6 r=3 w=0 n=0 e=0 s=900 /"Popustop" 966
turf2 r=3 w=0 n=0 e=0 s=900 /"Popustop" 967
turf9 r=3 w=0 n=0 e=0 s=900 /"Popustop" 968
hall3 r=1 w=896 n=(897 898 899) e=904 s=0 /966 967 968 216 "Popustop" "~"
turf8 r=3 w=0 n=0 e=0 s=904 /"Popustop" 969
turf1 r=3 w=0 n=0 e=0 s=904 /"Popustop" 970
turf4 r=3 w=0 n=0 e=0 s=904 /"Popustop" 971
hall4 r=1 w=900 n=(901 902 903) e=0 s=0 /969 970 971 216 "Popustop" "~"
turf10 r=1 w=0 n=908 e=0 s=0 /"Popustop" 1024
turf9 r=1 w=0 n=908 e=0 s=0 /"Popustop" 1025
turf4 r=1 w=0 n=908 e=0 s=0 /"Popustop" 1026
hall11000 r=3 w=912 n=0 e=954 s=(905 906 907) /1024 1025 1026 224 "Popustop" "~"
turf6 r=1 w=0 n=912 e=0 s=0 /"Popustop" 1027
turf9 r=1 w=0 n=912 e=0 s=0 /"Popustop" 1028
turf4 r=1 w=0 n=912 e=0 s=0 /"Popustop" 1029
hall21000 r=3 w=916 n=0 e=908 s=(909 910 911) /1027 1028 1029 224 "Popustop" "~"
turf2 r=1 w=0 n=916 e=0 s=0 /"Popustop" 1030
turf3 r=1 w=0 n=916 e=0 s=0 /"Popustop" 1031
turf9 r=1 w=0 n=916 e=0 s=0 /"Popustop" 1032
hall31000 r=3 w=920 n=0 e=912 s=(913 914 915) /1030 1031 1032 224 "Popustop" "~"
turf6 r=1 w=0 n=920 e=0 s=0 /"Popustop" 1033
turf4 r=1 w=0 n=920 e=0 s=0 /"Popustop" 1034
turf2 r=1 w=0 n=920 e=0 s=0 /"Popustop" 1035
hall41000 r=3 w=0 n=0 e=916 s=(917 918 919) /1033 1034 1035 224 "Popustop" "~"
stairs r=0 w=0 n=1021 e=955 s=821 /10 224 "Popustop" "~"
turf9 r=3 w=0 n=0 e=0 s=925 /"Popustop" 1036
turf9 r=3 w=0 n=0 e=0 s=925 /"Popustop" 1037
turf9 r=3 w=0 n=0 e=0 s=925 /"Popustop" 1038
hall11000 r=1 w=0 n=(922 923 924) e=929 s=0 /1036 1037 1038 224 "Popustop" "\177"
turf7 r=3 w=0 n=0 e=0 s=929 /"Popustop" 1039
turf6 r=3 w=0 n=0 e=0 s=929 /"Popustop" 1040
turf7 r=3 w=0 n=0 e=0 s=929 /"Popustop" 1041
hall21000 r=1 w=925 n=(926 927 928) e=933 s=0 /1039 1040 1041 224 "Popustop" "\177"
turf2 r=3 w=0 n=0 e=0 s=933 /"Popustop" 1042
turf7 r=3 w=0 n=0 e=0 s=933 /"Popustop" 1043
turf4 r=3 w=0 n=0 e=0 s=933 /"Popustop" 1044
hall31000 r=1 w=929 n=(930 931 932) e=937 s=0 /1042 1043 1044 224 "Popustop" "\177"
turf1 r=3 w=0 n=0 e=0 s=937 /"Popustop" 1045
turf10 r=3 w=0 n=0 e=0 s=937 /"Popustop" 1046
turf8 r=3 w=0 n=0 e=0 s=937 /"Popustop" 1047
hall41000 r=1 w=933 n=(934 935 936) e=956 s=0 /1045 1046 1047 224 "Popustop" "\177"
turf9 r=2 w=0 n=0 e=941 s=0 /
gitextract_jl17cbj0/ ├── .claude/ │ └── skills/ │ └── habitat/ │ └── SKILL.md ├── .dockerignore ├── .gitattributes ├── .gitignore ├── .travis.yml ├── Dockerfile ├── LICENSE ├── PROTOCOL.md ├── README-RealC64.md ├── README.md ├── astroturf/ │ ├── app.py │ ├── astroturf.py │ ├── custom_escapes_table.yml │ └── popustop/ │ ├── afront1.json │ ├── afront2.json │ ├── afront3.json │ ├── aprominade2.json │ ├── basement.json │ ├── bboard.json │ ├── elby.json │ ├── elby1000.json │ ├── elevator1.json │ ├── hall1.json │ ├── hall11000.json │ ├── hall2.json │ ├── hall21000.json │ ├── hall3.json │ ├── hall31000.json │ ├── hall4.json │ ├── hall41000.json │ ├── lobby.json │ ├── popustop.i │ ├── roof.json │ ├── stairs.json │ ├── turf1.json │ ├── turf10.json │ ├── turf2.json │ ├── turf3.json │ ├── turf4.json │ ├── turf5.json │ ├── turf6.json │ ├── turf7.json │ ├── turf8.json │ └── turf9.json ├── bootstrap ├── bridge/ │ ├── .gitignore │ ├── Habitat2ElkoBridge.js │ ├── defaults.elko │ ├── hcode.js │ ├── package.json │ └── run ├── data/ │ └── .gitignore ├── db/ │ ├── .gitignore │ ├── Back4t/ │ │ ├── back4t_01.json │ │ ├── back4t_02.json │ │ ├── back4t_03.json │ │ ├── back4t_04.json │ │ ├── back4t_05.json │ │ ├── back4t_11.json │ │ ├── back4t_12.json │ │ ├── back4t_13.json │ │ ├── back4t_14.json │ │ ├── back4t_15.json │ │ ├── back4t_20.json │ │ ├── back4t_21.json │ │ ├── back4t_22.json │ │ ├── back4t_23.json │ │ ├── back4t_24.json │ │ ├── back4t_25.json │ │ ├── back4t_30.json │ │ ├── back4t_31.json │ │ ├── back4t_32.json │ │ ├── back4t_33.json │ │ ├── back4t_34.json │ │ ├── back4t_35.json │ │ ├── back4t_41.json │ │ ├── back4t_42.json │ │ ├── back4t_43.json │ │ ├── back4t_44.json │ │ ├── back4t_45.json │ │ ├── back4t_51.json │ │ ├── back4t_52.json │ │ ├── back4t_53.json │ │ ├── back4t_54.json │ │ ├── back4t_55.json │ │ ├── back4t_56.json │ │ ├── back4t_61.json │ │ ├── back4t_62.json │ │ ├── back4t_63.json │ │ ├── back4t_64.json │ │ ├── back4t_65.json │ │ ├── back4t_71.json │ │ ├── back4t_72.json │ │ ├── back4t_73.json │ │ ├── back4t_74.json │ │ └── back4t_75.json │ ├── Backroom/ │ │ ├── TBD_Sign.json.fragment │ │ ├── context-frontyard.json │ │ ├── context-hall.json │ │ ├── context-library.json │ │ ├── context-simple.json │ │ ├── context-staging.json │ │ ├── context-steve1.json │ │ ├── context-steve2.json │ │ ├── context-table.json │ │ ├── context-test.json │ │ ├── context-turf.json │ │ └── context-vendo.json │ ├── Beach/ │ │ ├── beach_0a.json │ │ ├── beach_0b.json │ │ ├── beach_0c.json │ │ ├── beach_0d.json │ │ ├── beach_0e.json │ │ ├── beach_0f.json │ │ ├── beach_1a.json │ │ ├── beach_1b.json │ │ ├── beach_1c.json │ │ ├── beach_1d.json │ │ ├── beach_1e.json │ │ ├── beach_1f.json │ │ ├── beach_1g.json │ │ ├── beach_2a.json │ │ ├── beach_2b.json │ │ ├── beach_2c.json │ │ ├── beach_2d.json │ │ ├── beach_2e.json │ │ └── beach_2f.json │ ├── Capture_flag/ │ │ ├── CTF_6405.json │ │ ├── CTF_7000.json │ │ ├── CTF_7001.json │ │ ├── CTF_7002.json │ │ ├── CTF_7003.json │ │ ├── CTF_7004.json │ │ ├── CTF_7010.json │ │ ├── CTF_7011.json │ │ ├── CTF_7012.json │ │ ├── CTF_7013.json │ │ ├── CTF_7014.json │ │ ├── CTF_7015.json │ │ ├── CTF_7016.json │ │ ├── CTF_7017.json │ │ ├── CTF_7018.json │ │ ├── CTF_7019.json │ │ └── CTF_7020.json │ ├── Desert/ │ │ ├── Desert_1a.json │ │ ├── Desert_1b.json │ │ ├── Desert_1c.json │ │ ├── Desert_1d.json │ │ ├── Desert_1e.json │ │ ├── Desert_1f.json │ │ ├── Desert_2a.json │ │ ├── Desert_2b.json │ │ ├── Desert_2c.json │ │ ├── Desert_2d.json │ │ ├── Desert_2e.json │ │ ├── Desert_2f.json │ │ ├── Desert_3a.json │ │ ├── Desert_3b.json │ │ ├── Desert_3c.json │ │ ├── Desert_3d.json │ │ ├── Desert_3e.json │ │ ├── Desert_3f.json │ │ ├── Desert_4a.json │ │ ├── Desert_4b.json │ │ ├── Desert_4c.json │ │ ├── Desert_4d.json │ │ ├── Desert_4e.json │ │ ├── Desert_4f.json │ │ ├── Desert_5a.json │ │ ├── Desert_5b.json │ │ ├── Desert_5c.json │ │ ├── Desert_5d.json │ │ ├── Desert_5e.json │ │ └── Desert_5f.json │ ├── Dnalsi/ │ │ ├── dnalsi_02.json │ │ ├── dnalsi_03.json │ │ ├── dnalsi_04.json │ │ ├── dnalsi_05.json │ │ ├── dnalsi_08.json │ │ ├── dnalsi_09.json │ │ ├── dnalsi_0a.json │ │ ├── dnalsi_11.json │ │ ├── dnalsi_12.json │ │ ├── dnalsi_15.json │ │ ├── dnalsi_18.json │ │ ├── dnalsi_19.json │ │ ├── dnalsi_1a.json │ │ ├── dnalsi_1b.json │ │ ├── dnalsi_1c.json │ │ ├── dnalsi_1d.json │ │ ├── dnalsi_21.json │ │ ├── dnalsi_25.json │ │ ├── dnalsi_26.json │ │ ├── dnalsi_28.json │ │ ├── dnalsi_29.json │ │ ├── dnalsi_2a.json │ │ ├── dnalsi_2b.json │ │ ├── dnalsi_2c.json │ │ ├── dnalsi_2d.json │ │ ├── dnalsi_30.json │ │ ├── dnalsi_31.json │ │ ├── dnalsi_36.json │ │ ├── dnalsi_37.json │ │ ├── dnalsi_38.json │ │ ├── dnalsi_39.json │ │ ├── dnalsi_3a.json │ │ ├── dnalsi_3b.json │ │ ├── dnalsi_3c.json │ │ ├── dnalsi_3d.json │ │ ├── dnalsi_40.json │ │ ├── dnalsi_47.json │ │ ├── dnalsi_48.json │ │ ├── dnalsi_49.json │ │ ├── dnalsi_4a.json │ │ ├── dnalsi_4b.json │ │ ├── dnalsi_4c.json │ │ ├── dnalsi_50.json │ │ ├── dnalsi_57.json │ │ ├── dnalsi_58.json │ │ ├── dnalsi_59.json │ │ ├── dnalsi_5a.json │ │ ├── dnalsi_5b.json │ │ ├── dnalsi_5c.json │ │ ├── dnalsi_60.json │ │ ├── dnalsi_61.json │ │ ├── dnalsi_62.json │ │ ├── dnalsi_63.json │ │ ├── dnalsi_64.json │ │ ├── dnalsi_65.json │ │ ├── dnalsi_66.json │ │ ├── dnalsi_67.json │ │ ├── dnalsi_68.json │ │ ├── dnalsi_69.json │ │ ├── dnalsi_6a.json │ │ ├── dnalsi_6b.json │ │ ├── dnalsi_6c.json │ │ ├── dnalsi_71.json │ │ ├── dnalsi_72.json │ │ ├── dnalsi_73.json │ │ ├── dnalsi_74.json │ │ ├── dnalsi_75.json │ │ ├── dnalsi_76.json │ │ ├── dnalsi_78.json │ │ ├── dnalsi_79.json │ │ ├── dnalsi_7a.json │ │ ├── dnalsi_7b.json │ │ ├── dnalsi_7c.json │ │ ├── dnalsi_82.json │ │ ├── dnalsi_83.json │ │ ├── dnalsi_84.json │ │ ├── dnalsi_85.json │ │ ├── dnalsi_92.json │ │ ├── dnalsi_93.json │ │ ├── dnalsi_94.json │ │ ├── dnalsi_cave1_0a.json │ │ ├── dnalsi_cave1_0b.json │ │ ├── dnalsi_cave1_1a.json │ │ ├── dnalsi_cave1_1b.json │ │ ├── dnalsi_cave2_0c.json │ │ ├── dnalsi_cave2_0d.json │ │ ├── dnalsi_cave2_1a.json │ │ ├── dnalsi_cave2_1b.json │ │ ├── dnalsi_cave2_1c.json │ │ ├── dnalsi_cave2_1d.json │ │ ├── dnalsi_cave2_1e.json │ │ ├── dnalsi_cave2_2a.json │ │ ├── dnalsi_cave2_2b.json │ │ ├── dnalsi_cave2_2c.json │ │ ├── dnalsi_cave2_2d.json │ │ ├── dnalsi_cave2_2e.json │ │ ├── dnalsi_cave2_3a.json │ │ ├── dnalsi_cave3_0c.json │ │ ├── dnalsi_cave3_1a.json │ │ ├── dnalsi_cave3_1c.json │ │ ├── dnalsi_cave3_2a.json │ │ ├── dnalsi_cave3_2b.json │ │ ├── dnalsi_cave3_2c.json │ │ └── dnalsi_cave3_3c.json │ ├── Empty/ │ │ └── context-empty.json │ ├── HabitatDocuments.html │ ├── Hatchery/ │ │ └── hatchery.json │ ├── Hell/ │ │ └── hell_1a.json │ ├── I5/ │ │ ├── I5_1310.json │ │ ├── I5_7200.json │ │ ├── I5_7201.json │ │ ├── I5_7202.json │ │ ├── I5_7203.json │ │ ├── I5_7204.json │ │ ├── I5_7205.json │ │ ├── I5_7206.json │ │ ├── I5_7207.json │ │ ├── I5_7208.json │ │ ├── I5_7209.json │ │ └── I5_7210.json │ ├── Makefile │ ├── Popustop/ │ │ ├── 136.elby.line54.json │ │ ├── 136.elby.line56.json │ │ ├── 144.elby.line154.json │ │ ├── 144.elby.line156.json │ │ ├── 152.elby.line254.json │ │ ├── 152.elby.line256.json │ │ ├── 160.elby.line354.json │ │ ├── 160.elby.line356.json │ │ ├── 168.elby.line454.json │ │ ├── 168.elby.line456.json │ │ ├── 184.elby.line554.json │ │ ├── 184.elby.line556.json │ │ ├── 192.elby.line654.json │ │ ├── 192.elby.line656.json │ │ ├── 200.elby.line754.json │ │ ├── 200.elby.line756.json │ │ ├── 216.elby.line854.json │ │ ├── 216.elby.line856.json │ │ ├── 224.elby1000.line954.json │ │ ├── 224.elby1000.line956.json │ │ ├── 232.elby1000.line1054.json │ │ ├── 232.elby1000.line1056.json │ │ ├── Popustop.100.json │ │ ├── Popustop.1000.json │ │ ├── Popustop.1001.json │ │ ├── Popustop.1002.json │ │ ├── Popustop.1003.json │ │ ├── Popustop.1004.json │ │ ├── Popustop.1005.json │ │ ├── Popustop.1006.json │ │ ├── Popustop.1007.json │ │ ├── Popustop.1008.json │ │ ├── Popustop.1009.json │ │ ├── Popustop.101.json │ │ ├── Popustop.1010.json │ │ ├── Popustop.1011.json │ │ ├── Popustop.1012.json │ │ ├── Popustop.1013.json │ │ ├── Popustop.1014.json │ │ ├── Popustop.1015.json │ │ ├── Popustop.1016.json │ │ ├── Popustop.1017.json │ │ ├── Popustop.1018.json │ │ ├── Popustop.1019.json │ │ ├── Popustop.102.json │ │ ├── Popustop.1020.json │ │ ├── Popustop.1021.json │ │ ├── Popustop.1022.json │ │ ├── Popustop.1023.json │ │ ├── Popustop.1024.json │ │ ├── Popustop.1025.json │ │ ├── Popustop.1026.json │ │ ├── Popustop.1027.json │ │ ├── Popustop.1028.json │ │ ├── Popustop.1029.json │ │ ├── Popustop.103.json │ │ ├── Popustop.1030.json │ │ ├── Popustop.1031.json │ │ ├── Popustop.1032.json │ │ ├── Popustop.1033.json │ │ ├── Popustop.1034.json │ │ ├── Popustop.1035.json │ │ ├── Popustop.1036.json │ │ ├── Popustop.1037.json │ │ ├── Popustop.1038.json │ │ ├── Popustop.1039.json │ │ ├── Popustop.104.json │ │ ├── Popustop.1040.json │ │ ├── Popustop.1041.json │ │ ├── Popustop.1042.json │ │ ├── Popustop.1043.json │ │ ├── Popustop.1044.json │ │ ├── Popustop.1045.json │ │ ├── Popustop.1046.json │ │ ├── Popustop.1047.json │ │ ├── Popustop.1048.json │ │ ├── Popustop.1049.json │ │ ├── Popustop.105.json │ │ ├── Popustop.1050.json │ │ ├── Popustop.1051.json │ │ ├── Popustop.1052.json │ │ ├── Popustop.1053.json │ │ ├── Popustop.1054.json │ │ ├── Popustop.1055.json │ │ ├── Popustop.1056.json │ │ ├── Popustop.1057.json │ │ ├── Popustop.1058.json │ │ ├── Popustop.1059.json │ │ ├── Popustop.106.json │ │ ├── Popustop.1060.json │ │ ├── Popustop.1061.json │ │ ├── Popustop.1062.json │ │ ├── Popustop.1063.json │ │ ├── Popustop.1064.json │ │ ├── Popustop.1065.json │ │ ├── Popustop.1066.json │ │ ├── Popustop.1067.json │ │ ├── Popustop.1068.json │ │ ├── Popustop.1069.json │ │ ├── Popustop.107.json │ │ ├── Popustop.1070.json │ │ ├── Popustop.1071.json │ │ ├── Popustop.108.json │ │ ├── Popustop.109.json │ │ ├── Popustop.110.json │ │ ├── Popustop.1100.json │ │ ├── Popustop.1101.json │ │ ├── Popustop.1102.json │ │ ├── Popustop.1103.json │ │ ├── Popustop.1104.json │ │ ├── Popustop.1105.json │ │ ├── Popustop.1106.json │ │ ├── Popustop.1107.json │ │ ├── Popustop.1108.json │ │ ├── Popustop.1109.json │ │ ├── Popustop.111.json │ │ ├── Popustop.1110.json │ │ ├── Popustop.1111.json │ │ ├── Popustop.1112.json │ │ ├── Popustop.1113.json │ │ ├── Popustop.1114.json │ │ ├── Popustop.1115.json │ │ ├── Popustop.1116.json │ │ ├── Popustop.1117.json │ │ ├── Popustop.1118.json │ │ ├── Popustop.1119.json │ │ ├── Popustop.112.json │ │ ├── Popustop.1120.json │ │ ├── Popustop.1121.json │ │ ├── Popustop.1122.json │ │ ├── Popustop.1123.json │ │ ├── Popustop.1124.json │ │ ├── Popustop.1125.json │ │ ├── Popustop.1126.json │ │ ├── Popustop.1127.json │ │ ├── Popustop.1128.json │ │ ├── Popustop.1129.json │ │ ├── Popustop.113.json │ │ ├── Popustop.1130.json │ │ ├── Popustop.1131.json │ │ ├── Popustop.1132.json │ │ ├── Popustop.1133.json │ │ ├── Popustop.1134.json │ │ ├── Popustop.1135.json │ │ ├── Popustop.1136.json │ │ ├── Popustop.1137.json │ │ ├── Popustop.1138.json │ │ ├── Popustop.1139.json │ │ ├── Popustop.114.json │ │ ├── Popustop.1140.json │ │ ├── Popustop.1141.json │ │ ├── Popustop.1142.json │ │ ├── Popustop.1143.json │ │ ├── Popustop.1144.json │ │ ├── Popustop.1145.json │ │ ├── Popustop.1146.json │ │ ├── Popustop.1147.json │ │ ├── Popustop.1148.json │ │ ├── Popustop.1149.json │ │ ├── Popustop.115.json │ │ ├── Popustop.1150.json │ │ ├── Popustop.1151.json │ │ ├── Popustop.1152.json │ │ ├── Popustop.1153.json │ │ ├── Popustop.1154.json │ │ ├── Popustop.1155.json │ │ ├── Popustop.1156.json │ │ ├── Popustop.1157.json │ │ ├── Popustop.1158.json │ │ ├── Popustop.1159.json │ │ ├── Popustop.116.json │ │ ├── Popustop.1160.json │ │ ├── Popustop.1161.json │ │ ├── Popustop.1162.json │ │ ├── Popustop.1163.json │ │ ├── Popustop.1164.json │ │ ├── Popustop.1165.json │ │ ├── Popustop.1166.json │ │ ├── Popustop.1167.json │ │ ├── Popustop.1168.json │ │ ├── Popustop.1169.json │ │ ├── Popustop.117.json │ │ ├── Popustop.1170.json │ │ ├── Popustop.1171.json │ │ ├── Popustop.118.json │ │ ├── Popustop.119.json │ │ ├── Popustop.120.json │ │ ├── Popustop.121.json │ │ ├── Popustop.122.json │ │ ├── Popustop.123.json │ │ ├── Popustop.124.json │ │ ├── Popustop.125.json │ │ ├── Popustop.126.json │ │ ├── Popustop.127.json │ │ ├── Popustop.128.json │ │ ├── Popustop.129.json │ │ ├── Popustop.130.json │ │ ├── Popustop.131.json │ │ ├── Popustop.132.json │ │ ├── Popustop.133.json │ │ ├── Popustop.134.json │ │ ├── Popustop.135.json │ │ ├── Popustop.136.json │ │ ├── Popustop.137.json │ │ ├── Popustop.138.json │ │ ├── Popustop.139.json │ │ ├── Popustop.140.json │ │ ├── Popustop.141.json │ │ ├── Popustop.142.json │ │ ├── Popustop.143.json │ │ ├── Popustop.144.json │ │ ├── Popustop.145.json │ │ ├── Popustop.146.json │ │ ├── Popustop.147.json │ │ ├── Popustop.148.json │ │ ├── Popustop.149.json │ │ ├── Popustop.150.json │ │ ├── Popustop.151.json │ │ ├── Popustop.152.json │ │ ├── Popustop.153.json │ │ ├── Popustop.154.json │ │ ├── Popustop.155.json │ │ ├── Popustop.156.json │ │ ├── Popustop.157.json │ │ ├── Popustop.158.json │ │ ├── Popustop.159.json │ │ ├── Popustop.160.json │ │ ├── Popustop.161.json │ │ ├── Popustop.162.json │ │ ├── Popustop.163.json │ │ ├── Popustop.164.json │ │ ├── Popustop.165.json │ │ ├── Popustop.166.json │ │ ├── Popustop.167.json │ │ ├── Popustop.168.json │ │ ├── Popustop.169.json │ │ ├── Popustop.170.json │ │ ├── Popustop.171.json │ │ ├── Popustop.200.json │ │ ├── Popustop.201.json │ │ ├── Popustop.202.json │ │ ├── Popustop.203.json │ │ ├── Popustop.204.json │ │ ├── Popustop.205.json │ │ ├── Popustop.206.json │ │ ├── Popustop.207.json │ │ ├── Popustop.208.json │ │ ├── Popustop.209.json │ │ ├── Popustop.210.json │ │ ├── Popustop.211.json │ │ ├── Popustop.212.json │ │ ├── Popustop.213.json │ │ ├── Popustop.214.json │ │ ├── Popustop.215.json │ │ ├── Popustop.216.json │ │ ├── Popustop.217.json │ │ ├── Popustop.218.json │ │ ├── Popustop.219.json │ │ ├── Popustop.220.json │ │ ├── Popustop.221.json │ │ ├── Popustop.222.json │ │ ├── Popustop.223.json │ │ ├── Popustop.224.json │ │ ├── Popustop.225.json │ │ ├── Popustop.226.json │ │ ├── Popustop.227.json │ │ ├── Popustop.228.json │ │ ├── Popustop.229.json │ │ ├── Popustop.230.json │ │ ├── Popustop.231.json │ │ ├── Popustop.232.json │ │ ├── Popustop.233.json │ │ ├── Popustop.234.json │ │ ├── Popustop.235.json │ │ ├── Popustop.236.json │ │ ├── Popustop.237.json │ │ ├── Popustop.238.json │ │ ├── Popustop.239.json │ │ ├── Popustop.240.json │ │ ├── Popustop.241.json │ │ ├── Popustop.242.json │ │ ├── Popustop.243.json │ │ ├── Popustop.244.json │ │ ├── Popustop.245.json │ │ ├── Popustop.246.json │ │ ├── Popustop.247.json │ │ ├── Popustop.248.json │ │ ├── Popustop.249.json │ │ ├── Popustop.250.json │ │ ├── Popustop.251.json │ │ ├── Popustop.252.json │ │ ├── Popustop.253.json │ │ ├── Popustop.254.json │ │ ├── Popustop.255.json │ │ ├── Popustop.256.json │ │ ├── Popustop.257.json │ │ ├── Popustop.258.json │ │ ├── Popustop.259.json │ │ ├── Popustop.260.json │ │ ├── Popustop.261.json │ │ ├── Popustop.262.json │ │ ├── Popustop.263.json │ │ ├── Popustop.264.json │ │ ├── Popustop.265.json │ │ ├── Popustop.266.json │ │ ├── Popustop.267.json │ │ ├── Popustop.268.json │ │ ├── Popustop.269.json │ │ ├── Popustop.270.json │ │ ├── Popustop.271.json │ │ ├── Popustop.300.json │ │ ├── Popustop.301.json │ │ ├── Popustop.302.json │ │ ├── Popustop.303.json │ │ ├── Popustop.304.json │ │ ├── Popustop.305.json │ │ ├── Popustop.306.json │ │ ├── Popustop.307.json │ │ ├── Popustop.308.json │ │ ├── Popustop.309.json │ │ ├── Popustop.310.json │ │ ├── Popustop.311.json │ │ ├── Popustop.312.json │ │ ├── Popustop.313.json │ │ ├── Popustop.314.json │ │ ├── Popustop.315.json │ │ ├── Popustop.316.json │ │ ├── Popustop.317.json │ │ ├── Popustop.318.json │ │ ├── Popustop.319.json │ │ ├── Popustop.320.json │ │ ├── Popustop.321.json │ │ ├── Popustop.322.json │ │ ├── Popustop.323.json │ │ ├── Popustop.324.json │ │ ├── Popustop.325.json │ │ ├── Popustop.326.json │ │ ├── Popustop.327.json │ │ ├── Popustop.328.json │ │ ├── Popustop.329.json │ │ ├── Popustop.330.json │ │ ├── Popustop.331.json │ │ ├── Popustop.332.json │ │ ├── Popustop.333.json │ │ ├── Popustop.334.json │ │ ├── Popustop.335.json │ │ ├── Popustop.336.json │ │ ├── Popustop.337.json │ │ ├── Popustop.338.json │ │ ├── Popustop.339.json │ │ ├── Popustop.340.json │ │ ├── Popustop.341.json │ │ ├── Popustop.342.json │ │ ├── Popustop.343.json │ │ ├── Popustop.344.json │ │ ├── Popustop.345.json │ │ ├── Popustop.346.json │ │ ├── Popustop.347.json │ │ ├── Popustop.348.json │ │ ├── Popustop.349.json │ │ ├── Popustop.350.json │ │ ├── Popustop.351.json │ │ ├── Popustop.352.json │ │ ├── Popustop.353.json │ │ ├── Popustop.354.json │ │ ├── Popustop.355.json │ │ ├── Popustop.356.json │ │ ├── Popustop.357.json │ │ ├── Popustop.358.json │ │ ├── Popustop.359.json │ │ ├── Popustop.360.json │ │ ├── Popustop.361.json │ │ ├── Popustop.362.json │ │ ├── Popustop.363.json │ │ ├── Popustop.364.json │ │ ├── Popustop.365.json │ │ ├── Popustop.366.json │ │ ├── Popustop.367.json │ │ ├── Popustop.368.json │ │ ├── Popustop.369.json │ │ ├── Popustop.370.json │ │ ├── Popustop.371.json │ │ ├── Popustop.400.json │ │ ├── Popustop.401.json │ │ ├── Popustop.402.json │ │ ├── Popustop.403.json │ │ ├── Popustop.404.json │ │ ├── Popustop.405.json │ │ ├── Popustop.406.json │ │ ├── Popustop.407.json │ │ ├── Popustop.408.json │ │ ├── Popustop.409.json │ │ ├── Popustop.410.json │ │ ├── Popustop.411.json │ │ ├── Popustop.412.json │ │ ├── Popustop.413.json │ │ ├── Popustop.414.json │ │ ├── Popustop.415.json │ │ ├── Popustop.416.json │ │ ├── Popustop.417.json │ │ ├── Popustop.418.json │ │ ├── Popustop.419.json │ │ ├── Popustop.420.json │ │ ├── Popustop.421.json │ │ ├── Popustop.422.json │ │ ├── Popustop.423.json │ │ ├── Popustop.424.json │ │ ├── Popustop.425.json │ │ ├── Popustop.426.json │ │ ├── Popustop.427.json │ │ ├── Popustop.428.json │ │ ├── Popustop.429.json │ │ ├── Popustop.430.json │ │ ├── Popustop.431.json │ │ ├── Popustop.432.json │ │ ├── Popustop.433.json │ │ ├── Popustop.434.json │ │ ├── Popustop.435.json │ │ ├── Popustop.436.json │ │ ├── Popustop.437.json │ │ ├── Popustop.438.json │ │ ├── Popustop.439.json │ │ ├── Popustop.440.json │ │ ├── Popustop.441.json │ │ ├── Popustop.442.json │ │ ├── Popustop.443.json │ │ ├── Popustop.444.json │ │ ├── Popustop.445.json │ │ ├── Popustop.446.json │ │ ├── Popustop.447.json │ │ ├── Popustop.448.json │ │ ├── Popustop.449.json │ │ ├── Popustop.450.json │ │ ├── Popustop.451.json │ │ ├── Popustop.452.json │ │ ├── Popustop.453.json │ │ ├── Popustop.454.json │ │ ├── Popustop.455.json │ │ ├── Popustop.456.json │ │ ├── Popustop.457.json │ │ ├── Popustop.458.json │ │ ├── Popustop.459.json │ │ ├── Popustop.460.json │ │ ├── Popustop.461.json │ │ ├── Popustop.462.json │ │ ├── Popustop.463.json │ │ ├── Popustop.464.json │ │ ├── Popustop.465.json │ │ ├── Popustop.466.json │ │ ├── Popustop.467.json │ │ ├── Popustop.468.json │ │ ├── Popustop.469.json │ │ ├── Popustop.470.json │ │ ├── Popustop.471.json │ │ ├── Popustop.500.json │ │ ├── Popustop.501.json │ │ ├── Popustop.502.json │ │ ├── Popustop.503.json │ │ ├── Popustop.504.json │ │ ├── Popustop.505.json │ │ ├── Popustop.506.json │ │ ├── Popustop.507.json │ │ ├── Popustop.508.json │ │ ├── Popustop.509.json │ │ ├── Popustop.510.json │ │ ├── Popustop.511.json │ │ ├── Popustop.512.json │ │ ├── Popustop.513.json │ │ ├── Popustop.514.json │ │ ├── Popustop.515.json │ │ ├── Popustop.516.json │ │ ├── Popustop.517.json │ │ ├── Popustop.518.json │ │ ├── Popustop.519.json │ │ ├── Popustop.520.json │ │ ├── Popustop.521.json │ │ ├── Popustop.522.json │ │ ├── Popustop.523.json │ │ ├── Popustop.524.json │ │ ├── Popustop.525.json │ │ ├── Popustop.526.json │ │ ├── Popustop.527.json │ │ ├── Popustop.528.json │ │ ├── Popustop.529.json │ │ ├── Popustop.530.json │ │ ├── Popustop.531.json │ │ ├── Popustop.532.json │ │ ├── Popustop.533.json │ │ ├── Popustop.534.json │ │ ├── Popustop.535.json │ │ ├── Popustop.536.json │ │ ├── Popustop.537.json │ │ ├── Popustop.538.json │ │ ├── Popustop.539.json │ │ ├── Popustop.540.json │ │ ├── Popustop.541.json │ │ ├── Popustop.542.json │ │ ├── Popustop.543.json │ │ ├── Popustop.544.json │ │ ├── Popustop.545.json │ │ ├── Popustop.546.json │ │ ├── Popustop.547.json │ │ ├── Popustop.548.json │ │ ├── Popustop.549.json │ │ ├── Popustop.550.json │ │ ├── Popustop.551.json │ │ ├── Popustop.552.json │ │ ├── Popustop.553.json │ │ ├── Popustop.554.json │ │ ├── Popustop.555.json │ │ ├── Popustop.556.json │ │ ├── Popustop.557.json │ │ ├── Popustop.558.json │ │ ├── Popustop.559.json │ │ ├── Popustop.560.json │ │ ├── Popustop.561.json │ │ ├── Popustop.562.json │ │ ├── Popustop.563.json │ │ ├── Popustop.564.json │ │ ├── Popustop.565.json │ │ ├── Popustop.566.json │ │ ├── Popustop.567.json │ │ ├── Popustop.568.json │ │ ├── Popustop.569.json │ │ ├── Popustop.570.json │ │ ├── Popustop.571.json │ │ ├── Popustop.600.json │ │ ├── Popustop.601.json │ │ ├── Popustop.602.json │ │ ├── Popustop.603.json │ │ ├── Popustop.604.json │ │ ├── Popustop.605.json │ │ ├── Popustop.606.json │ │ ├── Popustop.607.json │ │ ├── Popustop.608.json │ │ ├── Popustop.609.json │ │ ├── Popustop.610.json │ │ ├── Popustop.611.json │ │ ├── Popustop.612.json │ │ ├── Popustop.613.json │ │ ├── Popustop.614.json │ │ ├── Popustop.615.json │ │ ├── Popustop.616.json │ │ ├── Popustop.617.json │ │ ├── Popustop.618.json │ │ ├── Popustop.619.json │ │ ├── Popustop.620.json │ │ ├── Popustop.621.json │ │ ├── Popustop.622.json │ │ ├── Popustop.623.json │ │ ├── Popustop.624.json │ │ ├── Popustop.625.json │ │ ├── Popustop.626.json │ │ ├── Popustop.627.json │ │ ├── Popustop.628.json │ │ ├── Popustop.629.json │ │ ├── Popustop.630.json │ │ ├── Popustop.631.json │ │ ├── Popustop.632.json │ │ ├── Popustop.633.json │ │ ├── Popustop.634.json │ │ ├── Popustop.635.json │ │ ├── Popustop.636.json │ │ ├── Popustop.637.json │ │ ├── Popustop.638.json │ │ ├── Popustop.639.json │ │ ├── Popustop.640.json │ │ ├── Popustop.641.json │ │ ├── Popustop.642.json │ │ ├── Popustop.643.json │ │ ├── Popustop.644.json │ │ ├── Popustop.645.json │ │ ├── Popustop.646.json │ │ ├── Popustop.647.json │ │ ├── Popustop.648.json │ │ ├── Popustop.649.json │ │ ├── Popustop.650.json │ │ ├── Popustop.651.json │ │ ├── Popustop.652.json │ │ ├── Popustop.653.json │ │ ├── Popustop.654.json │ │ ├── Popustop.655.json │ │ ├── Popustop.656.json │ │ ├── Popustop.657.json │ │ ├── Popustop.658.json │ │ ├── Popustop.659.json │ │ ├── Popustop.660.json │ │ ├── Popustop.661.json │ │ ├── Popustop.662.json │ │ ├── Popustop.663.json │ │ ├── Popustop.664.json │ │ ├── Popustop.665.json │ │ ├── Popustop.666.json │ │ ├── Popustop.667.json │ │ ├── Popustop.668.json │ │ ├── Popustop.669.json │ │ ├── Popustop.670.json │ │ ├── Popustop.671.json │ │ ├── Popustop.700.json │ │ ├── Popustop.701.json │ │ ├── Popustop.702.json │ │ ├── Popustop.703.json │ │ ├── Popustop.704.json │ │ ├── Popustop.705.json │ │ ├── Popustop.706.json │ │ ├── Popustop.707.json │ │ ├── Popustop.708.json │ │ ├── Popustop.709.json │ │ ├── Popustop.710.json │ │ ├── Popustop.711.json │ │ ├── Popustop.712.json │ │ ├── Popustop.713.json │ │ ├── Popustop.714.json │ │ ├── Popustop.715.json │ │ ├── Popustop.716.json │ │ ├── Popustop.717.json │ │ ├── Popustop.718.json │ │ ├── Popustop.719.json │ │ ├── Popustop.720.json │ │ ├── Popustop.721.json │ │ ├── Popustop.722.json │ │ ├── Popustop.723.json │ │ ├── Popustop.724.json │ │ ├── Popustop.725.json │ │ ├── Popustop.726.json │ │ ├── Popustop.727.json │ │ ├── Popustop.728.json │ │ ├── Popustop.729.json │ │ ├── Popustop.730.json │ │ ├── Popustop.731.json │ │ ├── Popustop.732.json │ │ ├── Popustop.733.json │ │ ├── Popustop.734.json │ │ ├── Popustop.735.json │ │ ├── Popustop.736.json │ │ ├── Popustop.737.json │ │ ├── Popustop.738.json │ │ ├── Popustop.739.json │ │ ├── Popustop.740.json │ │ ├── Popustop.741.json │ │ ├── Popustop.742.json │ │ ├── Popustop.743.json │ │ ├── Popustop.744.json │ │ ├── Popustop.745.json │ │ ├── Popustop.746.json │ │ ├── Popustop.747.json │ │ ├── Popustop.748.json │ │ ├── Popustop.749.json │ │ ├── Popustop.750.json │ │ ├── Popustop.751.json │ │ ├── Popustop.752.json │ │ ├── Popustop.753.json │ │ ├── Popustop.754.json │ │ ├── Popustop.755.json │ │ ├── Popustop.756.json │ │ ├── Popustop.757.json │ │ ├── Popustop.758.json │ │ ├── Popustop.759.json │ │ ├── Popustop.760.json │ │ ├── Popustop.761.json │ │ ├── Popustop.762.json │ │ ├── Popustop.763.json │ │ ├── Popustop.764.json │ │ ├── Popustop.765.json │ │ ├── Popustop.766.json │ │ ├── Popustop.767.json │ │ ├── Popustop.768.json │ │ ├── Popustop.769.json │ │ ├── Popustop.770.json │ │ ├── Popustop.771.json │ │ ├── Popustop.800.json │ │ ├── Popustop.801.json │ │ ├── Popustop.802.json │ │ ├── Popustop.803.json │ │ ├── Popustop.804.json │ │ ├── Popustop.805.json │ │ ├── Popustop.806.json │ │ ├── Popustop.807.json │ │ ├── Popustop.808.json │ │ ├── Popustop.809.json │ │ ├── Popustop.810.json │ │ ├── Popustop.811.json │ │ ├── Popustop.812.json │ │ ├── Popustop.813.json │ │ ├── Popustop.814.json │ │ ├── Popustop.815.json │ │ ├── Popustop.816.json │ │ ├── Popustop.817.json │ │ ├── Popustop.818.json │ │ ├── Popustop.819.json │ │ ├── Popustop.820.json │ │ ├── Popustop.821.json │ │ ├── Popustop.822.json │ │ ├── Popustop.823.json │ │ ├── Popustop.824.json │ │ ├── Popustop.825.json │ │ ├── Popustop.826.json │ │ ├── Popustop.827.json │ │ ├── Popustop.828.json │ │ ├── Popustop.829.json │ │ ├── Popustop.830.json │ │ ├── Popustop.831.json │ │ ├── Popustop.832.json │ │ ├── Popustop.833.json │ │ ├── Popustop.834.json │ │ ├── Popustop.835.json │ │ ├── Popustop.836.json │ │ ├── Popustop.837.json │ │ ├── Popustop.838.json │ │ ├── Popustop.839.json │ │ ├── Popustop.840.json │ │ ├── Popustop.841.json │ │ ├── Popustop.842.json │ │ ├── Popustop.843.json │ │ ├── Popustop.844.json │ │ ├── Popustop.845.json │ │ ├── Popustop.846.json │ │ ├── Popustop.847.json │ │ ├── Popustop.848.json │ │ ├── Popustop.849.json │ │ ├── Popustop.850.json │ │ ├── Popustop.851.json │ │ ├── Popustop.852.json │ │ ├── Popustop.853.json │ │ ├── Popustop.854.json │ │ ├── Popustop.855.json │ │ ├── Popustop.856.json │ │ ├── Popustop.857.json │ │ ├── Popustop.858.json │ │ ├── Popustop.859.json │ │ ├── Popustop.860.json │ │ ├── Popustop.861.json │ │ ├── Popustop.862.json │ │ ├── Popustop.863.json │ │ ├── Popustop.864.json │ │ ├── Popustop.865.json │ │ ├── Popustop.866.json │ │ ├── Popustop.867.json │ │ ├── Popustop.868.json │ │ ├── Popustop.869.json │ │ ├── Popustop.870.json │ │ ├── Popustop.871.json │ │ ├── Popustop.900.json │ │ ├── Popustop.901.json │ │ ├── Popustop.902.json │ │ ├── Popustop.903.json │ │ ├── Popustop.904.json │ │ ├── Popustop.905.json │ │ ├── Popustop.906.json │ │ ├── Popustop.907.json │ │ ├── Popustop.908.json │ │ ├── Popustop.909.json │ │ ├── Popustop.910.json │ │ ├── Popustop.911.json │ │ ├── Popustop.912.json │ │ ├── Popustop.913.json │ │ ├── Popustop.914.json │ │ ├── Popustop.915.json │ │ ├── Popustop.916.json │ │ ├── Popustop.917.json │ │ ├── Popustop.918.json │ │ ├── Popustop.919.json │ │ ├── Popustop.920.json │ │ ├── Popustop.921.json │ │ ├── Popustop.922.json │ │ ├── Popustop.923.json │ │ ├── Popustop.924.json │ │ ├── Popustop.925.json │ │ ├── Popustop.926.json │ │ ├── Popustop.927.json │ │ ├── Popustop.928.json │ │ ├── Popustop.929.json │ │ ├── Popustop.930.json │ │ ├── Popustop.931.json │ │ ├── Popustop.932.json │ │ ├── Popustop.933.json │ │ ├── Popustop.934.json │ │ ├── Popustop.935.json │ │ ├── Popustop.936.json │ │ ├── Popustop.937.json │ │ ├── Popustop.938.json │ │ ├── Popustop.939.json │ │ ├── Popustop.940.json │ │ ├── Popustop.941.json │ │ ├── Popustop.942.json │ │ ├── Popustop.943.json │ │ ├── Popustop.944.json │ │ ├── Popustop.945.json │ │ ├── Popustop.946.json │ │ ├── Popustop.947.json │ │ ├── Popustop.948.json │ │ ├── Popustop.949.json │ │ ├── Popustop.950.json │ │ ├── Popustop.951.json │ │ ├── Popustop.952.json │ │ ├── Popustop.953.json │ │ ├── Popustop.954.json │ │ ├── Popustop.955.json │ │ ├── Popustop.956.json │ │ ├── Popustop.957.json │ │ ├── Popustop.958.json │ │ ├── Popustop.959.json │ │ ├── Popustop.960.json │ │ ├── Popustop.961.json │ │ ├── Popustop.962.json │ │ ├── Popustop.963.json │ │ ├── Popustop.964.json │ │ ├── Popustop.965.json │ │ ├── Popustop.966.json │ │ ├── Popustop.967.json │ │ ├── Popustop.968.json │ │ ├── Popustop.969.json │ │ ├── Popustop.970.json │ │ ├── Popustop.971.json │ │ ├── Popustop.afront2.line1106.json │ │ ├── Popustop.aprominade2.line1107.json │ │ ├── Popustop.bboard.line4.json │ │ ├── Popustop.elevator1.line1055.json │ │ ├── Popustop.elevator1.line155.json │ │ ├── Popustop.elevator1.line255.json │ │ ├── Popustop.elevator1.line355.json │ │ ├── Popustop.elevator1.line455.json │ │ ├── Popustop.elevator1.line55.json │ │ ├── Popustop.elevator1.line555.json │ │ ├── Popustop.elevator1.line655.json │ │ ├── Popustop.elevator1.line755.json │ │ ├── Popustop.elevator1.line855.json │ │ ├── Popustop.elevator1.line955.json │ │ ├── Popustop.hall1.line108.json │ │ ├── Popustop.hall1.line125.json │ │ ├── Popustop.hall1.line141.json │ │ ├── Popustop.hall1.line160.json │ │ ├── Popustop.hall1.line176.json │ │ ├── Popustop.hall1.line192.json │ │ ├── Popustop.hall1.line208.json │ │ ├── Popustop.hall1.line225.json │ │ ├── Popustop.hall1.line241.json │ │ ├── Popustop.hall1.line25.json │ │ ├── Popustop.hall1.line260.json │ │ ├── Popustop.hall1.line276.json │ │ ├── Popustop.hall1.line292.json │ │ ├── Popustop.hall1.line308.json │ │ ├── Popustop.hall1.line325.json │ │ ├── Popustop.hall1.line341.json │ │ ├── Popustop.hall1.line360.json │ │ ├── Popustop.hall1.line376.json │ │ ├── Popustop.hall1.line392.json │ │ ├── Popustop.hall1.line408.json │ │ ├── Popustop.hall1.line41.json │ │ ├── Popustop.hall1.line425.json │ │ ├── Popustop.hall1.line441.json │ │ ├── Popustop.hall1.line460.json │ │ ├── Popustop.hall1.line476.json │ │ ├── Popustop.hall1.line492.json │ │ ├── Popustop.hall1.line508.json │ │ ├── Popustop.hall1.line525.json │ │ ├── Popustop.hall1.line541.json │ │ ├── Popustop.hall1.line560.json │ │ ├── Popustop.hall1.line576.json │ │ ├── Popustop.hall1.line592.json │ │ ├── Popustop.hall1.line60.json │ │ ├── Popustop.hall1.line608.json │ │ ├── Popustop.hall1.line625.json │ │ ├── Popustop.hall1.line641.json │ │ ├── Popustop.hall1.line660.json │ │ ├── Popustop.hall1.line676.json │ │ ├── Popustop.hall1.line692.json │ │ ├── Popustop.hall1.line708.json │ │ ├── Popustop.hall1.line725.json │ │ ├── Popustop.hall1.line741.json │ │ ├── Popustop.hall1.line76.json │ │ ├── Popustop.hall1.line760.json │ │ ├── Popustop.hall1.line776.json │ │ ├── Popustop.hall1.line792.json │ │ ├── Popustop.hall1.line8.json │ │ ├── Popustop.hall1.line808.json │ │ ├── Popustop.hall1.line825.json │ │ ├── Popustop.hall1.line841.json │ │ ├── Popustop.hall1.line860.json │ │ ├── Popustop.hall1.line876.json │ │ ├── Popustop.hall1.line892.json │ │ ├── Popustop.hall1.line92.json │ │ ├── Popustop.hall11000.line1008.json │ │ ├── Popustop.hall11000.line1025.json │ │ ├── Popustop.hall11000.line1041.json │ │ ├── Popustop.hall11000.line1060.json │ │ ├── Popustop.hall11000.line1076.json │ │ ├── Popustop.hall11000.line1092.json │ │ ├── Popustop.hall11000.line908.json │ │ ├── Popustop.hall11000.line925.json │ │ ├── Popustop.hall11000.line941.json │ │ ├── Popustop.hall11000.line960.json │ │ ├── Popustop.hall11000.line976.json │ │ ├── Popustop.hall11000.line992.json │ │ ├── Popustop.hall2.line112.json │ │ ├── Popustop.hall2.line12.json │ │ ├── Popustop.hall2.line129.json │ │ ├── Popustop.hall2.line145.json │ │ ├── Popustop.hall2.line164.json │ │ ├── Popustop.hall2.line180.json │ │ ├── Popustop.hall2.line196.json │ │ ├── Popustop.hall2.line212.json │ │ ├── Popustop.hall2.line229.json │ │ ├── Popustop.hall2.line245.json │ │ ├── Popustop.hall2.line264.json │ │ ├── Popustop.hall2.line280.json │ │ ├── Popustop.hall2.line29.json │ │ ├── Popustop.hall2.line296.json │ │ ├── Popustop.hall2.line312.json │ │ ├── Popustop.hall2.line329.json │ │ ├── Popustop.hall2.line345.json │ │ ├── Popustop.hall2.line364.json │ │ ├── Popustop.hall2.line380.json │ │ ├── Popustop.hall2.line396.json │ │ ├── Popustop.hall2.line412.json │ │ ├── Popustop.hall2.line429.json │ │ ├── Popustop.hall2.line445.json │ │ ├── Popustop.hall2.line45.json │ │ ├── Popustop.hall2.line464.json │ │ ├── Popustop.hall2.line480.json │ │ ├── Popustop.hall2.line496.json │ │ ├── Popustop.hall2.line512.json │ │ ├── Popustop.hall2.line529.json │ │ ├── Popustop.hall2.line545.json │ │ ├── Popustop.hall2.line564.json │ │ ├── Popustop.hall2.line580.json │ │ ├── Popustop.hall2.line596.json │ │ ├── Popustop.hall2.line612.json │ │ ├── Popustop.hall2.line629.json │ │ ├── Popustop.hall2.line64.json │ │ ├── Popustop.hall2.line645.json │ │ ├── Popustop.hall2.line664.json │ │ ├── Popustop.hall2.line680.json │ │ ├── Popustop.hall2.line696.json │ │ ├── Popustop.hall2.line712.json │ │ ├── Popustop.hall2.line729.json │ │ ├── Popustop.hall2.line745.json │ │ ├── Popustop.hall2.line764.json │ │ ├── Popustop.hall2.line780.json │ │ ├── Popustop.hall2.line796.json │ │ ├── Popustop.hall2.line80.json │ │ ├── Popustop.hall2.line812.json │ │ ├── Popustop.hall2.line829.json │ │ ├── Popustop.hall2.line845.json │ │ ├── Popustop.hall2.line864.json │ │ ├── Popustop.hall2.line880.json │ │ ├── Popustop.hall2.line896.json │ │ ├── Popustop.hall2.line96.json │ │ ├── Popustop.hall21000.line1012.json │ │ ├── Popustop.hall21000.line1029.json │ │ ├── Popustop.hall21000.line1045.json │ │ ├── Popustop.hall21000.line1064.json │ │ ├── Popustop.hall21000.line1080.json │ │ ├── Popustop.hall21000.line1096.json │ │ ├── Popustop.hall21000.line912.json │ │ ├── Popustop.hall21000.line929.json │ │ ├── Popustop.hall21000.line945.json │ │ ├── Popustop.hall21000.line964.json │ │ ├── Popustop.hall21000.line980.json │ │ ├── Popustop.hall21000.line996.json │ │ ├── Popustop.hall3.line100.json │ │ ├── Popustop.hall3.line116.json │ │ ├── Popustop.hall3.line133.json │ │ ├── Popustop.hall3.line149.json │ │ ├── Popustop.hall3.line16.json │ │ ├── Popustop.hall3.line168.json │ │ ├── Popustop.hall3.line184.json │ │ ├── Popustop.hall3.line200.json │ │ ├── Popustop.hall3.line216.json │ │ ├── Popustop.hall3.line233.json │ │ ├── Popustop.hall3.line249.json │ │ ├── Popustop.hall3.line268.json │ │ ├── Popustop.hall3.line284.json │ │ ├── Popustop.hall3.line300.json │ │ ├── Popustop.hall3.line316.json │ │ ├── Popustop.hall3.line33.json │ │ ├── Popustop.hall3.line333.json │ │ ├── Popustop.hall3.line349.json │ │ ├── Popustop.hall3.line368.json │ │ ├── Popustop.hall3.line384.json │ │ ├── Popustop.hall3.line400.json │ │ ├── Popustop.hall3.line416.json │ │ ├── Popustop.hall3.line433.json │ │ ├── Popustop.hall3.line449.json │ │ ├── Popustop.hall3.line468.json │ │ ├── Popustop.hall3.line484.json │ │ ├── Popustop.hall3.line49.json │ │ ├── Popustop.hall3.line500.json │ │ ├── Popustop.hall3.line516.json │ │ ├── Popustop.hall3.line533.json │ │ ├── Popustop.hall3.line549.json │ │ ├── Popustop.hall3.line568.json │ │ ├── Popustop.hall3.line584.json │ │ ├── Popustop.hall3.line600.json │ │ ├── Popustop.hall3.line616.json │ │ ├── Popustop.hall3.line633.json │ │ ├── Popustop.hall3.line649.json │ │ ├── Popustop.hall3.line668.json │ │ ├── Popustop.hall3.line68.json │ │ ├── Popustop.hall3.line684.json │ │ ├── Popustop.hall3.line700.json │ │ ├── Popustop.hall3.line716.json │ │ ├── Popustop.hall3.line733.json │ │ ├── Popustop.hall3.line749.json │ │ ├── Popustop.hall3.line768.json │ │ ├── Popustop.hall3.line784.json │ │ ├── Popustop.hall3.line800.json │ │ ├── Popustop.hall3.line816.json │ │ ├── Popustop.hall3.line833.json │ │ ├── Popustop.hall3.line84.json │ │ ├── Popustop.hall3.line849.json │ │ ├── Popustop.hall3.line868.json │ │ ├── Popustop.hall3.line884.json │ │ ├── Popustop.hall3.line900.json │ │ ├── Popustop.hall31000.line1000.json │ │ ├── Popustop.hall31000.line1016.json │ │ ├── Popustop.hall31000.line1033.json │ │ ├── Popustop.hall31000.line1049.json │ │ ├── Popustop.hall31000.line1068.json │ │ ├── Popustop.hall31000.line1084.json │ │ ├── Popustop.hall31000.line1100.json │ │ ├── Popustop.hall31000.line916.json │ │ ├── Popustop.hall31000.line933.json │ │ ├── Popustop.hall31000.line949.json │ │ ├── Popustop.hall31000.line968.json │ │ ├── Popustop.hall31000.line984.json │ │ ├── Popustop.hall4.line104.json │ │ ├── Popustop.hall4.line120.json │ │ ├── Popustop.hall4.line137.json │ │ ├── Popustop.hall4.line153.json │ │ ├── Popustop.hall4.line172.json │ │ ├── Popustop.hall4.line188.json │ │ ├── Popustop.hall4.line20.json │ │ ├── Popustop.hall4.line204.json │ │ ├── Popustop.hall4.line220.json │ │ ├── Popustop.hall4.line237.json │ │ ├── Popustop.hall4.line253.json │ │ ├── Popustop.hall4.line272.json │ │ ├── Popustop.hall4.line288.json │ │ ├── Popustop.hall4.line304.json │ │ ├── Popustop.hall4.line320.json │ │ ├── Popustop.hall4.line337.json │ │ ├── Popustop.hall4.line353.json │ │ ├── Popustop.hall4.line37.json │ │ ├── Popustop.hall4.line372.json │ │ ├── Popustop.hall4.line388.json │ │ ├── Popustop.hall4.line404.json │ │ ├── Popustop.hall4.line420.json │ │ ├── Popustop.hall4.line437.json │ │ ├── Popustop.hall4.line453.json │ │ ├── Popustop.hall4.line472.json │ │ ├── Popustop.hall4.line488.json │ │ ├── Popustop.hall4.line504.json │ │ ├── Popustop.hall4.line520.json │ │ ├── Popustop.hall4.line53.json │ │ ├── Popustop.hall4.line537.json │ │ ├── Popustop.hall4.line553.json │ │ ├── Popustop.hall4.line572.json │ │ ├── Popustop.hall4.line588.json │ │ ├── Popustop.hall4.line604.json │ │ ├── Popustop.hall4.line620.json │ │ ├── Popustop.hall4.line637.json │ │ ├── Popustop.hall4.line653.json │ │ ├── Popustop.hall4.line672.json │ │ ├── Popustop.hall4.line688.json │ │ ├── Popustop.hall4.line704.json │ │ ├── Popustop.hall4.line72.json │ │ ├── Popustop.hall4.line720.json │ │ ├── Popustop.hall4.line737.json │ │ ├── Popustop.hall4.line753.json │ │ ├── Popustop.hall4.line772.json │ │ ├── Popustop.hall4.line788.json │ │ ├── Popustop.hall4.line804.json │ │ ├── Popustop.hall4.line820.json │ │ ├── Popustop.hall4.line837.json │ │ ├── Popustop.hall4.line853.json │ │ ├── Popustop.hall4.line872.json │ │ ├── Popustop.hall4.line88.json │ │ ├── Popustop.hall4.line888.json │ │ ├── Popustop.hall4.line904.json │ │ ├── Popustop.hall41000.line1004.json │ │ ├── Popustop.hall41000.line1020.json │ │ ├── Popustop.hall41000.line1037.json │ │ ├── Popustop.hall41000.line1053.json │ │ ├── Popustop.hall41000.line1072.json │ │ ├── Popustop.hall41000.line1088.json │ │ ├── Popustop.hall41000.line1104.json │ │ ├── Popustop.hall41000.line920.json │ │ ├── Popustop.hall41000.line937.json │ │ ├── Popustop.hall41000.line953.json │ │ ├── Popustop.hall41000.line972.json │ │ ├── Popustop.hall41000.line988.json │ │ ├── Popustop.lobby.line3.json │ │ ├── Popustop.stairs.line1021.json │ │ ├── Popustop.stairs.line121.json │ │ ├── Popustop.stairs.line2.json │ │ ├── Popustop.stairs.line21.json │ │ ├── Popustop.stairs.line221.json │ │ ├── Popustop.stairs.line321.json │ │ ├── Popustop.stairs.line421.json │ │ ├── Popustop.stairs.line521.json │ │ ├── Popustop.stairs.line621.json │ │ ├── Popustop.stairs.line721.json │ │ ├── Popustop.stairs.line821.json │ │ ├── Popustop.stairs.line921.json │ │ ├── basement.line1.json │ │ ├── item-Popustop.plaque.json │ │ └── roof.line1105.json │ ├── Streets/ │ │ ├── Aric_Ave_104_front.json │ │ ├── Aric_Ave_104_interior.json │ │ ├── Aric_Ave_14_front.json │ │ ├── Aric_Ave_14_interior.json │ │ ├── Aric_Ave_24_front.json │ │ ├── Aric_Ave_24_interior.json │ │ ├── Aric_Ave_34_front.json │ │ ├── Aric_Ave_34_interior.json │ │ ├── Aric_Ave_44_front.json │ │ ├── Aric_Ave_44_interior.json │ │ ├── Aric_Ave_54_front.json │ │ ├── Aric_Ave_54_interior.json │ │ ├── Aric_Ave_64_front.json │ │ ├── Aric_Ave_64_interior.json │ │ ├── Aric_Ave_74_front.json │ │ ├── Aric_Ave_74_interior.json │ │ ├── Aric_Ave_84_front.json │ │ ├── Aric_Ave_84_interior.json │ │ ├── Aric_Ave_94_front.json │ │ ├── Aric_Ave_94_interior.json │ │ ├── Aric_Ave_cross.json │ │ ├── Aric_Ave_e_end.json │ │ ├── Aric_Ave_w_end.json │ │ ├── Baker_St_1021_front.json │ │ ├── Baker_St_1021_interior.json │ │ ├── Baker_St_121_front.json │ │ ├── Baker_St_121_interior.json │ │ ├── Baker_St_221_front.json │ │ ├── Baker_St_221_interior.json │ │ ├── Baker_St_321_front.json │ │ ├── Baker_St_321_interior.json │ │ ├── Baker_St_421_front.json │ │ ├── Baker_St_421_interior.json │ │ ├── Baker_St_521_front.json │ │ ├── Baker_St_521_interior.json │ │ ├── Baker_St_621_front.json │ │ ├── Baker_St_621_interior.json │ │ ├── Baker_St_721_front.json │ │ ├── Baker_St_721_interior.json │ │ ├── Baker_St_821_front.json │ │ ├── Baker_St_821_interior.json │ │ ├── Baker_St_921_front.json │ │ ├── Baker_St_921_interior.json │ │ ├── Baker_St_cross.json │ │ ├── Baker_St_e_end.json │ │ ├── Baker_St_w_end.json │ │ ├── Bleem_St_108_front.json │ │ ├── Bleem_St_108_interior.json │ │ ├── Bleem_St_18_front.json │ │ ├── Bleem_St_18_interior.json │ │ ├── Bleem_St_28_front.json │ │ ├── Bleem_St_28_interior.json │ │ ├── Bleem_St_38_front.json │ │ ├── Bleem_St_38_interior.json │ │ ├── Bleem_St_48_front.json │ │ ├── Bleem_St_48_interior.json │ │ ├── Bleem_St_58_front.json │ │ ├── Bleem_St_58_interior.json │ │ ├── Bleem_St_68_front.json │ │ ├── Bleem_St_68_interior.json │ │ ├── Bleem_St_78_front.json │ │ ├── Bleem_St_78_interior.json │ │ ├── Bleem_St_88_front.json │ │ ├── Bleem_St_88_interior.json │ │ ├── Bleem_St_98_front.json │ │ ├── Bleem_St_98_interior.json │ │ ├── Bleem_St_cross.json │ │ ├── Bleem_St_n_end.json │ │ ├── Bleem_St_s_end.json │ │ ├── Cross_Rd_cross.json │ │ ├── Dice_Ave_101_front.json │ │ ├── Dice_Ave_101_interior.json │ │ ├── Dice_Ave_11_front.json │ │ ├── Dice_Ave_11_interior.json │ │ ├── Dice_Ave_21_front.json │ │ ├── Dice_Ave_21_interior.json │ │ ├── Dice_Ave_31_front.json │ │ ├── Dice_Ave_31_interior.json │ │ ├── Dice_Ave_41_front.json │ │ ├── Dice_Ave_41_interior.json │ │ ├── Dice_Ave_51_front.json │ │ ├── Dice_Ave_51_interior.json │ │ ├── Dice_Ave_61_front.json │ │ ├── Dice_Ave_61_interior.json │ │ ├── Dice_Ave_71_front.json │ │ ├── Dice_Ave_71_interior.json │ │ ├── Dice_Ave_81_front.json │ │ ├── Dice_Ave_81_interior.json │ │ ├── Dice_Ave_91_front.json │ │ ├── Dice_Ave_91_interior.json │ │ ├── Dice_Ave_cross.json │ │ ├── Dice_Ave_n_end.json │ │ ├── Dice_Ave_s_end.json │ │ ├── Disk_Dr_1027_front.json │ │ ├── Disk_Dr_1027_interior.json │ │ ├── Disk_Dr_127_front.json │ │ ├── Disk_Dr_127_interior.json │ │ ├── Disk_Dr_227_front.json │ │ ├── Disk_Dr_227_interior.json │ │ ├── Disk_Dr_327_front.json │ │ ├── Disk_Dr_327_interior.json │ │ ├── Disk_Dr_427_front.json │ │ ├── Disk_Dr_427_interior.json │ │ ├── Disk_Dr_527_front.json │ │ ├── Disk_Dr_527_interior.json │ │ ├── Disk_Dr_627_front.json │ │ ├── Disk_Dr_627_interior.json │ │ ├── Disk_Dr_727_front.json │ │ ├── Disk_Dr_727_interior.json │ │ ├── Disk_Dr_827_front.json │ │ ├── Disk_Dr_827_interior.json │ │ ├── Disk_Dr_927_front.json │ │ ├── Disk_Dr_927_interior.json │ │ ├── Disk_Dr_cross.json │ │ ├── Disk_Dr_n_end.json │ │ ├── Disk_Dr_s_end.json │ │ ├── EZ_St_1026_front.json │ │ ├── EZ_St_1026_interior.json │ │ ├── EZ_St_126_front.json │ │ ├── EZ_St_126_interior.json │ │ ├── EZ_St_226_front.json │ │ ├── EZ_St_226_interior.json │ │ ├── EZ_St_326_front.json │ │ ├── EZ_St_326_interior.json │ │ ├── EZ_St_426_front.json │ │ ├── EZ_St_426_interior.json │ │ ├── EZ_St_526_front.json │ │ ├── EZ_St_526_interior.json │ │ ├── EZ_St_626_front.json │ │ ├── EZ_St_626_interior.json │ │ ├── EZ_St_726_front.json │ │ ├── EZ_St_726_interior.json │ │ ├── EZ_St_826_front.json │ │ ├── EZ_St_826_interior.json │ │ ├── EZ_St_926_front.json │ │ ├── EZ_St_926_interior.json │ │ ├── EZ_St_cross.json │ │ ├── EZ_St_n_end.json │ │ ├── EZ_St_s_end.json │ │ ├── Fast_Ln_1024_front.json │ │ ├── Fast_Ln_1024_interior.json │ │ ├── Fast_Ln_124_front.json │ │ ├── Fast_Ln_124_interior.json │ │ ├── Fast_Ln_224_front.json │ │ ├── Fast_Ln_224_interior.json │ │ ├── Fast_Ln_324_front.json │ │ ├── Fast_Ln_324_interior.json │ │ ├── Fast_Ln_424_front.json │ │ ├── Fast_Ln_424_interior.json │ │ ├── Fast_Ln_524_front.json │ │ ├── Fast_Ln_524_interior.json │ │ ├── Fast_Ln_624_front.json │ │ ├── Fast_Ln_624_interior.json │ │ ├── Fast_Ln_724_front.json │ │ ├── Fast_Ln_724_interior.json │ │ ├── Fast_Ln_824_front.json │ │ ├── Fast_Ln_824_interior.json │ │ ├── Fast_Ln_924_front.json │ │ ├── Fast_Ln_924_interior.json │ │ ├── Fast_Ln_cross.json │ │ ├── Fast_Ln_n_end.json │ │ ├── Fast_Ln_s_end.json │ │ ├── Foon_Ave_107_front.json │ │ ├── Foon_Ave_107_interior.json │ │ ├── Foon_Ave_17_front.json │ │ ├── Foon_Ave_17_interior.json │ │ ├── Foon_Ave_27_front.json │ │ ├── Foon_Ave_27_interior.json │ │ ├── Foon_Ave_37_front.json │ │ ├── Foon_Ave_37_interior.json │ │ ├── Foon_Ave_47_front.json │ │ ├── Foon_Ave_47_interior.json │ │ ├── Foon_Ave_57_front.json │ │ ├── Foon_Ave_57_interior.json │ │ ├── Foon_Ave_67_front.json │ │ ├── Foon_Ave_67_interior.json │ │ ├── Foon_Ave_77_front.json │ │ ├── Foon_Ave_77_interior.json │ │ ├── Foon_Ave_87_front.json │ │ ├── Foon_Ave_87_interior.json │ │ ├── Foon_Ave_97_front.json │ │ ├── Foon_Ave_97_interior.json │ │ ├── Foon_Ave_cross.json │ │ ├── Foon_Ave_n_end.json │ │ ├── Foon_Ave_s_end.json │ │ ├── HyperDr_1030_front.json │ │ ├── HyperDr_1030_interior.json │ │ ├── HyperDr_130_front.json │ │ ├── HyperDr_130_interior.json │ │ ├── HyperDr_230_front.json │ │ ├── HyperDr_230_interior.json │ │ ├── HyperDr_330_front.json │ │ ├── HyperDr_330_interior.json │ │ ├── HyperDr_430_front.json │ │ ├── HyperDr_430_interior.json │ │ ├── HyperDr_530_front.json │ │ ├── HyperDr_530_interior.json │ │ ├── HyperDr_630_front.json │ │ ├── HyperDr_630_interior.json │ │ ├── HyperDr_730_front.json │ │ ├── HyperDr_730_interior.json │ │ ├── HyperDr_830_front.json │ │ ├── HyperDr_830_interior.json │ │ ├── HyperDr_930_front.json │ │ ├── HyperDr_930_interior.json │ │ ├── HyperDr_cross.json │ │ ├── HyperDr_n_end.json │ │ ├── HyperDr_s_end.json │ │ ├── IO_1017_front.json │ │ ├── IO_1017_interior.json │ │ ├── IO_117_front.json │ │ ├── IO_117_interior.json │ │ ├── IO_217_front.json │ │ ├── IO_217_interior.json │ │ ├── IO_317_front.json │ │ ├── IO_317_interior.json │ │ ├── IO_417_front.json │ │ ├── IO_417_interior.json │ │ ├── IO_517_front.json │ │ ├── IO_517_interior.json │ │ ├── IO_617_front.json │ │ ├── IO_617_interior.json │ │ ├── IO_717_front.json │ │ ├── IO_717_interior.json │ │ ├── IO_817_front.json │ │ ├── IO_817_interior.json │ │ ├── IO_917_front.json │ │ ├── IO_917_interior.json │ │ ├── IO_cross.json │ │ ├── IO_e_end.json │ │ ├── IO_w_end.json │ │ ├── Janice_Ln_1025_front.json │ │ ├── Janice_Ln_1025_interior.json │ │ ├── Janice_Ln_125_front.json │ │ ├── Janice_Ln_125_interior.json │ │ ├── Janice_Ln_225_front.json │ │ ├── Janice_Ln_225_interior.json │ │ ├── Janice_Ln_325_front.json │ │ ├── Janice_Ln_325_interior.json │ │ ├── Janice_Ln_425_front.json │ │ ├── Janice_Ln_425_interior.json │ │ ├── Janice_Ln_525_front.json │ │ ├── Janice_Ln_525_interior.json │ │ ├── Janice_Ln_625_front.json │ │ ├── Janice_Ln_625_interior.json │ │ ├── Janice_Ln_725_front.json │ │ ├── Janice_Ln_725_interior.json │ │ ├── Janice_Ln_825_front.json │ │ ├── Janice_Ln_825_interior.json │ │ ├── Janice_Ln_925_front.json │ │ ├── Janice_Ln_925_interior.json │ │ ├── Janice_Ln_cross.json │ │ ├── Janice_Ln_n_end.json │ │ ├── Janice_Ln_s_end.json │ │ ├── Kerner_1016_front.json │ │ ├── Kerner_1016_interior.json │ │ ├── Kerner_116_front.json │ │ ├── Kerner_116_interior.json │ │ ├── Kerner_216_front.json │ │ ├── Kerner_216_interior.json │ │ ├── Kerner_316_front.json │ │ ├── Kerner_316_interior.json │ │ ├── Kerner_416_front.json │ │ ├── Kerner_416_interior.json │ │ ├── Kerner_516_front.json │ │ ├── Kerner_516_interior.json │ │ ├── Kerner_616_front.json │ │ ├── Kerner_616_interior.json │ │ ├── Kerner_716_front.json │ │ ├── Kerner_716_interior.json │ │ ├── Kerner_816_front.json │ │ ├── Kerner_816_interior.json │ │ ├── Kerner_916_front.json │ │ ├── Kerner_916_interior.json │ │ ├── Kerner_cross.json │ │ ├── Kerner_n_end.json │ │ ├── Kerner_s_end.json │ │ ├── Kings_Rd_1010_front.json │ │ ├── Kings_Rd_1010_interior.json │ │ ├── Kings_Rd_110_front.json │ │ ├── Kings_Rd_110_interior.json │ │ ├── Kings_Rd_210_front.json │ │ ├── Kings_Rd_210_interior.json │ │ ├── Kings_Rd_310_front.json │ │ ├── Kings_Rd_310_interior.json │ │ ├── Kings_Rd_410_front.json │ │ ├── Kings_Rd_410_interior.json │ │ ├── Kings_Rd_510_front.json │ │ ├── Kings_Rd_510_interior.json │ │ ├── Kings_Rd_610_front.json │ │ ├── Kings_Rd_610_interior.json │ │ ├── Kings_Rd_710_front.json │ │ ├── Kings_Rd_710_interior.json │ │ ├── Kings_Rd_810_front.json │ │ ├── Kings_Rd_810_interior.json │ │ ├── Kings_Rd_910_front.json │ │ ├── Kings_Rd_910_interior.json │ │ ├── Kings_Rd_cross.json │ │ ├── Kings_Rd_e_end.json │ │ ├── Kings_Rd_w_end.json │ │ ├── Kludge_Ct_1018_front.json │ │ ├── Kludge_Ct_1018_interior.json │ │ ├── Kludge_Ct_118_front.json │ │ ├── Kludge_Ct_118_interior.json │ │ ├── Kludge_Ct_218_front.json │ │ ├── Kludge_Ct_218_interior.json │ │ ├── Kludge_Ct_318_front.json │ │ ├── Kludge_Ct_318_interior.json │ │ ├── Kludge_Ct_418_front.json │ │ ├── Kludge_Ct_418_interior.json │ │ ├── Kludge_Ct_518_front.json │ │ ├── Kludge_Ct_518_interior.json │ │ ├── Kludge_Ct_618_front.json │ │ ├── Kludge_Ct_618_interior.json │ │ ├── Kludge_Ct_718_front.json │ │ ├── Kludge_Ct_718_interior.json │ │ ├── Kludge_Ct_818_front.json │ │ ├── Kludge_Ct_818_interior.json │ │ ├── Kludge_Ct_918_front.json │ │ ├── Kludge_Ct_918_interior.json │ │ ├── Kludge_Ct_cross.json │ │ ├── Kludge_Ct_n_end.json │ │ ├── Kludge_Ct_s_end.json │ │ ├── Lori_Ln_1013_front.json │ │ ├── Lori_Ln_1013_interior.json │ │ ├── Lori_Ln_113_front.json │ │ ├── Lori_Ln_113_interior.json │ │ ├── Lori_Ln_213_front.json │ │ ├── Lori_Ln_213_interior.json │ │ ├── Lori_Ln_313_front.json │ │ ├── Lori_Ln_313_interior.json │ │ ├── Lori_Ln_413_front.json │ │ ├── Lori_Ln_413_interior.json │ │ ├── Lori_Ln_513_front.json │ │ ├── Lori_Ln_513_interior.json │ │ ├── Lori_Ln_613_front.json │ │ ├── Lori_Ln_613_interior.json │ │ ├── Lori_Ln_713_front.json │ │ ├── Lori_Ln_713_interior.json │ │ ├── Lori_Ln_813_front.json │ │ ├── Lori_Ln_813_interior.json │ │ ├── Lori_Ln_913_front.json │ │ ├── Lori_Ln_913_interior.json │ │ ├── Lori_Ln_cross.json │ │ ├── Lori_Ln_e_end.json │ │ ├── Lori_Ln_w_end.json │ │ ├── Milky_Wy_1028_front.json │ │ ├── Milky_Wy_1028_interior.json │ │ ├── Milky_Wy_128_front.json │ │ ├── Milky_Wy_128_interior.json │ │ ├── Milky_Wy_228_front.json │ │ ├── Milky_Wy_228_interior.json │ │ ├── Milky_Wy_328_front.json │ │ ├── Milky_Wy_328_interior.json │ │ ├── Milky_Wy_428_front.json │ │ ├── Milky_Wy_428_interior.json │ │ ├── Milky_Wy_528_front.json │ │ ├── Milky_Wy_528_interior.json │ │ ├── Milky_Wy_628_front.json │ │ ├── Milky_Wy_628_interior.json │ │ ├── Milky_Wy_728_front.json │ │ ├── Milky_Wy_728_interior.json │ │ ├── Milky_Wy_828_front.json │ │ ├── Milky_Wy_828_interior.json │ │ ├── Milky_Wy_928_front.json │ │ ├── Milky_Wy_928_interior.json │ │ ├── Milky_Wy_cross.json │ │ ├── Milky_Wy_n_end.json │ │ ├── Milky_Wy_s_end.json │ │ ├── Mince_St_102_front.json │ │ ├── Mince_St_102_interior.json │ │ ├── Mince_St_12_front.json │ │ ├── Mince_St_12_interior.json │ │ ├── Mince_St_22_front.json │ │ ├── Mince_St_22_interior.json │ │ ├── Mince_St_32_front.json │ │ ├── Mince_St_32_interior.json │ │ ├── Mince_St_42_front.json │ │ ├── Mince_St_42_interior.json │ │ ├── Mince_St_52_front.json │ │ ├── Mince_St_52_interior.json │ │ ├── Mince_St_62_front.json │ │ ├── Mince_St_62_interior.json │ │ ├── Mince_St_72_front.json │ │ ├── Mince_St_72_interior.json │ │ ├── Mince_St_82_front.json │ │ ├── Mince_St_82_interior.json │ │ ├── Mince_St_92_front.json │ │ ├── Mince_St_92_interior.json │ │ ├── Mince_St_cross.json │ │ ├── Mince_St_n_end.json │ │ ├── Mince_St_s_end.json │ │ ├── OutamyWy_1029_front.json │ │ ├── OutamyWy_1029_interior.json │ │ ├── OutamyWy_129_front.json │ │ ├── OutamyWy_129_interior.json │ │ ├── OutamyWy_229_front.json │ │ ├── OutamyWy_229_interior.json │ │ ├── OutamyWy_329_front.json │ │ ├── OutamyWy_329_interior.json │ │ ├── OutamyWy_429_front.json │ │ ├── OutamyWy_429_interior.json │ │ ├── OutamyWy_529_front.json │ │ ├── OutamyWy_529_interior.json │ │ ├── OutamyWy_629_front.json │ │ ├── OutamyWy_629_interior.json │ │ ├── OutamyWy_729_front.json │ │ ├── OutamyWy_729_interior.json │ │ ├── OutamyWy_829_front.json │ │ ├── OutamyWy_829_interior.json │ │ ├── OutamyWy_929_front.json │ │ ├── OutamyWy_929_interior.json │ │ ├── OutamyWy_cross.json │ │ ├── OutamyWy_n_end.json │ │ ├── OutamyWy_s_end.json │ │ ├── Over_Ave_cross.json │ │ ├── Pam_Pl_1014_front.json │ │ ├── Pam_Pl_1014_interior.json │ │ ├── Pam_Pl_114_front.json │ │ ├── Pam_Pl_114_interior.json │ │ ├── Pam_Pl_214_front.json │ │ ├── Pam_Pl_214_interior.json │ │ ├── Pam_Pl_314_front.json │ │ ├── Pam_Pl_314_interior.json │ │ ├── Pam_Pl_414_front.json │ │ ├── Pam_Pl_414_interior.json │ │ ├── Pam_Pl_514_front.json │ │ ├── Pam_Pl_514_interior.json │ │ ├── Pam_Pl_614_front.json │ │ ├── Pam_Pl_614_interior.json │ │ ├── Pam_Pl_714_front.json │ │ ├── Pam_Pl_714_interior.json │ │ ├── Pam_Pl_814_front.json │ │ ├── Pam_Pl_814_interior.json │ │ ├── Pam_Pl_914_front.json │ │ ├── Pam_Pl_914_interior.json │ │ ├── Pam_Pl_cross.json │ │ ├── Pam_Pl_e_end.json │ │ ├── Pam_Pl_w_end.json │ │ ├── Pokey_Pl_1022_front.json │ │ ├── Pokey_Pl_1022_interior.json │ │ ├── Pokey_Pl_122_front.json │ │ ├── Pokey_Pl_122_interior.json │ │ ├── Pokey_Pl_222_front.json │ │ ├── Pokey_Pl_222_interior.json │ │ ├── Pokey_Pl_322_front.json │ │ ├── Pokey_Pl_322_interior.json │ │ ├── Pokey_Pl_422_front.json │ │ ├── Pokey_Pl_422_interior.json │ │ ├── Pokey_Pl_522_front.json │ │ ├── Pokey_Pl_522_interior.json │ │ ├── Pokey_Pl_622_front.json │ │ ├── Pokey_Pl_622_interior.json │ │ ├── Pokey_Pl_722_front.json │ │ ├── Pokey_Pl_722_interior.json │ │ ├── Pokey_Pl_822_front.json │ │ ├── Pokey_Pl_822_interior.json │ │ ├── Pokey_Pl_922_front.json │ │ ├── Pokey_Pl_922_interior.json │ │ ├── Pokey_Pl_cross.json │ │ ├── Pokey_Pl_e_end.json │ │ ├── Pokey_Pl_w_end.json │ │ ├── Randy_Rd_103_front.json │ │ ├── Randy_Rd_103_interior.json │ │ ├── Randy_Rd_13_front.json │ │ ├── Randy_Rd_13_interior.json │ │ ├── Randy_Rd_23_front.json │ │ ├── Randy_Rd_23_interior.json │ │ ├── Randy_Rd_33_front.json │ │ ├── Randy_Rd_33_interior.json │ │ ├── Randy_Rd_43_front.json │ │ ├── Randy_Rd_43_interior.json │ │ ├── Randy_Rd_53_front.json │ │ ├── Randy_Rd_53_interior.json │ │ ├── Randy_Rd_63_front.json │ │ ├── Randy_Rd_63_interior.json │ │ ├── Randy_Rd_73_front.json │ │ ├── Randy_Rd_73_interior.json │ │ ├── Randy_Rd_83_front.json │ │ ├── Randy_Rd_83_interior.json │ │ ├── Randy_Rd_93_front.json │ │ ├── Randy_Rd_93_interior.json │ │ ├── Randy_Rd_cross.json │ │ ├── Randy_Rd_e_end.json │ │ ├── Randy_Rd_w_end.json │ │ ├── RoadSt_1032_front.json │ │ ├── RoadSt_1032_interior.json │ │ ├── RoadSt_132_front.json │ │ ├── RoadSt_132_interior.json │ │ ├── RoadSt_232_front.json │ │ ├── RoadSt_232_interior.json │ │ ├── RoadSt_332_front.json │ │ ├── RoadSt_332_interior.json │ │ ├── RoadSt_432_front.json │ │ ├── RoadSt_432_interior.json │ │ ├── RoadSt_532_front.json │ │ ├── RoadSt_532_interior.json │ │ ├── RoadSt_632_front.json │ │ ├── RoadSt_632_interior.json │ │ ├── RoadSt_732_front.json │ │ ├── RoadSt_732_interior.json │ │ ├── RoadSt_832_front.json │ │ ├── RoadSt_832_interior.json │ │ ├── RoadSt_932_front.json │ │ ├── RoadSt_932_interior.json │ │ ├── RoadSt_cross.json │ │ ├── RoadSt_n_end.json │ │ ├── RoadSt_s_end.json │ │ ├── Rocky_Rd_1015_front.json │ │ ├── Rocky_Rd_1015_interior.json │ │ ├── Rocky_Rd_115_front.json │ │ ├── Rocky_Rd_115_interior.json │ │ ├── Rocky_Rd_215_front.json │ │ ├── Rocky_Rd_215_interior.json │ │ ├── Rocky_Rd_315_front.json │ │ ├── Rocky_Rd_315_interior.json │ │ ├── Rocky_Rd_415_front.json │ │ ├── Rocky_Rd_415_interior.json │ │ ├── Rocky_Rd_515_front.json │ │ ├── Rocky_Rd_515_interior.json │ │ ├── Rocky_Rd_615_front.json │ │ ├── Rocky_Rd_615_interior.json │ │ ├── Rocky_Rd_715_front.json │ │ ├── Rocky_Rd_715_interior.json │ │ ├── Rocky_Rd_815_front.json │ │ ├── Rocky_Rd_815_interior.json │ │ ├── Rocky_Rd_915_front.json │ │ ├── Rocky_Rd_915_interior.json │ │ ├── Rocky_Rd_cross.json │ │ ├── Rocky_Rd_e_end.json │ │ ├── Rocky_Rd_w_end.json │ │ ├── Saint_St_1019_front.json │ │ ├── Saint_St_1019_interior.json │ │ ├── Saint_St_119_front.json │ │ ├── Saint_St_119_interior.json │ │ ├── Saint_St_219_front.json │ │ ├── Saint_St_219_interior.json │ │ ├── Saint_St_319_front.json │ │ ├── Saint_St_319_interior.json │ │ ├── Saint_St_419_front.json │ │ ├── Saint_St_419_interior.json │ │ ├── Saint_St_519_front.json │ │ ├── Saint_St_519_interior.json │ │ ├── Saint_St_619_front.json │ │ ├── Saint_St_619_interior.json │ │ ├── Saint_St_719_front.json │ │ ├── Saint_St_719_interior.json │ │ ├── Saint_St_819_front.json │ │ ├── Saint_St_819_interior.json │ │ ├── Saint_St_919_front.json │ │ ├── Saint_St_919_interior.json │ │ ├── Saint_St_cross.json │ │ ├── Saint_St_e_end.json │ │ ├── Saint_St_w_end.json │ │ ├── Spiff_Ln_1011_front.json │ │ ├── Spiff_Ln_1011_interior.json │ │ ├── Spiff_Ln_111_front.json │ │ ├── Spiff_Ln_111_interior.json │ │ ├── Spiff_Ln_211_front.json │ │ ├── Spiff_Ln_211_interior.json │ │ ├── Spiff_Ln_311_front.json │ │ ├── Spiff_Ln_311_interior.json │ │ ├── Spiff_Ln_411_front.json │ │ ├── Spiff_Ln_411_interior.json │ │ ├── Spiff_Ln_511_front.json │ │ ├── Spiff_Ln_511_interior.json │ │ ├── Spiff_Ln_611_front.json │ │ ├── Spiff_Ln_611_interior.json │ │ ├── Spiff_Ln_711_front.json │ │ ├── Spiff_Ln_711_interior.json │ │ ├── Spiff_Ln_811_front.json │ │ ├── Spiff_Ln_811_interior.json │ │ ├── Spiff_Ln_911_front.json │ │ ├── Spiff_Ln_911_interior.json │ │ ├── Spiff_Ln_cross.json │ │ ├── Spiff_Ln_e_end.json │ │ ├── Spiff_Ln_w_end.json │ │ ├── StreetRd_1031_front.json │ │ ├── StreetRd_1031_interior.json │ │ ├── StreetRd_131_front.json │ │ ├── StreetRd_131_interior.json │ │ ├── StreetRd_231_front.json │ │ ├── StreetRd_231_interior.json │ │ ├── StreetRd_331_front.json │ │ ├── StreetRd_331_interior.json │ │ ├── StreetRd_431_front.json │ │ ├── StreetRd_431_interior.json │ │ ├── StreetRd_531_front.json │ │ ├── StreetRd_531_interior.json │ │ ├── StreetRd_631_front.json │ │ ├── StreetRd_631_interior.json │ │ ├── StreetRd_731_front.json │ │ ├── StreetRd_731_interior.json │ │ ├── StreetRd_831_front.json │ │ ├── StreetRd_831_interior.json │ │ ├── StreetRd_931_front.json │ │ ├── StreetRd_931_interior.json │ │ ├── StreetRd_cross.json │ │ ├── StreetRd_n_end.json │ │ ├── StreetRd_s_end.json │ │ ├── Sunday_Dr_1020_front.json │ │ ├── Sunday_Dr_1020_interior.json │ │ ├── Sunday_Dr_120_front.json │ │ ├── Sunday_Dr_120_interior.json │ │ ├── Sunday_Dr_220_front.json │ │ ├── Sunday_Dr_220_interior.json │ │ ├── Sunday_Dr_320_front.json │ │ ├── Sunday_Dr_320_interior.json │ │ ├── Sunday_Dr_420_front.json │ │ ├── Sunday_Dr_420_interior.json │ │ ├── Sunday_Dr_520_front.json │ │ ├── Sunday_Dr_520_interior.json │ │ ├── Sunday_Dr_620_front.json │ │ ├── Sunday_Dr_620_interior.json │ │ ├── Sunday_Dr_720_front.json │ │ ├── Sunday_Dr_720_interior.json │ │ ├── Sunday_Dr_820_front.json │ │ ├── Sunday_Dr_820_interior.json │ │ ├── Sunday_Dr_920_front.json │ │ ├── Sunday_Dr_920_interior.json │ │ ├── Sunday_Dr_cross.json │ │ ├── Sunday_Dr_e_end.json │ │ ├── Sunday_Dr_w_end.json │ │ ├── This_Way_105_front.json │ │ ├── This_Way_105_interior.json │ │ ├── This_Way_15_front.json │ │ ├── This_Way_15_interior.json │ │ ├── This_Way_25_front.json │ │ ├── This_Way_25_interior.json │ │ ├── This_Way_35_front.json │ │ ├── This_Way_35_interior.json │ │ ├── This_Way_45_front.json │ │ ├── This_Way_45_interior.json │ │ ├── This_Way_55_front.json │ │ ├── This_Way_55_interior.json │ │ ├── This_Way_65_front.json │ │ ├── This_Way_65_interior.json │ │ ├── This_Way_75_front.json │ │ ├── This_Way_75_interior.json │ │ ├── This_Way_85_front.json │ │ ├── This_Way_85_interior.json │ │ ├── This_Way_95_front.json │ │ ├── This_Way_95_interior.json │ │ ├── This_Way_cross.json │ │ ├── This_Way_e_end.json │ │ ├── This_Way_w_end.json │ │ ├── Wacka_Rd_109_front.json │ │ ├── Wacka_Rd_109_interior.json │ │ ├── Wacka_Rd_19_front.json │ │ ├── Wacka_Rd_19_interior.json │ │ ├── Wacka_Rd_29_front.json │ │ ├── Wacka_Rd_29_interior.json │ │ ├── Wacka_Rd_39_front.json │ │ ├── Wacka_Rd_39_interior.json │ │ ├── Wacka_Rd_49_front.json │ │ ├── Wacka_Rd_49_interior.json │ │ ├── Wacka_Rd_59_front.json │ │ ├── Wacka_Rd_59_interior.json │ │ ├── Wacka_Rd_69_front.json │ │ ├── Wacka_Rd_69_interior.json │ │ ├── Wacka_Rd_79_front.json │ │ ├── Wacka_Rd_79_interior.json │ │ ├── Wacka_Rd_89_front.json │ │ ├── Wacka_Rd_89_interior.json │ │ ├── Wacka_Rd_99_front.json │ │ ├── Wacka_Rd_99_interior.json │ │ ├── Wacka_Rd_cross.json │ │ ├── Wacka_Rd_e_end.json │ │ ├── Wacka_Rd_w_end.json │ │ ├── Warp_Dr_1023_front.json │ │ ├── Warp_Dr_1023_interior.json │ │ ├── Warp_Dr_123_front.json │ │ ├── Warp_Dr_123_interior.json │ │ ├── Warp_Dr_223_front.json │ │ ├── Warp_Dr_223_interior.json │ │ ├── Warp_Dr_323_front.json │ │ ├── Warp_Dr_323_interior.json │ │ ├── Warp_Dr_423_front.json │ │ ├── Warp_Dr_423_interior.json │ │ ├── Warp_Dr_523_front.json │ │ ├── Warp_Dr_523_interior.json │ │ ├── Warp_Dr_623_front.json │ │ ├── Warp_Dr_623_interior.json │ │ ├── Warp_Dr_723_front.json │ │ ├── Warp_Dr_723_interior.json │ │ ├── Warp_Dr_823_front.json │ │ ├── Warp_Dr_823_interior.json │ │ ├── Warp_Dr_923_front.json │ │ ├── Warp_Dr_923_interior.json │ │ ├── Warp_Dr_cross.json │ │ ├── Warp_Dr_n_end.json │ │ ├── Warp_Dr_s_end.json │ │ ├── Wazoo_St_1012_front.json │ │ ├── Wazoo_St_1012_interior.json │ │ ├── Wazoo_St_112_front.json │ │ ├── Wazoo_St_112_interior.json │ │ ├── Wazoo_St_212_front.json │ │ ├── Wazoo_St_212_interior.json │ │ ├── Wazoo_St_312_front.json │ │ ├── Wazoo_St_312_interior.json │ │ ├── Wazoo_St_412_front.json │ │ ├── Wazoo_St_412_interior.json │ │ ├── Wazoo_St_512_front.json │ │ ├── Wazoo_St_512_interior.json │ │ ├── Wazoo_St_612_front.json │ │ ├── Wazoo_St_612_interior.json │ │ ├── Wazoo_St_712_front.json │ │ ├── Wazoo_St_712_interior.json │ │ ├── Wazoo_St_812_front.json │ │ ├── Wazoo_St_812_interior.json │ │ ├── Wazoo_St_912_front.json │ │ ├── Wazoo_St_912_interior.json │ │ ├── Wazoo_St_cross.json │ │ ├── Wazoo_St_e_end.json │ │ ├── Wazoo_St_w_end.json │ │ ├── Wrong_Wy_106_front.json │ │ ├── Wrong_Wy_106_interior.json │ │ ├── Wrong_Wy_16_front.json │ │ ├── Wrong_Wy_16_interior.json │ │ ├── Wrong_Wy_26_front.json │ │ ├── Wrong_Wy_26_interior.json │ │ ├── Wrong_Wy_36_front.json │ │ ├── Wrong_Wy_36_interior.json │ │ ├── Wrong_Wy_46_front.json │ │ ├── Wrong_Wy_46_interior.json │ │ ├── Wrong_Wy_56_front.json │ │ ├── Wrong_Wy_56_interior.json │ │ ├── Wrong_Wy_66_front.json │ │ ├── Wrong_Wy_66_interior.json │ │ ├── Wrong_Wy_76_front.json │ │ ├── Wrong_Wy_76_interior.json │ │ ├── Wrong_Wy_86_front.json │ │ ├── Wrong_Wy_86_interior.json │ │ ├── Wrong_Wy_96_front.json │ │ ├── Wrong_Wy_96_interior.json │ │ ├── Wrong_Wy_cross.json │ │ ├── Wrong_Wy_e_end.json │ │ └── Wrong_Wy_w_end.json │ ├── Text/ │ │ ├── .gitignore │ │ ├── charset/ │ │ │ ├── charset.css │ │ │ ├── charset.fon │ │ │ ├── charset.pf │ │ │ ├── index.html │ │ │ └── specimen_files/ │ │ │ ├── css/ │ │ │ │ └── style.css │ │ │ └── javascript/ │ │ │ ├── color-switcher.js │ │ │ ├── parallax.js │ │ │ ├── responsive-menu.js │ │ │ └── scroll-animation.js │ │ ├── text-02031988-rant-vol2-no4.json │ │ ├── text-02031988-rant-vol2-no4.json.html │ │ ├── text-02101988-rant-vol2-no5.json │ │ ├── text-02101988-rant-vol2-no5.json.html │ │ ├── text-02121988-weekendevents.json │ │ ├── text-02121988-weekendevents.json.html │ │ ├── text-02171988-rant-vol2-no6.json │ │ ├── text-02171988-rant-vol2-no6.json.html │ │ ├── text-02241988-rant-vol2-no7.json │ │ ├── text-02241988-rant-vol2-no7.json.html │ │ ├── text-03021988-rant-vol2-no8.json │ │ ├── text-03021988-rant-vol2-no8.json.html │ │ ├── text-03091988-rant-vol2-no9.json │ │ ├── text-03091988-rant-vol2-no9.json.html │ │ ├── text-03161988-rant-vol2-no9.json │ │ ├── text-03161988-rant-vol2-no9.json.html │ │ ├── text-03231988-rant-vol2-no10.json │ │ ├── text-03231988-rant-vol2-no10.json.html │ │ ├── text-03301988-rant-vol2-no8.json │ │ ├── text-03301988-rant-vol2-no8.json.html │ │ ├── text-04071988-rant-vol2-no8.json │ │ ├── text-04071988-rant-vol2-no8.json.html │ │ ├── text-04091988-rantflier.json │ │ ├── text-04091988-rantflier.json.html │ │ ├── text-04261988-rant-vol2-no8.json │ │ ├── text-04261988-rant-vol2-no8.json.html │ │ ├── text-04291988-rantflier.json │ │ ├── text-04291988-rantflier.json.html │ │ ├── text-08171987-rant-vol1-no1.json │ │ ├── text-08171987-rant-vol1-no1.json.html │ │ ├── text-09211987-rant-vol1-no2.json │ │ ├── text-09211987-rant-vol1-no2.json.html │ │ ├── text-10081987-rant-vol1-no4.json │ │ ├── text-10081987-rant-vol1-no4.json.html │ │ ├── text-1988-rant-vol0-no1-specialedition.json │ │ ├── text-1988-rant-vol0-no1-specialedition.json.html │ │ ├── text-blank.json │ │ ├── text-blank.json.html │ │ ├── text-bookofrecords.json.html │ │ ├── text-captureflag.json │ │ ├── text-captureflag.json.html │ │ ├── text-captureflagunused.json │ │ ├── text-captureflagunused.json.html │ │ ├── text-crimehistory.json │ │ ├── text-crimehistory.json.html │ │ ├── text-dadasalesh.json │ │ ├── text-dadasalesh.json.html │ │ ├── text-dnalsiislandmap.json │ │ ├── text-dnalsiislandmap.json.html │ │ ├── text-elevatorhelp.1.json │ │ ├── text-elevatorhelp.1.json.html │ │ ├── text-habistockexchangenewsfall87.json │ │ ├── text-habistockexchangenewsfall87.json.html │ │ ├── text-habitatkeyboardmap.json │ │ ├── text-habitatkeyboardmap.json.html │ │ ├── text-historyofteleport.json │ │ ├── text-historyofteleport.json.html │ │ ├── text-historyoftournaments.json │ │ ├── text-historyoftournaments.json.html │ │ ├── text-key4823.json │ │ ├── text-key4823.json.html │ │ ├── text-key4824.json │ │ ├── text-key4824.json.html │ │ ├── text-key4829.json │ │ ├── text-key4829.json.html │ │ ├── text-mapofdowntownpop.json │ │ ├── text-mapofdowntownpop.json.html │ │ ├── text-missing.object.json │ │ ├── text-missing.object.json.html │ │ ├── text-plugh.json │ │ ├── text-plugh.json.html │ │ ├── text-popmap.json │ │ ├── text-popmap.json.html │ │ ├── text-popmap1988.json │ │ ├── text-popmap1988.json.html │ │ ├── text-portdir.json │ │ ├── text-portdir.json.html │ │ ├── text-rantflier1.json │ │ ├── text-rantflier1.json.html │ │ ├── text-savingthepasttextrestoration.json │ │ ├── text-savingthepasttextrestoration.json.html │ │ ├── text-stock.json │ │ ├── text-stock.json.html │ │ ├── text-stockaliens.json │ │ ├── text-stockaliens.json.html │ │ ├── text-stockblackthorn.json │ │ ├── text-stockblackthorn.json.html │ │ ├── text-stockinfocom.json │ │ ├── text-stockinfocom.json.html │ │ ├── text-stockmachuta.json │ │ ├── text-stockmachuta.json.html │ │ ├── text-stocknron.json │ │ ├── text-stocknron.json.html │ │ ├── text-stockoilbribe.json │ │ ├── text-stockoilbribe.json.html │ │ ├── text-stocksirtech.json │ │ ├── text-stocksirtech.json.html │ │ ├── text-telehistory.json │ │ ├── text-telehistory.json.html │ │ ├── text-teleporterhelp.json │ │ ├── text-teleporterhelp.json.html │ │ ├── text-thehabitatflyer.json │ │ ├── text-thehabitatflyer.json.html │ │ ├── text-weeklyrant.1.json │ │ ├── text-weeklyrant.1.json.html │ │ ├── text-weeklyrant.current.json │ │ └── text-weeklyrant.current.json.html │ ├── Users/ │ │ ├── user-aric.json │ │ ├── user-chip.json │ │ ├── user-devil.json │ │ ├── user-elizabot.json │ │ ├── user-empty.json │ │ ├── user-janet.json │ │ ├── user-jason.json │ │ ├── user-keith.items.json │ │ ├── user-keith.json │ │ ├── user-keith2.json │ │ ├── user-keith3.json │ │ ├── user-pcollins.json │ │ ├── user-randy.json │ │ ├── user-rassilon.json │ │ ├── user-ricky.json │ │ ├── user-steve.json │ │ ├── user-stu.json │ │ ├── user-vonguard.json │ │ └── user-welcomebot.json │ ├── Welcome/ │ │ ├── welcomecenterext.json │ │ ├── welcomecenterint.json │ │ ├── welcomecenterinthatch.json │ │ └── welcomecenterintvendo.json │ ├── Woods/ │ │ ├── Woods_0i.json │ │ ├── Woods_0j.json │ │ ├── Woods_0k.json │ │ ├── Woods_1164.json │ │ ├── Woods_1284.json │ │ ├── Woods_1i.json │ │ ├── Woods_1j.json │ │ ├── Woods_1k.json │ │ ├── Woods_2f.json │ │ ├── Woods_2i.json │ │ ├── Woods_2j.json │ │ ├── Woods_2k.json │ │ ├── Woods_3c.json │ │ ├── Woods_3d.json │ │ ├── Woods_3f.json │ │ ├── Woods_3i.json │ │ ├── Woods_3j.json │ │ ├── Woods_3k.json │ │ ├── Woods_4f.json │ │ ├── Woods_4g.json │ │ ├── Woods_4h.json │ │ ├── Woods_4i.json │ │ ├── Woods_4j.json │ │ ├── Woods_4k.json │ │ ├── Woods_4l.json │ │ ├── Woods_4m.json │ │ ├── Woods_4t.json │ │ ├── Woods_4u.json │ │ ├── Woods_5a.json │ │ ├── Woods_5b.json │ │ ├── Woods_5c.json │ │ ├── Woods_5d.json │ │ ├── Woods_5e.json │ │ ├── Woods_5f.json │ │ ├── Woods_5g.json │ │ ├── Woods_5h.json │ │ ├── Woods_5i.json │ │ ├── Woods_5j.json │ │ ├── Woods_5k.json │ │ ├── Woods_5l.json │ │ ├── Woods_5m.json │ │ ├── Woods_5n.json │ │ ├── Woods_5o.json │ │ ├── Woods_5p.json │ │ ├── Woods_5q.json │ │ ├── Woods_5r.json │ │ ├── Woods_5s.json │ │ ├── Woods_5t.json │ │ ├── Woods_5u.json │ │ ├── Woods_5v.json │ │ ├── Woods_5w.json │ │ ├── Woods_5x.json │ │ ├── Woods_5y.json │ │ ├── Woods_5z.json │ │ ├── Woods_6a.json │ │ ├── Woods_6b.json │ │ ├── Woods_6c.json │ │ ├── Woods_6d.json │ │ ├── Woods_6e.json │ │ ├── Woods_6f.json │ │ ├── Woods_6g.json │ │ ├── Woods_6h.json │ │ ├── Woods_6i.json │ │ ├── Woods_6j.json │ │ ├── Woods_6k.json │ │ ├── Woods_6l.json │ │ ├── Woods_6m.json │ │ ├── Woods_6n.json │ │ ├── Woods_6o.json │ │ ├── Woods_6p.json │ │ ├── Woods_6q.json │ │ ├── Woods_6r.json │ │ ├── Woods_6s.json │ │ ├── Woods_6t.json │ │ ├── Woods_6u.json │ │ ├── Woods_6v.json │ │ ├── Woods_6w.json │ │ ├── Woods_6x.json │ │ ├── Woods_7a.json │ │ ├── Woods_7b.json │ │ ├── Woods_7c.json │ │ ├── Woods_7d.json │ │ ├── Woods_7e.json │ │ ├── Woods_7f.json │ │ ├── Woods_7g.json │ │ ├── Woods_7h.json │ │ ├── Woods_7k.json │ │ ├── Woods_7l.json │ │ ├── Woods_7m.json │ │ ├── Woods_7n.json │ │ ├── Woods_7o.json │ │ ├── Woods_7p.json │ │ ├── Woods_7q.json │ │ ├── Woods_7r.json │ │ ├── Woods_7s.json │ │ ├── Woods_7t.json │ │ ├── Woods_7u.json │ │ ├── Woods_7v.json │ │ ├── Woods_7w.json │ │ ├── Woods_8g.json │ │ ├── Woods_8h.json │ │ ├── Woods_8q.json │ │ ├── Woods_8r.json │ │ ├── Woods_8s.json │ │ ├── Woods_9q.json │ │ ├── Woods_9r.json │ │ ├── Woods_9s.json │ │ ├── Woods_ap.json │ │ ├── Woods_aq.json │ │ ├── Woods_ar.json │ │ ├── Woods_as.json │ │ ├── Woods_bp.json │ │ ├── Woods_bq.json │ │ ├── Woods_br.json │ │ ├── Woods_bs.json │ │ ├── Woods_cm.json │ │ ├── Woods_cn.json │ │ ├── Woods_co.json │ │ ├── Woods_cp.json │ │ ├── Woods_cq.json │ │ ├── Woods_cr.json │ │ ├── Woods_cs.json │ │ ├── Woods_dq.json │ │ ├── Woods_dr.json │ │ ├── Woods_ds.json │ │ ├── Woods_dt.json │ │ ├── Woods_eq.json │ │ ├── Woods_er.json │ │ ├── Woods_es.json │ │ ├── Woods_et.json │ │ ├── Woods_fq.json │ │ ├── Woods_fr.json │ │ ├── Woods_fs.json │ │ ├── Woods_ft.json │ │ ├── Woods_gq.json │ │ ├── Woods_gr.json │ │ └── Woods_gs.json │ ├── classes-habitat.json │ ├── convertClientDataToJava.js │ ├── dbUtils.js │ ├── dumpTeleportEntries.js │ ├── generateBookOfRecords.js │ ├── mongohelper.js │ ├── new_Downtown/ │ │ ├── Downtown_10350.json │ │ ├── Downtown_10351.json │ │ ├── Downtown_10352.json │ │ ├── Downtown_10385.json │ │ ├── Downtown_10386.json │ │ ├── Downtown_10456.json │ │ ├── Downtown_10457.json │ │ ├── Downtown_10458.json │ │ ├── Downtown_10459.json │ │ ├── Downtown_10473.json │ │ ├── Downtown_10474.json │ │ ├── Downtown_10475.json │ │ ├── Downtown_10476.json │ │ ├── Downtown_10477.json │ │ ├── Downtown_10478.json │ │ ├── Downtown_10479.json │ │ ├── Downtown_1972.json │ │ ├── Downtown_1974.json │ │ ├── Downtown_1976.json │ │ ├── Downtown_1977.json │ │ ├── Downtown_1978.json │ │ ├── Downtown_1979.json │ │ ├── Downtown_1980.json │ │ ├── Downtown_1g.json │ │ ├── Downtown_1h.json │ │ ├── Downtown_1i.json │ │ ├── Downtown_1p.json │ │ ├── Downtown_1q.json │ │ ├── Downtown_1r.json │ │ ├── Downtown_1t.json │ │ ├── Downtown_1u.json │ │ ├── Downtown_1v.json │ │ ├── Downtown_2c.json │ │ ├── Downtown_2d.json │ │ ├── Downtown_2g.json │ │ ├── Downtown_2i.json │ │ ├── Downtown_2s.json │ │ ├── Downtown_3b.json │ │ ├── Downtown_3c.json │ │ ├── Downtown_3d.json │ │ ├── Downtown_3e.json │ │ ├── Downtown_3f.json │ │ ├── Downtown_3g.json │ │ ├── Downtown_3h.json │ │ ├── Downtown_3i.json │ │ ├── Downtown_3j.json │ │ ├── Downtown_3s.json │ │ ├── Downtown_4a.json │ │ ├── Downtown_4b.json │ │ ├── Downtown_4c.json │ │ ├── Downtown_4d.json │ │ ├── Downtown_4e.json │ │ ├── Downtown_4f.json │ │ ├── Downtown_4g.json │ │ ├── Downtown_4h.json │ │ ├── Downtown_4i.json │ │ ├── Downtown_4j.json │ │ ├── Downtown_4k.json │ │ ├── Downtown_4l.json │ │ ├── Downtown_4m.json │ │ ├── Downtown_4s.json │ │ ├── Downtown_5a.json │ │ ├── Downtown_5b.json │ │ ├── Downtown_5c.json │ │ ├── Downtown_5d.json │ │ ├── Downtown_5e.json │ │ ├── Downtown_5f.json │ │ ├── Downtown_5g.json │ │ ├── Downtown_5h.json │ │ ├── Downtown_5i.json │ │ ├── Downtown_5j.json │ │ ├── Downtown_5k.json │ │ ├── Downtown_5l.json │ │ ├── Downtown_6a.json │ │ ├── Downtown_6b.json │ │ ├── Downtown_6c.json │ │ ├── Downtown_6d.json │ │ ├── Downtown_6e.json │ │ ├── Downtown_6f.json │ │ ├── Downtown_6g.json │ │ ├── Downtown_6h.json │ │ ├── Downtown_6i.json │ │ ├── Downtown_6j.json │ │ ├── Downtown_7a.json │ │ ├── Downtown_7b.json │ │ ├── Downtown_7c.json │ │ ├── Downtown_7d.json │ │ ├── Downtown_7e.json │ │ ├── Downtown_7f.json │ │ ├── Downtown_7g.json │ │ ├── Downtown_7h.json │ │ ├── Downtown_7i.json │ │ ├── Downtown_7j.json │ │ ├── Downtown_8c.json │ │ ├── Downtown_8d.json │ │ ├── Downtown_8e.json │ │ ├── Downtown_8g.json │ │ ├── Downtown_8i.json │ │ ├── Downtown_9108.json │ │ ├── Downtown_9135.json │ │ ├── Downtown_9149.json │ │ ├── Downtown_9174.json │ │ ├── Downtown_9175.json │ │ ├── Downtown_9176.json │ │ ├── Downtown_9177.json │ │ ├── Downtown_9178.json │ │ ├── Downtown_9179.json │ │ ├── Downtown_9191.json │ │ ├── Downtown_9192.json │ │ ├── Downtown_9193.json │ │ ├── Downtown_9194.json │ │ ├── Downtown_9195.json │ │ ├── Downtown_9204.json │ │ ├── Downtown_9205.json │ │ ├── Downtown_9206.json │ │ ├── Downtown_9208.json │ │ ├── Downtown_9209.json │ │ ├── Downtown_9215.json │ │ ├── Downtown_9216.json │ │ ├── Downtown_9229.json │ │ ├── Downtown_9230.json │ │ ├── Downtown_9231.json │ │ ├── Downtown_9232.json │ │ ├── Downtown_9233.json │ │ ├── Downtown_9241.json │ │ ├── Downtown_9d.json │ │ ├── Downtown_9f.json │ │ ├── Downtown_9g.json │ │ ├── Downtown_9h.json │ │ ├── Downtown_9j.json │ │ ├── Downtown_9k.json │ │ ├── avatars_court.json │ │ ├── court_front.json │ │ ├── item-Downtown.plaque.json │ │ ├── rent_front1.json │ │ ├── rent_front2.json │ │ └── rent_front3.json │ ├── package.json │ ├── populateModels.js │ ├── shell │ ├── shell.js │ ├── statics.json │ ├── translateBookToHTML.js │ └── writeHabitatUser.js ├── dev.sh ├── docker-compose.prod.yml ├── docker-compose.yml ├── habibots/ │ ├── .gitignore │ ├── Dockerfile │ ├── README.md │ ├── assets/ │ │ ├── greeting.txt │ │ ├── hatchery.txt │ │ ├── tutoring.txt │ │ └── vendoGreeting.txt │ ├── bots/ │ │ ├── attacker.js │ │ ├── connector.js │ │ ├── conversationalist.js │ │ ├── curser.js │ │ ├── eliza.js │ │ ├── greeter.js │ │ ├── hatchery.js │ │ ├── oracle.js │ │ ├── protester.js │ │ ├── tutor.js │ │ ├── twitchchatter.js │ │ └── walker.js │ ├── constants.js │ ├── habibot.js │ ├── package.json │ ├── run │ └── util.js ├── incomplete/ │ ├── Back4t/ │ │ ├── back4t_01.json │ │ ├── back4t_02.json │ │ ├── back4t_03.json │ │ ├── back4t_04.json │ │ ├── back4t_05.json │ │ ├── back4t_11.json │ │ ├── back4t_12.json │ │ ├── back4t_13.json │ │ ├── back4t_14.json │ │ ├── back4t_15.json │ │ ├── back4t_20.json │ │ ├── back4t_21.json │ │ ├── back4t_22.json │ │ ├── back4t_23.json │ │ ├── back4t_24.json │ │ ├── back4t_25.json │ │ ├── back4t_30.json │ │ ├── back4t_31.json │ │ ├── back4t_32.json │ │ ├── back4t_33.json │ │ ├── back4t_34.json │ │ ├── back4t_35.json │ │ ├── back4t_41.json │ │ ├── back4t_42.json │ │ ├── back4t_43.json │ │ ├── back4t_44.json │ │ ├── back4t_45.json │ │ ├── back4t_51.json │ │ ├── back4t_52.json │ │ ├── back4t_53.json │ │ ├── back4t_54.json │ │ ├── back4t_55.json │ │ ├── back4t_56.json │ │ ├── back4t_61.json │ │ ├── back4t_62.json │ │ ├── back4t_63.json │ │ ├── back4t_64.json │ │ ├── back4t_65.json │ │ ├── back4t_71.json │ │ ├── back4t_72.json │ │ ├── back4t_73.json │ │ ├── back4t_74.json │ │ └── back4t_75.json │ └── Beach/ │ ├── beach_0a.json │ ├── beach_0b.json │ ├── beach_0c.json │ ├── beach_0d.json │ ├── beach_0e.json │ ├── beach_0f.json │ ├── beach_1a.json │ ├── beach_1b.json │ ├── beach_1c.json │ ├── beach_1d.json │ ├── beach_1e.json │ ├── beach_1f.json │ ├── beach_1g.json │ ├── beach_2a.json │ ├── beach_2b.json │ ├── beach_2c.json │ ├── beach_2d.json │ ├── beach_2e.json │ └── beach_2f.json ├── installer/ │ └── windows/ │ ├── COPYING.txt │ ├── LICENSE │ ├── NeoHabitatInstaller.iss │ ├── README.md │ └── intro.txt ├── monitoring/ │ ├── grafana/ │ │ ├── dashboards/ │ │ │ └── bridge_v2.json │ │ └── provisioning/ │ │ ├── dashboards/ │ │ │ └── dashboard.yml │ │ └── datasources/ │ │ └── datasources.yml │ ├── loki.yml │ ├── otel-collector-config.yml │ ├── prometheus.yml │ ├── promtail.yml │ └── tempo.yml ├── pom.xml ├── pushserver/ │ ├── README.md │ ├── app.js │ ├── bin/ │ │ └── pushserver │ ├── config.dev.yml │ ├── config.prod.yml │ ├── config.vagrant.yml │ ├── constants/ │ │ ├── ClassTable.js │ │ └── Helpfiles.js │ ├── habiproxy/ │ │ ├── actionTypes.js │ │ ├── proxy.js │ │ └── session.js │ ├── package.json │ ├── public/ │ │ ├── disks/ │ │ │ ├── Habitat-B.d64 │ │ │ └── Habitat-Boot.d64 │ │ ├── docs/ │ │ │ ├── help/ │ │ │ │ ├── help.class.0.md │ │ │ │ ├── help.class.1.md │ │ │ │ ├── help.class.10.md │ │ │ │ ├── help.class.11.md │ │ │ │ ├── help.class.12.md │ │ │ │ ├── help.class.127.md │ │ │ │ ├── help.class.129.md │ │ │ │ ├── help.class.13.md │ │ │ │ ├── help.class.130.md │ │ │ │ ├── help.class.131.md │ │ │ │ ├── help.class.132.md │ │ │ │ ├── help.class.133.md │ │ │ │ ├── help.class.134.md │ │ │ │ ├── help.class.135.md │ │ │ │ ├── help.class.136.md │ │ │ │ ├── help.class.137.md │ │ │ │ ├── help.class.138.md │ │ │ │ ├── help.class.139.md │ │ │ │ ├── help.class.140.md │ │ │ │ ├── help.class.141.md │ │ │ │ ├── help.class.143.md │ │ │ │ ├── help.class.144.md │ │ │ │ ├── help.class.150.md │ │ │ │ ├── help.class.152.md │ │ │ │ ├── help.class.154.md │ │ │ │ ├── help.class.155.md │ │ │ │ ├── help.class.156.md │ │ │ │ ├── help.class.157.md │ │ │ │ ├── help.class.158.md │ │ │ │ ├── help.class.16.md │ │ │ │ ├── help.class.17.md │ │ │ │ ├── help.class.18.md │ │ │ │ ├── help.class.2.md │ │ │ │ ├── help.class.20.md │ │ │ │ ├── help.class.21.md │ │ │ │ ├── help.class.22.md │ │ │ │ ├── help.class.23.md │ │ │ │ ├── help.class.24.md │ │ │ │ ├── help.class.25.md │ │ │ │ ├── help.class.26.md │ │ │ │ ├── help.class.27.md │ │ │ │ ├── help.class.28.md │ │ │ │ ├── help.class.29.md │ │ │ │ ├── help.class.3.md │ │ │ │ ├── help.class.30.md │ │ │ │ ├── help.class.31.md │ │ │ │ ├── help.class.32.md │ │ │ │ ├── help.class.33.md │ │ │ │ ├── help.class.35.md │ │ │ │ ├── help.class.36.md │ │ │ │ ├── help.class.37.md │ │ │ │ ├── help.class.38.md │ │ │ │ ├── help.class.39.md │ │ │ │ ├── help.class.4.md │ │ │ │ ├── help.class.40.md │ │ │ │ ├── help.class.42.md │ │ │ │ ├── help.class.43.md │ │ │ │ ├── help.class.44.md │ │ │ │ ├── help.class.45.md │ │ │ │ ├── help.class.46.md │ │ │ │ ├── help.class.47.md │ │ │ │ ├── help.class.48.md │ │ │ │ ├── help.class.49.md │ │ │ │ ├── help.class.5.md │ │ │ │ ├── help.class.52.md │ │ │ │ ├── help.class.54.md │ │ │ │ ├── help.class.55.md │ │ │ │ ├── help.class.56.md │ │ │ │ ├── help.class.57.md │ │ │ │ ├── help.class.58.md │ │ │ │ ├── help.class.6.md │ │ │ │ ├── help.class.60.md │ │ │ │ ├── help.class.61.md │ │ │ │ ├── help.class.63.md │ │ │ │ ├── help.class.64.md │ │ │ │ ├── help.class.7.md │ │ │ │ ├── help.class.74.md │ │ │ │ ├── help.class.76.md │ │ │ │ ├── help.class.82.md │ │ │ │ ├── help.class.84.md │ │ │ │ ├── help.class.85.md │ │ │ │ ├── help.class.89.md │ │ │ │ ├── help.class.90.md │ │ │ │ ├── help.class.91.md │ │ │ │ ├── help.class.94.md │ │ │ │ ├── help.class.95.md │ │ │ │ ├── help.class.96.md │ │ │ │ ├── help.class.97.md │ │ │ │ ├── help.does.not.exist.md │ │ │ │ ├── help.impossible.md │ │ │ │ ├── help.scenic.objects.md │ │ │ │ └── help.unimplemented.md │ │ │ └── region/ │ │ │ ├── A_TURF.md │ │ │ ├── Backroom.md │ │ │ ├── CTF.md │ │ │ ├── Desert.md │ │ │ ├── Dnalsi.md │ │ │ ├── Downtown.md │ │ │ ├── Downtown_10351.md │ │ │ ├── Downtown_1972.md │ │ │ ├── Downtown_1977.md │ │ │ ├── Downtown_1978.md │ │ │ ├── Downtown_1979.md │ │ │ ├── Downtown_1980.md │ │ │ ├── Downtown_2i.md │ │ │ ├── Downtown_4c.md │ │ │ ├── Downtown_4d.md │ │ │ ├── Downtown_4h.md │ │ │ ├── Downtown_4k.md │ │ │ ├── Downtown_4l.md │ │ │ ├── Downtown_4m.md │ │ │ ├── Downtown_5c.md │ │ │ ├── Downtown_5f.md │ │ │ ├── Downtown_5h.md │ │ │ ├── Downtown_5i.md │ │ │ ├── Downtown_5j.html │ │ │ ├── Downtown_5k.html │ │ │ ├── Downtown_5l.md │ │ │ ├── Downtown_7b.md │ │ │ ├── Downtown_7i.md │ │ │ ├── Downtown_8i.md │ │ │ ├── Downtown_9g.md │ │ │ ├── Downtown_9h.md │ │ │ ├── Downtown_9j.md │ │ │ ├── Downtown_9k.md │ │ │ ├── EMULATOR_HELP.md │ │ │ ├── I5.md │ │ │ ├── NOT_FOUND.md │ │ │ ├── Popustop.md │ │ │ ├── Woods_gr.md │ │ │ ├── Woods_gs.md │ │ │ ├── YOUR_TURF.md │ │ │ ├── avatars_court.md │ │ │ ├── back4t_75.md │ │ │ ├── court_front.md │ │ │ ├── hatchery.md │ │ │ ├── rent_front1.md │ │ │ ├── rent_front2.md │ │ │ ├── rent_front3.md │ │ │ └── test.md │ │ ├── javascripts/ │ │ │ ├── avatarSelector.js │ │ │ ├── bootstrap3-typeahead.js │ │ │ ├── emularity.js │ │ │ ├── emulator.js │ │ │ ├── es6-promise.js │ │ │ ├── eventStream.js │ │ │ ├── index.js │ │ │ ├── rotate.js │ │ │ └── utils.js │ │ ├── stylesheets/ │ │ │ └── style.css │ │ └── vice/ │ │ ├── hotkeys.txt │ │ └── joymap.txt │ ├── routes/ │ │ ├── api.js │ │ ├── docs.js │ │ ├── emulator.js │ │ ├── events.js │ │ └── index.js │ ├── run │ └── views/ │ ├── docPage.ejs │ ├── emulator.ejs │ ├── error.ejs │ ├── events.ejs │ ├── footer.ejs │ ├── header.ejs │ ├── index.ejs │ └── vice_ini.ejs ├── recreate ├── regionator/ │ ├── Downtown_1h.rdl │ ├── Downtown_1t.rdl │ ├── Downtown_4c.rdl │ ├── Woods_3c.rdl │ ├── app.py │ ├── back4t_20.rdl │ ├── mod_defaults.yml │ ├── mod_index.yml │ ├── mod_renames.yml │ ├── parse_object_db.py │ ├── parse_region_db.py │ ├── parser.py │ ├── region.py │ └── test.py ├── run ├── scripts/ │ └── deploy-bridge.sh ├── src/ │ └── main/ │ ├── java/ │ │ └── org/ │ │ └── made/ │ │ └── neohabitat/ │ │ ├── Coinop.java │ │ ├── Constants.java │ │ ├── Container.java │ │ ├── Copyable.java │ │ ├── Document.java │ │ ├── HabitatMod.java │ │ ├── HabitatVerbs.java │ │ ├── Magical.java │ │ ├── MailQueue.java │ │ ├── MailQueueRecord.java │ │ ├── Massive.java │ │ ├── NeoHabitat.java │ │ ├── Openable.java │ │ ├── Oracular.java │ │ ├── Polygonal.java │ │ ├── Poster.java │ │ ├── Seating.java │ │ ├── Teleporter.java │ │ ├── Toggle.java │ │ ├── Walkable.java │ │ ├── Weapon.java │ │ └── mods/ │ │ ├── Amulet.java │ │ ├── Aquarium.java │ │ ├── Atm.java │ │ ├── Avatar.java │ │ ├── Bag.java │ │ ├── Ball.java │ │ ├── Bed.java │ │ ├── Book.java │ │ ├── Bottle.java │ │ ├── Box.java │ │ ├── Bridge.java │ │ ├── Building.java │ │ ├── Bureaucrat.java │ │ ├── Bush.java │ │ ├── Chair.java │ │ ├── Changomatic.java │ │ ├── Chest.java │ │ ├── Club.java │ │ ├── Coke_machine.java │ │ ├── Compass.java │ │ ├── Couch.java │ │ ├── Countertop.java │ │ ├── Crystal_ball.java │ │ ├── Die.java │ │ ├── Display_case.java │ │ ├── Door.java │ │ ├── Dropbox.java │ │ ├── Drugs.java │ │ ├── Elevator.java │ │ ├── Escape_device.java │ │ ├── Fake_gun.java │ │ ├── Fence.java │ │ ├── Flag.java │ │ ├── Flashlight.java │ │ ├── Flat.java │ │ ├── Floor_lamp.java │ │ ├── Fortune_machine.java │ │ ├── Fountain.java │ │ ├── Frisbee.java │ │ ├── Game_piece.java │ │ ├── Garbage_can.java │ │ ├── Gemstone.java │ │ ├── Ghost.java │ │ ├── Glue.java │ │ ├── Grenade.java │ │ ├── Ground.java │ │ ├── Gun.java │ │ ├── Hand_of_god.java │ │ ├── Head.java │ │ ├── Hole.java │ │ ├── Hot_tub.java │ │ ├── House_cat.java │ │ ├── Key.java │ │ ├── Knick_knack.java │ │ ├── Knife.java │ │ ├── Magic_immobile.java │ │ ├── Magic_lamp.java │ │ ├── Magic_staff.java │ │ ├── Magic_wand.java │ │ ├── Mailbox.java │ │ ├── Matchbook.java │ │ ├── Movie_camera.java │ │ ├── Paper.java │ │ ├── Pawn_machine.java │ │ ├── Picture.java │ │ ├── Plant.java │ │ ├── Plaque.java │ │ ├── Pond.java │ │ ├── Region.java │ │ ├── Ring.java │ │ ├── Rock.java │ │ ├── Roof.java │ │ ├── Safe.java │ │ ├── Sensor.java │ │ ├── Sex_changer.java │ │ ├── Short_sign.java │ │ ├── Shovel.java │ │ ├── Sign.java │ │ ├── Sky.java │ │ ├── Spray_can.java │ │ ├── Street.java │ │ ├── Streetlamp.java │ │ ├── Stun_gun.java │ │ ├── Super_trapezoid.java │ │ ├── Table.java │ │ ├── Teleport.java │ │ ├── Tokens.java │ │ ├── Trapezoid.java │ │ ├── Tree.java │ │ ├── Vendo_front.java │ │ ├── Vendo_inside.java │ │ ├── Wall.java │ │ ├── Window.java │ │ └── Windup_toy.java │ └── resources/ │ └── version.txt ├── test/ │ ├── ESP.elko │ ├── MOTD.elko │ ├── Telko.js │ ├── about.elko │ ├── alex.elko │ ├── aric.elko │ ├── avatar.elko │ ├── cat-.elko │ ├── cat.elko │ ├── chair.elko │ ├── chip.elko │ ├── chipmonk-.elko │ ├── chipmonk.elko │ ├── choke.elko │ ├── close.elko │ ├── cop-.elko │ ├── cop.elko │ ├── couch.elko │ ├── defaults.elko │ ├── empty.elko │ ├── f3.elko │ ├── f5.elko │ ├── f8.elko │ ├── gesture.elko │ ├── ghost.elko │ ├── head.elko │ ├── help.elko │ ├── id.elko │ ├── janet.elko │ ├── library.elko │ ├── magic.elko │ ├── matt.elko │ ├── open.elko │ ├── package.json │ ├── pay.elko │ ├── quit.elko │ ├── randy.elko │ ├── read.elko │ ├── region.elko │ ├── shoot.elko │ ├── shutdown.elko │ ├── spray.elko │ ├── stdin.elko │ ├── steve.elko │ ├── stu.elko │ ├── table.elko │ ├── teleport.elko │ ├── test.elko │ ├── throw.elko │ ├── turf.elko │ ├── unknown.elko │ ├── walk.elko │ ├── woman-.elko │ └── woman.elko ├── tools/ │ ├── README.md │ ├── elizabot.service │ ├── log-parser/ │ │ ├── README.md │ │ ├── SUMMARY.md │ │ ├── habitat-log-analyzer.js │ │ ├── log-parser.js │ │ ├── package.json │ │ ├── protocol-decoder.js │ │ ├── qlink-decoder.js │ │ ├── session-analyzer-example.txt │ │ └── session-analyzer.js │ ├── mongodb.repo │ ├── vice/ │ │ ├── launch-vice.sh │ │ └── neohabitat.vicerc │ ├── vice_login_driver/ │ │ ├── AutoHotkey.ahk │ │ ├── README.md │ │ ├── app.js │ │ └── package.json │ ├── welcomebot.service │ └── wireproxy/ │ ├── go.mod │ └── main.go ├── vagrant/ │ └── build.sh └── vice_tool.py
SYMBOL INDEX (2342 symbols across 160 files)
FILE: astroturf/app.py
function convert_files_in_dir (line 29) | def convert_files_in_dir(input_dir, output_dir):
FILE: astroturf/astroturf.py
function _strip_quotes (line 32) | def _strip_quotes(value):
function _custom_escape_to_ascii (line 39) | def _custom_escape_to_ascii(custom_escape):
function _hex_escape_to_ascii (line 49) | def _hex_escape_to_ascii(hex_escape):
function _octal_escape_to_ascii (line 54) | def _octal_escape_to_ascii(octal_escape):
function _astroesc_text_to_ascii_string (line 59) | def _astroesc_text_to_ascii_string(text):
function _astroesc_text_to_ascii_int_list (line 63) | def _astroesc_text_to_ascii_int_list(text):
class AstroturfRegion (line 123) | class AstroturfRegion(object):
method __init__ (line 129) | def __init__(self, astroturf, line_number, line):
method _get_region_context (line 164) | def _get_region_context(self, linenum):
method output_filename (line 168) | def output_filename(self):
method template_dict (line 172) | def template_dict(self):
method _parse_connection (line 226) | def _parse_connection(self, direction, value):
method _parse_region_specifier (line 240) | def _parse_region_specifier(self, region_specifier):
method write_templated_region (line 249) | def write_templated_region(self):
class Astroturf (line 295) | class Astroturf(object):
method __init__ (line 299) | def __init__(self,
method _parse_base_griddle (line 308) | def _parse_base_griddle(self):
method _parse_region_prototypes (line 320) | def _parse_region_prototypes(self):
method write_output_files (line 327) | def write_output_files(self):
FILE: bridge/Habitat2ElkoBridge.js
constant UFILENAME (line 64) | const UFILENAME = "./usersDB.json";
constant UNASSIGNED_NOID (line 81) | const UNASSIGNED_NOID = 256;
function rnd (line 83) | function rnd(max) {
function userHasTurf (line 92) | function userHasTurf(user) {
function escape (line 322) | function escape(b, zero) {
function descape (line 342) | function descape(b, skip) {
function timeToXmit (line 359) | function timeToXmit(bytes) {
function isString (line 451) | function isString(data) {
function guardedWrite (line 455) | function guardedWrite(connection, msg) {
function futureSend (line 463) | function futureSend(connection, data) {
function toHabitat (line 480) | function toHabitat(connection, data, split) {
function habitatPacketHeader (line 519) | function habitatPacketHeader(start, end, seq, noid, reqNum) {
function habitatAsyncPacketHeader (line 528) | function habitatAsyncPacketHeader(start, end, noid, reqNum) {
function addContentsToCV (line 658) | function addContentsToCV(client, contnoid) {
function toElko (line 672) | function toElko(connection, data) {
constant UNKNOWN_FRAME (line 676) | const UNKNOWN_FRAME = 0;
constant DELIMITED_FRAME (line 677) | const DELIMITED_FRAME = 1;
constant QLR_FRAME (line 678) | const QLR_FRAME = 2;
constant QLINK_FRAME (line 679) | const QLINK_FRAME = 3;
function initializeClientState (line 681) | function initializeClientState(client, who, replySeq) {
function frameClientStream (line 702) | function frameClientStream(client, server, data) {
function parseHabitatClientMessage (line 816) | function parseHabitatClientMessage(client, server, data) {
function enterContext (line 900) | function enterContext(client, server, context) {
function removeNoidFromClient (line 915) | function removeNoidFromClient(client, noid) {
function habitatEncodeElkoModState (line 1224) | function habitatEncodeElkoModState (state, container, buf) {
function diagnosticMessage (line 1228) | function diagnosticMessage(client, text, noid) {
function checkpointUsers (line 1241) | function checkpointUsers() {
function findUser (line 1249) | function findUser(name) {
function parseIncomingElkoServerMessage (line 1260) | function parseIncomingElkoServerMessage(client, server, data) {
function encodeAndSendClientMessage (line 1461) | function encodeAndSendClientMessage(client, o) {
function processIncomingElkoBlob (line 1489) | function processIncomingElkoBlob(client, server, data) {
FILE: db/Text/charset/specimen_files/javascript/parallax.js
function elementViewportOffset (line 3) | function elementViewportOffset(element) {
function updatePositions (line 24) | function updatePositions() {
FILE: db/Text/charset/specimen_files/javascript/scroll-animation.js
function scrollToSection (line 1) | function scrollToSection(section, e) {
function scrollTo (line 7) | function scrollTo(element, to, duration) {
FILE: db/convertClientDataToJava.js
function getSizes (line 33) | function getSizes(subtable, key) {
FILE: db/dumpTeleportEntries.js
function templateStringJoins (line 28) | function templateStringJoins(data) {
function templateConstantJoins (line 46) | function templateConstantJoins(data) {
function templateHabitatObject (line 60) | function templateHabitatObject(data) {
FILE: db/generateBookOfRecords.js
function pad (line 63) | function pad (text, center) {
function sortByStat (line 71) | function sortByStat(userRecords, statID, valueFunc) {
function makeLeaderboard (line 82) | function makeLeaderboard(userRecords, statID, prefix, postfix, valueFunc) {
function generateRecords (line 102) | function generateRecords(userRecords) {
FILE: db/mongohelper.js
constant DOWN (line 2) | const DOWN = "}";
constant LEFT (line 3) | const LEFT = "~";
constant RIGHT (line 4) | const RIGHT = "";
constant SPACE (line 5) | const SPACE = " ";
constant WEST (line 7) | const WEST = 0;
constant SOUTH (line 8) | const SOUTH = 1;
constant EAST (line 9) | const EAST = 2;
constant NORTH (line 10) | const NORTH = 3;
function mhelp (line 13) | function mhelp() {
function eget (line 30) | function eget(ref) { return db.odb.findOne({ref:ref}); }
function eremove (line 32) | function eremove(ref) { return db.odb.remove({ref:ref}); }
function esave (line 34) | function esave(obj) { return db.odb.save(obj); }
function eupdateOne (line 36) | function eupdateOne(obj) {
function eupdate (line 43) | function eupdate(obj) {
function boxquery (line 52) | function boxquery(lat, lon, range) {
function eclone (line 72) | function eclone(oldref, newref) {
function multiclone (line 79) | function multiclone(oldref, newref, count) {
function egeti (line 86) | function egeti(iref) {
function egetu (line 99) | function egetu(uref) {
function emod (line 112) | function emod(obj, mtype) {
function setpos (line 125) | function setpos(obj, lat, lon) {
function demoConfig (line 132) | function demoConfig() {
function demoReset (line 136) | function demoReset() {
function demoGrab (line 153) | function demoGrab(uref, iref) {
function demoDrop (line 181) | function demoDrop(iref) {
function iholders (line 201) | function iholders(iref) {
function idrop (line 208) | function idrop(iref) {
function igrab (line 233) | function igrab(uref, iref) {
function addClass (line 248) | function addClass(tag, fqn, descref) {
function addStatic (line 255) | function addStatic(key, ref) {
function showUsers (line 261) | function showUsers() {
function showObjs (line 269) | function showObjs() {
function socialGraph (line 275) | function socialGraph(uref) {
function makeSocialLink (line 284) | function makeSocialLink(ufrom, uto) {
function makeSocialConnection (line 293) | function makeSocialConnection(u1, u2) {
FILE: db/populateModels.js
function squish (line 61) | function squish(s) {
function lookForAliases (line 65) | function lookForAliases(o, target) {
function lookForTeleportEntries (line 74) | function lookForTeleportEntries(o) {
function eupdateOne (line 92) | async function eupdateOne(db, obj) {
function eupdateArray (line 101) | async function eupdateArray(db, array) {
function templateStringJoins (line 116) | function templateStringJoins(data) {
function templateConstantJoins (line 134) | function templateConstantJoins(data) {
function templateHabitatObject (line 148) | function templateHabitatObject(data) {
FILE: db/shell.js
function getPapersInRegion (line 1) | function getPapersInRegion(regionName) {
FILE: db/translateBookToHTML.js
function templateStringJoins (line 32) | function templateStringJoins(data) {
function writeHtmlBlock (line 53) | function writeHtmlBlock(block) {
function htmlHeader (line 58) | function htmlHeader(title) {
function writeHabidocPage (line 65) | function writeHabidocPage(pageno, html) {
function htmlFooter (line 72) | function htmlFooter(outfile) {
function dynamicSort (line 116) | function dynamicSort(property) {
function writeIndex (line 128) | function writeIndex(titles) {
function convertFiles (line 144) | function convertFiles (files) {
FILE: db/writeHabitatUser.js
function rnd (line 25) | function rnd(max) {
function testUser (line 53) | function testUser(db, callback) {
function insertUser (line 57) | function insertUser(db, callback) {
FILE: habibots/bots/conversationalist.js
method send (line 51) | send(request, response) {
method getForecast (line 56) | getForecast({context, entities}) {
FILE: habibots/bots/greeter.js
constant CLIENT_EVENTS (line 23) | const CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
constant RTM_EVENTS (line 24) | const RTM_EVENTS = require('@slack/client').RTM_EVENTS;
FILE: habibots/bots/hatchery.js
constant CLIENT_EVENTS (line 21) | const CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS
constant RTM_EVENTS (line 22) | const RTM_EVENTS = require('@slack/client').RTM_EVENTS
FILE: habibots/bots/oracle.js
constant CLIENT_EVENTS (line 20) | const CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS
constant RTM_EVENTS (line 21) | const RTM_EVENTS = require('@slack/client').RTM_EVENTS
FILE: habibots/bots/tutor.js
constant CLIENT_EVENTS (line 23) | const CLIENT_EVENTS = require('@slack/client').CLIENT_EVENTS;
constant RTM_EVENTS (line 24) | const RTM_EVENTS = require('@slack/client').RTM_EVENTS;
FILE: habibots/habibot.js
class HabiBot (line 52) | class HabiBot {
method constructor (line 54) | constructor(host, port, username) {
method newWithConfig (line 81) | static newWithConfig(host, port, username, config) {
method connect (line 91) | connect() {
method corporate (line 117) | corporate() {
method discorporate (line 137) | discorporate() {
method rnd (line 147) | static rnd(max) {
method doPosture (line 156) | doPosture(posture) {
method ensureCorporated (line 176) | ensureCorporated() {
method faceDirection (line 185) | faceDirection(direction) {
method fnKey (line 204) | fnKey(key, target) {
method attackAvatar (line 218) | attackAvatar(objRef, pointed_noid) {
method getAvatar (line 231) | getAvatar() {
method getAvatarNoid (line 242) | getAvatarNoid() {
method collectAvatarNoids (line 254) | collectAvatarNoids() {
method getDirection (line 271) | getDirection(obj) {
method getDirectionOfNoid (line 299) | getDirectionOfNoid(noid) {
method getMod (line 308) | getMod(noid) {
method getNoid (line 317) | getNoid(noid) {
method gotoContext (line 332) | gotoContext(context) {
method isGhosted (line 349) | isGhosted() {
method newRegion (line 363) | newRegion(direction) {
method on (line 412) | on(eventType, callback) {
method putObj (line 428) | putObj(objRef, containerNoid, x, y, orientation) {
method say (line 444) | say(text) {
method ESPsay (line 458) | ESPsay(text) {
method sayLines (line 473) | sayLines(textLines) {
method ESPsayLines (line 491) | ESPsayLines(textLines) {
method send (line 508) | send(obj) {
method sendWithDelay (line 519) | sendWithDelay(obj, delayMillis) {
method touchAvatar (line 547) | touchAvatar(noid) {
method openDoor (line 560) | openDoor(ref) {
method closeDoor (line 572) | closeDoor(ref){
method sitOrstand (line 579) | sitOrstand(num, chairNoid) {
method travelableDirections (line 591) | travelableDirections() {
method currentRealm (line 600) | currentRealm() {
method wait (line 609) | wait(millis) {
method walkTo (line 628) | walkTo(x, y, how) {
method walkToExit (line 643) | walkToExit(direction) {
method walkToRandomExit (line 673) | walkToRandomExit() {
method walkToAvatar (line 681) | walkToAvatar(avatar) {
method addNames (line 700) | addNames(s) {
method clearNames (line 713) | clearNames(s) {
method clearState (line 726) | clearState() {
method onDisconnect (line 735) | onDisconnect() {
method processData (line 749) | processData(buffer) {
method processElkoMessage (line 757) | processElkoMessage(o) {
method substituteName (line 832) | substituteName(s) {
method substituteState (line 844) | substituteState(m) {
method tryEnsureCorporated (line 892) | tryEnsureCorporated(curTry) {
FILE: habibots/util.js
function clone (line 18) | function clone(obj) {
function parseElko (line 59) | function parseElko(buffer) {
FILE: pushserver/habiproxy/proxy.js
function stringifyID (line 8) | function stringifyID(socket) {
class HabiproxyServer (line 13) | class HabiproxyServer {
method constructor (line 14) | constructor(mongoDb, listenHost, listenPort, elkoHost, elkoPort) {
method awakeSessions (line 33) | awakeSessions() {
method buildContextMap (line 46) | buildContextMap() {
method handleClientConnect (line 53) | handleClientConnect(client) {
method handleSessionReady (line 69) | handleSessionReady(session) {
method resolveNeighbors (line 89) | resolveNeighbors(context) {
method start (line 120) | start() {
method on (line 130) | on(eventType, callback) {
FILE: pushserver/habiproxy/session.js
function stringifyID (line 8) | function stringifyID(socket) {
class HabitatSession (line 13) | class HabitatSession {
method constructor (line 14) | constructor(serverHost, serverPort, client) {
method start (line 36) | start() {
method attachClient (line 42) | attachClient() {
method attachServer (line 52) | attachServer() {
method avatarHealth (line 62) | avatarHealth() {
method avatarOrientation (line 79) | avatarOrientation() {
method avatarRegion (line 97) | avatarRegion() {
method clearCallbacks (line 104) | clearCallbacks() {
method detachClient (line 118) | detachClient() {
method detachServer (line 123) | detachServer() {
method doAction (line 128) | doAction(action) {
method disconnectProxy (line 163) | disconnectProxy() {
method ensureServerConnected (line 195) | ensureServerConnected() {
method resume (line 208) | resume(readySession) {
method fireEnteredRegion (line 238) | fireEnteredRegion() {
method handleClientData (line 247) | handleClientData(buffer) {
method handleClientDisconnect (line 272) | handleClientDisconnect() {
method handleServerConnect (line 277) | handleServerConnect() {
method handleServerData (line 289) | handleServerData(buffer) {
method handleServerDisconnect (line 314) | handleServerDisconnect() {
method id (line 319) | id() {
method onClient (line 327) | onClient(eventType, callback) {
method onServer (line 335) | onServer(eventType, callback) {
method processClientMessage (line 343) | processClientMessage(message) {
method processServerMessage (line 362) | processServerMessage(message) {
method sendClientMessage (line 414) | sendClientMessage(message) {
method sendServerMessage (line 427) | sendServerMessage(message) {
FILE: pushserver/public/javascripts/avatarSelector.js
function supportsGamepads (line 4) | function supportsGamepads() {
function trackAvatar (line 8) | function trackAvatar(avatarName) {
function activateDocent (line 13) | function activateDocent() {
function viewHelp (line 22) | function viewHelp() {
function refreshAvatarButtons (line 26) | function refreshAvatarButtons() {
FILE: pushserver/public/javascripts/emularity.js
function IALoader (line 26) | function IALoader(canvas, game, callbacks, scale) {
function BaseLoader (line 508) | function BaseLoader() {
function DosBoxLoader (line 619) | function DosBoxLoader() {
function PC98DosBoxLoader (line 642) | function PC98DosBoxLoader() {
function MAMELoader (line 665) | function MAMELoader() {
function VICELoader (line 705) | function VICELoader() {
function SAELoader (line 749) | function SAELoader() {
function PCELoader (line 795) | function PCELoader() {
function EmscriptenRunner (line 881) | function EmscriptenRunner(canvas, game_data) {
function PC98DosBoxRunner (line 964) | function PC98DosBoxRunner() {
function MAMERunner (line 981) | function MAMERunner() {
function SAERunner (line 1002) | function SAERunner(canvas, game_data) {
function Emulator (line 1120) | function Emulator(canvas, callbacks, loadFiles) {
function getfullscreenenabler (line 1834) | function getfullscreenenabler() {
function BFSOpenZip (line 1838) | function BFSOpenZip(loadedData) {
function moveConfigToRoot (line 1900) | function moveConfigToRoot(fs) {
function extend (line 1934) | function extend(a, b) {
function dict_from_xml (line 1959) | function dict_from_xml(xml) {
function list_from_xml (line 1973) | function list_from_xml(xml) {
function files_from_filelist (line 1980) | function files_from_filelist(xml) {
function files_with_ext_from_filelist (line 1991) | function files_with_ext_from_filelist(xml, ext) {
function meta_props_matching (line 2004) | function meta_props_matching(meta, regex) {
function _SDL_CreateRGBSurfaceFrom (line 2018) | function _SDL_CreateRGBSurfaceFrom(pixels, width, height, depth, pitch, ...
FILE: pushserver/public/javascripts/emulator.js
function resumeAudio (line 43) | function resumeAudio(e) {
function startEmulator (line 58) | function startEmulator() {
FILE: pushserver/public/javascripts/es6-promise.js
function $$utils$$objectOrFunction (line 12) | function $$utils$$objectOrFunction(x) {
function $$utils$$isFunction (line 16) | function $$utils$$isFunction(x) {
function $$utils$$isMaybeThenable (line 20) | function $$utils$$isMaybeThenable(x) {
function $$utils$$F (line 36) | function $$utils$$F() { }
function $$asap$$useNextTick (line 72) | function $$asap$$useNextTick() {
function $$asap$$useMutationObserver (line 78) | function $$asap$$useMutationObserver() {
function $$asap$$useMessageChannel (line 90) | function $$asap$$useMessageChannel() {
function $$asap$$useSetTimeout (line 98) | function $$asap$$useSetTimeout() {
function $$asap$$flush (line 106) | function $$asap$$flush() {
function $$$internal$$noop (line 133) | function $$$internal$$noop() {}
function $$$internal$$selfFullfillment (line 139) | function $$$internal$$selfFullfillment() {
function $$$internal$$cannotReturnOwn (line 143) | function $$$internal$$cannotReturnOwn() {
function $$$internal$$getThen (line 147) | function $$$internal$$getThen(promise) {
function $$$internal$$tryThen (line 156) | function $$$internal$$tryThen(then, value, fulfillmentHandler, rejection...
function $$$internal$$handleForeignThenable (line 164) | function $$$internal$$handleForeignThenable(promise, thenable, then) {
function $$$internal$$handleOwnThenable (line 189) | function $$$internal$$handleOwnThenable(promise, thenable) {
function $$$internal$$handleMaybeThenable (line 203) | function $$$internal$$handleMaybeThenable(promise, maybeThenable) {
function $$$internal$$resolve (line 221) | function $$$internal$$resolve(promise, value) {
function $$$internal$$publishRejection (line 231) | function $$$internal$$publishRejection(promise) {
function $$$internal$$fulfill (line 239) | function $$$internal$$fulfill(promise, value) {
function $$$internal$$reject (line 251) | function $$$internal$$reject(promise, reason) {
function $$$internal$$subscribe (line 259) | function $$$internal$$subscribe(parent, child, onFulfillment, onRejectio...
function $$$internal$$publish (line 274) | function $$$internal$$publish(promise) {
function $$$internal$$ErrorObject (line 296) | function $$$internal$$ErrorObject() {
function $$$internal$$tryCatch (line 302) | function $$$internal$$tryCatch(callback, detail) {
function $$$internal$$invokeCallback (line 311) | function $$$internal$$invokeCallback(settled, promise, callback, detail) {
function $$$internal$$initializePromise (line 349) | function $$$internal$$initializePromise(promise, resolver) {
function $$$enumerator$$makeSettledResult (line 361) | function $$$enumerator$$makeSettledResult(state, position, value) {
function $$$enumerator$$Enumerator (line 375) | function $$$enumerator$$Enumerator(Constructor, input, abortOnReject, la...
function onFulfillment (line 489) | function onFulfillment(value) {
function onRejection (line 493) | function onRejection(reason) {
function $$es6$promise$promise$$needsResolver (line 527) | function $$es6$promise$promise$$needsResolver() {
function $$es6$promise$promise$$needsNew (line 531) | function $$es6$promise$promise$$needsNew() {
function $$es6$promise$promise$$Promise (line 640) | function $$es6$promise$promise$$Promise(resolver) {
FILE: pushserver/public/javascripts/eventStream.js
function orientationToRotation (line 8) | function orientationToRotation(orientation) {
function processEvent (line 26) | function processEvent(event) {
function startEventSource (line 63) | function startEventSource() {
function doAction (line 79) | function doAction(type, params) {
function startEsp (line 97) | function startEsp(avatarName) {
function sendTeleportInvite (line 101) | function sendTeleportInvite(avatarName) {
function sendTeleportRequest (line 105) | function sendTeleportRequest(avatarName) {
function appendButton (line 109) | function appendButton(element, avatarName, btnClass, text, tooltip, oncl...
function fillOnlineAvatarsTable (line 126) | function fillOnlineAvatarsTable(avatars) {
function refreshAvatars (line 178) | function refreshAvatars() {
function startDocentUpdates (line 184) | function startDocentUpdates() {
FILE: pushserver/public/javascripts/index.js
function refreshAvatars (line 1) | function refreshAvatars() {
FILE: pushserver/routes/api.js
class APIRoutes (line 8) | class APIRoutes {
method constructor (line 9) | constructor(habiproxy, config, mongoDb) {
method setRoutes (line 20) | setRoutes() {
FILE: pushserver/routes/docs.js
class DocsRoutes (line 15) | class DocsRoutes {
method constructor (line 16) | constructor(habiproxy, config, mongoDb) {
method renderDocs (line 47) | renderDocs(req, res, subject, mdDocLocation, htmlDocLocation, notFound...
method setRoutes (line 86) | setRoutes() {
FILE: pushserver/routes/emulator.js
class EmulatorRoutes (line 6) | class EmulatorRoutes {
method constructor (line 8) | constructor(habiproxy, config, mongoDb) {
method setRoutes (line 16) | setRoutes() {
FILE: pushserver/routes/events.js
function sendEvent (line 7) | function sendEvent(res, avatarName, type, msg) {
class EventRoutes (line 20) | class EventRoutes {
method constructor (line 21) | constructor(habiproxy, config, mongoDb) {
method getRegionDocsURL (line 30) | getRegionDocsURL(regionName, avatar, region) {
method getHelpDocsURL (line 57) | getHelpDocsURL(session, objectRef) {
method setRoutes (line 68) | setRoutes() {
FILE: pushserver/routes/index.js
class IndexRoutes (line 4) | class IndexRoutes {
method constructor (line 5) | constructor(habiproxy, config, mongoDb) {
method setRoutes (line 13) | setRoutes() {
FILE: regionator/app.py
function convert_file (line 36) | def convert_file(rdl_file, output_dir):
function convert_files_in_dir (line 48) | def convert_files_in_dir(input_dir, output_dir):
FILE: regionator/parse_object_db.py
function decode_properties (line 120) | def decode_properties(buf, fmt, keys):
function parse_array (line 155) | def parse_array(buf, fmt, count):
function decode_text (line 166) | def decode_text(buf):
function parse_properties (line 174) | def parse_properties(cls, property_data):
function decode_row (line 216) | def decode_row(row):
function main (line 248) | def main():
FILE: regionator/parse_region_db.py
function extract_flags (line 64) | def extract_flags(flags):
function main (line 86) | def main():
FILE: regionator/region.py
function _default (line 22) | def _default(self, obj):
class Mod (line 44) | class Mod(object):
method __init__ (line 45) | def __init__(self, region, identifier, params={}, additional_params={},
method __repr__ (line 57) | def __repr__(self):
method neohabitat_mod (line 61) | def neohabitat_mod(self):
method neohabitat_name (line 113) | def neohabitat_name(self):
method neohabitat_ref (line 120) | def neohabitat_ref(self):
method find_connection_context (line 124) | def find_connection_context(self, suffix):
method _chomped_params (line 135) | def _chomped_params(self, start_index=8):
method to_json (line 145) | def to_json(self):
class Region (line 160) | class Region(object):
method __init__ (line 161) | def __init__(self, name, params=None, mods=None, parse_results=None):
method __repr__ (line 180) | def __repr__(self):
method from_rdl_file (line 185) | def from_rdl_file(cls, rdl_file):
method from_parse_results (line 195) | def from_parse_results(cls, name, parse_results):
method neohabitat_context (line 202) | def neohabitat_context(self):
method _parse_params_from_results (line 205) | def _parse_params_from_results(self):
method _parse_params (line 208) | def _parse_params(self, param_tokens):
method _parse_mods_from_results (line 227) | def _parse_mods_from_results(self):
method to_json (line 314) | def to_json(self):
FILE: src/main/java/org/made/neohabitat/Coinop.java
class Coinop (line 17) | public abstract class Coinop extends HabitatMod {
method changeable (line 19) | public boolean changeable() { return true; }
method Coinop (line 24) | public Coinop(OptInteger style, OptInteger x, OptInteger y, OptInteger...
method Coinop (line 30) | public Coinop(int style, int x, int y, int orientation, int gr_state, ...
method encodeCoinop (line 35) | public JSONLiteral encodeCoinop(JSONLiteral result) {
method addToTake (line 43) | public void addToTake(int amount) {
FILE: src/main/java/org/made/neohabitat/Constants.java
type Constants (line 13) | public interface Constants {
FILE: src/main/java/org/made/neohabitat/Container.java
class Container (line 30) | public abstract class Container extends HabitatMod {
method Container (line 47) | public Container(OptInteger style, OptInteger x, OptInteger y, OptInte...
method Container (line 51) | public Container(OptInteger style, OptInteger x, OptInteger y, OptInte...
method Container (line 56) | public Container(int style, int x, int y, int orientation, int gr_stat...
method Container (line 60) | public Container(int style, int x, int y, int orientation, int gr_stat...
method encodeContainer (line 65) | public JSONLiteral encodeContainer(JSONLiteral result) {
method contents (line 84) | public HabitatMod contents(int index) {
method get_container_contents (line 109) | public void get_container_contents(User from) {
method close_container (line 123) | public void close_container(User from) {
method setContainerShutdownSize (line 132) | public int setContainerShutdownSize() {
method destroy_contents (line 156) | public void destroy_contents() {
method meetsOwnershipRestrictions (line 174) | public boolean meetsOwnershipRestrictions(User from) {
FILE: src/main/java/org/made/neohabitat/Copyable.java
type Copyable (line 7) | public interface Copyable {
method copyThisMod (line 8) | HabitatMod copyThisMod();
FILE: src/main/java/org/made/neohabitat/Document.java
class Document (line 30) | public abstract class Document extends HabitatMod {
method Document (line 46) | public Document(OptInteger style, OptInteger x, OptInteger y, OptInteg...
method Document (line 60) | public Document(int style, int x, int y, int orientation, int gr_state...
method Document (line 66) | public Document(int style, int x, int y, int orientation, int gr_state...
method setDocumentState (line 72) | protected void setDocumentState(int last_page, int[][] ascii, String p...
method convertPagesToAscii (line 82) | protected int[][] convertPagesToAscii(String[] pages) {
method objectIsComplete (line 96) | public void objectIsComplete() {
method run (line 107) | @Override
method encodeDocument (line 153) | public JSONLiteral encodeDocument(JSONLiteral result) {
method READ (line 166) | @JSONMethod({ "page" })
method show_text_page (line 181) | public void show_text_page(User from, String path, int page_to_read, i...
method getTextPage (line 189) | protected int[] getTextPage(String path, int page_to_read) {
FILE: src/main/java/org/made/neohabitat/HabitatMod.java
class HabitatMod (line 72) | public abstract class HabitatMod extends Mod implements HabitatVerbs, Ob...
method position (line 123) | public int position() {
method obj_id (line 134) | public String obj_id() {
method avatar (line 145) | public Avatar avatar(User user) {
method current_region (line 154) | public Region current_region() {
method container (line 165) | public Container container(HabitatMod obj) {
method container (line 180) | public Container container() {
method changeable (line 188) | public boolean changeable() {
method HabitatMod (line 211) | public HabitatMod(int style, int x, int y, int orientation, int gr_sta...
method HabitatMod (line 220) | public HabitatMod(OptInteger style, OptInteger x, OptInteger y, OptInt...
method objectIsComplete (line 224) | public void objectIsComplete() {
method encodeCommon (line 237) | public JSONLiteral encodeCommon(JSONLiteral result) {
method illegal (line 262) | public void illegal(User from) {
method illegal (line 274) | public void illegal(User from, String request) {
method TEST (line 287) | @JSONMethod
method HELP (line 301) | @JSONMethod
method ASK (line 312) | @JSONMethod ({"text"})
method DO (line 323) | @JSONMethod
method RDO (line 334) | @JSONMethod
method GET (line 345) | @JSONMethod
method PUT (line 367) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 382) | @JSONMethod({ "target", "x", "y" })
method generic_GET (line 402) | public void generic_GET(User from) {
method generic_PUT (line 527) | public boolean generic_PUT(User from) {
method generic_PUT (line 549) | public boolean generic_PUT(User from, int containerNoid, int x, int y,...
method putMeBack (line 563) | public void putMeBack(User from, boolean copyMe) {
method generic_PUT (line 618) | public boolean generic_PUT(User from, Container cont, int pos_x, int p...
method generic_THROW (line 867) | public boolean generic_THROW(User from, int target, int target_x, int ...
method generic_THROW (line 891) | public boolean generic_THROW(User from, HabitatMod target, int target_...
method generic_ASK (line 1012) | public void generic_ASK(User from, OptString text) {
method send_throw_reply (line 1035) | private void send_throw_reply(User from, int noid, int target, int x, ...
method generic_HELP (line 1047) | public void generic_HELP(User from) {
method unpackBits (line 1311) | public boolean[] unpackBits(int packedBits) {
method packBits (line 1327) | public int packBits(boolean[] bits) {
method container_is_opaque (line 1347) | public boolean container_is_opaque(HabitatMod cont, int pos) {
method empty_handed (line 1368) | public boolean empty_handed(Avatar who) {
method holding (line 1382) | public boolean holding(Avatar avatar, HabitatMod object) {
method heldObject (line 1394) | public HabitatMod heldObject(Avatar avatar) {
method heldObject (line 1405) | public HabitatMod heldObject(User from) {
method heldObject (line 1414) | public HabitatMod heldObject() {
method wearing (line 1428) | public boolean wearing(Avatar avatar, HabitatMod object) {
method getable (line 1440) | public boolean getable(HabitatMod object) {
method immobile (line 1449) | public boolean immobile(HabitatMod object) {
method grabable (line 1518) | public boolean grabable(HabitatMod object) {
method available (line 1539) | public boolean available(HabitatMod container, int x, int y) {
method accessable (line 1557) | public boolean accessable(HabitatMod object, User from) {
method elsewhere (line 1579) | public boolean elsewhere(HabitatMod object, User user) {
method here (line 1592) | public boolean here(HabitatMod object, User user) {
method goto_new_region (line 1610) | public void goto_new_region(Avatar avatar, String contextRef, int dire...
method goto_new_region (line 1628) | public void goto_new_region(Avatar avatar, String contextRef, int dire...
method adjacent (line 1641) | public boolean adjacent(HabitatMod object, User from) {
method change_containers (line 1720) | public boolean change_containers(HabitatMod obj, Container new_contain...
method note_object_creation (line 1755) | public void note_object_creation(HabitatMod obj) {
method note_instance_creation (line 1777) | public void note_instance_creation(HabitatMod obj) {
method note_instance_creation_internal (line 1787) | private void note_instance_creation_internal(HabitatMod obj) {
method note_instance_creation_internal (line 1794) | protected void note_instance_creation_internal(HabitatMod obj, Contain...
method note_resource_creation_internal (line 1812) | private void note_resource_creation_internal(HabitatMod obj, int style) {
method note_image_creation (line 1816) | public void note_image_creation(HabitatMod obj) {
method note_image_creation_internal (line 1822) | protected void note_image_creation_internal(HabitatMod obj, int style,...
method note_resource_creation_internal (line 1833) | protected void note_resource_creation_internal(HabitatMod obj, int sty...
method note_resource_usage (line 1847) | protected void note_resource_usage(int type, int resource, Container c...
method note_object_deletion (line 1867) | public void note_object_deletion(HabitatMod obj) {
method note_instance_deletion (line 1885) | public void note_instance_deletion(HabitatMod obj) {
method note_instance_deletion_internal (line 1897) | private void note_instance_deletion_internal(HabitatMod obj) {
method note_instance_deletion_internal (line 1901) | private void note_instance_deletion_internal(HabitatMod obj, Container...
method note_image_deletion (line 1915) | public void note_image_deletion(HabitatMod obj) {
method note_image_deletion_internal (line 1919) | private void note_image_deletion_internal(HabitatMod obj, int style) {
method note_resource_deletion_internal (line 1930) | private void note_resource_deletion_internal(HabitatMod obj, int style) {
method note_resource_removal (line 1944) | private void note_resource_removal(HabitatMod obj, int type, int resou...
method note_resource_removal (line 1948) | private void note_resource_removal(int type, int resource, Container c...
method mem_checks_ok (line 1975) | public boolean mem_checks_ok(HabitatMod obj) {
method limits_ok (line 1985) | public boolean limits_ok(HabitatMod obj, Region region) {
method c64_capacity (line 1998) | public int c64_capacity() {
method c64_capacity (line 2002) | public int c64_capacity(Region region) {
method mem_check_container (line 2011) | public boolean mem_check_container(Container cont) {
method class_size (line 2021) | public int class_size() {
method instance_size (line 2025) | public int instance_size() {
method heap_space_available (line 2045) | public boolean heap_space_available(HabitatMod obj, Container new_cont...
method trace_msg (line 2091) | public void trace_msg(String msg, Object... args) {
method trace_exception (line 2100) | public void trace_exception(Throwable t) {
method message_to_god (line 2116) | public void message_to_god(HabitatMod obj, HabitatMod avatar, String m...
method object_say (line 2134) | public void object_say(User to, int noid, String text) {
method object_say (line 2150) | public void object_say(User to, String text) {
method object_broadcast (line 2163) | public void object_broadcast(int noid, String text) {
method object_say_to_neighbors (line 2179) | public void object_say_to_neighbors(User from, int noid, String text) {
method object_broadcast (line 2191) | public void object_broadcast(String text) {
method compose_fiddle_msg (line 2203) | public void compose_fiddle_msg(JSONLiteral msg, int target, int offset...
method send_private_fiddle_msg (line 2226) | public void send_private_fiddle_msg(User from, User to, int noid, int ...
method send_private_fiddle_msg (line 2242) | public void send_private_fiddle_msg(User from, User to, int noid, int ...
method send_neighbor_fiddle_msg (line 2255) | public void send_neighbor_fiddle_msg(User from, int noid, int target, ...
method send_neighbor_fiddle_msg (line 2270) | public void send_neighbor_fiddle_msg(User from, int noid, int target, ...
method send_fiddle_msg (line 2280) | public void send_fiddle_msg(int noid, int target, int offset, int[] ar...
method send_fiddle_msg (line 2295) | public void send_fiddle_msg(int noid, int target, int offset, int arg) {
method send_goaway_msg (line 2304) | public void send_goaway_msg(int noid) {
method send_neighbor_goaway_msg (line 2317) | public void send_neighbor_goaway_msg(User from, int noid) {
method unsupported_reply (line 2336) | public void unsupported_reply(User from, int noid, String text) {
method illegal_request (line 2349) | public void illegal_request(User from, String text) {
method new_broadcast_msg (line 2367) | public JSONLiteral new_broadcast_msg(int noid, String op) {
method new_broadcast_msg (line 2385) | public JSONLiteral new_broadcast_msg(String op) {
method send_broadcast_msg (line 2399) | public void send_broadcast_msg(int noid, String op) {
method send_broadcast_msg (line 2417) | public void send_broadcast_msg(int noid, String op, String text) {
method send_broadcast_msg (line 2438) | public void send_broadcast_msg(int noid, String op, String attrib, int...
method send_broadcast_msg (line 2459) | public void send_broadcast_msg(int noid, String op, String attrib, Str...
method send_broadcast_msg (line 2484) | public void send_broadcast_msg(int noid, String op, String a1, int v1,...
method send_broadcast_msg (line 2514) | public void send_broadcast_msg(int noid, String op, String a1, int v1,...
method send_broadcast_msg (line 2549) | public void send_broadcast_msg(int noid, String op, String a1, int v1,...
method new_reply_msg (line 2568) | public JSONLiteral new_reply_msg(int noid) {
method new_reply_msg (line 2581) | public JSONLiteral new_reply_msg() {
method send_reply_msg (line 2594) | public void send_reply_msg(User from, int noid) {
method send_reply_msg (line 2609) | public void send_reply_msg(User from, String text) {
method send_reply_msg (line 2629) | public void send_reply_msg(User from, int noid, String attrib, int val...
method send_reply_msg (line 2653) | public void send_reply_msg(User from, int noid, String a1, int v1, Str...
method send_reply_msg (line 2682) | public void send_reply_msg(User from, int noid, String a1, int v1, Str...
method send_reply_msg (line 2717) | public void send_reply_msg(User from, int noid, String a1, int v1, Str...
method send_reply_msg (line 2754) | public void send_reply_msg(User from, int noid, String a1, int v1, Str...
method send_reply_msg (line 2778) | public void send_reply_msg(User from, int noid, String attrib, String ...
method send_reply_err (line 2796) | public void send_reply_err(User from, int noid, int err) {
method send_reply_error (line 2813) | public void send_reply_error(User from, int noid) {
method send_reply_error (line 2823) | public void send_reply_error(User from) {
method send_reply_success (line 2835) | public void send_reply_success(User from, int noid) {
method send_reply_success (line 2845) | public void send_reply_success(User from) {
method new_neighbor_msg (line 2862) | public JSONLiteral new_neighbor_msg(int noid, String op) {
method new_neighbor_msg (line 2881) | public JSONLiteral new_neighbor_msg(String op) {
method send_neighbor_msg (line 2898) | public void send_neighbor_msg(User from, int noid, String op) {
method send_neighbor_msg (line 2915) | public void send_neighbor_msg(User from, String op) {
method send_neighbor_msg (line 2938) | public void send_neighbor_msg(User from, int noid, String op, String a...
method send_neighbor_msg (line 2967) | public void send_neighbor_msg(User from, int noid, String op, String a...
method send_neighbor_msg (line 2997) | public void send_neighbor_msg(User from, int noid, String op, String a...
method send_neighbor_msg (line 3030) | public void send_neighbor_msg(User from, int noid, String op, String a...
method send_neighbor_msg (line 3069) | public void send_neighbor_msg(User from, int noid, String op, String a...
method send_neighbor_msg (line 3097) | public void send_neighbor_msg(User from, int noid, String op, String a...
method new_private_msg (line 3118) | public JSONLiteral new_private_msg(int noid, String op) {
method new_private_msg (line 3137) | public JSONLiteral new_private_msg(String op) {
method send_private_msg (line 3156) | public void send_private_msg(User from, int noid, User to, String op) {
method send_private_msg (line 3180) | public void send_private_msg(User from, int noid, User to, String op, ...
method send_private_msg (line 3206) | public void send_private_msg(User from, int noid, User to, String op, ...
method send_private_msg (line 3232) | public void send_private_msg(User from, int noid, User to, String op, ...
method send_private_msg (line 3271) | public void send_private_msg(User from, int noid, User to, String op, ...
method send_private_msg (line 3310) | public void send_private_msg(User from, int noid, User to, String op, ...
method send_private_msg (line 3344) | public void send_private_msg(User from, int noid, User to, String op, ...
method send_private_msg (line 3376) | public void send_private_msg(User from, int noid, User to, String op, ...
method clear_bit (line 3393) | public int clear_bit(int val, int bitpos) {
method set_bit (line 3406) | public int set_bit(int val, int bitpos) {
method test_bit (line 3419) | public boolean test_bit(int val, int bitpos) {
method checkpoint_object (line 3431) | public void checkpoint_object(HabitatMod mod) {
method destroy_object (line 3446) | public void destroy_object(HabitatMod mod) {
method isSeating (line 3460) | public boolean isSeating(HabitatMod mod) {
method isSeating (line 3472) | public boolean isSeating() {
method damage_avatar (line 3476) | public int damage_avatar(Avatar who) {
method damage_avatar (line 3490) | public int damage_avatar(Avatar who, int damage) {
method damage_object (line 3504) | public int damage_object(HabitatMod object) {
method damageable (line 3513) | public boolean damageable(HabitatMod object) {
method is_ranged_weapon (line 3517) | public boolean is_ranged_weapon() {
method kill_avatar (line 3527) | public void kill_avatar(Avatar victim) {
method create_object (line 3594) | public Item create_object(String name, HabitatMod mod, Container conta...
method sfx_number (line 3621) | public int sfx_number(int sfxId) {
method announce_object (line 3630) | public void announce_object(BasicObject obj, HabitatMod container) {
method announce_object_to_neighbors (line 3645) | public void announce_object_to_neighbors(User from, BasicObject obj, H...
method fakeMakeMessage (line 3658) | public void fakeMakeMessage(BasicObject obj, HabitatMod container) {
method modify_variable (line 3668) | public void modify_variable(User from, HabitatMod target, int offset, ...
method pay_to (line 3681) | public static int pay_to(Avatar who, int amount) {
method convert_to_petscii (line 3728) | public static int[] convert_to_petscii(String text, int maxLength) {
method bound_int_array (line 3747) | public static int[] bound_int_array(int[] intArray, int maxLength) {
method get_title_page (line 3764) | public static String get_title_page(String title, int use_flag) {
method concat_int_arrays (line 3790) | public static int[] concat_int_arrays(int[] first, int[]... rest) {
method concat_arrays (line 3817) | public static <T> T[] concat_arrays(T[] first, T[]... rest) {
method getTracebackString (line 3837) | public String getTracebackString(Throwable t) {
method stringToIntArray (line 3851) | public int[] stringToIntArray(String s) {
FILE: src/main/java/org/made/neohabitat/HabitatVerbs.java
type HabitatVerbs (line 17) | public interface HabitatVerbs extends GeneralMod, Constants {
method HabitatClass (line 19) | public int HabitatClass();
method HabitatModName (line 21) | public String HabitatModName();
method capacity (line 23) | public int capacity();
method pc_state_bytes (line 25) | public int pc_state_bytes();
method known (line 27) | public boolean known();
method opaque_container (line 29) | public boolean opaque_container();
method filler (line 31) | public boolean filler();
method HELP (line 33) | public void HELP(User from);
method ASK (line 35) | public void ASK(User from, OptString text);
method GET (line 37) | public void GET(User from);
method PUT (line 39) | public void PUT(User from, OptInteger containerNoid, OptInteger x, Opt...
method THROW (line 41) | public void THROW(User from, int target, int x, int y);
method DO (line 43) | public void DO(User from);
method RDO (line 45) | public void RDO(User from);
FILE: src/main/java/org/made/neohabitat/Magical.java
class Magical (line 42) | public abstract class Magical extends HabitatMod {
method Magical (line 62) | public Magical(OptInteger style, OptInteger x, OptInteger y, OptIntege...
method Magical (line 75) | public Magical(int style, int x, int y, int orientation, int gr_state,...
method setMagicalState (line 81) | protected void setMagicalState(int magic_type, int charges, int magic_...
method encodeMagical (line 92) | public JSONLiteral encodeMagical(JSONLiteral result) {
method MAGIC (line 133) | @JSONMethod({ "target" })
method expendCharge (line 242) | private boolean expendCharge(User from) {
method magic_default (line 257) | private void magic_default(User from, HabitatMod target) {
method change_user_height (line 261) | private void change_user_height(User from) {
method make_target_avatar_jump (line 271) | private void make_target_avatar_jump(User from, HabitatMod target) {
method make_other_avatars_turn_blue (line 288) | private void make_other_avatars_turn_blue(User from) {
method avatar_target_check (line 312) | private Avatar avatar_target_check(HabitatMod target) {
method send_target_avatar_home (line 326) | private void send_target_avatar_home(User from, HabitatMod target ) {
method change_avatar_style (line 341) | private void change_avatar_style(User from, HabitatMod target) {
method make_user_moonwalk (line 369) | private void make_user_moonwalk(User from) {
method money_tree (line 386) | private void money_tree(User from, HabitatMod target) {
method the_vaultkeeper (line 413) | private void the_vaultkeeper(User from, HabitatMod target) {
method switch_reset_chess (line 465) | private void switch_reset_chess(User from) {
method switch_reset_checkers (line 469) | private void switch_reset_checkers(User from) {
method switch_reset_backgammon (line 473) | private void switch_reset_backgammon(User from) {
method reset_generic_boardgame (line 477) | private void reset_generic_boardgame(User from, int game) {
method send_magic_reply (line 507) | private void send_magic_reply(User from, int val) {
method send_magic_success (line 518) | private void send_magic_success(User from) {
method send_magic_error (line 522) | private void send_magic_error(User from) {
method identifyTarget (line 526) | private String identifyTarget(HabitatMod target) {
method god_tool (line 530) | private void god_tool(User from, HabitatMod target) {
method isGodTool (line 555) | static public boolean isGodTool(Magical magic) {
method god_tool_revisited (line 568) | public void god_tool_revisited(User from, String request_string) {
method random_porter (line 728) | private void random_porter(User from, HabitatMod target) {
method HELP (line 820) | public void HELP(User from) {
method magic_vendo_info (line 835) | public String magic_vendo_info() {
FILE: src/main/java/org/made/neohabitat/MailQueue.java
class MailQueue (line 14) | public class MailQueue implements Encodable {
method MailQueue (line 18) | public MailQueue(JSONObject queueObj) throws JSONDecodingException {
method MailQueue (line 33) | public MailQueue() {
method encode (line 37) | public JSONLiteral encode(EncodeControl control) {
method addNewMail (line 46) | public void addNewMail(User from, Paper newMail) {
method popNextMail (line 55) | public MailQueueRecord popNextMail() {
method empty (line 66) | public boolean empty() {
method nonEmpty (line 70) | public boolean nonEmpty() {
method size (line 74) | public int size() {
method getQueueAsJSONObjects (line 78) | private JSONObject[] getQueueAsJSONObjects() {
FILE: src/main/java/org/made/neohabitat/MailQueueRecord.java
class MailQueueRecord (line 9) | public class MailQueueRecord {
method MailQueueRecord (line 16) | public MailQueueRecord(
method MailQueueRecord (line 24) | public MailQueueRecord(JSONObject jsonObj) throws JSONDecodingException {
method toJSONObject (line 31) | public JSONObject toJSONObject() {
FILE: src/main/java/org/made/neohabitat/Massive.java
class Massive (line 19) | public abstract class Massive extends HabitatMod {
method changeable (line 21) | public boolean changeable () { return (mass != 0); }
method Massive (line 26) | public Massive(OptInteger style, OptInteger x, OptInteger y, OptIntege...
method Massive (line 32) | public Massive(int style, int x, int y, int orientation, int gr_state,...
method encodeMassive (line 37) | public JSONLiteral encodeMassive(JSONLiteral result) {
method GET (line 49) | @JSONMethod
method PUT (line 71) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 87) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/NeoHabitat.java
class NeoHabitat (line 11) | public class NeoHabitat {
method GetBuildVersion (line 31) | public static String GetBuildVersion() {
FILE: src/main/java/org/made/neohabitat/Openable.java
class Openable (line 23) | public abstract class Openable extends Container {
method getOpenFlag (line 29) | public boolean getOpenFlag(int bitnum) {
method Openable (line 45) | public Openable(OptInteger style, OptInteger x, OptInteger y, OptInteg...
method Openable (line 52) | public Openable(OptInteger style, OptInteger x, OptInteger y, OptInteg...
method Openable (line 59) | public Openable(OptInteger style, OptInteger x, OptInteger y, OptInteg...
method Openable (line 66) | public Openable(int style, int x, int y, int orientation, int gr_state...
method Openable (line 73) | public Openable(int style, int x, int y, int orientation, int gr_state...
method Openable (line 80) | public Openable(int style, int x, int y, int orientation, int gr_state...
method Openable (line 87) | public Openable(int style, int x, int y, int orientation, int gr_state...
method setOpenableState (line 95) | protected void setOpenableState(int open_flags) {
method setOpenableState (line 101) | protected void setOpenableState(boolean[] open_flags) {
method setKeyedState (line 105) | protected void setKeyedState(int key_lo, int key_hi) {
method encodeOpenable (line 110) | public JSONLiteral encodeOpenable(JSONLiteral result) {
method CLOSE (line 130) | @JSONMethod
method OPEN (line 155) | @JSONMethod
method CLOSECONTAINER (line 182) | @JSONMethod
method OPENCONTAINER (line 208) | @JSONMethod
method lock_HELP (line 250) | public void lock_HELP(User from, String item_name, int key_number, boo...
FILE: src/main/java/org/made/neohabitat/Oracular.java
class Oracular (line 19) | public abstract class Oracular extends HabitatMod {
method Oracular (line 24) | public Oracular(OptInteger style, OptInteger x, OptInteger y, OptInteg...
method Oracular (line 30) | public Oracular(int style, int x, int y, int orientation, int gr_state...
method encodeOracular (line 35) | public JSONLiteral encodeOracular(JSONLiteral result) {
FILE: src/main/java/org/made/neohabitat/Polygonal.java
class Polygonal (line 19) | public abstract class Polygonal extends Walkable {
method Polygonal (line 30) | public Polygonal(OptInteger style, OptInteger x, OptInteger y, OptInte...
method Polygonal (line 43) | public Polygonal(int style, int x, int y, int orientation, int gr_stat...
method setPolygonalState (line 49) | protected void setPolygonalState(int trapezoid_type, int upper_left_x,
method encodePolygonal (line 59) | public JSONLiteral encodePolygonal(JSONLiteral result) {
method HELP (line 70) | @Override
FILE: src/main/java/org/made/neohabitat/Poster.java
class Poster (line 20) | public abstract class Poster extends HabitatMod {
method setTextBytes (line 25) | public void setTextBytes(String text) {
method Poster (line 31) | public Poster(OptInteger style, OptInteger x, OptInteger y, OptInteger...
method Poster (line 43) | public Poster(int style, int x, int y, int orientation, int gr_state, ...
method encodePoster (line 48) | public JSONLiteral encodePoster(JSONLiteral result) {
FILE: src/main/java/org/made/neohabitat/Seating.java
class Seating (line 25) | public abstract class Seating extends Openable {
method changeable (line 27) | public boolean changeable() { return true; }
method Seating (line 32) | public Seating(OptInteger style, OptInteger x, OptInteger y, OptIntege...
method Seating (line 37) | public Seating(int style, int x, int y, int orientation, int gr_state,...
method encodeSeating (line 41) | public JSONLiteral encodeSeating(JSONLiteral result) {
FILE: src/main/java/org/made/neohabitat/Teleporter.java
class Teleporter (line 19) | public abstract class Teleporter extends Coinop {
method changeable (line 21) | public boolean changeable() { return true; }
method Teleporter (line 33) | public Teleporter(OptInteger style, OptInteger x, OptInteger y, OptInt...
method Teleporter (line 39) | public Teleporter(int style, int x, int y, int orientation, int gr_state,
method encodeTeleporter (line 45) | public JSONLiteral encodeTeleporter(JSONLiteral result, EncodeControl ...
method setTeleportState (line 54) | protected void setTeleportState(int activeState, String address) {
method activate_teleporter (line 59) | protected void activate_teleporter(User from, String destination, int ...
method activate_teleporter (line 93) | protected void activate_teleporter(User from, String destination) {
method lookupTeleportDestination (line 97) | public String lookupTeleportDestination(String key) {
method squish (line 103) | protected String squish(String value) {
method area_code (line 107) | protected String area_code(String value) {
method area_code (line 116) | protected String area_code() {
FILE: src/main/java/org/made/neohabitat/Toggle.java
class Toggle (line 18) | public abstract class Toggle extends HabitatMod {
method Toggle (line 26) | public Toggle(OptInteger style, OptInteger x, OptInteger y, OptInteger...
method Toggle (line 32) | public Toggle(int style, int x, int y, int orientation, int gr_state, ...
method generic_OFF (line 44) | public void generic_OFF(User from) {
method generic_ON (line 68) | public void generic_ON(User from) {
method encodeLighting (line 85) | public JSONLiteral encodeLighting(JSONLiteral result) {
FILE: src/main/java/org/made/neohabitat/Walkable.java
class Walkable (line 15) | public abstract class Walkable extends HabitatMod {
method changeable (line 17) | public boolean changeable() { return true; }
method Walkable (line 25) | public Walkable(OptInteger style, OptInteger x, OptInteger y, OptInteg...
method Walkable (line 31) | public Walkable(OptInteger style, OptInteger x, OptInteger y, OptInteg...
method Walkable (line 36) | public Walkable(int style, int x, int y, int orientation, int gr_state...
method encodeWalkable (line 41) | public JSONLiteral encodeWalkable(JSONLiteral result) {
FILE: src/main/java/org/made/neohabitat/Weapon.java
class Weapon (line 17) | public abstract class Weapon extends HabitatMod {
method Weapon (line 19) | public Weapon(OptInteger style, OptInteger x, OptInteger y, OptInteger...
method Weapon (line 24) | public Weapon(int style, int x, int y, int orientation, int gr_state, ...
method HELP (line 28) | @JSONMethod
method GET (line 33) | @JSONMethod
method PUT (line 38) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method ATTACK (line 44) | @JSONMethod({ "pointed_noid" })
method generic_ATTACK (line 49) | public void generic_ATTACK(User from, HabitatMod target) {
FILE: src/main/java/org/made/neohabitat/mods/Amulet.java
class Amulet (line 23) | public class Amulet extends Magical implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Amulet (line 60) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Amulet (line 69) | public Amulet(int style, int x, int y, int orientation, int gr_state, ...
method copyThisMod (line 76) | @Override
method encode (line 82) | @Override
method HELP (line 95) | @JSONMethod
method GET (line 106) | @JSONMethod
method PUT (line 128) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 144) | @JSONMethod({ "target", "x", "y" })
method MAGIC (line 158) | @JSONMethod({ "target" })
FILE: src/main/java/org/made/neohabitat/mods/Aquarium.java
class Aquarium (line 27) | public class Aquarium extends HabitatMod implements Copyable {
method HabitatClass (line 29) | public int HabitatClass() {
method HabitatModName (line 33) | public String HabitatModName() {
method capacity (line 37) | public int capacity() {
method pc_state_bytes (line 41) | public int pc_state_bytes() {
method known (line 45) | public boolean known() {
method opaque_container (line 49) | public boolean opaque_container() {
method filler (line 53) | public boolean filler() {
method Aquarium (line 60) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Aquarium (line 67) | public Aquarium(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 72) | @Override
method encode (line 77) | @Override
method GET (line 85) | @JSONMethod
method PUT (line 91) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 98) | @JSONMethod({ "target", "x", "y" })
method FEED (line 108) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Atm.java
class Atm (line 20) | public class Atm extends HabitatMod implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable() { return true; }
method filler (line 48) | public boolean filler() {
method Atm (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Atm (line 57) | public Atm(int style, int x, int y, int orientation, int gr_state, boo...
method copyThisMod (line 61) | @Override
method encode (line 66) | @Override
method DEPOSIT (line 73) | @JSONMethod({ "token_noid" })
method WITHDRAW (line 78) | @JSONMethod({ "amount_lo", "amount_hi" })
method atm_DEPOSIT (line 84) | public void atm_DEPOSIT(User from, HabitatMod mod) {
method atm_WITHDRAW (line 112) | public void atm_WITHDRAW(User from, int withdrawal) {
FILE: src/main/java/org/made/neohabitat/mods/Avatar.java
class Avatar (line 37) | public class Avatar extends Container implements UserMod {
method HabitatClass (line 94) | public int HabitatClass() {
method HabitatModName (line 98) | public String HabitatModName() {
method capacity (line 102) | public int capacity() {
method pc_state_bytes (line 106) | public int pc_state_bytes() {
method known (line 110) | public boolean known() {
method opaque_container (line 114) | public boolean opaque_container() {
method changeable (line 118) | public boolean changeable() {
method filler (line 122) | public boolean filler() {
method setConnectionType (line 141) | public static void setConnectionType(int type) {
method getConnectionType (line 150) | public static int getConnectionType() {
method Avatar (line 228) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "nitty_bit...
method Avatar (line 280) | public Avatar(int style, int x, int y, int orientation, int gr_state, ...
method setAvatarState (line 293) | protected void setAvatarState(boolean[] nitty_bits, String bodyType,
method encode (line 331) | @Override
method mailQueueRef (line 381) | public String mailQueueRef() {
method objectIsComplete (line 386) | public void objectIsComplete() {
method x_invert (line 509) | private int x_invert(int x) {
method y_invert (line 514) | private int y_invert(int y) {
method x_scale (line 518) | private int x_scale(int x) {
method y_scale (line 523) | private int y_scale(int y) {
method GRAB (line 533) | @JSONMethod()
method HAND (line 574) | @JSONMethod()
method POSTURE (line 618) | @JSONMethod({ "pose" })
method SPEAK (line 653) | @JSONMethod({ "esp", "text" })
method WALK (line 701) | @JSONMethod({ "x", "y", "how" })
method NEWREGION (line 743) | @JSONMethod({ "direction", "passage_id" })
method DISCORPORATE (line 759) | @JSONMethod
method switch_to_ghost (line 784) | public void switch_to_ghost(User from) {
method switch_to_avatar (line 815) | public void switch_to_avatar(User from) {
method ESP (line 883) | @JSONMethod({ "esp", "text" })
method SITORSTAND (line 937) | @JSONMethod({"up_or_down", "seat_id"})
method TOUCH (line 1011) | @JSONMethod({ "target" })
method curse_touch (line 1042) | public void curse_touch(Avatar curseGiver, Avatar victim){
method activate_head_curse (line 1059) | public void activate_head_curse(Avatar victim, int curse){
method buzzify (line 1100) | public static String buzzify(String text){
method USERLIST (line 1127) | @JSONMethod
method sayUserList (line 1137) | public void sayUserList(User from) {
method FNKEY (line 1182) | @JSONMethod({ "key", "target" })
method HELP (line 1220) | @JSONMethod
method avatar_IDENTIFY (line 1237) | public void avatar_IDENTIFY(User from) {
method stripContextDash (line 1243) | private String stripContextDash(String s) {
method showDebugInfo (line 1248) | public void showDebugInfo(User from) {
method avatar_IDENTIFY (line 1291) | public void avatar_IDENTIFY(User from, int replyNoid) {
method avatar_NEWREGION (line 1335) | public void avatar_NEWREGION(User from, int direction, int passage_id) {
method change_regions (line 1389) | public void change_regions(String contextRef, int direction, int type) {
method change_regions (line 1393) | public void change_regions(String contextRef, int direction, int type,...
method drop_object_in_hand (line 1425) | public void drop_object_in_hand() {
method holding_class (line 1447) | public boolean holding_class(int habitat_class) {
method holding_restricted_object (line 1460) | public boolean holding_restricted_object() {
method run_godmode_command (line 1474) | public void run_godmode_command(User from, String msg) {
method run_special_command (line 1652) | public void run_special_command(User from, String msg) {
method set_record (line 1813) | public void set_record(int recordID, int value) {
method elko_user (line 1826) | public User elko_user() {
method send_mail_arrived (line 1833) | public void send_mail_arrived() {
method get_record (line 1843) | public int get_record(int recordID) {
method inc_record (line 1852) | public void inc_record(int recordID) {
method set_record (line 1863) | static public void set_record(User whom, int recordID, int value) {
method get_record (line 1873) | static public int get_record(User whom, int recordID) {
method inc_record (line 1883) | static public void inc_record(User whom, int recordID) {
method has_turf (line 1892) | public boolean has_turf() {
method turf_name (line 1901) | public String turf_name() {
method check_mail (line 1927) | public void check_mail() {
method advance_mail_slot (line 1956) | private void advance_mail_slot(boolean shouldAnnounce) {
method update_mail_slot (line 2019) | public void update_mail_slot(boolean shouldAnnounce) {
class MailQueueReader (line 2026) | private class MailQueueReader implements ArgRunnable {
method MailQueueReader (line 2030) | public MailQueueReader(boolean shouldAnnounce) {
method run (line 2034) | @Override
method run (line 2065) | @Override
method run (line 2079) | @Override
class GodTimer (line 2094) | private class GodTimer implements TimeoutNoticer, TickNoticer, Context...
method GodTimer (line 2103) | public GodTimer(HabitatMod mod, HabitatMod modAnimation, User victim...
method noticeTick (line 2113) | @Override
method noticeTimeout (line 2144) | @Override
method noteContextShutdown (line 2172) | @Override
method noteUserArrival (line 2184) | @Override
method noteUserDeparture (line 2190) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Bag.java
class Bag (line 22) | public class Bag extends Openable implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Bag (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Bag (line 58) | public Bag(int style, int x, int y, int orientation, int gr_state, boo...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
method HELP (line 80) | @JSONMethod
method GET (line 91) | @JSONMethod
method PUT (line 113) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 129) | @JSONMethod({ "target", "x", "y" })
method bag_HELP (line 140) | public void bag_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Ball.java
class Ball (line 19) | public class Ball extends HabitatMod implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method filler (line 45) | public boolean filler() {
method Ball (line 49) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Ball (line 54) | public Ball(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 58) | @Override
method encode (line 63) | @Override
method GET (line 71) | @JSONMethod
method PUT (line 77) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 84) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/mods/Bed.java
class Bed (line 20) | public class Bed extends Seating implements Copyable {
method HabitatClass (line 22) | public int HabitatClass () { return CLASS_BED; }
method HabitatModName (line 23) | public String HabitatModName () { return "Bed"; }
method capacity (line 24) | public int capacity () { return 1; }
method pc_state_bytes (line 25) | public int pc_state_bytes () { return 0; }
method known (line 26) | public boolean known () { return true; }
method opaque_container (line 27) | public boolean opaque_container () { return false; }
method changeable (line 28) | public boolean changeable () { return true; }
method filler (line 29) | public boolean filler () { return false; }
method Bed (line 31) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Bed (line 38) | public Bed(int style, int x, int y, int orientation, int gr_state, boo...
method copyThisMod (line 42) | @Override
method encode (line 47) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Book.java
class Book (line 22) | public class Book extends Document implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Book (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Book (line 61) | public Book(int style, int x, int y, int orientation, int gr_state, bo...
method Book (line 67) | public Book(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 73) | @Override
method encode (line 78) | @Override
method READ (line 88) | @JSONMethod({ "page" })
method GET (line 114) | @JSONMethod
method PUT (line 136) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 152) | @JSONMethod({ "target", "x", "y" })
method HELP (line 156) | @JSONMethod
method book_vendo_info (line 162) | public String book_vendo_info() {
FILE: src/main/java/org/made/neohabitat/mods/Bottle.java
class Bottle (line 20) | public class Bottle extends HabitatMod implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method filler (line 46) | public boolean filler() {
method Bottle (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Bottle (line 59) | public Bottle(int style, int x, int y, int orientation, int gr_state, ...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
method GET (line 83) | @JSONMethod
method PUT (line 105) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method FILL (line 111) | @JSONMethod
method POUR (line 116) | @JSONMethod
method bottle_FILL (line 121) | public void bottle_FILL(User from) {
method bottle_POUR (line 138) | public void bottle_POUR(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Box.java
class Box (line 22) | public class Box extends Openable implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Box (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state","restricted...
method Box (line 58) | public Box(int style, int x, int y, int orientation, int gr_state, boo...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
method HELP (line 80) | @JSONMethod
method GET (line 91) | @JSONMethod
method PUT (line 113) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 129) | @JSONMethod({ "target", "x", "y" })
method box_HELP (line 140) | public void box_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Bridge.java
class Bridge (line 20) | public class Bridge extends HabitatMod implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable() {
method filler (line 50) | public boolean filler() {
method Bridge (line 57) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Bridge (line 65) | public Bridge(int style, int x, int y, int orientation, int gr_state, ...
method copyThisMod (line 71) | @Override
method encode (line 76) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Building.java
class Building (line 20) | public class Building extends HabitatMod implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable() {
method filler (line 50) | public boolean filler() {
method Building (line 58) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Building (line 65) | public Building(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 70) | @Override
method encode (line 75) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Bureaucrat.java
class Bureaucrat (line 27) | public class Bureaucrat extends Openable implements Copyable, Runnable {
method HabitatClass (line 29) | public int HabitatClass() {
method HabitatModName (line 33) | public String HabitatModName() {
method capacity (line 37) | public int capacity() {
method pc_state_bytes (line 41) | public int pc_state_bytes() {
method known (line 45) | public boolean known() {
method opaque_container (line 49) | public boolean opaque_container() {
method changeable (line 53) | public boolean changeable() {
method filler (line 57) | public boolean filler() {
method Bureaucrat (line 69) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Bureaucrat (line 75) | public Bureaucrat(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 79) | @Override
method encode (line 84) | @Override
method bureaucrat_ASK (line 91) | public void bureaucrat_ASK(User from, OptString text) {
method ASK (line 236) | @JSONMethod({ "text" })
method bureaucrat_HELP (line 241) | public void bureaucrat_HELP(User from, int count) {
method HELP (line 250) | @JSONMethod
method run (line 267) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Bush.java
class Bush (line 21) | public class Bush extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Bush (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Bush (line 58) | public Bush(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Chair.java
class Chair (line 20) | public class Chair extends Seating implements Copyable {
method HabitatClass (line 22) | public int HabitatClass () { return CLASS_CHAIR; }
method HabitatModName (line 23) | public String HabitatModName () { return "Chair"; }
method capacity (line 24) | public int capacity () { return 1; }
method pc_state_bytes (line 25) | public int pc_state_bytes () { return 0; }
method known (line 26) | public boolean known () { return true; }
method opaque_container (line 27) | public boolean opaque_container () { return false; }
method changeable (line 28) | public boolean changeable () { return true; }
method filler (line 29) | public boolean filler () { return false; }
method Chair (line 31) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Chair (line 37) | public Chair(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 41) | @Override
method encode (line 46) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Changomatic.java
class Changomatic (line 20) | public class Changomatic extends HabitatMod implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method filler (line 46) | public boolean filler() {
method Changomatic (line 50) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Changomatic (line 56) | public Changomatic(int style, int x, int y, int orientation, int gr_st...
method copyThisMod (line 60) | @Override
method encode (line 65) | @Override
method GET (line 78) | @JSONMethod
method PUT (line 100) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 116) | @JSONMethod({ "target", "x", "y" })
method CHANGE (line 121) | @JSONMethod({ "targetNoid" })
method neighbor_changeable (line 144) | public boolean neighbor_changeable(HabitatMod object) {
FILE: src/main/java/org/made/neohabitat/mods/Chest.java
class Chest (line 21) | public class Chest extends Openable implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Chest (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Chest (line 59) | public Chest(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
method HELP (line 81) | @JSONMethod
method chest_HELP (line 91) | public void chest_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Club.java
class Club (line 19) | public class Club extends Weapon implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method filler (line 45) | public boolean filler() {
method Club (line 49) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Club (line 54) | public Club(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 58) | @Override
method encode (line 63) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Coke_machine.java
class Coke_machine (line 22) | public class Coke_machine extends Coinop implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable() {
method filler (line 52) | public boolean filler() {
method Coke_machine (line 56) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Coke_machine (line 62) | public Coke_machine(int style, int x, int y, int orientation, int gr_s...
method copyThisMod (line 66) | @Override
method encode (line 71) | @Override
method PAY (line 80) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Compass.java
class Compass (line 21) | public class Compass extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Compass (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Compass (line 57) | public Compass(int style, int x, int y, int orientation, int gr_state,...
method copyThisMod (line 61) | @Override
method encode (line 66) | @Override
method HELP (line 73) | @JSONMethod
method GET (line 78) | @JSONMethod
method PUT (line 83) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 89) | @JSONMethod({ "target", "x", "y" })
method DIRECT (line 96) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Couch.java
class Couch (line 20) | public class Couch extends Seating implements Copyable {
method HabitatClass (line 22) | public int HabitatClass () { return CLASS_COUCH; }
method HabitatModName (line 23) | public String HabitatModName () { return "Couch"; }
method capacity (line 24) | public int capacity () { return 2; }
method pc_state_bytes (line 25) | public int pc_state_bytes () { return 0; }
method known (line 26) | public boolean known () { return true; }
method opaque_container (line 27) | public boolean opaque_container () { return false; }
method changeable (line 28) | public boolean changeable () { return true; }
method filler (line 29) | public boolean filler () { return false; }
method Couch (line 31) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "open_flag...
method Couch (line 37) | public Couch(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 41) | @Override
method encode (line 46) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Countertop.java
class Countertop (line 20) | public class Countertop extends Openable implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable () { return true; }
method filler (line 48) | public boolean filler() {
method Countertop (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Countertop (line 58) | public Countertop(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Crystal_ball.java
class Crystal_ball (line 23) | public class Crystal_ball extends Oracular implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Crystal_ball (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Crystal_ball (line 59) | public Crystal_ball(int style, int x, int y, int orientation, int gr_s...
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
method ASK (line 83) | @Override
method HELP (line 90) | @JSONMethod
method GET (line 96) | @JSONMethod
method PUT (line 102) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 109) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/mods/Die.java
class Die (line 23) | public class Die extends HabitatMod implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Die (line 55) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Die (line 62) | public Die(int style, int x, int y, int orientation, int gr_state, boo...
method copyThisMod (line 67) | @Override
method encode (line 72) | @Override
method HELP (line 80) | @JSONMethod
method GET (line 86) | @JSONMethod
method PUT (line 92) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 99) | @JSONMethod({ "target", "x", "y" })
method ROLL (line 111) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Display_case.java
class Display_case (line 20) | public class Display_case extends Openable implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable () { return true; }
method filler (line 48) | public boolean filler() {
method Display_case (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Display_case (line 58) | public Display_case(int style, int x, int y, int orientation, int gr_s...
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Door.java
class Door (line 23) | public class Door extends Openable implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method changeable (line 49) | public boolean changeable () { return true; }
method filler (line 51) | public boolean filler() {
method Door (line 58) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Door (line 66) | public Door(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 72) | @Override
method encode (line 77) | @Override
method HELP (line 93) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Dropbox.java
class Dropbox (line 19) | public class Dropbox extends HabitatMod implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method changeable (line 45) | public boolean changeable () { return true; }
method filler (line 47) | public boolean filler() {
method Dropbox (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restrict...
method Dropbox (line 56) | public Dropbox(int style, int x, int y, int orientation, int gr_state,...
method copyThisMod (line 60) | @Override
method encode (line 65) | @Override
method SENDMAIL (line 72) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Drugs.java
class Drugs (line 24) | public class Drugs extends HabitatMod implements Copyable
method HabitatClass (line 26) | public int HabitatClass() {
method HabitatModName (line 30) | public String HabitatModName() {
method capacity (line 34) | public int capacity() {
method pc_state_bytes (line 38) | public int pc_state_bytes() {
method known (line 42) | public boolean known() {
method opaque_container (line 46) | public boolean opaque_container() {
method filler (line 50) | public boolean filler() {
method Drugs (line 64) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Drugs (line 73) | public Drugs(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 79) | @Override
method encode (line 84) | @Override
method HELP (line 95) | @JSONMethod
method GET (line 101) | @JSONMethod
method PUT (line 107) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 114) | @JSONMethod({ "target", "x", "y" })
method TAKE (line 120) | @JSONMethod
method drugs_vendo_info (line 169) | public String drugs_vendo_info(){
method drugs_HELP (line 180) | public void drugs_HELP(User from){
FILE: src/main/java/org/made/neohabitat/mods/Elevator.java
class Elevator (line 23) | public class Elevator extends Teleporter implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method changeable (line 49) | public boolean changeable() {
method filler (line 53) | public boolean filler() {
method Elevator (line 57) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Elevator (line 64) | public Elevator(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 69) | @Override
method encode (line 74) | public JSONLiteral encode(EncodeControl control) {
method ZAPTO (line 81) | @JSONMethod({"port_number"})
method HELP (line 87) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Escape_device.java
class Escape_device (line 23) | public class Escape_device extends HabitatMod implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Escape_device (line 55) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Escape_device (line 63) | public Escape_device(int style, int x, int y, int orientation, int gr_...
method copyThisMod (line 69) | @Override
method encode (line 74) | @Override
method BUGOUT (line 82) | @JSONMethod
method HELP (line 111) | @JSONMethod
method GET (line 127) | @JSONMethod
method PUT (line 149) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 165) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/mods/Fake_gun.java
class Fake_gun (line 21) | public class Fake_gun extends HabitatMod implements Copyable
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Fake_gun (line 57) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Fake_gun (line 64) | public Fake_gun(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 69) | @Override
method encode (line 74) | @Override
method HELP (line 82) | @JSONMethod
method GET (line 88) | @JSONMethod
method PUT (line 94) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 101) | @JSONMethod({ "target", "x", "y" })
method FAKESHOOT (line 106) | @JSONMethod
method RESET (line 121) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Fence.java
class Fence (line 21) | public class Fence extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Fence (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Fence (line 58) | public Fence(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Flag.java
class Flag (line 22) | public class Flag extends Massive implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Flag (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Flag (line 58) | public Flag(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Flashlight.java
class Flashlight (line 21) | public class Flashlight extends Toggle implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Flashlight (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Flashlight (line 57) | public Flashlight(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 61) | @Override
method encode (line 66) | @Override
method objectIsComplete (line 74) | public void objectIsComplete() {
method HELP (line 89) | @JSONMethod
method GET (line 100) | @JSONMethod
method PUT (line 122) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 138) | @JSONMethod({ "target", "x", "y" })
method OFF (line 149) | @JSONMethod
method ON (line 160) | @JSONMethod
method flashlight_HELP (line 171) | public void flashlight_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Flat.java
class Flat (line 22) | public class Flat extends Walkable implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable () { return true; }
method filler (line 50) | public boolean filler() {
method Flat (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Flat (line 60) | public Flat(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
method HELP (line 76) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Floor_lamp.java
class Floor_lamp (line 20) | public class Floor_lamp extends Toggle implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable() {
method filler (line 50) | public boolean filler() {
method Floor_lamp (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Floor_lamp (line 60) | public Floor_lamp(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
method objectIsComplete (line 77) | public void objectIsComplete() {
method HELP (line 90) | @JSONMethod
method OFF (line 101) | @JSONMethod
method ON (line 111) | @JSONMethod
method floor_lamp_HELP (line 121) | public void floor_lamp_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Fortune_machine.java
class Fortune_machine (line 20) | public class Fortune_machine extends Coinop implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable() {
method filler (line 50) | public boolean filler() {
method Fortune_machine (line 151) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Fortune_machine (line 157) | public Fortune_machine(int style, int x, int y, int orientation, int g...
method copyThisMod (line 161) | @Override
method encode (line 166) | @Override
method PAY (line 173) | @JSONMethod
method getFortune (line 204) | private String getFortune() {
FILE: src/main/java/org/made/neohabitat/mods/Fountain.java
class Fountain (line 22) | public class Fountain extends Oracular implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable () { return true; }
method filler (line 50) | public boolean filler() {
method Fountain (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Fountain (line 60) | public Fountain(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
method ASK (line 84) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Frisbee.java
class Frisbee (line 19) | public class Frisbee extends HabitatMod implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method filler (line 45) | public boolean filler() {
method Frisbee (line 49) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Frisbee (line 54) | public Frisbee(int style, int x, int y, int orientation, int gr_state,...
method copyThisMod (line 58) | @Override
method encode (line 63) | @Override
method GET (line 71) | @JSONMethod
method PUT (line 77) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 84) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/mods/Game_piece.java
class Game_piece (line 20) | public class Game_piece extends HabitatMod implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method filler (line 46) | public boolean filler() {
method Game_piece (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Game_piece (line 58) | public Game_piece(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
method GET (line 75) | @JSONMethod
method PUT (line 81) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 88) | @JSONMethod({ "target", "x", "y" })
method HELP (line 93) | @JSONMethod
method KING (line 103) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Garbage_can.java
class Garbage_can (line 22) | public class Garbage_can extends Openable implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable () { return true; }
method filler (line 50) | public boolean filler() {
method Garbage_can (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Garbage_can (line 60) | public Garbage_can(int style, int x, int y, int orientation, int gr_st...
method copyThisMod (line 65) | @Override
method encode (line 70) | @Override
method FLUSH (line 77) | @JSONMethod
method garbage_can_FLUSH (line 82) | public void garbage_can_FLUSH(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Gemstone.java
class Gemstone (line 23) | public class Gemstone extends Magical implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Gemstone (line 62) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Gemstone (line 71) | public Gemstone(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 78) | @Override
method encode (line 84) | @Override
method HELP (line 91) | @JSONMethod
method GET (line 96) | @JSONMethod
method PUT (line 101) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 107) | @JSONMethod({ "target", "x", "y" })
method MAGIC (line 112) | @JSONMethod({ "target" })
FILE: src/main/java/org/made/neohabitat/mods/Ghost.java
class Ghost (line 27) | public class Ghost extends HabitatMod implements Copyable {
method HabitatClass (line 29) | public int HabitatClass() {
method HabitatModName (line 33) | public String HabitatModName() {
method capacity (line 37) | public int capacity() {
method pc_state_bytes (line 41) | public int pc_state_bytes() {
method known (line 45) | public boolean known() {
method opaque_container (line 49) | public boolean opaque_container() {
method filler (line 53) | public boolean filler() {
method Ghost (line 60) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Ghost (line 66) | public Ghost(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 70) | @Override
method encode (line 75) | @Override
method objectIsComplete (line 89) | public void objectIsComplete() {
method HELP (line 96) | @JSONMethod
method CORPORATE (line 107) | @JSONMethod
method NEWREGION (line 128) | @JSONMethod({ "direction", "passage_id" })
method ghost_NEWREGION (line 133) | public void ghost_NEWREGION(User from, int direction, int passage_id ) {
FILE: src/main/java/org/made/neohabitat/mods/Glue.java
class Glue (line 20) | public class Glue extends Openable implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method filler (line 46) | public boolean filler() {
method Glue (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Glue (line 70) | public Glue(int style, int x, int y, int orientation, int gr_state, bo...
method setGlueState (line 80) | protected void setGlueState(int x_offset_1, int y_offset_1, int x_offs...
method copyThisMod (line 96) | @Override
method encode (line 108) | @Override
method OPEN (line 128) | @Override
method OPENCONTAINER (line 134) | @Override
method CLOSE (line 140) | @Override
method CLOSECONTAINER (line 146) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Grenade.java
class Grenade (line 24) | public class Grenade extends Weapon implements Copyable {
method HabitatClass (line 26) | @Override
method HabitatModName (line 31) | @Override
method capacity (line 36) | @Override
method pc_state_bytes (line 41) | @Override
method known (line 46) | @Override
method opaque_container (line 51) | @Override
method filler (line 56) | @Override
method Grenade (line 65) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Grenade (line 72) | public Grenade(int style, int x, int y, int orientation, int gr_state,...
method copyThisMod (line 77) | @Override
method encode (line 82) | @Override
method HELP (line 90) | @JSONMethod
method GET (line 95) | @JSONMethod
method PUT (line 100) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 106) | @JSONMethod({ "target", "x", "y" })
method PULLPIN (line 111) | @JSONMethod
method grenade_HELP (line 134) | public void grenade_HELP(User from) {
class GrenadeTimer (line 142) | private class GrenadeTimer implements Runnable {
method GrenadeTimer (line 145) | public GrenadeTimer(HabitatMod mod) {
method run (line 149) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Ground.java
class Ground (line 24) | public class Ground extends Walkable implements Copyable {
method HabitatClass (line 26) | public int HabitatClass() {
method HabitatModName (line 30) | public String HabitatModName() {
method capacity (line 34) | public int capacity() {
method pc_state_bytes (line 38) | public int pc_state_bytes() {
method known (line 42) | public boolean known() {
method changeable (line 46) | public boolean changeable () { return true; }
method opaque_container (line 48) | public boolean opaque_container() {
method filler (line 52) | public boolean filler() {
method Ground (line 56) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Ground (line 62) | public Ground(int style, int x, int y, int orientation, int gr_state, ...
method copyThisMod (line 66) | @Override
method encode (line 71) | @Override
method HELP (line 79) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Gun.java
class Gun (line 21) | public class Gun extends Weapon implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Gun (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Gun (line 56) | public Gun(int style, int x, int y, int orientation, int gr_state, boo...
method copyThisMod (line 60) | @Override
method encode (line 65) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Hand_of_god.java
class Hand_of_god (line 29) | public class Hand_of_god extends HabitatMod implements Copyable {
method HabitatClass (line 31) | public int HabitatClass() {
method HabitatModName (line 35) | public String HabitatModName() {
method capacity (line 39) | public int capacity() {
method pc_state_bytes (line 43) | public int pc_state_bytes() {
method known (line 47) | public boolean known() {
method opaque_container (line 51) | public boolean opaque_container() {
method changeable (line 55) | public boolean changeable() {
method filler (line 59) | public boolean filler() {
method Hand_of_god (line 65) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Hand_of_god (line 72) | public Hand_of_god(int style, int x, int y, int orientation, int gr_st...
method copyThisMod (line 77) | @Override
method encode (line 82) | @Override
method HELP (line 90) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Head.java
class Head (line 26) | public class Head extends HabitatMod implements Copyable {
method HabitatClass (line 30) | public int HabitatClass() {
method HabitatModName (line 34) | public String HabitatModName() {
method capacity (line 38) | public int capacity() {
method pc_state_bytes (line 42) | public int pc_state_bytes() {
method known (line 46) | public boolean known() {
method opaque_container (line 50) | public boolean opaque_container() {
method filler (line 54) | public boolean filler() {
method Head (line 58) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Head (line 64) | public Head(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 69) | @Override
method encode (line 74) | @Override
method HELP (line 87) | @JSONMethod
method GET (line 98) | @JSONMethod
method PUT (line 120) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 136) | @JSONMethod({ "target", "x", "y" })
method WEAR (line 147) | @JSONMethod
method REMOVE (line 158) | @JSONMethod
method head_WEAR (line 169) | public void head_WEAR(User from) {
method head_REMOVE (line 205) | public void head_REMOVE(User from) {
method head_HELP (line 230) | public void head_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Hole.java
class Hole (line 21) | public class Hole extends Openable implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Hole (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Hole (line 60) | public Hole(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 65) | @Override
method encode (line 70) | @Override
method OPENCONTAINER (line 77) | @Override
method CLOSECONTAINER (line 88) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Hot_tub.java
class Hot_tub (line 21) | public class Hot_tub extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Hot_tub (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Hot_tub (line 58) | public Hot_tub(int style, int x, int y, int orientation, int gr_state,...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/House_cat.java
class House_cat (line 19) | public class House_cat extends HabitatMod implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method changeable (line 45) | public boolean changeable () { return true; }
method filler (line 47) | public boolean filler() {
method House_cat (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method House_cat (line 56) | public House_cat(int style, int x, int y, int orientation, int gr_stat...
method copyThisMod (line 60) | @Override
method encode (line 65) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Key.java
class Key (line 25) | public class Key extends HabitatMod implements Copyable {
method HabitatClass (line 27) | public int HabitatClass() {
method HabitatModName (line 31) | public String HabitatModName() {
method capacity (line 35) | public int capacity() {
method pc_state_bytes (line 39) | public int pc_state_bytes() {
method known (line 43) | public boolean known() {
method opaque_container (line 47) | public boolean opaque_container() {
method filler (line 51) | public boolean filler() {
method Key (line 66) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Key (line 74) | public Key(int style, int x, int y, int orientation, int gr_state, boo...
method setKeyState (line 79) | protected void setKeyState (int key_number_lo, int key_number_hi) {
method copyThisMod (line 84) | @Override
method encode (line 89) | @Override
method GET (line 108) | @JSONMethod
method PUT (line 130) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 146) | @JSONMethod({ "target", "x", "y" })
method key_vendo_info (line 157) | public String key_vendo_info(Key key) {
FILE: src/main/java/org/made/neohabitat/mods/Knick_knack.java
class Knick_knack (line 24) | public class Knick_knack extends Magical implements Copyable {
method HabitatClass (line 26) | public int HabitatClass() {
method HabitatModName (line 30) | public String HabitatModName() {
method capacity (line 34) | public int capacity() {
method pc_state_bytes (line 38) | public int pc_state_bytes() {
method known (line 42) | public boolean known() {
method opaque_container (line 46) | public boolean opaque_container() {
method filler (line 50) | public boolean filler() {
method Knick_knack (line 63) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Knick_knack (line 76) | public Knick_knack(int style, int x, int y, int orientation, int gr_st...
method copyThisMod (line 83) | @Override
method encode (line 89) | @Override
method TEST (line 96) | public void TEST(User from) {
method HELP (line 109) | @JSONMethod
method GET (line 120) | @JSONMethod
method PUT (line 142) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 158) | @JSONMethod({ "target", "x", "y" })
method MAGIC (line 172) | @JSONMethod({ "target" })
method knick_knack_HELP (line 184) | public void knick_knack_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Knife.java
class Knife (line 20) | public class Knife extends Weapon implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method filler (line 46) | public boolean filler() {
method Knife (line 50) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Knife (line 55) | public Knife(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 59) | @Override
method encode (line 64) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Magic_immobile.java
class Magic_immobile (line 24) | public class Magic_immobile extends Magical implements Copyable {
method HabitatClass (line 26) | public int HabitatClass() {
method HabitatModName (line 30) | public String HabitatModName() {
method capacity (line 34) | public int capacity() {
method pc_state_bytes (line 38) | public int pc_state_bytes() {
method known (line 42) | public boolean known() {
method opaque_container (line 46) | public boolean opaque_container() {
method changeable (line 50) | public boolean changeable () { return true; }
method filler (line 52) | public boolean filler() {
method Magic_immobile (line 63) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Magic_immobile (line 72) | public Magic_immobile(int style, int x, int y, int orientation, int gr...
method copyThisMod (line 79) | @Override
method encode (line 85) | @Override
method HELP (line 98) | @JSONMethod
method MAGIC (line 112) | @JSONMethod({ "target" })
FILE: src/main/java/org/made/neohabitat/mods/Magic_lamp.java
class Magic_lamp (line 21) | public class Magic_lamp extends Oracular implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Magic_lamp (line 63) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Magic_lamp (line 71) | public Magic_lamp(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 77) | @Override
method encode (line 82) | @Override
method RUB (line 91) | @JSONMethod
method WISH (line 115) | @JSONMethod({ "text" })
method run (line 132) | @Override
method HELP (line 153) | @JSONMethod
method GET (line 159) | @JSONMethod
method PUT (line 165) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 172) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/mods/Magic_staff.java
class Magic_staff (line 23) | public class Magic_staff extends Magical implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Magic_staff (line 60) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Magic_staff (line 69) | public Magic_staff(int style, int x, int y, int orientation, int gr_st...
method copyThisMod (line 76) | @Override
method encode (line 82) | @Override
method HELP (line 95) | @JSONMethod
method GET (line 106) | @JSONMethod
method PUT (line 128) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method MAGIC (line 145) | @JSONMethod({ "target" })
FILE: src/main/java/org/made/neohabitat/mods/Magic_wand.java
class Magic_wand (line 23) | public class Magic_wand extends Magical implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Magic_wand (line 60) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Magic_wand (line 69) | public Magic_wand(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 76) | @Override
method encode (line 82) | @Override
method HELP (line 95) | @JSONMethod
method GET (line 106) | @JSONMethod
method PUT (line 128) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 144) | @JSONMethod({ "target", "x", "y" })
method MAGIC (line 158) | @JSONMethod({ "target" })
FILE: src/main/java/org/made/neohabitat/mods/Mailbox.java
class Mailbox (line 22) | public class Mailbox extends HabitatMod implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable () { return true; }
method filler (line 50) | public boolean filler() {
method Mailbox (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Mailbox (line 59) | public Mailbox(int style, int x, int y, int orientation, int gr_state,...
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Matchbook.java
class Matchbook (line 23) | public class Matchbook extends HabitatMod implements Copyable {
method HabitatClass (line 27) | public int HabitatClass() {
method HabitatModName (line 31) | public String HabitatModName() {
method capacity (line 35) | public int capacity() {
method pc_state_bytes (line 39) | public int pc_state_bytes() {
method known (line 43) | public boolean known() {
method opaque_container (line 47) | public boolean opaque_container() {
method filler (line 51) | public boolean filler() {
method Matchbook (line 57) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Matchbook (line 69) | public Matchbook(int style, int x, int y, int orientation, int gr_state,
method copyThisMod (line 75) | @Override
method encode (line 80) | @Override
method README (line 90) | @JSONMethod
method GET (line 109) | @JSONMethod
method PUT (line 131) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 147) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/mods/Movie_camera.java
class Movie_camera (line 21) | public class Movie_camera extends Toggle implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Movie_camera (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Movie_camera (line 57) | public Movie_camera(int style, int x, int y, int orientation, int gr_s...
method copyThisMod (line 61) | @Override
method encode (line 66) | @Override
method HELP (line 79) | @JSONMethod
method GET (line 90) | @JSONMethod
method PUT (line 112) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 128) | @JSONMethod({ "target", "x", "y" })
method OFF (line 139) | @JSONMethod
method ON (line 150) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Paper.java
class Paper (line 30) | public class Paper extends HabitatMod implements Copyable {
method HabitatClass (line 46) | public int HabitatClass() {
method HabitatModName (line 50) | public String HabitatModName() {
method capacity (line 54) | public int capacity() {
method pc_state_bytes (line 58) | public int pc_state_bytes() {
method known (line 62) | public boolean known() {
method opaque_container (line 66) | public boolean opaque_container() {
method filler (line 70) | public boolean filler() {
method Paper (line 83) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Paper (line 93) | public Paper(int style, int x, int y, int orientation, int gr_state,
method is_blank (line 101) | public boolean is_blank() {
method objectIsComplete (line 109) | public void objectIsComplete() {
method paper_path (line 114) | public String paper_path() {
method copyThisMod (line 118) | @Override
method encode (line 123) | @Override
method READ (line 134) | @JSONMethod({ "page" })
method WRITE (line 148) | @JSONMethod({ "request_ascii" })
method HELP (line 187) | @JSONMethod
method GET (line 200) | @JSONMethod
method PSENDMAIL (line 275) | @JSONMethod
method PUT (line 329) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 350) | @JSONMethod({ "target", "x", "y" })
method send_gr_state_fiddle (line 360) | public void send_gr_state_fiddle(int new_gr_state) {
class PaperContents (line 375) | private class PaperContents implements Encodable {
method PaperContents (line 379) | @JSONMethod({ "ascii" })
method encode (line 384) | public JSONLiteral encode(EncodeControl control) {
method getFirstLine (line 399) | private String getFirstLine() {
method findAddressee (line 443) | private String findAddressee() {
method addPostmark (line 464) | private void addPostmark(User from) {
method showPaper (line 490) | private void showPaper(User from) {
method showEmptyPaper (line 499) | private void showEmptyPaper(User from) {
method setAsciiFromTextResult (line 508) | private void setAsciiFromTextResult(Object obj) {
method setAsciiFromPaperResult (line 568) | private void setAsciiFromPaperResult(Object obj) {
method retrievePaperContents (line 600) | public void retrievePaperContents() {
method savePaperContents (line 614) | private void savePaperContents() {
method deletePaperContents (line 624) | private void deletePaperContents() {
method sendMailToUser (line 633) | private void sendMailToUser(User from, String toUserName) {
class MailQueueUpdater (line 680) | private class MailQueueUpdater implements ArgRunnable {
method MailQueueUpdater (line 687) | public MailQueueUpdater(User from, String toUserName, Paper mailPape...
method run (line 694) | @Override
method run (line 720) | @Override
method run (line 734) | @Override
method run (line 747) | @Override
method run (line 760) | @Override
method run (line 773) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Pawn_machine.java
class Pawn_machine (line 20) | public class Pawn_machine extends Openable implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable() {
method filler (line 50) | public boolean filler() {
method Pawn_machine (line 69) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Pawn_machine (line 75) | public Pawn_machine(int style, int x, int y, int orientation, int gr_s...
method copyThisMod (line 80) | @Override
method encode (line 85) | @Override
method MUNCH (line 92) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Picture.java
class Picture (line 20) | public class Picture extends Massive implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method filler (line 46) | public boolean filler() {
method Picture (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Picture (line 59) | public Picture(int style, int x, int y, int orientation, int gr_state,...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Plant.java
class Plant (line 22) | public class Plant extends Massive implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Plant (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Plant (line 58) | public Plant(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Plaque.java
class Plaque (line 22) | public class Plaque extends Document implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable () { return true; }
method filler (line 50) | public boolean filler() {
method Plaque (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Plaque (line 60) | public Plaque(int style, int x, int y, int orientation, int gr_state, ...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
method HELP (line 76) | @JSONMethod
FILE: src/main/java/org/made/neohabitat/mods/Pond.java
class Pond (line 21) | public class Pond extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Pond (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Pond (line 58) | public Pond(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Region.java
class Region (line 39) | public class Region extends Container implements UserWatcher, ContextMod...
method HabitatClass (line 66) | public int HabitatClass() {
method HabitatModName (line 70) | public String HabitatModName() {
method capacity (line 74) | public int capacity() {
method pc_state_bytes (line 78) | public int pc_state_bytes() {
method known (line 82) | public boolean known() {
method opaque_container (line 86) | public boolean opaque_container() {
method filler (line 90) | public boolean filler() {
method Region (line 125) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "nitty_bit...
method Region (line 150) | public Region(int style, int x, int y, int orientation, int gr_state, ...
method objectIsComplete (line 169) | @Override
method regionGhost (line 177) | public Ghost regionGhost() {
method getGhost (line 181) | public Ghost getGhost() {
method run (line 196) | @Override
method destroyGhost (line 207) | public void destroyGhost(User from) {
method noteContextShutdown (line 217) | @Override
method noteUserArrival (line 223) | public void noteUserArrival(User who) {
method noteUserDeparture (line 266) | public void noteUserDeparture(User who) {
method avatarsPresent (line 289) | private int avatarsPresent() {
method addUser (line 293) | public synchronized static void addUser(User from) {
method removeUser (line 297) | public synchronized static void removeUser(User from) {
method findOracles (line 306) | public synchronized static List<Avatar> findOracles() {
method getUserByName (line 317) | public static User getUserByName(String name) {
method IsRoomForMyAvatarIn (line 324) | public static boolean IsRoomForMyAvatarIn(String regionRef, Avatar ava...
method isRoomForMyAvatar (line 352) | public static boolean isRoomForMyAvatar(Avatar avatar, Region target) {
method encode (line 372) | @Override
method incNoid (line 399) | private static int incNoid(int noid) {
method addToNoids (line 419) | public static boolean addToNoids(HabitatMod mod) {
method removeFromObjList (line 450) | public static void removeFromObjList(HabitatMod mod) {
method removeContentsFromRegion (line 462) | public static void removeContentsFromRegion(Container cont) {
method removeObjectFromRegion (line 471) | public static void removeObjectFromRegion(HabitatMod obj) {
method tellEveryone (line 487) | public static void tellEveryone(String text) {
method tellEveryone (line 491) | public static void tellEveryone(String text, boolean shouldBeep) {
method tellEveryone (line 504) | public static void tellEveryone(int[] ascii) {
method tellEveryone (line 508) | public static void tellEveryone(int[] ascii, boolean shouldBeep) {
method LEAVE (line 535) | @JSONMethod({ "reason" })
method FINGER_IN_QUE (line 555) | @JSONMethod
method I_AM_HERE (line 568) | @JSONMethod
method grabable (line 578) | public boolean grabable(HabitatMod mod) {
method lights_off (line 589) | public void lights_off(Avatar avatar) {
method lights_on (line 601) | public void lights_on(Avatar avatar) {
method SET_MOTD (line 626) | @JSONMethod ({ "MOTD" })
method TELL_EVERYONE (line 639) | @JSONMethod ({ "text", "ascii" })
method PROMPT_REPLY (line 659) | @JSONMethod({ "text" })
method describeRegion (line 676) | public void describeRegion(User from, int noid) {
FILE: src/main/java/org/made/neohabitat/mods/Ring.java
class Ring (line 23) | public class Ring extends Magical implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method Ring (line 60) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Ring (line 69) | public Ring(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 76) | @Override
method encode (line 82) | @Override
method HELP (line 95) | @JSONMethod
method GET (line 106) | @JSONMethod
method PUT (line 128) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 144) | @JSONMethod({ "target", "x", "y" })
method MAGIC (line 158) | @JSONMethod({ "target" })
FILE: src/main/java/org/made/neohabitat/mods/Rock.java
class Rock (line 22) | public class Rock extends Massive implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Rock (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Rock (line 58) | public Rock(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Roof.java
class Roof (line 19) | public class Roof extends HabitatMod implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method changeable (line 45) | public boolean changeable () { return true; }
method filler (line 47) | public boolean filler() {
method Roof (line 55) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Roof (line 63) | public Roof(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 69) | @Override
method encode (line 74) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Safe.java
class Safe (line 22) | public class Safe extends Openable implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable () { return true; }
method filler (line 50) | public boolean filler() {
method Safe (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state","restricted...
method Safe (line 60) | public Safe(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
method HELP (line 82) | @JSONMethod
method safe_HELP (line 93) | public void safe_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Sensor.java
class Sensor (line 21) | public class Sensor extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable() {
method filler (line 51) | public boolean filler() {
method Sensor (line 58) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Sensor (line 65) | public Sensor(int style, int x, int y, int orientation, int gr_state, ...
method copyThisMod (line 70) | @Override
method encode (line 75) | @Override
method HELP (line 85) | @JSONMethod
method sensor_HELP (line 90) | public void sensor_HELP(User from) {
method GET (line 94) | @JSONMethod
method PUT (line 99) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 105) | @JSONMethod({ "target", "x", "y" })
method SCAN (line 110) | @JSONMethod
method sensor_vendo_info (line 141) | public String sensor_vendo_info() {
FILE: src/main/java/org/made/neohabitat/mods/Sex_changer.java
class Sex_changer (line 21) | public class Sex_changer extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Sex_changer (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Sex_changer (line 58) | public Sex_changer(int style, int x, int y, int orientation, int gr_st...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
method SEXCHANGE (line 74) | @JSONMethod
method sex_changer_SEXCHANGE (line 79) | public void sex_changer_SEXCHANGE(User from, Avatar sexChangingAvatar) {
FILE: src/main/java/org/made/neohabitat/mods/Short_sign.java
class Short_sign (line 21) | public class Short_sign extends Poster implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Short_sign (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Short_sign (line 59) | public Short_sign(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Shovel.java
class Shovel (line 22) | public class Shovel extends HabitatMod implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Shovel (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Shovel (line 58) | public Shovel(int style, int x, int y, int orientation, int gr_state,
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
method DIG (line 75) | @JSONMethod
method GET (line 90) | @JSONMethod
method PUT (line 112) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
FILE: src/main/java/org/made/neohabitat/mods/Sign.java
class Sign (line 21) | public class Sign extends Poster implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Sign (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Sign (line 59) | public Sign(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Sky.java
class Sky (line 21) | public class Sky extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable() {
method filler (line 51) | public boolean filler() {
method Sky (line 55) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Sky (line 60) | public Sky(int style, int x, int y, int orientation, int gr_state, boo...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Spray_can.java
class Spray_can (line 22) | public class Spray_can extends HabitatMod implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Spray_can (line 63) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Spray_can (line 70) | public Spray_can(int style, int x, int y, int orientation, int gr_stat...
method copyThisMod (line 75) | @Override
method encode (line 80) | @Override
method getPattern (line 90) | protected int getPattern() {
method HELP (line 95) | @JSONMethod
method GET (line 100) | @JSONMethod
method PUT (line 105) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method SPRAY (line 111) | @JSONMethod({ "limb" })
method THROW (line 192) | @JSONMethod({ "target", "x", "y" })
FILE: src/main/java/org/made/neohabitat/mods/Street.java
class Street (line 20) | public class Street extends HabitatMod implements Copyable {
method HabitatClass (line 22) | public int HabitatClass() {
method HabitatModName (line 26) | public String HabitatModName() {
method capacity (line 30) | public int capacity() {
method pc_state_bytes (line 34) | public int pc_state_bytes() {
method known (line 38) | public boolean known() {
method opaque_container (line 42) | public boolean opaque_container() {
method changeable (line 46) | public boolean changeable() {
method filler (line 50) | public boolean filler() {
method Street (line 57) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Street (line 65) | public Street(int style, int x, int y, int orientation, int gr_state, ...
method setStreetState (line 70) | protected void setStreetState(int width, int height) {
method copyThisMod (line 75) | @Override
method encode (line 80) | @Override
method HELP (line 89) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Streetlamp.java
class Streetlamp (line 19) | public class Streetlamp extends HabitatMod implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method changeable (line 45) | public boolean changeable () { return true; }
method filler (line 47) | public boolean filler() {
method Streetlamp (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Streetlamp (line 56) | public Streetlamp(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 60) | @Override
method encode (line 65) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Stun_gun.java
class Stun_gun (line 21) | public class Stun_gun extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Stun_gun (line 51) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Stun_gun (line 56) | public Stun_gun(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 60) | @Override
method encode (line 65) | @Override
method HELP (line 72) | @JSONMethod
method GET (line 77) | @JSONMethod
method PUT (line 82) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method STUN (line 88) | @JSONMethod({ "target" })
FILE: src/main/java/org/made/neohabitat/mods/Super_trapezoid.java
class Super_trapezoid (line 21) | public class Super_trapezoid extends Polygonal implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Super_trapezoid (line 56) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricted",
method Super_trapezoid (line 68) | public Super_trapezoid(int style, int x, int y, int orientation, int g...
method setPatternState (line 78) | protected void setPatternState(int pattern_x_size, int pattern_y_size,...
method copyThisMod (line 84) | @Override
method encode (line 90) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Table.java
class Table (line 21) | public class Table extends Openable implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable () { return true; }
method filler (line 49) | public boolean filler() {
method Table (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Table (line 59) | public Table(int style, int x, int y, int orientation, int gr_state, b...
method copyThisMod (line 63) | @Override
method encode (line 68) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Teleport.java
class Teleport (line 23) | public class Teleport extends Teleporter implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method changeable (line 49) | public boolean changeable() {
method filler (line 53) | public boolean filler() {
method Teleport (line 57) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Teleport (line 64) | public Teleport(int style, int x, int y, int orientation, int gr_state...
method copyThisMod (line 69) | @Override
method encode (line 74) | public JSONLiteral encode(EncodeControl control) {
method HELP (line 81) | @Override
method PAY (line 89) | @JSONMethod
method ZAPTO (line 109) | @JSONMethod({"port_number"})
FILE: src/main/java/org/made/neohabitat/mods/Tokens.java
class Tokens (line 23) | public class Tokens extends HabitatMod implements Copyable {
method HabitatClass (line 25) | public int HabitatClass() {
method HabitatModName (line 29) | public String HabitatModName() {
method capacity (line 33) | public int capacity() {
method pc_state_bytes (line 37) | public int pc_state_bytes() {
method known (line 41) | public boolean known() {
method opaque_container (line 45) | public boolean opaque_container() {
method filler (line 49) | public boolean filler() {
method tget (line 64) | public int tget() {
method tset (line 68) | public void tset(int amount) {
method Tokens (line 75) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Tokens (line 83) | public Tokens(int style, int x, int y, int orientation, int gr_state, ...
method setTokensState (line 88) | protected void setTokensState(int denom_lo, int denom_hi) {
method copyThisMod (line 93) | @Override
method encode (line 98) | @Override
method HELP (line 107) | @JSONMethod
method GET (line 112) | @JSONMethod
method PUT (line 117) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 123) | @JSONMethod({ "target", "x", "y" })
method PAYTO (line 128) | @JSONMethod ({"target_id", "amount_lo", "amount_hi" })
method SPLIT (line 174) | @JSONMethod ({"amount_lo", "amount_hi"})
method spend (line 248) | public int spend(int amount, boolean destroy) {
method spend (line 270) | public static int spend(User from, int amount, boolean destroy) {
FILE: src/main/java/org/made/neohabitat/mods/Trapezoid.java
class Trapezoid (line 21) | public class Trapezoid extends Polygonal implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable() {
method filler (line 51) | public boolean filler() {
method Trapezoid (line 56) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Trapezoid (line 63) | public Trapezoid(int style, int x, int y, int orientation, int gr_stat...
method copyThisMod (line 68) | @Override
method encode (line 73) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Tree.java
class Tree (line 21) | public class Tree extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method changeable (line 47) | public boolean changeable() {
method filler (line 51) | public boolean filler() {
method Tree (line 55) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Tree (line 60) | public Tree(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 64) | @Override
method encode (line 69) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Vendo_front.java
class Vendo_front (line 24) | public class Vendo_front extends Openable implements Copyable {
method HabitatClass (line 26) | public int HabitatClass() {
method HabitatModName (line 30) | public String HabitatModName() {
method capacity (line 34) | public int capacity() {
method pc_state_bytes (line 38) | public int pc_state_bytes() {
method known (line 42) | public boolean known() {
method opaque_container (line 46) | public boolean opaque_container() {
method changeable (line 50) | public boolean changeable() {
method filler (line 54) | public boolean filler() {
method Vendo_front (line 67) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Vendo_front (line 75) | public Vendo_front(int style, int x, int y, int orientation, int gr_st...
method setVendoFrontState (line 82) | public void setVendoFrontState(int item_price, int display_item, int t...
method copyThisMod (line 92) | @Override
method encode (line 97) | @Override
method HELP (line 118) | @JSONMethod
method VSELECT (line 123) | @JSONMethod
method select_out_of_order (line 182) | private void select_out_of_order(User from, String err) {
method VEND (line 193) | @JSONMethod
method vendo_HELP (line 400) | public void vendo_HELP(User from) {
FILE: src/main/java/org/made/neohabitat/mods/Vendo_inside.java
class Vendo_inside (line 22) | public class Vendo_inside extends Openable implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method filler (line 48) | public boolean filler() {
method Vendo_inside (line 52) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Vendo_inside (line 58) | public Vendo_inside(int style, int x, int y, int orientation, int gr_s...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Wall.java
class Wall (line 22) | public class Wall extends HabitatMod implements Copyable {
method HabitatClass (line 24) | public int HabitatClass() {
method HabitatModName (line 28) | public String HabitatModName() {
method capacity (line 32) | public int capacity() {
method pc_state_bytes (line 36) | public int pc_state_bytes() {
method known (line 40) | public boolean known() {
method opaque_container (line 44) | public boolean opaque_container() {
method changeable (line 48) | public boolean changeable() {
method filler (line 52) | public boolean filler() {
method Wall (line 56) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Wall (line 61) | public Wall(int style, int x, int y, int orientation, int gr_state, bo...
method copyThisMod (line 65) | @Override
method encode (line 70) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Window.java
class Window (line 19) | public class Window extends HabitatMod implements Copyable {
method HabitatClass (line 21) | public int HabitatClass() {
method HabitatModName (line 25) | public String HabitatModName() {
method capacity (line 29) | public int capacity() {
method pc_state_bytes (line 33) | public int pc_state_bytes() {
method known (line 37) | public boolean known() {
method opaque_container (line 41) | public boolean opaque_container() {
method changeable (line 45) | public boolean changeable() {
method filler (line 49) | public boolean filler() {
method Window (line 53) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Window (line 58) | public Window(int style, int x, int y, int orientation, int gr_state, ...
method copyThisMod (line 62) | @Override
method encode (line 67) | @Override
FILE: src/main/java/org/made/neohabitat/mods/Windup_toy.java
class Windup_toy (line 21) | public class Windup_toy extends HabitatMod implements Copyable {
method HabitatClass (line 23) | public int HabitatClass() {
method HabitatModName (line 27) | public String HabitatModName() {
method capacity (line 31) | public int capacity() {
method pc_state_bytes (line 35) | public int pc_state_bytes() {
method known (line 39) | public boolean known() {
method opaque_container (line 43) | public boolean opaque_container() {
method filler (line 47) | public boolean filler() {
method Windup_toy (line 54) | @JSONMethod({ "style", "x", "y", "orientation", "gr_state", "restricte...
method Windup_toy (line 63) | public Windup_toy(int style, int x, int y, int orientation, int gr_sta...
method copyThisMod (line 68) | @Override
method encode (line 73) | @Override
method WIND (line 82) | @JSONMethod
method GET (line 95) | @JSONMethod
method PUT (line 101) | @JSONMethod({ "containerNoid", "x", "y", "orientation" })
method THROW (line 108) | @JSONMethod({ "target", "x", "y" })
FILE: test/Telko.js
function pad0 (line 106) | function pad0(n,z) {
function timestamp (line 116) | function timestamp(ptr) {
function addName (line 135) | function addName(s) {
function parseElko (line 152) | function parseElko(s) {
function scanForRefs (line 166) | function scanForRefs(s) {
function substituteName (line 198) | function substituteName(s) {
function substituteState (line 210) | function substituteState(m) {
function processElkoPacket (line 269) | function processElkoPacket(s) {
function sendWithSubstituions (line 331) | function sendWithSubstituions(obj) {
function startReadingSTDIN (line 344) | function startReadingSTDIN() {
function handleInputLine (line 348) | function handleInputLine(input) {
function executeScript (line 386) | function executeScript(script) {
FILE: tools/log-parser/habitat-log-analyzer.js
constant COMMANDS (line 13) | const COMMANDS = {
function cmdStats (line 56) | async function cmdStats(args) {
function cmdDecode (line 99) | function cmdDecode(args) {
function cmdSession (line 117) | async function cmdSession(args) {
function cmdTrace (line 158) | async function cmdTrace(args) {
function cmdOperations (line 202) | async function cmdOperations(args) {
function cmdContexts (line 236) | async function cmdContexts(args) {
function cmdGrep (line 264) | async function cmdGrep(args) {
function cmdProtocol (line 300) | function cmdProtocol(args) {
function showHelp (line 326) | function showHelp() {
function main (line 345) | async function main() {
FILE: tools/log-parser/log-parser.js
function parseLogLine (line 17) | function parseLogLine(line) {
function parseLogFile (line 159) | async function parseLogFile(filename, callback) {
function filterEntries (line 204) | function filterEntries(entries, filter = {}) {
function groupBySession (line 221) | function groupBySession(entries) {
function findRequestResponsePairs (line 241) | function findRequestResponsePairs(entries) {
FILE: tools/log-parser/protocol-decoder.js
constant REGION_OPS (line 28) | const REGION_OPS = {
constant OBJECT_OPS (line 54) | const OBJECT_OPS = {
function decodePacket (line 87) | function decodePacket(bytes) {
function formatPacket (line 163) | function formatPacket(decoded, verbose = false) {
function extractPacketFromLog (line 202) | function extractPacketFromLog(logLine) {
FILE: tools/log-parser/qlink-decoder.js
constant QLINK (line 11) | const QLINK = {
function calculateCRC16 (line 24) | function calculateCRC16(data) {
function encodeCRC (line 49) | function encodeCRC(crc) {
function decodeCRC (line 62) | function decodeCRC(encoded) {
function unescape (line 83) | function unescape(data) {
function escape (line 105) | function escape(data) {
function decodeQLinkPacket (line 125) | function decodeQLinkPacket(bytes) {
function formatQLinkPacket (line 210) | function formatQLinkPacket(decoded, verbose = false) {
function parseQLinkLogLine (line 260) | function parseQLinkLogLine(line) {
FILE: tools/log-parser/session-analyzer.js
function parseQLinkTimestamp (line 21) | function parseQLinkTimestamp(line) {
function parseBridgeTimestamp (line 33) | function parseBridgeTimestamp(line) {
function extractQLinkUsername (line 42) | function extractQLinkUsername(line) {
function extractBridgeUsername (line 68) | function extractBridgeUsername(line) {
function parseQLinkEntry (line 79) | function parseQLinkEntry(line) {
function parseBridgeEntry (line 142) | function parseBridgeEntry(line, lineNumber) {
function readQLinkLogs (line 164) | async function readQLinkLogs(hostname, tailLines = 10000) {
function readBridgeLogs (line 179) | async function readBridgeLogs(hostname, tailLines = 10000) {
function findSessions (line 194) | function findSessions(qlinkEntries, bridgeEntries, username, datetime) {
function formatSession (line 328) | function formatSession(session, verbose = false) {
function decodeOperationPayload (line 383) | function decodeOperationPayload(operation, payload) {
function formatQLinkEntry (line 430) | function formatQLinkEntry(entry, prefix, output, verbose) {
function formatBridgeEntry (line 611) | function formatBridgeEntry(entry, prefix, output, verbose) {
function main (line 741) | async function main() {
FILE: tools/wireproxy/main.go
function main (line 28) | func main() {
function handle (line 52) | func handle(client net.Conn, upstream, tag, outdir string) {
function copyAndLog (line 92) | func copyAndLog(src, dst net.Conn, w io.Writer, label string, done chan<...
FILE: vice_tool.py
class VICESession (line 45) | class VICESession:
method __init__ (line 48) | def __init__(self, host=DEFAULT_HOST, port=DEFAULT_PORT, verbose=True):
method connect (line 58) | def connect(self, retries=20, delay=1.0):
method launch (line 80) | def launch(self, extra_args=None):
method close (line 99) | def close(self):
method __enter__ (line 115) | def __enter__(self):
method __exit__ (line 118) | def __exit__(self, *args):
method _read_until_prompt (line 123) | def _read_until_prompt(self, timeout=5):
method cmd (line 148) | def cmd(self, command, timeout=5):
method go (line 169) | def go(self, addr=None):
method stop (line 179) | def stop(self):
method step (line 193) | def step(self, count=1):
method go_and_wait (line 197) | def go_and_wait(self, addr=None, timeout=120):
method read_byte (line 207) | def read_byte(self, addr):
method read_word (line 226) | def read_word(self, addr):
method read_block (line 232) | def read_block(self, addr, length):
method write_byte (line 251) | def write_byte(self, addr, val):
method write_bytes (line 255) | def write_bytes(self, addr, data):
method registers (line 262) | def registers(self):
method set_breakpoint (line 287) | def set_breakpoint(self, addr):
method delete_breakpoints (line 291) | def delete_breakpoints(self):
method keybuf (line 297) | def keybuf(self, text):
method type_text (line 302) | def type_text(self, text):
method inject_game_key (line 323) | def inject_game_key(self, petscii):
method press_return (line 343) | def press_return(self):
method press_f3 (line 353) | def press_f3(self):
method press_f5 (line 357) | def press_f5(self):
method press_f7 (line 361) | def press_f7(self):
method screen (line 367) | def screen(self):
method read_screen_ram (line 371) | def read_screen_ram(self):
method screenshot (line 383) | def screenshot(self, path=None):
method wait_for_text (line 404) | def wait_for_text(self, text, timeout=60, interval=3):
method boot_to_splash (line 426) | def boot_to_splash(self, wait=8):
method dismiss_splash (line 436) | def dismiss_splash(self):
method login (line 444) | def login(self, name, wait_for_connect=60):
method wait_for_game (line 462) | def wait_for_game(self, timeout=180):
method boot_to_game (line 480) | def boot_to_game(self, name="a"):
method bridge_logs (line 489) | def bridge_logs(self, lines=30):
method elko_logs (line 493) | def elko_logs(self, lines=30):
method _docker_logs (line 497) | def _docker_logs(self, service, lines):
method _log (line 511) | def _log(self, msg):
Copy disabled (too large)
Download .json
Condensed preview — 3061 files, each showing path, character count, and a content snippet. Download the .json file for the full structured content (13,616K chars).
[
{
"path": ".claude/skills/habitat/SKILL.md",
"chars": 4324,
"preview": "# Habitat VICE Automation\n\nDrive the Habitat C64 client in VICE, automate boot/login, inspect game state, and read bridg"
},
{
"path": ".dockerignore",
"chars": 75,
"preview": "node_modules\n**/node_modules\nDockerfile\ndocker-compose.yml\n*.DS_store\n.git\n"
},
{
"path": ".gitattributes",
"chars": 73,
"preview": "build text eol=lf\nrun text eol=lf\n*.sh text eol=lf\ndb/* text eol=lf\n\n"
},
{
"path": ".gitignore",
"chars": 220,
"preview": ".idea/\n.vagrant/\n.dbshell\nlib/\nlog/\nnode_modules/\npushserver/node_modules/\ntarget/\nhooks/\n.classpath\n.project\n.settings\n"
},
{
"path": ".travis.yml",
"chars": 928,
"preview": "sudo: required\n\nlanguage: ruby\n\nnotifications:\n slack: neohabitat:rLGUstSJGUC2eW9610GfoMBx\n\nservices:\n - docker\n\nbefor"
},
{
"path": "Dockerfile",
"chars": 1308,
"preview": "# Neoclassical Habitat\n#\n# VERSION 0.1.0\n\nFROM quay.io/centos/centos:stream9\n\n# Get a recent version of nod"
},
{
"path": "LICENSE",
"chars": 1071,
"preview": "MIT License\n\nCopyright (c) 2017 frandallfarmer\n\nPermission is hereby granted, free of charge, to any person obtaining a "
},
{
"path": "PROTOCOL.md",
"chars": 33360,
"preview": "# NeoHabitat Protocol Documentation\r\n\r\n## Overview\r\n\r\nThis document describes the Habitat application protocol and Q-Lin"
},
{
"path": "README-RealC64.md",
"chars": 10222,
"preview": "# Setting up a real C64 to play NeoHabitat\nGuide written June 7th-29th 2017 by Goethe ([GitHub](https://github.com/napi-"
},
{
"path": "README.md",
"chars": 7793,
"preview": "NeoHabitat.org: The Neoclassical Habitat Server Project\n=======================================================\n\n[![lice"
},
{
"path": "astroturf/app.py",
"chars": 1325,
"preview": "from __future__ import print_function\n\nimport argparse\nimport os\nimport sys\n\nfrom glob import glob\n\nfrom astroturf impor"
},
{
"path": "astroturf/astroturf.py",
"chars": 12832,
"preview": "from __future__ import print_function\n\nimport json\nimport os\nimport re\nimport string\nimport sys\nimport traceback\nimport "
},
{
"path": "astroturf/custom_escapes_table.yml",
"chars": 684,
"preview": "# ASCII lookup table for custom Habitat text control characters:\n# https://github.com/frandallfarmer/neohabitat/wiki/Hab"
},
{
"path": "astroturf/popustop/afront1.json",
"chars": 2560,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_1)s\",\n \"mods"
},
{
"path": "astroturf/popustop/afront2.json",
"chars": 5433,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_1)s\",\n \"mods"
},
{
"path": "astroturf/popustop/afront3.json",
"chars": 7800,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_1)s\",\n \"mods"
},
{
"path": "astroturf/popustop/aprominade2.json",
"chars": 9932,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_1)s\",\n \"mods"
},
{
"path": "astroturf/popustop/basement.json",
"chars": 1407,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"Basement\",\r\n "
},
{
"path": "astroturf/popustop/bboard.json",
"chars": 3004,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(region_name)s\""
},
{
"path": "astroturf/popustop/elby.json",
"chars": 4199,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\", \r\n \"capacity\": 64, \r\n \"type\": \"context\", \r\n \"name\": \"%(arg_8)s\", \r"
},
{
"path": "astroturf/popustop/elby1000.json",
"chars": 3995,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"%(arg_8)s\", \n \""
},
{
"path": "astroturf/popustop/elevator1.json",
"chars": 2852,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_3)s:%(arg_"
},
{
"path": "astroturf/popustop/hall1.json",
"chars": 3512,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_5)s\",\r\n "
},
{
"path": "astroturf/popustop/hall11000.json",
"chars": 3337,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_5)s\",\n \"mods"
},
{
"path": "astroturf/popustop/hall2.json",
"chars": 3505,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_5)s\",\r\n "
},
{
"path": "astroturf/popustop/hall21000.json",
"chars": 3331,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_5)s\",\n \"mods"
},
{
"path": "astroturf/popustop/hall3.json",
"chars": 3505,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_5)s\",\r\n "
},
{
"path": "astroturf/popustop/hall31000.json",
"chars": 3331,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_5)s\",\n \"mods"
},
{
"path": "astroturf/popustop/hall4.json",
"chars": 3512,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_5)s\",\r\n "
},
{
"path": "astroturf/popustop/hall41000.json",
"chars": 3337,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"%(arg_5)s\",\n \"mods"
},
{
"path": "astroturf/popustop/lobby.json",
"chars": 4103,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_3)s:%(arg_"
},
{
"path": "astroturf/popustop/popustop.i",
"chars": 58428,
"preview": "1106\nbasement r=0 w=0 n=2 e=0 s=0 /\nstairs r=0 w=0 n=21 e=3 s=1 /\"Lobby\" 136 \"Popustop\" \"}\"\nlobby r=0 w=2 n=4 e=1106 s=0"
},
{
"path": "astroturf/popustop/roof.json",
"chars": 5213,
"preview": "[\n {\n \"ref\": \"context-%(region_ref)s\",\n \"capacity\": 64,\n \"type\": \"context\",\n \"name\": \"Roof\",\n \"mods\": [\n"
},
{
"path": "astroturf/popustop/stairs.json",
"chars": 3147,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_3)s:%(arg_"
},
{
"path": "astroturf/popustop/turf1.json",
"chars": 3510,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf10.json",
"chars": 3472,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf2.json",
"chars": 3458,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf3.json",
"chars": 3131,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf4.json",
"chars": 3690,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf5.json",
"chars": 2944,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf6.json",
"chars": 2561,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf7.json",
"chars": 3487,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf8.json",
"chars": 3482,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "astroturf/popustop/turf9.json",
"chars": 3472,
"preview": "[\r\n {\r\n \"ref\": \"context-%(region_ref)s\",\r\n \"capacity\": 64,\r\n \"type\": \"context\",\r\n \"name\": \"%(arg_1)s #%(arg"
},
{
"path": "bootstrap",
"chars": 4284,
"preview": "#!/usr/bin/env bash\n# Installs all development dependencies.\n\nGIT_BASE_DIR=\"$(git rev-parse --show-toplevel)\"\n\nfunction "
},
{
"path": "bridge/.gitignore",
"chars": 13,
"preview": "usersDB.json\n"
},
{
"path": "bridge/Habitat2ElkoBridge.js",
"chars": 63670,
"preview": "/**\r\n * 1986 Habitat and 2016 Elko don't speak the same protocol.\r\n *\r\n * Until we can extend Elko appropriately, we'll "
},
{
"path": "bridge/defaults.elko",
"chars": 170,
"preview": "{\"context\":\"context-Downtown_5f\", \"user\":\"user-chip\", \"listen\":\"neohabitat:1337\", \"elko\":\"neohabitat:2018\", \"delay\":2000"
},
{
"path": "bridge/hcode.js",
"chars": 42932,
"preview": "/**\n * @author Randy Farmer\n * @fileOverview Support functions to [en|de]code messages between a Habitat Client/Server\n "
},
{
"path": "bridge/package.json",
"chars": 553,
"preview": "{\n \"name\": \"neohabitat-bridge\",\n \"version\": \"0.1.0\",\n \"description\": \"Neoclassical Habitat\",\n \"dependencies\": {\n "
},
{
"path": "bridge/run",
"chars": 15,
"preview": "npm run bridge\n"
},
{
"path": "data/.gitignore",
"chars": 35,
"preview": "*\n*/\n!mariadb\n!mongodb\n!.gitignore\n"
},
{
"path": "db/.gitignore",
"chars": 34,
"preview": "dbinit.sh\ndb-teleports.json\n.errs\n"
},
{
"path": "db/Back4t/back4t_01.json",
"chars": 3589,
"preview": "[\n {\n \"ref\": \"context-back4t_01\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_02.json",
"chars": 3982,
"preview": "[\n {\n \"ref\": \"context-back4t_02\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_03.json",
"chars": 2901,
"preview": "[\n {\n \"ref\": \"context-back4t_03\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_04.json",
"chars": 2633,
"preview": "[\n {\n \"ref\": \"context-back4t_04\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_05.json",
"chars": 3173,
"preview": "[\n {\n \"ref\": \"context-back4t_05\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_11.json",
"chars": 4072,
"preview": "[\n {\n \"ref\": \"context-back4t_11\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_12.json",
"chars": 3179,
"preview": "[\n {\n \"ref\": \"context-back4t_12\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_13.json",
"chars": 3265,
"preview": "[\n {\n \"ref\": \"context-back4t_13\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_14.json",
"chars": 3439,
"preview": "[\n {\n \"ref\": \"context-back4t_14\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_15.json",
"chars": 3581,
"preview": "[\n {\n \"ref\": \"context-back4t_15\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_20.json",
"chars": 2838,
"preview": "[\n {\n \"ref\": \"context-back4t_20\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_21.json",
"chars": 4140,
"preview": "[\n {\n \"ref\": \"context-back4t_21\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mo"
},
{
"path": "db/Back4t/back4t_22.json",
"chars": 2725,
"preview": "[\n {\n \"ref\": \"context-back4t_22\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_23.json",
"chars": 2707,
"preview": "[\n {\n \"ref\": \"context-back4t_23\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_24.json",
"chars": 2329,
"preview": "[\n {\n \"ref\": \"context-back4t_24\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_25.json",
"chars": 3249,
"preview": "[\n {\n \"ref\": \"context-back4t_25\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_30.json",
"chars": 962,
"preview": "[\n {\n \"ref\": \"context-back4t_30\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_31.json",
"chars": 3567,
"preview": "[\n {\n \"ref\": \"context-back4t_31\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_32.json",
"chars": 2726,
"preview": "[\n {\n \"ref\": \"context-back4t_32\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_33.json",
"chars": 3041,
"preview": "[\n {\n \"ref\": \"context-back4t_33\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_34.json",
"chars": 4072,
"preview": "[\n {\n \"ref\": \"context-back4t_34\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_35.json",
"chars": 2635,
"preview": "[\n {\n \"ref\": \"context-back4t_35\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_41.json",
"chars": 2889,
"preview": "[\n {\n \"ref\": \"context-back4t_41\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_42.json",
"chars": 4325,
"preview": "[\n {\n \"ref\": \"context-back4t_42\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_43.json",
"chars": 3254,
"preview": "[\n {\n \"ref\": \"context-back4t_43\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_44.json",
"chars": 3267,
"preview": "[\n {\n \"ref\": \"context-back4t_44\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_45.json",
"chars": 2904,
"preview": "[\n {\n \"ref\": \"context-back4t_45\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_51.json",
"chars": 2632,
"preview": "[\n {\n \"ref\": \"context-back4t_51\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_52.json",
"chars": 4424,
"preview": "[\n {\n \"ref\": \"context-back4t_52\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_53.json",
"chars": 4439,
"preview": "[\n {\n \"ref\": \"context-back4t_53\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_54.json",
"chars": 3174,
"preview": "[\n {\n \"ref\": \"context-back4t_54\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_55.json",
"chars": 3438,
"preview": "[\n {\n \"ref\": \"context-back4t_55\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_56.json",
"chars": 2817,
"preview": "[\n {\n \"ref\": \"context-back4t_56\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_61.json",
"chars": 2901,
"preview": "[\n {\n \"ref\": \"context-back4t_61\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_62.json",
"chars": 2987,
"preview": "[\n {\n \"ref\": \"context-back4t_62\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_63.json",
"chars": 3270,
"preview": "[\n {\n \"ref\": \"context-back4t_63\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_64.json",
"chars": 3584,
"preview": "[\n {\n \"ref\": \"context-back4t_64\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_65.json",
"chars": 2364,
"preview": "[\n {\n \"ref\": \"context-back4t_65\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_71.json",
"chars": 3991,
"preview": "[\n {\n \"ref\": \"context-back4t_71\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_72.json",
"chars": 3439,
"preview": "[\n {\n \"ref\": \"context-back4t_72\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_73.json",
"chars": 2905,
"preview": "[\n {\n \"ref\": \"context-back4t_73\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_74.json",
"chars": 2638,
"preview": "[\n {\n \"ref\": \"context-back4t_74\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mod"
},
{
"path": "db/Back4t/back4t_75.json",
"chars": 3704,
"preview": "[\n {\n \"ref\": \"context-back4t_75\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Back 40\", \n \"mo"
},
{
"path": "db/Backroom/TBD_Sign.json.fragment",
"chars": 1115,
"preview": "\t{\n\t\t\"ref\": \"item-TBD.downtown4b\", \n\t\t\"mods\": [\n\t\t\t{\n\t\t\t\t\"type\": \"Sign\",\n\t\t\t\t\"y\": 70,\n\t\t\t\t\"x\": 4,\n\t\t\t\t\"gr_state\": 5, \n\t\t"
},
{
"path": "db/Backroom/context-frontyard.json",
"chars": 2664,
"preview": "[{\n\t\"type\": \"context\",\n\t\"ref\": \"context-frontyard\",\n\t\"capacity\": 64,\n\t\"name\": \"Our House, in the middle of the street..."
},
{
"path": "db/Backroom/context-hall.json",
"chars": 2446,
"preview": "[{\n\t\"type\": \"context\",\n\t\"ref\": \"context-hall\",\n\t\"capacity\": 64,\n\t\"name\": \"Popustop 4th floor hallway\",\n\t\"mods\": [\n\t\t{\n\t\t"
},
{
"path": "db/Backroom/context-library.json",
"chars": 10334,
"preview": "[\n\t\t{\n\t\t\t\"type\" : \"context\",\n\t\t\t\"ref\" : \"context-library\",\n\t\t\t\"capacity\" : 64,\n\t\t\t\"name\" : \"City Library\",\n\t\t\t\"mods\" : ["
},
{
"path": "db/Backroom/context-simple.json",
"chars": 1161,
"preview": "[\n\t{\n\t\t\"type\" : \"context\",\n\t\t\"ref\" : \"context-simple\",\n\t\t\"capacity\" : 64,\n\t\t\"name\" : \"The Void\",\n\t\t\"mods\" : [ {\n\t\t\t\"town"
},
{
"path": "db/Backroom/context-staging.json",
"chars": 965,
"preview": "[{\n\t\"type\": \"context\",\n\t\"ref\": \"context-staging\",\n\t\"capacity\": 64,\n\t\"name\": \"Put Objects Here if they are not working ye"
},
{
"path": "db/Backroom/context-steve1.json",
"chars": 1701,
"preview": "[\n {\n \"type\": \"context\",\n \"ref\": \"context-steve1\",\n \"capacity\": 64,\n \"name\": \"Welcome to Steve: Floor 1\",\n "
},
{
"path": "db/Backroom/context-steve2.json",
"chars": 1507,
"preview": "[ \n {\n \"type\": \"context\",\n \"ref\": \"context-steve2\",\n \"capacity\": 64,\n \"name\": \"Welcome to Steve: Floor 2\",\n"
},
{
"path": "db/Backroom/context-table.json",
"chars": 3985,
"preview": "[{\n\t\"type\": \"context\",\n\t\"ref\": \"context-table\",\n\t\"capacity\": 64,\n\t\"name\": \"The Nexus\",\n\t\"mods\": [\n\t\t{\n\t\t\t\"town_dir\": \"th"
},
{
"path": "db/Backroom/context-test.json",
"chars": 3898,
"preview": "[{\n\t\"type\": \"context\",\n\t\"ref\": \"context-test\",\n\t\"capacity\": 64,\n\t\"name\": \"Neohabitat Project Hub\",\n\t\"aliases\": [\"pop-hub"
},
{
"path": "db/Backroom/context-turf.json",
"chars": 3076,
"preview": "[{\n\t\"type\": \"context\",\n\t\"ref\": \"context-turf\",\n\t\"capacity\": 64,\n\t\"name\": \"Steve's Turf\",\n\t\"mods\": [\n\t\t{\n\t\t\t\"town_dir\": \""
},
{
"path": "db/Backroom/context-vendo.json",
"chars": 2596,
"preview": "[ {\n\t\"type\": \"context\",\n\t\"ref\": \"context-vendo\",\n\t\"capacity\": 64,\n\t\"name\": \"Test Vending Machine Room\",\n\t\"aliases\": [\"po"
},
{
"path": "db/Beach/beach_0a.json",
"chars": 1260,
"preview": "[\n {\n \"ref\": \"context-beach_0a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_0b.json",
"chars": 2059,
"preview": "[\n {\n \"ref\": \"context-beach_0b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_0c.json",
"chars": 2341,
"preview": "[\n {\n \"ref\": \"context-beach_0c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_0d.json",
"chars": 2637,
"preview": "[\n {\n \"ref\": \"context-beach_0d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_0e.json",
"chars": 2370,
"preview": "[\n {\n \"ref\": \"context-beach_0e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_0f.json",
"chars": 2348,
"preview": "[\n {\n \"ref\": \"context-beach_0f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_1a.json",
"chars": 2323,
"preview": "[\n {\n \"ref\": \"context-beach_1a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_1b.json",
"chars": 2098,
"preview": "[\n {\n \"ref\": \"context-beach_1b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_1c.json",
"chars": 2072,
"preview": "[\n {\n \"ref\": \"context-beach_1c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_1d.json",
"chars": 2335,
"preview": "[\n {\n \"ref\": \"context-beach_1d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_1e.json",
"chars": 2362,
"preview": "[\n {\n \"ref\": \"context-beach_1e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_1f.json",
"chars": 2607,
"preview": "[\n {\n \"ref\": \"context-beach_1f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_1g.json",
"chars": 5647,
"preview": "[\n {\n \"ref\": \"context-beach_1g\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_2a.json",
"chars": 3339,
"preview": "[\n {\n \"ref\": \"context-beach_2a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_2b.json",
"chars": 2368,
"preview": "[\n {\n \"ref\": \"context-beach_2b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_2c.json",
"chars": 2368,
"preview": "[\n {\n \"ref\": \"context-beach_2c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_2d.json",
"chars": 2661,
"preview": "[\n {\n \"ref\": \"context-beach_2d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_2e.json",
"chars": 2103,
"preview": "[\n {\n \"ref\": \"context-beach_2e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Beach/beach_2f.json",
"chars": 2363,
"preview": "[\n {\n \"ref\": \"context-beach_2f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Beach\", \n \"mods\":"
},
{
"path": "db/Capture_flag/CTF_6405.json",
"chars": 7684,
"preview": "[\n {\n \"ref\": \"context-CTF_6405\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture the Flag\", \n "
},
{
"path": "db/Capture_flag/CTF_7000.json",
"chars": 6465,
"preview": "[\n {\n \"ref\": \"context-CTF_7000\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture the Flag\", \n "
},
{
"path": "db/Capture_flag/CTF_7001.json",
"chars": 7267,
"preview": "[\n {\n \"ref\": \"context-CTF_7001\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture the Flag Lobby\","
},
{
"path": "db/Capture_flag/CTF_7002.json",
"chars": 4305,
"preview": "[\n {\n \"ref\": \"context-CTF_7002\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"CTF Field #1 Lobby\", \n "
},
{
"path": "db/Capture_flag/CTF_7003.json",
"chars": 4305,
"preview": "[\n {\n \"ref\": \"context-CTF_7003\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"CTF Field #2 Lobby\", \n "
},
{
"path": "db/Capture_flag/CTF_7004.json",
"chars": 4353,
"preview": "[\n {\n \"ref\": \"context-CTF_7004\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"CTF Field #3 Lobby\", \n "
},
{
"path": "db/Capture_flag/CTF_7010.json",
"chars": 2526,
"preview": "[\n {\n \"ref\": \"context-CTF_7010\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7011.json",
"chars": 4590,
"preview": "[\n {\n \"ref\": \"context-CTF_7011\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7012.json",
"chars": 2852,
"preview": "[\n {\n \"ref\": \"context-CTF_7012\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7013.json",
"chars": 2812,
"preview": "[\n {\n \"ref\": \"context-CTF_7013\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7014.json",
"chars": 3420,
"preview": "[\n {\n \"ref\": \"context-CTF_7014\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7015.json",
"chars": 4314,
"preview": "[\n {\n \"ref\": \"context-CTF_7015\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7016.json",
"chars": 3151,
"preview": "[\n {\n \"ref\": \"context-CTF_7016\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7017.json",
"chars": 2814,
"preview": "[\n {\n \"ref\": \"context-CTF_7017\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7018.json",
"chars": 3168,
"preview": "[\n {\n \"ref\": \"context-CTF_7018\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7019.json",
"chars": 2814,
"preview": "[\n {\n \"ref\": \"context-CTF_7019\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Capture_flag/CTF_7020.json",
"chars": 2815,
"preview": "[\n {\n \"ref\": \"context-CTF_7020\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"Capture The Flag Field #"
},
{
"path": "db/Desert/Desert_1a.json",
"chars": 2353,
"preview": "[\n {\n \"ref\": \"context-Desert_1a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_1b.json",
"chars": 2137,
"preview": "[\n {\n \"ref\": \"context-Desert_1b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_1c.json",
"chars": 2693,
"preview": "[\n {\n \"ref\": \"context-Desert_1c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_1d.json",
"chars": 1306,
"preview": "[\n {\n \"ref\": \"context-Desert_1d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_1e.json",
"chars": 1915,
"preview": "[\n {\n \"ref\": \"context-Desert_1e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_1f.json",
"chars": 4001,
"preview": "[\n {\n \"ref\": \"context-Desert_1f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_2a.json",
"chars": 2116,
"preview": "[\n {\n \"ref\": \"context-Desert_2a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_2b.json",
"chars": 2075,
"preview": "[\n {\n \"ref\": \"context-Desert_2b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_2c.json",
"chars": 3105,
"preview": "[\n {\n \"ref\": \"context-Desert_2c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_2d.json",
"chars": 2076,
"preview": "[\n {\n \"ref\": \"context-Desert_2d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_2e.json",
"chars": 2705,
"preview": "[\n {\n \"ref\": \"context-Desert_2e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_2f.json",
"chars": 2330,
"preview": "[\n {\n \"ref\": \"context-Desert_2f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_3a.json",
"chars": 2151,
"preview": "[\n {\n \"ref\": \"context-Desert_3a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_3b.json",
"chars": 1289,
"preview": "[\n {\n \"ref\": \"context-Desert_3b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_3c.json",
"chars": 2663,
"preview": "[\n {\n \"ref\": \"context-Desert_3c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_3d.json",
"chars": 2435,
"preview": "[\n {\n \"ref\": \"context-Desert_3d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\",\n \"alias"
},
{
"path": "db/Desert/Desert_3e.json",
"chars": 2269,
"preview": "[\n {\n \"ref\": \"context-Desert_3e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_3f.json",
"chars": 2075,
"preview": "[\n {\n \"ref\": \"context-Desert_3f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_4a.json",
"chars": 2721,
"preview": "[\n {\n \"ref\": \"context-Desert_4a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_4b.json",
"chars": 2434,
"preview": "[\n {\n \"ref\": \"context-Desert_4b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_4c.json",
"chars": 2373,
"preview": "[\n {\n \"ref\": \"context-Desert_4c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_4d.json",
"chars": 3266,
"preview": "[\n {\n \"ref\": \"context-Desert_4d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_4e.json",
"chars": 1567,
"preview": "[\n {\n \"ref\": \"context-Desert_4e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_4f.json",
"chars": 1272,
"preview": "[\n {\n \"ref\": \"context-Desert_4f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_5a.json",
"chars": 1827,
"preview": "[\n {\n \"ref\": \"context-Desert_5a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_5b.json",
"chars": 2367,
"preview": "[\n {\n \"ref\": \"context-Desert_5b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_5c.json",
"chars": 1796,
"preview": "[\n {\n \"ref\": \"context-Desert_5c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_5d.json",
"chars": 2162,
"preview": "[\n {\n \"ref\": \"context-Desert_5d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_5e.json",
"chars": 2392,
"preview": "[\n {\n \"ref\": \"context-Desert_5e\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Desert/Desert_5f.json",
"chars": 1255,
"preview": "[\n {\n \"ref\": \"context-Desert_5f\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"The Desert\", \n \"mods"
},
{
"path": "db/Dnalsi/dnalsi_02.json",
"chars": 3768,
"preview": "[\n {\n \"ref\": \"context-dnalsi_02\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_03.json",
"chars": 2853,
"preview": "[\n {\n \"ref\": \"context-dnalsi_03\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_04.json",
"chars": 3512,
"preview": "[\n {\n \"ref\": \"context-dnalsi_04\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_05.json",
"chars": 2720,
"preview": "[\n {\n \"ref\": \"context-dnalsi_05\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_08.json",
"chars": 2908,
"preview": "[\n {\n \"ref\": \"context-dnalsi_08\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_09.json",
"chars": 2720,
"preview": "[\n {\n \"ref\": \"context-dnalsi_09\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_0a.json",
"chars": 2917,
"preview": "[\n {\n \"ref\": \"context-dnalsi_0a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_11.json",
"chars": 1838,
"preview": "[\n {\n \"ref\": \"context-dnalsi_11\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_12.json",
"chars": 3459,
"preview": "[\n {\n \"ref\": \"context-dnalsi_12\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_15.json",
"chars": 4473,
"preview": "[\n {\n \"ref\": \"context-dnalsi_15\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_18.json",
"chars": 2693,
"preview": "[\n {\n \"ref\": \"context-dnalsi_18\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_19.json",
"chars": 3324,
"preview": "[\n {\n \"ref\": \"context-dnalsi_19\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_1a.json",
"chars": 5558,
"preview": "[\n {\n \"ref\": \"context-dnalsi_1a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_1b.json",
"chars": 4159,
"preview": "[\n {\n \"ref\": \"context-dnalsi_1b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_1c.json",
"chars": 3246,
"preview": "[\n {\n \"ref\": \"context-dnalsi_1c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_1d.json",
"chars": 3634,
"preview": "[\n {\n \"ref\": \"context-dnalsi_1d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_21.json",
"chars": 6838,
"preview": "[\n {\n \"ref\": \"context-dnalsi_21\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_25.json",
"chars": 2334,
"preview": "[\n {\n \"ref\": \"context-dnalsi_25\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_26.json",
"chars": 4879,
"preview": "[\n {\n \"ref\": \"context-dnalsi_26\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_28.json",
"chars": 6106,
"preview": "[\n {\n \"ref\": \"context-dnalsi_28\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_29.json",
"chars": 3052,
"preview": "[\n {\n \"ref\": \"context-dnalsi_29\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_2a.json",
"chars": 3969,
"preview": "[\n {\n \"ref\": \"context-dnalsi_2a\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_2b.json",
"chars": 3005,
"preview": "[\n {\n \"ref\": \"context-dnalsi_2b\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_2c.json",
"chars": 3029,
"preview": "[\n {\n \"ref\": \"context-dnalsi_2c\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_2d.json",
"chars": 3590,
"preview": "[\n {\n \"ref\": \"context-dnalsi_2d\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
},
{
"path": "db/Dnalsi/dnalsi_30.json",
"chars": 3466,
"preview": "[\n {\n \"ref\": \"context-dnalsi_30\", \n \"capacity\": 64, \n \"type\": \"context\", \n \"name\": \"D'nalsi Island\", \n \""
}
]
// ... and 2861 more files (download for full content)
About this extraction
This page contains the full source code of the frandallfarmer/neohabitat GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 3061 files (11.4 MB), approximately 3.1M tokens, and a symbol index with 2342 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.