From 88bbf20d973a1e5a19f4b4ebc280320e4c83a098 Mon Sep 17 00:00:00 2001 From: Jeffrey Phillips Freeman <the@jeffreyfreeman.me> Date: Wed, 2 Aug 2023 19:54:13 -0400 Subject: [PATCH] Removed code not related to backend --- aprsc.dockerfile | 23 - config/000-default.conf | 13 - config/aprsc.conf | 30 - config/trackdirect.ini | 38 +- db.dockerfile | 3 - docker-compose-rel.yml | 55 - docker-compose.yml | 60 - htdocs/.htaccess | 16 - htdocs/includes/autoload.php | 24 - htdocs/includes/bootstrap.php | 14 - htdocs/includes/common.php | 1893 ------------- htdocs/includes/database.class.php | 59 - htdocs/includes/kml.class.php | 302 -- htdocs/includes/models/model.class.php | 116 - htdocs/includes/models/packet.class.php | 375 --- htdocs/includes/models/packetogn.class.php | 10 - htdocs/includes/models/packetpath.class.php | 10 - .../includes/models/packettelemetry.class.php | 236 -- .../includes/models/packetweather.class.php | 72 - htdocs/includes/models/sender.class.php | 19 - htdocs/includes/models/station.class.php | 322 --- .../models/stationtelemetrybits.class.php | 9 - .../models/stationtelemetryeqns.class.php | 9 - .../models/stationtelemetryparam.class.php | 9 - .../models/stationtelemetryunit.class.php | 9 - htdocs/includes/pdoconnection.class.php | 164 -- .../repositories/modelrepository.class.php | 102 - .../packetognrepository.class.php | 54 - .../packetpathrepository.class.php | 165 -- .../repositories/packetrepository.class.php | 213 -- .../packettelemetryrepository.class.php | 221 -- .../packetweatherrepository.class.php | 157 -- .../repositories/senderrepository.class.php | 46 - .../repositories/stationrepository.class.php | 473 ---- .../stationtelemetrybitsrepository.class.php | 37 - .../stationtelemetryeqnsrepository.class.php | 37 - .../stationtelemetryparamrepository.class.php | 37 - .../stationtelemetryunitrepository.class.php | 37 - htdocs/public/.htaccess | 18 - htdocs/public/css/main.css | 866 ------ htdocs/public/data/coverage.php | 31 - htdocs/public/data/kml.php | 60 - htdocs/public/data/trail.php | 55 - htdocs/public/favicon.ico | Bin 15086 -> 0 bytes htdocs/public/heatmaps/.htaccess | 23 - htdocs/public/heatmaps/gd-heatmap/LICENSE | 20 - htdocs/public/heatmaps/gd-heatmap/README.md | 6 - htdocs/public/heatmaps/gd-heatmap/gd-rg.php | 195 -- .../public/heatmaps/gd-heatmap/gd_heatmap.php | 293 -- .../heatmaps/gd-heatmap/gradient-16-fill.png | Bin 373 -> 0 bytes .../heatmaps/gd-heatmap/gradient-16.png | Bin 386 -> 0 bytes .../heatmaps/gd-heatmap/gradient-25-fill.png | Bin 225 -> 0 bytes .../heatmaps/gd-heatmap/gradient-25.png | Bin 238 -> 0 bytes .../heatmaps/gd-heatmap/gradient-32-fill.png | Bin 268 -> 0 bytes .../heatmaps/gd-heatmap/gradient-32.png | Bin 282 -> 0 bytes .../heatmaps/gd-heatmap/gradient-8-fill.png | Bin 155 -> 0 bytes .../public/heatmaps/gd-heatmap/gradient-8.png | Bin 168 -> 0 bytes .../heatmaps/gd-heatmap/gradient-source.jpg | Bin 27121 -> 0 bytes htdocs/public/heatmaps/gd-heatmap/test.php | 31 - htdocs/public/heatmaps/heatmap.php | 86 - htdocs/public/heatmaps/transparent.png | Bin 43203 -> 0 bytes htdocs/public/images/aprs-symbols.png | Bin 55290 -> 0 bytes htdocs/public/images/checked.png | Bin 775 -> 0 bytes htdocs/public/images/dotColor0.png | Bin 246 -> 0 bytes htdocs/public/images/dotColor0.svg | 63 - htdocs/public/images/dotColor1.png | Bin 255 -> 0 bytes htdocs/public/images/dotColor1.svg | 63 - htdocs/public/images/dotColor2.png | Bin 238 -> 0 bytes htdocs/public/images/dotColor2.svg | 63 - htdocs/public/images/dotColor3.png | Bin 232 -> 0 bytes htdocs/public/images/dotColor3.svg | 63 - htdocs/public/images/dotColor4.png | Bin 261 -> 0 bytes htdocs/public/images/dotColor4.svg | 63 - htdocs/public/images/spinner.gif | Bin 54394 -> 0 bytes htdocs/public/images/transmit-original.png | Bin 5420 -> 0 bytes htdocs/public/images/transmit-original.svg | 111 - htdocs/public/images/transmit.png | Bin 4250 -> 0 bytes htdocs/public/images/transmit.svg | 99 - htdocs/public/images/transmit1.png | Bin 789 -> 0 bytes htdocs/public/images/transmit1.svg | 73 - htdocs/public/images/transmit2.png | Bin 938 -> 0 bytes htdocs/public/images/transmit2.svg | 73 - htdocs/public/images/transmit3.png | Bin 1034 -> 0 bytes htdocs/public/images/transmit3.svg | 73 - htdocs/public/images/transparent.png | Bin 180 -> 0 bytes htdocs/public/images/unchecked.png | Bin 372 -> 0 bytes htdocs/public/index.php | 400 --- htdocs/public/js/convex-hull.js | 87 - htdocs/public/js/main.js | 158 -- htdocs/public/js/trackdirect.min.js | 889 ------ htdocs/public/robots.txt | 4 - htdocs/public/symbols/.htaccess | 66 - htdocs/public/symbols/icons/100-1.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/100-2.png | Bin 320 -> 0 bytes htdocs/public/symbols/icons/101-1.png | Bin 265 -> 0 bytes htdocs/public/symbols/icons/101-2.png | Bin 339 -> 0 bytes htdocs/public/symbols/icons/102-1.png | Bin 317 -> 0 bytes htdocs/public/symbols/icons/102-2.png | Bin 348 -> 0 bytes htdocs/public/symbols/icons/103-1.png | Bin 314 -> 0 bytes htdocs/public/symbols/icons/103-2.png | Bin 241 -> 0 bytes htdocs/public/symbols/icons/104-1.png | Bin 238 -> 0 bytes htdocs/public/symbols/icons/104-2.png | Bin 353 -> 0 bytes htdocs/public/symbols/icons/105-1.png | Bin 398 -> 0 bytes htdocs/public/symbols/icons/105-2.png | Bin 181 -> 0 bytes htdocs/public/symbols/icons/106-1.png | Bin 326 -> 0 bytes htdocs/public/symbols/icons/106-2.png | Bin 314 -> 0 bytes htdocs/public/symbols/icons/107-1.png | Bin 342 -> 0 bytes htdocs/public/symbols/icons/107-2.png | Bin 307 -> 0 bytes htdocs/public/symbols/icons/108-1.png | Bin 514 -> 0 bytes htdocs/public/symbols/icons/108-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/109-1.png | Bin 404 -> 0 bytes htdocs/public/symbols/icons/109-2.png | Bin 242 -> 0 bytes htdocs/public/symbols/icons/110-1.png | Bin 402 -> 0 bytes htdocs/public/symbols/icons/110-2.png | Bin 231 -> 0 bytes htdocs/public/symbols/icons/111-1.png | Bin 314 -> 0 bytes htdocs/public/symbols/icons/111-2.png | Bin 376 -> 0 bytes htdocs/public/symbols/icons/112-1.png | Bin 298 -> 0 bytes htdocs/public/symbols/icons/112-2.png | Bin 391 -> 0 bytes htdocs/public/symbols/icons/113-1.png | Bin 243 -> 0 bytes htdocs/public/symbols/icons/113-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/114-1.png | Bin 342 -> 0 bytes htdocs/public/symbols/icons/114-2.png | Bin 277 -> 0 bytes htdocs/public/symbols/icons/115-1.png | Bin 253 -> 0 bytes htdocs/public/symbols/icons/115-2.png | Bin 306 -> 0 bytes htdocs/public/symbols/icons/116-1.png | Bin 319 -> 0 bytes htdocs/public/symbols/icons/116-2.png | Bin 404 -> 0 bytes htdocs/public/symbols/icons/117-1.png | Bin 260 -> 0 bytes htdocs/public/symbols/icons/117-2.png | Bin 306 -> 0 bytes htdocs/public/symbols/icons/118-1.png | Bin 341 -> 0 bytes htdocs/public/symbols/icons/118-2.png | Bin 341 -> 0 bytes htdocs/public/symbols/icons/119-1.png | Bin 304 -> 0 bytes htdocs/public/symbols/icons/119-2.png | Bin 305 -> 0 bytes htdocs/public/symbols/icons/120-1.png | Bin 260 -> 0 bytes htdocs/public/symbols/icons/120-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/121-1.png | Bin 258 -> 0 bytes htdocs/public/symbols/icons/121-2.png | Bin 349 -> 0 bytes htdocs/public/symbols/icons/122-1.png | Bin 230 -> 0 bytes htdocs/public/symbols/icons/122-2.png | Bin 230 -> 0 bytes htdocs/public/symbols/icons/123-1.png | Bin 276 -> 0 bytes htdocs/public/symbols/icons/123-2.png | Bin 340 -> 0 bytes htdocs/public/symbols/icons/124-1.png | Bin 276 -> 0 bytes htdocs/public/symbols/icons/124-2.png | Bin 198 -> 0 bytes htdocs/public/symbols/icons/125-1.png | Bin 276 -> 0 bytes htdocs/public/symbols/icons/125-2.png | Bin 276 -> 0 bytes htdocs/public/symbols/icons/126-1.png | Bin 225 -> 0 bytes htdocs/public/symbols/icons/126-2.png | Bin 225 -> 0 bytes htdocs/public/symbols/icons/32-1.png | Bin 250 -> 0 bytes htdocs/public/symbols/icons/32-2.png | Bin 250 -> 0 bytes htdocs/public/symbols/icons/33-1.png | Bin 303 -> 0 bytes htdocs/public/symbols/icons/33-2.png | Bin 255 -> 0 bytes htdocs/public/symbols/icons/34-1.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/34-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/35-1.png | Bin 294 -> 0 bytes htdocs/public/symbols/icons/35-2.png | Bin 274 -> 0 bytes htdocs/public/symbols/icons/36-1.png | Bin 276 -> 0 bytes htdocs/public/symbols/icons/36-2.png | Bin 298 -> 0 bytes htdocs/public/symbols/icons/37-1.png | Bin 344 -> 0 bytes htdocs/public/symbols/icons/37-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/38-1.png | Bin 275 -> 0 bytes htdocs/public/symbols/icons/38-2.png | Bin 252 -> 0 bytes htdocs/public/symbols/icons/39-1.png | Bin 304 -> 0 bytes htdocs/public/symbols/icons/39-2.png | Bin 306 -> 0 bytes htdocs/public/symbols/icons/40-1.png | Bin 368 -> 0 bytes htdocs/public/symbols/icons/40-2.png | Bin 346 -> 0 bytes htdocs/public/symbols/icons/41-1.png | Bin 527 -> 0 bytes htdocs/public/symbols/icons/41-2.png | Bin 274 -> 0 bytes htdocs/public/symbols/icons/42-1.png | Bin 335 -> 0 bytes htdocs/public/symbols/icons/42-2.png | Bin 344 -> 0 bytes htdocs/public/symbols/icons/43-1.png | Bin 200 -> 0 bytes htdocs/public/symbols/icons/43-2.png | Bin 213 -> 0 bytes htdocs/public/symbols/icons/44-1.png | Bin 292 -> 0 bytes htdocs/public/symbols/icons/44-2.png | Bin 375 -> 0 bytes htdocs/public/symbols/icons/45-1.png | Bin 249 -> 0 bytes htdocs/public/symbols/icons/45-2.png | Bin 263 -> 0 bytes htdocs/public/symbols/icons/46-1.png | Bin 261 -> 0 bytes htdocs/public/symbols/icons/46-2.png | Bin 349 -> 0 bytes htdocs/public/symbols/icons/47-1.png | Bin 244 -> 0 bytes htdocs/public/symbols/icons/47-2.png | Bin 233 -> 0 bytes htdocs/public/symbols/icons/48-1.png | Bin 296 -> 0 bytes htdocs/public/symbols/icons/48-2.png | Bin 316 -> 0 bytes htdocs/public/symbols/icons/49-1.png | Bin 351 -> 0 bytes htdocs/public/symbols/icons/49-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/50-1.png | Bin 283 -> 0 bytes htdocs/public/symbols/icons/50-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/51-1.png | Bin 346 -> 0 bytes htdocs/public/symbols/icons/51-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/52-1.png | Bin 318 -> 0 bytes htdocs/public/symbols/icons/52-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/53-1.png | Bin 331 -> 0 bytes htdocs/public/symbols/icons/53-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/54-1.png | Bin 281 -> 0 bytes htdocs/public/symbols/icons/54-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/55-1.png | Bin 270 -> 0 bytes htdocs/public/symbols/icons/55-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/56-1.png | Bin 354 -> 0 bytes htdocs/public/symbols/icons/56-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/57-1.png | Bin 317 -> 0 bytes htdocs/public/symbols/icons/57-2.png | Bin 266 -> 0 bytes htdocs/public/symbols/icons/58-1.png | Bin 370 -> 0 bytes htdocs/public/symbols/icons/58-2.png | Bin 272 -> 0 bytes htdocs/public/symbols/icons/59-1.png | Bin 357 -> 0 bytes htdocs/public/symbols/icons/59-2.png | Bin 412 -> 0 bytes htdocs/public/symbols/icons/60-1.png | Bin 269 -> 0 bytes htdocs/public/symbols/icons/60-2.png | Bin 234 -> 0 bytes htdocs/public/symbols/icons/61-1.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/61-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/62-1.png | Bin 337 -> 0 bytes htdocs/public/symbols/icons/62-1.svg | 141 - htdocs/public/symbols/icons/62-2.png | Bin 228 -> 0 bytes htdocs/public/symbols/icons/63-1.png | Bin 455 -> 0 bytes htdocs/public/symbols/icons/63-2.png | Bin 365 -> 0 bytes htdocs/public/symbols/icons/64-1.png | Bin 368 -> 0 bytes htdocs/public/symbols/icons/64-2.png | Bin 398 -> 0 bytes htdocs/public/symbols/icons/65-1.png | Bin 332 -> 0 bytes htdocs/public/symbols/icons/65-2.png | Bin 253 -> 0 bytes htdocs/public/symbols/icons/66-1.png | Bin 273 -> 0 bytes htdocs/public/symbols/icons/66-2.png | Bin 407 -> 0 bytes htdocs/public/symbols/icons/67-1.png | Bin 327 -> 0 bytes htdocs/public/symbols/icons/67-2.png | Bin 372 -> 0 bytes htdocs/public/symbols/icons/68-1.png | Bin 276 -> 0 bytes htdocs/public/symbols/icons/68-2.png | Bin 409 -> 0 bytes htdocs/public/symbols/icons/69-1.png | Bin 376 -> 0 bytes htdocs/public/symbols/icons/69-2.png | Bin 308 -> 0 bytes htdocs/public/symbols/icons/70-1.png | Bin 360 -> 0 bytes htdocs/public/symbols/icons/70-2.png | Bin 399 -> 0 bytes htdocs/public/symbols/icons/71-1.png | Bin 263 -> 0 bytes htdocs/public/symbols/icons/71-2.png | Bin 287 -> 0 bytes htdocs/public/symbols/icons/72-1.png | Bin 352 -> 0 bytes htdocs/public/symbols/icons/72-2.png | Bin 362 -> 0 bytes htdocs/public/symbols/icons/73-1.png | Bin 297 -> 0 bytes htdocs/public/symbols/icons/73-2.png | Bin 274 -> 0 bytes htdocs/public/symbols/icons/74-1.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/74-2.png | Bin 305 -> 0 bytes htdocs/public/symbols/icons/75-1.png | Bin 387 -> 0 bytes htdocs/public/symbols/icons/75-2.png | Bin 266 -> 0 bytes htdocs/public/symbols/icons/76-1.png | Bin 337 -> 0 bytes htdocs/public/symbols/icons/76-2.png | Bin 389 -> 0 bytes htdocs/public/symbols/icons/77-1.png | Bin 296 -> 0 bytes htdocs/public/symbols/icons/77-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/78-1.png | Bin 320 -> 0 bytes htdocs/public/symbols/icons/78-2.png | Bin 251 -> 0 bytes htdocs/public/symbols/icons/79-1.png | Bin 371 -> 0 bytes htdocs/public/symbols/icons/79-2.png | Bin 366 -> 0 bytes htdocs/public/symbols/icons/80-1.png | Bin 367 -> 0 bytes htdocs/public/symbols/icons/80-2.png | Bin 279 -> 0 bytes htdocs/public/symbols/icons/81-1.png | Bin 345 -> 0 bytes htdocs/public/symbols/icons/81-2.png | Bin 337 -> 0 bytes htdocs/public/symbols/icons/82-1.png | Bin 253 -> 0 bytes htdocs/public/symbols/icons/82-2.png | Bin 247 -> 0 bytes htdocs/public/symbols/icons/83-1.png | Bin 298 -> 0 bytes htdocs/public/symbols/icons/83-2.png | Bin 293 -> 0 bytes htdocs/public/symbols/icons/84-1.png | Bin 349 -> 0 bytes htdocs/public/symbols/icons/84-2.png | Bin 327 -> 0 bytes htdocs/public/symbols/icons/85-1.png | Bin 311 -> 0 bytes htdocs/public/symbols/icons/85-2.png | Bin 261 -> 0 bytes htdocs/public/symbols/icons/86-1.png | Bin 329 -> 0 bytes htdocs/public/symbols/icons/86-2.png | Bin 325 -> 0 bytes htdocs/public/symbols/icons/87-1.png | Bin 366 -> 0 bytes htdocs/public/symbols/icons/87-2.png | Bin 311 -> 0 bytes htdocs/public/symbols/icons/88-1.png | Bin 312 -> 0 bytes htdocs/public/symbols/icons/88-2.png | Bin 322 -> 0 bytes htdocs/public/symbols/icons/89-1.png | Bin 275 -> 0 bytes htdocs/public/symbols/icons/89-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/90-1.png | Bin 333 -> 0 bytes htdocs/public/symbols/icons/90-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/91-1.png | Bin 336 -> 0 bytes htdocs/public/symbols/icons/91-2.png | Bin 304 -> 0 bytes htdocs/public/symbols/icons/92-1.png | Bin 264 -> 0 bytes htdocs/public/symbols/icons/92-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/93-1.png | Bin 310 -> 0 bytes htdocs/public/symbols/icons/93-2.png | Bin 285 -> 0 bytes htdocs/public/symbols/icons/94-1.png | Bin 347 -> 0 bytes htdocs/public/symbols/icons/94-2.png | Bin 370 -> 0 bytes htdocs/public/symbols/icons/95-1.png | Bin 306 -> 0 bytes htdocs/public/symbols/icons/95-2.png | Bin 236 -> 0 bytes htdocs/public/symbols/icons/96-1.png | Bin 381 -> 0 bytes htdocs/public/symbols/icons/96-2.png | Bin 310 -> 0 bytes htdocs/public/symbols/icons/97-1.png | Bin 312 -> 0 bytes htdocs/public/symbols/icons/97-2.png | Bin 252 -> 0 bytes htdocs/public/symbols/icons/98-1.png | Bin 272 -> 0 bytes htdocs/public/symbols/icons/98-2.png | Bin 337 -> 0 bytes htdocs/public/symbols/icons/99-1.png | Bin 286 -> 0 bytes htdocs/public/symbols/icons/99-2.png | Bin 382 -> 0 bytes htdocs/public/symbols/icons/Icon-set.gif | Bin 28767 -> 0 bytes htdocs/public/symbols/icons/dot.png | Bin 228 -> 0 bytes htdocs/public/symbols/icons/dotColor0.png | Bin 247 -> 0 bytes htdocs/public/symbols/icons/dotColor1.png | Bin 229 -> 0 bytes htdocs/public/symbols/icons/dotColor2.png | Bin 226 -> 0 bytes htdocs/public/symbols/icons/dotColor3.png | Bin 227 -> 0 bytes htdocs/public/symbols/svgicons/100-1.svg | 7 - htdocs/public/symbols/svgicons/100-2.svg | 13 - htdocs/public/symbols/svgicons/101-1.svg | 64 - htdocs/public/symbols/svgicons/101-2.svg | 21 - htdocs/public/symbols/svgicons/102-1.svg | 16 - htdocs/public/symbols/svgicons/102-2.svg | 25 - htdocs/public/symbols/svgicons/103-1.svg | 9 - htdocs/public/symbols/svgicons/103-2.svg | 7 - htdocs/public/symbols/svgicons/104-1.svg | 7 - htdocs/public/symbols/svgicons/104-2.svg | 7 - htdocs/public/symbols/svgicons/105-1.svg | 13 - htdocs/public/symbols/svgicons/105-2.svg | 58 - htdocs/public/symbols/svgicons/106-1.svg | 13 - htdocs/public/symbols/svgicons/106-2.svg | 32 - htdocs/public/symbols/svgicons/107-1.svg | 125 - htdocs/public/symbols/svgicons/107-2.svg | 81 - htdocs/public/symbols/svgicons/107-65.svg | 11 - htdocs/public/symbols/svgicons/108-1.svg | 98 - htdocs/public/symbols/svgicons/108-2.svg | 9 - htdocs/public/symbols/svgicons/109-1.svg | 12 - htdocs/public/symbols/svgicons/109-2.svg | 8 - htdocs/public/symbols/svgicons/110-1.svg | 7 - htdocs/public/symbols/svgicons/110-2.svg | 5 - htdocs/public/symbols/svgicons/111-1.svg | 7 - htdocs/public/symbols/svgicons/111-2.svg | 7 - htdocs/public/symbols/svgicons/112-1.svg | 72 - htdocs/public/symbols/svgicons/112-2.svg | 28 - htdocs/public/symbols/svgicons/112-2.svg~ | 28 - htdocs/public/symbols/svgicons/113-1.svg | 73 - htdocs/public/symbols/svgicons/113-2.svg | 9 - htdocs/public/symbols/svgicons/114-1.svg | 23 - htdocs/public/symbols/svgicons/114-2.svg | 8 - htdocs/public/symbols/svgicons/115-1.svg | 8 - htdocs/public/symbols/svgicons/115-2.svg | 5 - htdocs/public/symbols/svgicons/116-1.svg | 13 - htdocs/public/symbols/svgicons/116-2.svg | 20 - htdocs/public/symbols/svgicons/117-1.svg | 12 - htdocs/public/symbols/svgicons/117-2.svg | 80 - htdocs/public/symbols/svgicons/118-1.svg | 21 - htdocs/public/symbols/svgicons/118-2.svg | 132 - htdocs/public/symbols/svgicons/119-1.svg | 19 - htdocs/public/symbols/svgicons/119-2.svg | 11 - htdocs/public/symbols/svgicons/120-1.svg | 7 - htdocs/public/symbols/svgicons/120-2.svg | 9 - htdocs/public/symbols/svgicons/121-1.svg | 18 - htdocs/public/symbols/svgicons/121-2.svg | 21 - htdocs/public/symbols/svgicons/122-1.svg | 5 - htdocs/public/symbols/svgicons/122-2.svg | 5 - htdocs/public/symbols/svgicons/123-1.svg | 9 - htdocs/public/symbols/svgicons/123-2.svg | 35 - htdocs/public/symbols/svgicons/124-1.svg | 9 - htdocs/public/symbols/svgicons/124-2.svg | 58 - htdocs/public/symbols/svgicons/125-1.svg | 9 - htdocs/public/symbols/svgicons/125-2.svg | 9 - htdocs/public/symbols/svgicons/126-1.svg | 6 - htdocs/public/symbols/svgicons/126-2.svg | 6 - htdocs/public/symbols/svgicons/32-1.svg | 8 - htdocs/public/symbols/svgicons/32-2.svg | 8 - htdocs/public/symbols/svgicons/33-1.svg | 11 - htdocs/public/symbols/svgicons/33-2.svg | 7 - htdocs/public/symbols/svgicons/34-1.svg | 9 - htdocs/public/symbols/svgicons/34-2.svg | 9 - htdocs/public/symbols/svgicons/35-1.svg | 6 - htdocs/public/symbols/svgicons/35-1.svg.orig | 63 - htdocs/public/symbols/svgicons/35-2.svg | 4 - htdocs/public/symbols/svgicons/35-2.svg.orig | 7 - htdocs/public/symbols/svgicons/36-1.svg | 10 - htdocs/public/symbols/svgicons/36-2.svg | 10 - htdocs/public/symbols/svgicons/37-1.svg | 7 - htdocs/public/symbols/svgicons/37-2.svg | 84 - htdocs/public/symbols/svgicons/38-1.svg | 7 - htdocs/public/symbols/svgicons/38-2.svg | 7 - htdocs/public/symbols/svgicons/39-1.svg | 56 - htdocs/public/symbols/svgicons/39-2.svg | 7 - htdocs/public/symbols/svgicons/40-1.svg | 145 - htdocs/public/symbols/svgicons/40-2.svg | 10 - htdocs/public/symbols/svgicons/41-1.svg | 9 - htdocs/public/symbols/svgicons/41-2.svg | 16 - htdocs/public/symbols/svgicons/42-1.svg | 11 - htdocs/public/symbols/svgicons/42-2.svg | 5 - htdocs/public/symbols/svgicons/43-1.svg | 6 - htdocs/public/symbols/svgicons/43-2.svg | 6 - htdocs/public/symbols/svgicons/44-1.svg | 15 - htdocs/public/symbols/svgicons/44-2.svg | 5 - htdocs/public/symbols/svgicons/45-1.svg | 12 - htdocs/public/symbols/svgicons/45-2.svg | 15 - htdocs/public/symbols/svgicons/45-3.svg | 75 - htdocs/public/symbols/svgicons/46-1.svg | 6 - htdocs/public/symbols/svgicons/46-2.svg | 9 - htdocs/public/symbols/svgicons/47-1.svg | 13 - htdocs/public/symbols/svgicons/47-2.svg | 13 - htdocs/public/symbols/svgicons/48-1.svg | 9 - htdocs/public/symbols/svgicons/48-2.svg | 5 - htdocs/public/symbols/svgicons/49-1.svg | 9 - htdocs/public/symbols/svgicons/49-2.svg | 9 - htdocs/public/symbols/svgicons/50-1.svg | 9 - htdocs/public/symbols/svgicons/50-2.svg | 9 - htdocs/public/symbols/svgicons/51-1.svg | 9 - htdocs/public/symbols/svgicons/51-2.svg | 9 - htdocs/public/symbols/svgicons/52-1.svg | 9 - htdocs/public/symbols/svgicons/52-2.svg | 9 - htdocs/public/symbols/svgicons/53-1.svg | 9 - htdocs/public/symbols/svgicons/53-2.svg | 9 - htdocs/public/symbols/svgicons/54-1.svg | 9 - htdocs/public/symbols/svgicons/54-2.svg | 9 - htdocs/public/symbols/svgicons/55-1.svg | 9 - htdocs/public/symbols/svgicons/55-2.svg | 9 - htdocs/public/symbols/svgicons/56-1.svg | 9 - htdocs/public/symbols/svgicons/56-2.svg | 9 - htdocs/public/symbols/svgicons/57-1.svg | 9 - htdocs/public/symbols/svgicons/57-2.svg | 5 - htdocs/public/symbols/svgicons/58-1.svg | 64 - htdocs/public/symbols/svgicons/58-2.svg | 6 - htdocs/public/symbols/svgicons/59-1.svg | 8 - htdocs/public/symbols/svgicons/59-2.svg | 16 - htdocs/public/symbols/svgicons/59-83.svg | 77 - htdocs/public/symbols/svgicons/60-1.svg | 11 - htdocs/public/symbols/svgicons/60-2.svg | 6 - htdocs/public/symbols/svgicons/61-1.svg | 5 - htdocs/public/symbols/svgicons/61-2.svg | 9 - htdocs/public/symbols/svgicons/62-1.svg | 85 - htdocs/public/symbols/svgicons/62-2.svg | 38 - htdocs/public/symbols/svgicons/63-1.svg | 99 - htdocs/public/symbols/svgicons/63-2.svg | 7 - htdocs/public/symbols/svgicons/64-1.svg | 14 - htdocs/public/symbols/svgicons/64-2.svg | 7 - htdocs/public/symbols/svgicons/65-1.svg | 7 - htdocs/public/symbols/svgicons/65-2.svg | 5 - htdocs/public/symbols/svgicons/66-1.svg | 7 - htdocs/public/symbols/svgicons/66-2.svg | 11 - htdocs/public/symbols/svgicons/67-1.svg | 10 - htdocs/public/symbols/svgicons/67-2.svg | 5 - htdocs/public/symbols/svgicons/68-1.svg | 9 - htdocs/public/symbols/svgicons/68-2.svg | 65 - htdocs/public/symbols/svgicons/69-1.svg | 36 - htdocs/public/symbols/svgicons/69-2.svg | 114 - htdocs/public/symbols/svgicons/70-1.svg | 14 - htdocs/public/symbols/svgicons/70-2.svg | 11 - htdocs/public/symbols/svgicons/71-1.svg | 9 - htdocs/public/symbols/svgicons/71-2.svg | 11 - htdocs/public/symbols/svgicons/72-1.svg | 18 - htdocs/public/symbols/svgicons/72-2.svg | 63 - htdocs/public/symbols/svgicons/73-1.svg | 9 - htdocs/public/symbols/svgicons/73-2.svg | 6 - htdocs/public/symbols/svgicons/74-1.svg | 9 - htdocs/public/symbols/svgicons/74-2.svg | 11 - htdocs/public/symbols/svgicons/75-1.svg | 15 - htdocs/public/symbols/svgicons/75-2.svg | 7 - htdocs/public/symbols/svgicons/76-1.svg | 124 - htdocs/public/symbols/svgicons/76-2.svg | 78 - htdocs/public/symbols/svgicons/77-1.svg | 13 - htdocs/public/symbols/svgicons/77-2.svg | 9 - htdocs/public/symbols/svgicons/78-1.svg | 7 - htdocs/public/symbols/svgicons/78-2.svg | 8 - htdocs/public/symbols/svgicons/79-1.svg | 95 - htdocs/public/symbols/svgicons/79-2.svg | 15 - htdocs/public/symbols/svgicons/79-3.svg | 459 ---- htdocs/public/symbols/svgicons/80-1.svg | 109 - htdocs/public/symbols/svgicons/80-2.svg | 10 - htdocs/public/symbols/svgicons/81-1.svg | 7 - htdocs/public/symbols/svgicons/81-2.svg | 7 - htdocs/public/symbols/svgicons/82-1.svg | 9 - htdocs/public/symbols/svgicons/82-1.svg~ | 9 - htdocs/public/symbols/svgicons/82-2.svg | 17 - htdocs/public/symbols/svgicons/83-1.svg | 115 - htdocs/public/symbols/svgicons/83-2.svg | 11 - htdocs/public/symbols/svgicons/84-1.svg | 71 - htdocs/public/symbols/svgicons/84-2.svg | 13 - htdocs/public/symbols/svgicons/85-1.svg | 12 - htdocs/public/symbols/svgicons/85-2.svg | 42 - htdocs/public/symbols/svgicons/86-1.svg | 76 - htdocs/public/symbols/svgicons/86-2.svg | 7 - htdocs/public/symbols/svgicons/87-1.svg | 5 - htdocs/public/symbols/svgicons/87-2.svg | 5 - htdocs/public/symbols/svgicons/88-1.svg | 221 -- htdocs/public/symbols/svgicons/88-2.svg | 22 - htdocs/public/symbols/svgicons/89-1.svg | 10 - htdocs/public/symbols/svgicons/89-2.svg | 9 - htdocs/public/symbols/svgicons/90-1.svg | 102 - htdocs/public/symbols/svgicons/90-2.svg | 9 - htdocs/public/symbols/svgicons/91-1.svg | 15 - htdocs/public/symbols/svgicons/91-2.svg | 9 - htdocs/public/symbols/svgicons/91-3.svg | 85 - htdocs/public/symbols/svgicons/92-1.svg | 8 - htdocs/public/symbols/svgicons/92-2.svg | 9 - htdocs/public/symbols/svgicons/93-1.svg | 7 - htdocs/public/symbols/svgicons/93-2.svg | 9 - htdocs/public/symbols/svgicons/94-1.svg | 57 - htdocs/public/symbols/svgicons/94-2.svg | 56 - htdocs/public/symbols/svgicons/94-3.svg | 57 - htdocs/public/symbols/svgicons/94-68.svg | 116 - htdocs/public/symbols/svgicons/94-71.svg | 66 - htdocs/public/symbols/svgicons/94-74.svg | 60 - htdocs/public/symbols/svgicons/94-76.svg | 982 ------- htdocs/public/symbols/svgicons/94-77.svg | 64 - htdocs/public/symbols/svgicons/94-80.svg | 7 - htdocs/public/symbols/svgicons/94-82.svg | 56 - htdocs/public/symbols/svgicons/94-83.svg | 98 - htdocs/public/symbols/svgicons/95-1.svg | 5 - htdocs/public/symbols/svgicons/95-2.svg | 5 - htdocs/public/symbols/svgicons/96-1.svg | 21 - htdocs/public/symbols/svgicons/96-2.svg | 20 - htdocs/public/symbols/svgicons/97-1.svg | 11 - htdocs/public/symbols/svgicons/97-2.svg | 7 - htdocs/public/symbols/svgicons/98-1.svg | 18 - htdocs/public/symbols/svgicons/98-2.svg | 12 - htdocs/public/symbols/svgicons/99-1.svg | 7 - htdocs/public/symbols/svgicons/99-2.svg | 6 - htdocs/public/symbols/symbol.php | 464 ---- htdocs/public/views/about.php | 33 - htdocs/public/views/faq.php | 148 - htdocs/public/views/latest.php | 103 - htdocs/public/views/overview.php | 549 ---- htdocs/public/views/raw.php | 510 ---- htdocs/public/views/search.php | 132 - htdocs/public/views/statistics.php | 151 - htdocs/public/views/telemetry.php | 287 -- htdocs/public/views/trail.php | 194 -- htdocs/public/views/weather.php | 239 -- jslib/build.sh | 38 - jslib/src/other/common.js | 206 -- jslib/src/trackdirect.js | 2422 ----------------- jslib/src/trackdirect/MarkerCreator.js | 914 ------- jslib/src/trackdirect/Websocket.js | 464 ---- .../trackdirect/models/DashedTailPolyline.js | 264 -- .../trackdirect/models/DirectionPolyline.js | 245 -- jslib/src/trackdirect/models/HeatMap.js | 141 - jslib/src/trackdirect/models/InfoWindow.js | 1757 ------------ jslib/src/trackdirect/models/Label.js | 239 -- jslib/src/trackdirect/models/Map.js | 1568 ----------- jslib/src/trackdirect/models/MapState.js | 175 -- jslib/src/trackdirect/models/Marker.js | 1471 ---------- .../trackdirect/models/MarkerCollection.js | 960 ------- jslib/src/trackdirect/models/Packet.js | 628 ----- jslib/src/trackdirect/models/PhgCircle.js | 175 -- jslib/src/trackdirect/models/RngCircle.js | 144 - jslib/src/trackdirect/models/Ruler.js | 302 -- .../models/StationCoveragePolygon.js | 505 ---- jslib/src/trackdirect/models/TailPolyline.js | 247 -- .../trackdirect/models/TransmitAnimation.js | 163 -- .../trackdirect/models/TransmitPolyline.js | 334 --- .../trackdirect/services/callbackExecutor.js | 154 -- .../src/trackdirect/services/dateFormatter.js | 100 - .../services/distanceCalculator.js | 133 - .../trackdirect/services/imperialConverter.js | 64 - .../services/mapAttributionModifier.js | 297 -- .../services/mapSectorCalculator.js | 148 - .../services/stationColorCalculator.js | 67 - .../trackdirect/services/symbolPathFinder.js | 102 - trackdirect-apache.dockerfile | 23 - trackdirect-python.dockerfile | 13 - 540 files changed, 19 insertions(+), 33672 deletions(-) delete mode 100644 aprsc.dockerfile delete mode 100644 config/000-default.conf delete mode 100755 config/aprsc.conf delete mode 100644 db.dockerfile delete mode 100644 docker-compose-rel.yml delete mode 100644 docker-compose.yml delete mode 100755 htdocs/.htaccess delete mode 100644 htdocs/includes/autoload.php delete mode 100644 htdocs/includes/bootstrap.php delete mode 100644 htdocs/includes/common.php delete mode 100644 htdocs/includes/database.class.php delete mode 100644 htdocs/includes/kml.class.php delete mode 100644 htdocs/includes/models/model.class.php delete mode 100644 htdocs/includes/models/packet.class.php delete mode 100644 htdocs/includes/models/packetogn.class.php delete mode 100644 htdocs/includes/models/packetpath.class.php delete mode 100644 htdocs/includes/models/packettelemetry.class.php delete mode 100644 htdocs/includes/models/packetweather.class.php delete mode 100644 htdocs/includes/models/sender.class.php delete mode 100644 htdocs/includes/models/station.class.php delete mode 100644 htdocs/includes/models/stationtelemetrybits.class.php delete mode 100644 htdocs/includes/models/stationtelemetryeqns.class.php delete mode 100644 htdocs/includes/models/stationtelemetryparam.class.php delete mode 100644 htdocs/includes/models/stationtelemetryunit.class.php delete mode 100644 htdocs/includes/pdoconnection.class.php delete mode 100644 htdocs/includes/repositories/modelrepository.class.php delete mode 100644 htdocs/includes/repositories/packetognrepository.class.php delete mode 100644 htdocs/includes/repositories/packetpathrepository.class.php delete mode 100644 htdocs/includes/repositories/packetrepository.class.php delete mode 100644 htdocs/includes/repositories/packettelemetryrepository.class.php delete mode 100644 htdocs/includes/repositories/packetweatherrepository.class.php delete mode 100644 htdocs/includes/repositories/senderrepository.class.php delete mode 100644 htdocs/includes/repositories/stationrepository.class.php delete mode 100644 htdocs/includes/repositories/stationtelemetrybitsrepository.class.php delete mode 100644 htdocs/includes/repositories/stationtelemetryeqnsrepository.class.php delete mode 100644 htdocs/includes/repositories/stationtelemetryparamrepository.class.php delete mode 100644 htdocs/includes/repositories/stationtelemetryunitrepository.class.php delete mode 100755 htdocs/public/.htaccess delete mode 100755 htdocs/public/css/main.css delete mode 100644 htdocs/public/data/coverage.php delete mode 100644 htdocs/public/data/kml.php delete mode 100644 htdocs/public/data/trail.php delete mode 100755 htdocs/public/favicon.ico delete mode 100755 htdocs/public/heatmaps/.htaccess delete mode 100644 htdocs/public/heatmaps/gd-heatmap/LICENSE delete mode 100644 htdocs/public/heatmaps/gd-heatmap/README.md delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gd-rg.php delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gd_heatmap.php delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-16-fill.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-16.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-25-fill.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-25.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-32-fill.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-32.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-8-fill.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-8.png delete mode 100644 htdocs/public/heatmaps/gd-heatmap/gradient-source.jpg delete mode 100644 htdocs/public/heatmaps/gd-heatmap/test.php delete mode 100755 htdocs/public/heatmaps/heatmap.php delete mode 100755 htdocs/public/heatmaps/transparent.png delete mode 100644 htdocs/public/images/aprs-symbols.png delete mode 100755 htdocs/public/images/checked.png delete mode 100755 htdocs/public/images/dotColor0.png delete mode 100755 htdocs/public/images/dotColor0.svg delete mode 100755 htdocs/public/images/dotColor1.png delete mode 100755 htdocs/public/images/dotColor1.svg delete mode 100755 htdocs/public/images/dotColor2.png delete mode 100755 htdocs/public/images/dotColor2.svg delete mode 100755 htdocs/public/images/dotColor3.png delete mode 100755 htdocs/public/images/dotColor3.svg delete mode 100755 htdocs/public/images/dotColor4.png delete mode 100755 htdocs/public/images/dotColor4.svg delete mode 100644 htdocs/public/images/spinner.gif delete mode 100755 htdocs/public/images/transmit-original.png delete mode 100755 htdocs/public/images/transmit-original.svg delete mode 100755 htdocs/public/images/transmit.png delete mode 100755 htdocs/public/images/transmit.svg delete mode 100755 htdocs/public/images/transmit1.png delete mode 100755 htdocs/public/images/transmit1.svg delete mode 100755 htdocs/public/images/transmit2.png delete mode 100755 htdocs/public/images/transmit2.svg delete mode 100755 htdocs/public/images/transmit3.png delete mode 100755 htdocs/public/images/transmit3.svg delete mode 100755 htdocs/public/images/transparent.png delete mode 100755 htdocs/public/images/unchecked.png delete mode 100755 htdocs/public/index.php delete mode 100644 htdocs/public/js/convex-hull.js delete mode 100755 htdocs/public/js/main.js delete mode 100755 htdocs/public/js/trackdirect.min.js delete mode 100644 htdocs/public/robots.txt delete mode 100755 htdocs/public/symbols/.htaccess delete mode 100755 htdocs/public/symbols/icons/100-1.png delete mode 100755 htdocs/public/symbols/icons/100-2.png delete mode 100755 htdocs/public/symbols/icons/101-1.png delete mode 100755 htdocs/public/symbols/icons/101-2.png delete mode 100755 htdocs/public/symbols/icons/102-1.png delete mode 100755 htdocs/public/symbols/icons/102-2.png delete mode 100755 htdocs/public/symbols/icons/103-1.png delete mode 100755 htdocs/public/symbols/icons/103-2.png delete mode 100755 htdocs/public/symbols/icons/104-1.png delete mode 100755 htdocs/public/symbols/icons/104-2.png delete mode 100755 htdocs/public/symbols/icons/105-1.png delete mode 100755 htdocs/public/symbols/icons/105-2.png delete mode 100755 htdocs/public/symbols/icons/106-1.png delete mode 100755 htdocs/public/symbols/icons/106-2.png delete mode 100755 htdocs/public/symbols/icons/107-1.png delete mode 100755 htdocs/public/symbols/icons/107-2.png delete mode 100755 htdocs/public/symbols/icons/108-1.png delete mode 100755 htdocs/public/symbols/icons/108-2.png delete mode 100755 htdocs/public/symbols/icons/109-1.png delete mode 100755 htdocs/public/symbols/icons/109-2.png delete mode 100755 htdocs/public/symbols/icons/110-1.png delete mode 100755 htdocs/public/symbols/icons/110-2.png delete mode 100755 htdocs/public/symbols/icons/111-1.png delete mode 100755 htdocs/public/symbols/icons/111-2.png delete mode 100755 htdocs/public/symbols/icons/112-1.png delete mode 100755 htdocs/public/symbols/icons/112-2.png delete mode 100755 htdocs/public/symbols/icons/113-1.png delete mode 100755 htdocs/public/symbols/icons/113-2.png delete mode 100755 htdocs/public/symbols/icons/114-1.png delete mode 100755 htdocs/public/symbols/icons/114-2.png delete mode 100755 htdocs/public/symbols/icons/115-1.png delete mode 100755 htdocs/public/symbols/icons/115-2.png delete mode 100755 htdocs/public/symbols/icons/116-1.png delete mode 100755 htdocs/public/symbols/icons/116-2.png delete mode 100755 htdocs/public/symbols/icons/117-1.png delete mode 100755 htdocs/public/symbols/icons/117-2.png delete mode 100755 htdocs/public/symbols/icons/118-1.png delete mode 100755 htdocs/public/symbols/icons/118-2.png delete mode 100755 htdocs/public/symbols/icons/119-1.png delete mode 100755 htdocs/public/symbols/icons/119-2.png delete mode 100755 htdocs/public/symbols/icons/120-1.png delete mode 100755 htdocs/public/symbols/icons/120-2.png delete mode 100755 htdocs/public/symbols/icons/121-1.png delete mode 100755 htdocs/public/symbols/icons/121-2.png delete mode 100755 htdocs/public/symbols/icons/122-1.png delete mode 100755 htdocs/public/symbols/icons/122-2.png delete mode 100755 htdocs/public/symbols/icons/123-1.png delete mode 100755 htdocs/public/symbols/icons/123-2.png delete mode 100755 htdocs/public/symbols/icons/124-1.png delete mode 100755 htdocs/public/symbols/icons/124-2.png delete mode 100755 htdocs/public/symbols/icons/125-1.png delete mode 100755 htdocs/public/symbols/icons/125-2.png delete mode 100755 htdocs/public/symbols/icons/126-1.png delete mode 100755 htdocs/public/symbols/icons/126-2.png delete mode 100755 htdocs/public/symbols/icons/32-1.png delete mode 100755 htdocs/public/symbols/icons/32-2.png delete mode 100755 htdocs/public/symbols/icons/33-1.png delete mode 100755 htdocs/public/symbols/icons/33-2.png delete mode 100755 htdocs/public/symbols/icons/34-1.png delete mode 100755 htdocs/public/symbols/icons/34-2.png delete mode 100755 htdocs/public/symbols/icons/35-1.png delete mode 100755 htdocs/public/symbols/icons/35-2.png delete mode 100755 htdocs/public/symbols/icons/36-1.png delete mode 100755 htdocs/public/symbols/icons/36-2.png delete mode 100755 htdocs/public/symbols/icons/37-1.png delete mode 100755 htdocs/public/symbols/icons/37-2.png delete mode 100755 htdocs/public/symbols/icons/38-1.png delete mode 100755 htdocs/public/symbols/icons/38-2.png delete mode 100755 htdocs/public/symbols/icons/39-1.png delete mode 100755 htdocs/public/symbols/icons/39-2.png delete mode 100755 htdocs/public/symbols/icons/40-1.png delete mode 100755 htdocs/public/symbols/icons/40-2.png delete mode 100755 htdocs/public/symbols/icons/41-1.png delete mode 100755 htdocs/public/symbols/icons/41-2.png delete mode 100755 htdocs/public/symbols/icons/42-1.png delete mode 100755 htdocs/public/symbols/icons/42-2.png delete mode 100755 htdocs/public/symbols/icons/43-1.png delete mode 100755 htdocs/public/symbols/icons/43-2.png delete mode 100755 htdocs/public/symbols/icons/44-1.png delete mode 100755 htdocs/public/symbols/icons/44-2.png delete mode 100755 htdocs/public/symbols/icons/45-1.png delete mode 100755 htdocs/public/symbols/icons/45-2.png delete mode 100755 htdocs/public/symbols/icons/46-1.png delete mode 100755 htdocs/public/symbols/icons/46-2.png delete mode 100755 htdocs/public/symbols/icons/47-1.png delete mode 100755 htdocs/public/symbols/icons/47-2.png delete mode 100755 htdocs/public/symbols/icons/48-1.png delete mode 100755 htdocs/public/symbols/icons/48-2.png delete mode 100755 htdocs/public/symbols/icons/49-1.png delete mode 100755 htdocs/public/symbols/icons/49-2.png delete mode 100755 htdocs/public/symbols/icons/50-1.png delete mode 100755 htdocs/public/symbols/icons/50-2.png delete mode 100755 htdocs/public/symbols/icons/51-1.png delete mode 100755 htdocs/public/symbols/icons/51-2.png delete mode 100755 htdocs/public/symbols/icons/52-1.png delete mode 100755 htdocs/public/symbols/icons/52-2.png delete mode 100755 htdocs/public/symbols/icons/53-1.png delete mode 100755 htdocs/public/symbols/icons/53-2.png delete mode 100755 htdocs/public/symbols/icons/54-1.png delete mode 100755 htdocs/public/symbols/icons/54-2.png delete mode 100755 htdocs/public/symbols/icons/55-1.png delete mode 100755 htdocs/public/symbols/icons/55-2.png delete mode 100755 htdocs/public/symbols/icons/56-1.png delete mode 100755 htdocs/public/symbols/icons/56-2.png delete mode 100755 htdocs/public/symbols/icons/57-1.png delete mode 100755 htdocs/public/symbols/icons/57-2.png delete mode 100755 htdocs/public/symbols/icons/58-1.png delete mode 100755 htdocs/public/symbols/icons/58-2.png delete mode 100755 htdocs/public/symbols/icons/59-1.png delete mode 100755 htdocs/public/symbols/icons/59-2.png delete mode 100755 htdocs/public/symbols/icons/60-1.png delete mode 100755 htdocs/public/symbols/icons/60-2.png delete mode 100755 htdocs/public/symbols/icons/61-1.png delete mode 100755 htdocs/public/symbols/icons/61-2.png delete mode 100755 htdocs/public/symbols/icons/62-1.png delete mode 100755 htdocs/public/symbols/icons/62-1.svg delete mode 100755 htdocs/public/symbols/icons/62-2.png delete mode 100755 htdocs/public/symbols/icons/63-1.png delete mode 100755 htdocs/public/symbols/icons/63-2.png delete mode 100755 htdocs/public/symbols/icons/64-1.png delete mode 100755 htdocs/public/symbols/icons/64-2.png delete mode 100755 htdocs/public/symbols/icons/65-1.png delete mode 100755 htdocs/public/symbols/icons/65-2.png delete mode 100755 htdocs/public/symbols/icons/66-1.png delete mode 100755 htdocs/public/symbols/icons/66-2.png delete mode 100755 htdocs/public/symbols/icons/67-1.png delete mode 100755 htdocs/public/symbols/icons/67-2.png delete mode 100755 htdocs/public/symbols/icons/68-1.png delete mode 100755 htdocs/public/symbols/icons/68-2.png delete mode 100755 htdocs/public/symbols/icons/69-1.png delete mode 100755 htdocs/public/symbols/icons/69-2.png delete mode 100755 htdocs/public/symbols/icons/70-1.png delete mode 100755 htdocs/public/symbols/icons/70-2.png delete mode 100755 htdocs/public/symbols/icons/71-1.png delete mode 100755 htdocs/public/symbols/icons/71-2.png delete mode 100755 htdocs/public/symbols/icons/72-1.png delete mode 100755 htdocs/public/symbols/icons/72-2.png delete mode 100755 htdocs/public/symbols/icons/73-1.png delete mode 100755 htdocs/public/symbols/icons/73-2.png delete mode 100755 htdocs/public/symbols/icons/74-1.png delete mode 100755 htdocs/public/symbols/icons/74-2.png delete mode 100755 htdocs/public/symbols/icons/75-1.png delete mode 100755 htdocs/public/symbols/icons/75-2.png delete mode 100755 htdocs/public/symbols/icons/76-1.png delete mode 100755 htdocs/public/symbols/icons/76-2.png delete mode 100755 htdocs/public/symbols/icons/77-1.png delete mode 100755 htdocs/public/symbols/icons/77-2.png delete mode 100755 htdocs/public/symbols/icons/78-1.png delete mode 100755 htdocs/public/symbols/icons/78-2.png delete mode 100755 htdocs/public/symbols/icons/79-1.png delete mode 100755 htdocs/public/symbols/icons/79-2.png delete mode 100755 htdocs/public/symbols/icons/80-1.png delete mode 100755 htdocs/public/symbols/icons/80-2.png delete mode 100755 htdocs/public/symbols/icons/81-1.png delete mode 100755 htdocs/public/symbols/icons/81-2.png delete mode 100755 htdocs/public/symbols/icons/82-1.png delete mode 100755 htdocs/public/symbols/icons/82-2.png delete mode 100755 htdocs/public/symbols/icons/83-1.png delete mode 100755 htdocs/public/symbols/icons/83-2.png delete mode 100755 htdocs/public/symbols/icons/84-1.png delete mode 100755 htdocs/public/symbols/icons/84-2.png delete mode 100755 htdocs/public/symbols/icons/85-1.png delete mode 100755 htdocs/public/symbols/icons/85-2.png delete mode 100755 htdocs/public/symbols/icons/86-1.png delete mode 100755 htdocs/public/symbols/icons/86-2.png delete mode 100755 htdocs/public/symbols/icons/87-1.png delete mode 100755 htdocs/public/symbols/icons/87-2.png delete mode 100755 htdocs/public/symbols/icons/88-1.png delete mode 100755 htdocs/public/symbols/icons/88-2.png delete mode 100755 htdocs/public/symbols/icons/89-1.png delete mode 100755 htdocs/public/symbols/icons/89-2.png delete mode 100755 htdocs/public/symbols/icons/90-1.png delete mode 100755 htdocs/public/symbols/icons/90-2.png delete mode 100755 htdocs/public/symbols/icons/91-1.png delete mode 100755 htdocs/public/symbols/icons/91-2.png delete mode 100755 htdocs/public/symbols/icons/92-1.png delete mode 100755 htdocs/public/symbols/icons/92-2.png delete mode 100755 htdocs/public/symbols/icons/93-1.png delete mode 100755 htdocs/public/symbols/icons/93-2.png delete mode 100755 htdocs/public/symbols/icons/94-1.png delete mode 100755 htdocs/public/symbols/icons/94-2.png delete mode 100755 htdocs/public/symbols/icons/95-1.png delete mode 100755 htdocs/public/symbols/icons/95-2.png delete mode 100755 htdocs/public/symbols/icons/96-1.png delete mode 100755 htdocs/public/symbols/icons/96-2.png delete mode 100755 htdocs/public/symbols/icons/97-1.png delete mode 100755 htdocs/public/symbols/icons/97-2.png delete mode 100755 htdocs/public/symbols/icons/98-1.png delete mode 100755 htdocs/public/symbols/icons/98-2.png delete mode 100755 htdocs/public/symbols/icons/99-1.png delete mode 100755 htdocs/public/symbols/icons/99-2.png delete mode 100755 htdocs/public/symbols/icons/Icon-set.gif delete mode 100755 htdocs/public/symbols/icons/dot.png delete mode 100755 htdocs/public/symbols/icons/dotColor0.png delete mode 100755 htdocs/public/symbols/icons/dotColor1.png delete mode 100755 htdocs/public/symbols/icons/dotColor2.png delete mode 100755 htdocs/public/symbols/icons/dotColor3.png delete mode 100755 htdocs/public/symbols/svgicons/100-1.svg delete mode 100755 htdocs/public/symbols/svgicons/100-2.svg delete mode 100755 htdocs/public/symbols/svgicons/101-1.svg delete mode 100755 htdocs/public/symbols/svgicons/101-2.svg delete mode 100755 htdocs/public/symbols/svgicons/102-1.svg delete mode 100755 htdocs/public/symbols/svgicons/102-2.svg delete mode 100755 htdocs/public/symbols/svgicons/103-1.svg delete mode 100755 htdocs/public/symbols/svgicons/103-2.svg delete mode 100755 htdocs/public/symbols/svgicons/104-1.svg delete mode 100755 htdocs/public/symbols/svgicons/104-2.svg delete mode 100755 htdocs/public/symbols/svgicons/105-1.svg delete mode 100755 htdocs/public/symbols/svgicons/105-2.svg delete mode 100755 htdocs/public/symbols/svgicons/106-1.svg delete mode 100755 htdocs/public/symbols/svgicons/106-2.svg delete mode 100755 htdocs/public/symbols/svgicons/107-1.svg delete mode 100755 htdocs/public/symbols/svgicons/107-2.svg delete mode 100755 htdocs/public/symbols/svgicons/107-65.svg delete mode 100755 htdocs/public/symbols/svgicons/108-1.svg delete mode 100755 htdocs/public/symbols/svgicons/108-2.svg delete mode 100755 htdocs/public/symbols/svgicons/109-1.svg delete mode 100755 htdocs/public/symbols/svgicons/109-2.svg delete mode 100755 htdocs/public/symbols/svgicons/110-1.svg delete mode 100755 htdocs/public/symbols/svgicons/110-2.svg delete mode 100755 htdocs/public/symbols/svgicons/111-1.svg delete mode 100755 htdocs/public/symbols/svgicons/111-2.svg delete mode 100755 htdocs/public/symbols/svgicons/112-1.svg delete mode 100755 htdocs/public/symbols/svgicons/112-2.svg delete mode 100755 htdocs/public/symbols/svgicons/112-2.svg~ delete mode 100755 htdocs/public/symbols/svgicons/113-1.svg delete mode 100755 htdocs/public/symbols/svgicons/113-2.svg delete mode 100755 htdocs/public/symbols/svgicons/114-1.svg delete mode 100755 htdocs/public/symbols/svgicons/114-2.svg delete mode 100755 htdocs/public/symbols/svgicons/115-1.svg delete mode 100755 htdocs/public/symbols/svgicons/115-2.svg delete mode 100755 htdocs/public/symbols/svgicons/116-1.svg delete mode 100755 htdocs/public/symbols/svgicons/116-2.svg delete mode 100755 htdocs/public/symbols/svgicons/117-1.svg delete mode 100755 htdocs/public/symbols/svgicons/117-2.svg delete mode 100755 htdocs/public/symbols/svgicons/118-1.svg delete mode 100755 htdocs/public/symbols/svgicons/118-2.svg delete mode 100755 htdocs/public/symbols/svgicons/119-1.svg delete mode 100755 htdocs/public/symbols/svgicons/119-2.svg delete mode 100755 htdocs/public/symbols/svgicons/120-1.svg delete mode 100755 htdocs/public/symbols/svgicons/120-2.svg delete mode 100755 htdocs/public/symbols/svgicons/121-1.svg delete mode 100755 htdocs/public/symbols/svgicons/121-2.svg delete mode 100755 htdocs/public/symbols/svgicons/122-1.svg delete mode 100755 htdocs/public/symbols/svgicons/122-2.svg delete mode 100755 htdocs/public/symbols/svgicons/123-1.svg delete mode 100755 htdocs/public/symbols/svgicons/123-2.svg delete mode 100755 htdocs/public/symbols/svgicons/124-1.svg delete mode 100755 htdocs/public/symbols/svgicons/124-2.svg delete mode 100755 htdocs/public/symbols/svgicons/125-1.svg delete mode 100755 htdocs/public/symbols/svgicons/125-2.svg delete mode 100755 htdocs/public/symbols/svgicons/126-1.svg delete mode 100755 htdocs/public/symbols/svgicons/126-2.svg delete mode 100755 htdocs/public/symbols/svgicons/32-1.svg delete mode 100755 htdocs/public/symbols/svgicons/32-2.svg delete mode 100755 htdocs/public/symbols/svgicons/33-1.svg delete mode 100755 htdocs/public/symbols/svgicons/33-2.svg delete mode 100755 htdocs/public/symbols/svgicons/34-1.svg delete mode 100755 htdocs/public/symbols/svgicons/34-2.svg delete mode 100644 htdocs/public/symbols/svgicons/35-1.svg delete mode 100755 htdocs/public/symbols/svgicons/35-1.svg.orig delete mode 100644 htdocs/public/symbols/svgicons/35-2.svg delete mode 100755 htdocs/public/symbols/svgicons/35-2.svg.orig delete mode 100755 htdocs/public/symbols/svgicons/36-1.svg delete mode 100755 htdocs/public/symbols/svgicons/36-2.svg delete mode 100755 htdocs/public/symbols/svgicons/37-1.svg delete mode 100755 htdocs/public/symbols/svgicons/37-2.svg delete mode 100755 htdocs/public/symbols/svgicons/38-1.svg delete mode 100755 htdocs/public/symbols/svgicons/38-2.svg delete mode 100755 htdocs/public/symbols/svgicons/39-1.svg delete mode 100755 htdocs/public/symbols/svgicons/39-2.svg delete mode 100755 htdocs/public/symbols/svgicons/40-1.svg delete mode 100755 htdocs/public/symbols/svgicons/40-2.svg delete mode 100755 htdocs/public/symbols/svgicons/41-1.svg delete mode 100755 htdocs/public/symbols/svgicons/41-2.svg delete mode 100755 htdocs/public/symbols/svgicons/42-1.svg delete mode 100755 htdocs/public/symbols/svgicons/42-2.svg delete mode 100755 htdocs/public/symbols/svgicons/43-1.svg delete mode 100755 htdocs/public/symbols/svgicons/43-2.svg delete mode 100755 htdocs/public/symbols/svgicons/44-1.svg delete mode 100755 htdocs/public/symbols/svgicons/44-2.svg delete mode 100755 htdocs/public/symbols/svgicons/45-1.svg delete mode 100755 htdocs/public/symbols/svgicons/45-2.svg delete mode 100755 htdocs/public/symbols/svgicons/45-3.svg delete mode 100755 htdocs/public/symbols/svgicons/46-1.svg delete mode 100755 htdocs/public/symbols/svgicons/46-2.svg delete mode 100755 htdocs/public/symbols/svgicons/47-1.svg delete mode 100755 htdocs/public/symbols/svgicons/47-2.svg delete mode 100755 htdocs/public/symbols/svgicons/48-1.svg delete mode 100755 htdocs/public/symbols/svgicons/48-2.svg delete mode 100755 htdocs/public/symbols/svgicons/49-1.svg delete mode 100755 htdocs/public/symbols/svgicons/49-2.svg delete mode 100755 htdocs/public/symbols/svgicons/50-1.svg delete mode 100755 htdocs/public/symbols/svgicons/50-2.svg delete mode 100755 htdocs/public/symbols/svgicons/51-1.svg delete mode 100755 htdocs/public/symbols/svgicons/51-2.svg delete mode 100755 htdocs/public/symbols/svgicons/52-1.svg delete mode 100755 htdocs/public/symbols/svgicons/52-2.svg delete mode 100755 htdocs/public/symbols/svgicons/53-1.svg delete mode 100755 htdocs/public/symbols/svgicons/53-2.svg delete mode 100755 htdocs/public/symbols/svgicons/54-1.svg delete mode 100755 htdocs/public/symbols/svgicons/54-2.svg delete mode 100755 htdocs/public/symbols/svgicons/55-1.svg delete mode 100755 htdocs/public/symbols/svgicons/55-2.svg delete mode 100755 htdocs/public/symbols/svgicons/56-1.svg delete mode 100755 htdocs/public/symbols/svgicons/56-2.svg delete mode 100755 htdocs/public/symbols/svgicons/57-1.svg delete mode 100755 htdocs/public/symbols/svgicons/57-2.svg delete mode 100755 htdocs/public/symbols/svgicons/58-1.svg delete mode 100755 htdocs/public/symbols/svgicons/58-2.svg delete mode 100755 htdocs/public/symbols/svgicons/59-1.svg delete mode 100755 htdocs/public/symbols/svgicons/59-2.svg delete mode 100755 htdocs/public/symbols/svgicons/59-83.svg delete mode 100755 htdocs/public/symbols/svgicons/60-1.svg delete mode 100755 htdocs/public/symbols/svgicons/60-2.svg delete mode 100755 htdocs/public/symbols/svgicons/61-1.svg delete mode 100755 htdocs/public/symbols/svgicons/61-2.svg delete mode 100755 htdocs/public/symbols/svgicons/62-1.svg delete mode 100755 htdocs/public/symbols/svgicons/62-2.svg delete mode 100755 htdocs/public/symbols/svgicons/63-1.svg delete mode 100755 htdocs/public/symbols/svgicons/63-2.svg delete mode 100755 htdocs/public/symbols/svgicons/64-1.svg delete mode 100755 htdocs/public/symbols/svgicons/64-2.svg delete mode 100755 htdocs/public/symbols/svgicons/65-1.svg delete mode 100755 htdocs/public/symbols/svgicons/65-2.svg delete mode 100755 htdocs/public/symbols/svgicons/66-1.svg delete mode 100755 htdocs/public/symbols/svgicons/66-2.svg delete mode 100755 htdocs/public/symbols/svgicons/67-1.svg delete mode 100755 htdocs/public/symbols/svgicons/67-2.svg delete mode 100755 htdocs/public/symbols/svgicons/68-1.svg delete mode 100755 htdocs/public/symbols/svgicons/68-2.svg delete mode 100755 htdocs/public/symbols/svgicons/69-1.svg delete mode 100755 htdocs/public/symbols/svgicons/69-2.svg delete mode 100755 htdocs/public/symbols/svgicons/70-1.svg delete mode 100755 htdocs/public/symbols/svgicons/70-2.svg delete mode 100755 htdocs/public/symbols/svgicons/71-1.svg delete mode 100755 htdocs/public/symbols/svgicons/71-2.svg delete mode 100755 htdocs/public/symbols/svgicons/72-1.svg delete mode 100755 htdocs/public/symbols/svgicons/72-2.svg delete mode 100755 htdocs/public/symbols/svgicons/73-1.svg delete mode 100755 htdocs/public/symbols/svgicons/73-2.svg delete mode 100755 htdocs/public/symbols/svgicons/74-1.svg delete mode 100755 htdocs/public/symbols/svgicons/74-2.svg delete mode 100755 htdocs/public/symbols/svgicons/75-1.svg delete mode 100755 htdocs/public/symbols/svgicons/75-2.svg delete mode 100755 htdocs/public/symbols/svgicons/76-1.svg delete mode 100755 htdocs/public/symbols/svgicons/76-2.svg delete mode 100755 htdocs/public/symbols/svgicons/77-1.svg delete mode 100755 htdocs/public/symbols/svgicons/77-2.svg delete mode 100755 htdocs/public/symbols/svgicons/78-1.svg delete mode 100755 htdocs/public/symbols/svgicons/78-2.svg delete mode 100755 htdocs/public/symbols/svgicons/79-1.svg delete mode 100755 htdocs/public/symbols/svgicons/79-2.svg delete mode 100755 htdocs/public/symbols/svgicons/79-3.svg delete mode 100755 htdocs/public/symbols/svgicons/80-1.svg delete mode 100755 htdocs/public/symbols/svgicons/80-2.svg delete mode 100755 htdocs/public/symbols/svgicons/81-1.svg delete mode 100755 htdocs/public/symbols/svgicons/81-2.svg delete mode 100755 htdocs/public/symbols/svgicons/82-1.svg delete mode 100755 htdocs/public/symbols/svgicons/82-1.svg~ delete mode 100755 htdocs/public/symbols/svgicons/82-2.svg delete mode 100755 htdocs/public/symbols/svgicons/83-1.svg delete mode 100755 htdocs/public/symbols/svgicons/83-2.svg delete mode 100755 htdocs/public/symbols/svgicons/84-1.svg delete mode 100755 htdocs/public/symbols/svgicons/84-2.svg delete mode 100755 htdocs/public/symbols/svgicons/85-1.svg delete mode 100755 htdocs/public/symbols/svgicons/85-2.svg delete mode 100755 htdocs/public/symbols/svgicons/86-1.svg delete mode 100755 htdocs/public/symbols/svgicons/86-2.svg delete mode 100755 htdocs/public/symbols/svgicons/87-1.svg delete mode 100755 htdocs/public/symbols/svgicons/87-2.svg delete mode 100755 htdocs/public/symbols/svgicons/88-1.svg delete mode 100755 htdocs/public/symbols/svgicons/88-2.svg delete mode 100755 htdocs/public/symbols/svgicons/89-1.svg delete mode 100755 htdocs/public/symbols/svgicons/89-2.svg delete mode 100755 htdocs/public/symbols/svgicons/90-1.svg delete mode 100755 htdocs/public/symbols/svgicons/90-2.svg delete mode 100755 htdocs/public/symbols/svgicons/91-1.svg delete mode 100755 htdocs/public/symbols/svgicons/91-2.svg delete mode 100755 htdocs/public/symbols/svgicons/91-3.svg delete mode 100755 htdocs/public/symbols/svgicons/92-1.svg delete mode 100755 htdocs/public/symbols/svgicons/92-2.svg delete mode 100755 htdocs/public/symbols/svgicons/93-1.svg delete mode 100755 htdocs/public/symbols/svgicons/93-2.svg delete mode 100755 htdocs/public/symbols/svgicons/94-1.svg delete mode 100755 htdocs/public/symbols/svgicons/94-2.svg delete mode 100755 htdocs/public/symbols/svgicons/94-3.svg delete mode 100755 htdocs/public/symbols/svgicons/94-68.svg delete mode 100755 htdocs/public/symbols/svgicons/94-71.svg delete mode 100755 htdocs/public/symbols/svgicons/94-74.svg delete mode 100755 htdocs/public/symbols/svgicons/94-76.svg delete mode 100755 htdocs/public/symbols/svgicons/94-77.svg delete mode 100755 htdocs/public/symbols/svgicons/94-80.svg delete mode 100755 htdocs/public/symbols/svgicons/94-82.svg delete mode 100755 htdocs/public/symbols/svgicons/94-83.svg delete mode 100755 htdocs/public/symbols/svgicons/95-1.svg delete mode 100755 htdocs/public/symbols/svgicons/95-2.svg delete mode 100755 htdocs/public/symbols/svgicons/96-1.svg delete mode 100755 htdocs/public/symbols/svgicons/96-2.svg delete mode 100755 htdocs/public/symbols/svgicons/97-1.svg delete mode 100755 htdocs/public/symbols/svgicons/97-2.svg delete mode 100755 htdocs/public/symbols/svgicons/98-1.svg delete mode 100755 htdocs/public/symbols/svgicons/98-2.svg delete mode 100755 htdocs/public/symbols/svgicons/99-1.svg delete mode 100755 htdocs/public/symbols/svgicons/99-2.svg delete mode 100755 htdocs/public/symbols/symbol.php delete mode 100644 htdocs/public/views/about.php delete mode 100644 htdocs/public/views/faq.php delete mode 100644 htdocs/public/views/latest.php delete mode 100644 htdocs/public/views/overview.php delete mode 100644 htdocs/public/views/raw.php delete mode 100644 htdocs/public/views/search.php delete mode 100644 htdocs/public/views/statistics.php delete mode 100644 htdocs/public/views/telemetry.php delete mode 100644 htdocs/public/views/trail.php delete mode 100644 htdocs/public/views/weather.php delete mode 100755 jslib/build.sh delete mode 100755 jslib/src/other/common.js delete mode 100755 jslib/src/trackdirect.js delete mode 100755 jslib/src/trackdirect/MarkerCreator.js delete mode 100755 jslib/src/trackdirect/Websocket.js delete mode 100755 jslib/src/trackdirect/models/DashedTailPolyline.js delete mode 100755 jslib/src/trackdirect/models/DirectionPolyline.js delete mode 100755 jslib/src/trackdirect/models/HeatMap.js delete mode 100755 jslib/src/trackdirect/models/InfoWindow.js delete mode 100755 jslib/src/trackdirect/models/Label.js delete mode 100755 jslib/src/trackdirect/models/Map.js delete mode 100755 jslib/src/trackdirect/models/MapState.js delete mode 100755 jslib/src/trackdirect/models/Marker.js delete mode 100755 jslib/src/trackdirect/models/MarkerCollection.js delete mode 100755 jslib/src/trackdirect/models/Packet.js delete mode 100755 jslib/src/trackdirect/models/PhgCircle.js delete mode 100755 jslib/src/trackdirect/models/RngCircle.js delete mode 100755 jslib/src/trackdirect/models/Ruler.js delete mode 100755 jslib/src/trackdirect/models/StationCoveragePolygon.js delete mode 100755 jslib/src/trackdirect/models/TailPolyline.js delete mode 100755 jslib/src/trackdirect/models/TransmitAnimation.js delete mode 100755 jslib/src/trackdirect/models/TransmitPolyline.js delete mode 100755 jslib/src/trackdirect/services/callbackExecutor.js delete mode 100755 jslib/src/trackdirect/services/dateFormatter.js delete mode 100755 jslib/src/trackdirect/services/distanceCalculator.js delete mode 100755 jslib/src/trackdirect/services/imperialConverter.js delete mode 100755 jslib/src/trackdirect/services/mapAttributionModifier.js delete mode 100755 jslib/src/trackdirect/services/mapSectorCalculator.js delete mode 100755 jslib/src/trackdirect/services/stationColorCalculator.js delete mode 100755 jslib/src/trackdirect/services/symbolPathFinder.js delete mode 100644 trackdirect-apache.dockerfile delete mode 100644 trackdirect-python.dockerfile diff --git a/aprsc.dockerfile b/aprsc.dockerfile deleted file mode 100644 index da2e51c..0000000 --- a/aprsc.dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM ubuntu:20.04 - -RUN apt-get update && apt-get install -y \ - gnupg \ - && rm -rf /var/lib/apt/lists/* - -RUN printf "deb http://aprsc-dist.he.fi/aprsc/apt focal main" >> /etc/apt/sources.list -RUN gpg --keyserver keyserver.ubuntu.com --recv C51AA22389B5B74C3896EF3CA72A581E657A2B8D -RUN gpg --export C51AA22389B5B74C3896EF3CA72A581E657A2B8D | apt-key add - - -RUN apt-get update && apt-get install -y \ - aprsc \ - && rm -rf /var/lib/apt/lists/* - -EXPOSE 10152 -EXPOSE 14580 -EXPOSE 10155 -EXPOSE 14501 - -WORKDIR /opt/aprsc -USER aprsc - -CMD /opt/aprsc/sbin/aprsc -c /opt/aprsc/etc/aprsc.conf diff --git a/config/000-default.conf b/config/000-default.conf deleted file mode 100644 index 575aefe..0000000 --- a/config/000-default.conf +++ /dev/null @@ -1,13 +0,0 @@ -<VirtualHost *:80> - ServerAdmin webmaster@localhost - DocumentRoot /root/trackdirect/htdocs/public - - ErrorLog ${APACHE_LOG_DIR}/error.log - CustomLog ${APACHE_LOG_DIR}/access.log combined -</VirtualHost> - -<Directory "/root/trackdirect/htdocs/public"> - Options Indexes MultiViews - AllowOverride All - Require all granted -</Directory> diff --git a/config/aprsc.conf b/config/aprsc.conf deleted file mode 100755 index 48d5927..0000000 --- a/config/aprsc.conf +++ /dev/null @@ -1,30 +0,0 @@ -# Note that server id and passcode needs to be changed -ServerId MY-SERVER-ID -PassCode 11111 - -MyAdmin "My Name, MySignal" -MyEmail me@domain.com - -disallow_unverified false -RunDir data -LogRotate 10 5 -UpstreamTimeout 15s -ClientTimeout 48h - -Listen "Full feed" fullfeed tcp :: 10152 -Listen "Client-Defined Filters" igate tcp :: 14580 -Listen "Duplicate packets" dupefeed tcp :: 10155 - -### Select aprs source (only one) -Uplink "Core rotate" ro tcp rotate.aprs.net 10152 -#Uplink "Core rotate" ro tcp cwop.aprs.net 10152 -#Uplink "Core rotate" ro tcp aprs.glidernet.org 10152 - -HTTPStatus 0.0.0.0 14501 -HTTPStatusOptions ShowEmail=1 - -### Operator attention span qualification run ########### -# After configuring the rest of the settings, remove this bad command -# from the configuration file. It's here only to avoid starting the -# server up accidentally with an invalid configuration. -MagicBadness 42.7 diff --git a/config/trackdirect.ini b/config/trackdirect.ini index 0a38d5e..073c45e 100644 --- a/config/trackdirect.ini +++ b/config/trackdirect.ini @@ -4,9 +4,9 @@ [website] -title="APRS Track Direct" -owner_name="Unknown" -owner_email="no@name.com" +title="Digipex Hub" +owner_name="Jeffrey Phillips Freeman (WI2ARD)" +owner_email="the@JeffreyFreeman.me" ;maptiler_key="<insert map key here if you want to activate maptiler for vector tiles>" ;google_key="<insert google key here if you want to activate google maps>" @@ -32,18 +32,18 @@ coverage_percentile="95" ;; Basic database settings ;; If using docker, set host to "db" -host="127.0.0.1" -database="trackdirect" +host="swarm-db-default-postgres.cjvkhc5ajvev.us-east-1.rds.amazonaws.com" +database="digipex_hub" ;; If using docker, activate username and set to "root" -;username="username" -password="foobar" +username="digipex_hub_user" +password="" port="5432" ;; Settings for the remover script -days_to_save_position_data="10" -days_to_save_station_data="30" -days_to_save_weather_data="10" -days_to_save_telemetry_data="10" +days_to_save_position_data="10000" +days_to_save_station_data="30000" +days_to_save_weather_data="10000" +days_to_save_telemetry_data="10000" ;; If this setting is enabled, OGN stations that we are not allowed to reveal the identity of will be given a random name similar to "UNKNOWN123" ;; If disabled we will drop all packets regarding stations that we should not reveal the identity of. @@ -73,7 +73,7 @@ frequency_limit="0" ;; First APRS IS server for the websocket server to connect to. ;; Important: Please set up your own APRS IS server, do not use a public server. ;; If using docker, set aprs_host1 to "aprsc" -aprs_host1="127.0.0.1" +aprs_host1="igate.digipex.io" aprs_port1="14580" ;; Important that you set the correct source, otherwise it might be handled incorrect @@ -92,7 +92,7 @@ aprs_source_id1="1" ;; Allow time travel ;; Use this settings to disable/enable data requests with a time interval (this must be disabled for the OGN network) -allow_time_travel="0" +allow_time_travel="1" ;; Max default time in minutes (how old packets that will be included in the response) ;; This setting should be no more than 1440 for for the OGN network. @@ -103,7 +103,7 @@ max_default_time="1440" max_filter_time="1440" ;; Time in minutes until idle client is disconnected -max_client_idle_time="60" +max_client_idle_time="20160" ;; Max age in seconds for real time packets waiting to be sent to client (dropping packets if limit is excceded) max_queued_realtime_packets="30" @@ -112,7 +112,7 @@ max_queued_realtime_packets="30" [collector0] ;; If using docker, set host to "aprsc" -host="127.0.0.1" +host="igate.digipex.io" port_full="10152" port_filtered="14580" @@ -125,21 +125,21 @@ port_filtered="14580" source_id="1" ;; Your callsign and passcode -callsign="NOCALL" -passcode="-1" +callsign="DIGIHUB" +passcode="31415" ;; Database inserts is done in batches numbers_in_batch="50" ;; Packets received more frequently than the configured frequency limit will not be shown on map (limit is specified in seconds) ;; Set to "0" to disable the frequency limit (note that the limit must be 20s or more when receiving data from OGN network)). -frequency_limit="5" +frequency_limit="0" ;; If save_fast_packets is set to "0", packets that is received to frequently will not be saved (useful for OGN, but not recommended for APRS-IS). save_fast_packets="1" ;; If detect_duplicates is set to "1" we will try to detect duplicates and ignore them. -detect_duplicates="1" +detect_duplicates="0" ;; Collector error log error_log="~/trackdirect/server/log/collector.log" diff --git a/db.dockerfile b/db.dockerfile deleted file mode 100644 index 4d03786..0000000 --- a/db.dockerfile +++ /dev/null @@ -1,3 +0,0 @@ -FROM postgres -COPY misc/database/tables/* /docker-entrypoint-initdb.d/ -VOLUME /var/lib/postgresql/data diff --git a/docker-compose-rel.yml b/docker-compose-rel.yml deleted file mode 100644 index b0396e6..0000000 --- a/docker-compose-rel.yml +++ /dev/null @@ -1,55 +0,0 @@ -version: "3.9" -services: - aprsc: - image: peterus/aprsc:latest - restart: always - ports: - - "10152:10152" - - "14580:14580" - - "10155:10155" - - "14501:14501" - volumes: - - $PWD/config/aprsc.conf:/opt/aprsc/etc/aprsc.conf - - collector: - image: peterus/trackdirect-python:latest - restart: always - volumes: - - $PWD/config/trackdirect.ini:/root/trackdirect/config/trackdirect.ini - command: /root/trackdirect/server/scripts/collector.sh trackdirect.ini 0 - depends_on: - - "db" - - "aprsc" - - websocket: - image: peterus/trackdirect-python:latest - restart: always - volumes: - - $PWD/config/trackdirect.ini:/root/trackdirect/config/trackdirect.ini - command: /root/trackdirect/server/scripts/wsserver.sh trackdirect.ini - ports: - - "9000:9000" - depends_on: - - "db" - - "aprsc" - - web: - image: peterus/trackdirect-apache:latest - restart: always - volumes: - - $PWD/config/trackdirect.ini:/root/trackdirect/config/trackdirect.ini - - $PWD/heatmaps:/root/trackdirect/htdocs/public/heatmaps - ports: - - "80:80" - depends_on: - - "db" - - db: - image: peterus/trackdirect-db:latest - restart: always - environment: - POSTGRES_USER: root - POSTGRES_PASSWORD: foobar - POSTGRES_DB: trackdirect - volumes: - - $PWD/db:/var/lib/postgresql/data diff --git a/docker-compose.yml b/docker-compose.yml deleted file mode 100644 index ac2d8fd..0000000 --- a/docker-compose.yml +++ /dev/null @@ -1,60 +0,0 @@ -version: "3.9" -services: - aprsc: - build: - context: . - dockerfile: aprsc.dockerfile - ports: - - "10152:10152" - - "14580:14580" - - "10155:10155" - - "14501:14501" - volumes: - - $PWD/config/aprsc.conf:/opt/aprsc/etc/aprsc.conf - - collector: - build: - context: . - dockerfile: trackdirect-python.dockerfile - volumes: - - $PWD/config/trackdirect.ini:/root/trackdirect/config/trackdirect.ini - command: /root/trackdirect/server/scripts/collector.sh trackdirect.ini 0 - depends_on: - - "db" - - "aprsc" - - websocket: - build: - context: . - dockerfile: trackdirect-python.dockerfile - volumes: - - $PWD/config/trackdirect.ini:/root/trackdirect/config/trackdirect.ini - command: /root/trackdirect/server/scripts/wsserver.sh trackdirect.ini - ports: - - "9000:9000" - depends_on: - - "db" - - "aprsc" - - web: - build: - context: . - dockerfile: trackdirect-apache.dockerfile - volumes: - - $PWD/config/trackdirect.ini:/root/trackdirect/config/trackdirect.ini - - $PWD/heatmaps:/root/trackdirect/htdocs/public/heatmaps - ports: - - "80:80" - depends_on: - - "db" - - db: - build: - context: . - dockerfile: db.dockerfile - environment: - POSTGRES_USER: root - POSTGRES_PASSWORD: foobar - POSTGRES_DB: trackdirect - volumes: - - $PWD/db:/var/lib/postgresql/data diff --git a/htdocs/.htaccess b/htdocs/.htaccess deleted file mode 100755 index 53eb9a2..0000000 --- a/htdocs/.htaccess +++ /dev/null @@ -1,16 +0,0 @@ -<IfModule mod_expires.c> - ExpiresActive On - ExpiresByType image/jpg "access 1 month" - ExpiresByType image/jpeg "access 1 month" - ExpiresByType image/gif "access 1 month" - ExpiresByType image/png "access 1 month" - ExpiresDefault "access 1 week" - - Header set Access-Control-Allow-Origin "*" -</IfModule> - -RewriteEngine on - -# Redirect everything to the public directory -RewriteRule ^(.*)$ /public/$1 [L] - diff --git a/htdocs/includes/autoload.php b/htdocs/includes/autoload.php deleted file mode 100644 index 80ca220..0000000 --- a/htdocs/includes/autoload.php +++ /dev/null @@ -1,24 +0,0 @@ -<?php - -/** - * Autoload classes when needed - * - * @param string $className - * @return null - */ -function __autoload($className) -{ - - if (file_exists(ROOT . '/includes/' . strtolower($className) . '.class.php')) { - include_once ROOT . '/includes/' . strtolower($className) . '.class.php'; - - } else if (file_exists(ROOT . '/includes/models/' . strtolower($className) . '.class.php')) { - include_once ROOT . '/includes/models/' . strtolower($className) . '.class.php'; - - } else if (file_exists(ROOT . '/includes/repositories/' . strtolower($className) . '.class.php')) { - include_once ROOT . '/includes/repositories/' . strtolower($className) . '.class.php'; - - } else { - error_log(sprintf('Could not find class %s', $className)); - } -} diff --git a/htdocs/includes/bootstrap.php b/htdocs/includes/bootstrap.php deleted file mode 100644 index 35e805c..0000000 --- a/htdocs/includes/bootstrap.php +++ /dev/null @@ -1,14 +0,0 @@ -<?php -if (!defined('ROOT')) { - define('ROOT', dirname(dirname(__FILE__))); - - require_once ROOT . '/includes/autoload.php'; - require_once ROOT . '/includes/common.php'; - - date_default_timezone_set("UTC"); - - ini_set("error_reporting", "true"); - error_reporting(E_ALL|E_STRCT); - - ini_set("display_errors", "false"); -} \ No newline at end of file diff --git a/htdocs/includes/common.php b/htdocs/includes/common.php deleted file mode 100644 index 3ef98f3..0000000 --- a/htdocs/includes/common.php +++ /dev/null @@ -1,1893 +0,0 @@ -<?php - -/** - * Returnes true if user probably prefer Imperial Units - * - * @return boolean - */ -function isImperialUnitUser() -{ - if (isset($_GET['imperialUnits']) && $_GET['imperialUnits']) { - return true; - } else if (isset($_GET['imperialUnits']) && !$_GET['imperialUnits']) { - return false; - } - - if (isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) { - - if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) == 'en-US') { - // USA - return true; - } - - if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) == 'my') { - // Myanmar / Burma - return true; - } - - if (substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 5) == 'en-LR') { - // Liberia - return true; - } - } - - return false; -} - -/** - * Convert km to miles (or kmh to mph) - * - * @param {float} value - * @return float - */ -function convertKilometerToMile($value) -{ - return $value * 0.621371192; -} - -/** - * Convert meter to feet - * - * @param {float} value - * @return float - */ -function convertMeterToFeet($value) -{ - return $value * 3.2808399; -} - -/** - * Convert meter per second to miles per second - * - * @param {float} value - * @return float - */ -function convertMpsToMph($value) -{ - return $value * 2.23693629; -} - -/** - * Convert meter to yard - * - * @param {float} value - * @return float - */ -function convertMeterToYard($value) -{ - return $value * 1.0936133; -} - -/** - * Convert mm to inches - * - * @param {float} value - * @return float - */ -function convertMmToInch($value) -{ - return $value * 0.0393700787; -} - -/** - * Convert celcius to fahrenheit - * - * @param {float} value - * @return float - */ -function convertCelciusToFahrenheit($value) -{ - return $value * (9/5) + 32; -} - -/** - * Convert hPa/mbar to mmhg - * - * @param {float} value - * @return float - */ -function convertMbarToMmhg($value) -{ - return $value * 0.75006375541921; -} - -/** - * Returnes true if value is float - * - * @param mixed $value - * @return boolean - */ -function isFloat($value) -{ - if (is_numeric($value)) { - // PHP automagically tries to coerce $value to a number - return is_float($value + 0); - } - return false; -} - -/** - * Returnes true if value is int - * - * @param mixed $value - * @return boolean - */ -function isInt($value) -{ - return (ctype_digit(strval($value))); -} - -/** - * Replace first occurence - * - * @param string $search - * @param string $replace - * @param string $string - * @return string - */ -function str_replace_first($search, $replace, $string) -{ - $pos = strpos($string, $search); - if ($pos !== false) { - return substr_replace($string, $replace, $pos, strlen($search)); - } else { - return $string; - } -} - -/* - * Returnes symbol description - * - * @param string $symbolTable - * @param string $symbol - * @param boolean $includeUndefinedOverlay - * @return string - */ -function getSymbolDescription($symbolTable, $symbol, $includeUndefinedOverlay) -{ - if ($symbolTable == '/') { - switch ($symbol) { - case '!': - return 'Police, Sheriff'; - case '"': - return 'No Symbol'; - case '#': - return 'Digipeater'; - case '$': - return 'Phone'; - case '%': - return 'DX Cluster'; - case '&': - return 'HF Gateway'; - case '\'': - return 'Small Aircraft'; - case '(': - return 'Mobile Satellite Station'; - case ')': - return 'Wheelchair (handicapped)'; - case '*': - return 'Snowmobile'; - case '+': - return 'Red Cross'; - case ',': - return 'Scout (Boy Scout)'; - case '-': - return 'House (VHF)'; - case '.': - return 'X'; - case '/': - return 'Red Dot'; - case '0': - return 'Circle (0)'; - case '1': - return 'Circle (1)'; - case '2': - return 'Circle (2)'; - case '3': - return 'Circle (3)'; - case '4': - return 'Circle (4)'; - case '5': - return 'Circle (5)'; - case '6': - return 'Circle (6)'; - case '7': - return 'Circle (7)'; - case '8': - return 'Circle (8)'; - case '9': - return 'Circle (9)'; - case ':': - return 'Fire'; - case ';': - return 'Campground or Portable operation'; - case '<': - return 'Motorcycle'; - case '=': - return 'Railroad Engine'; - case '>': - return 'Car'; - case '?': - return 'File server'; - case '@': - return 'Hurricane prediction'; - case 'A': - return 'Aid Station'; - case 'B': - return 'BBS or PBBS'; - case 'C': - return 'Canoe'; - case 'D': - return 'No Symbol'; // was originally undefined - case 'E': - return 'Event (Special live event)'; // Eyeball - case 'F': - return 'Farm Vehicle (tractor)'; - case 'G': - return 'Grid Square (6 digit)'; - case 'H': - return 'Hotel (blue bed symbol)'; - case 'I': - return 'TCP/IP network station'; - case 'J': - return 'No Symbol'; - case 'K': - return 'School'; - case 'L': - return 'Logged-ON user (or PC User)'; - case 'M': - return 'MacAPRS'; - case 'N': - return 'NTS Station'; - case 'O': - return 'Balloon'; - case 'P': - return 'Police'; - case 'Q': - return 'TBD'; - case 'R': - return 'Recreational Vehicle'; - case 'S': - return 'Shuttle'; - case 'T': - return 'SSTV'; - case 'U': - return 'Bus'; - case 'V': - return 'ATV'; - case 'W': - return 'National Weather Service'; - case 'X': - return 'Helicopter'; - case 'Y': - return 'Yacht (sail)'; - case 'Z': - return 'WinAPRS'; - case '[': - return 'Human/Person'; - case '\\': - return 'Triangle (DF station)'; - case ']': - return 'Mail/PostOffice'; - case '^': - return 'Large Aircraft'; - case '_': - return 'Weather Station'; - case '`': - return 'Dish Antenna'; - case 'a': - return 'Ambulance'; - case 'b': - return 'Bike'; - case 'c': - return 'Incident Command Post'; - case 'd': - return 'Fire Station'; - case 'e': - return 'Horse (equestrian)'; - case 'f': - return 'Fire Truck'; - case 'g': - return 'Glider'; - case 'h': - return 'Hospital'; - case 'i': - return 'IOTA (islands on the air)'; - case 'j': - return 'Jeep'; - case 'k': - return 'Truck'; - case 'l': - return 'Laptop'; - case 'm': - return 'Mic-E Repeater'; - case 'n': - return 'Node (black bulls-eye)'; - case 'o': - return 'EOC'; - case 'p': - return 'Rover (puppy, or dog)'; - case 'q': - return 'Grid square'; - case 'r': - return 'Antenna'; - case 's': - return 'Power Boat'; - case 't': - return 'Truck Stop'; - case 'u': - return 'Truck (18 wheeler)'; - case 'v': - return 'Van'; - case 'w': - return 'Water Station'; - case 'x': - return 'xAPRS (Unix)'; - case 'y': - return 'Yagi @ QTH'; - case 'z': - return 'Shelter'; - case '{': - return 'No Symbol'; - case '|': - return 'TNC Stream Switch'; - case '}': - return 'No Symbol'; - case '~': - return 'TNC Stream Switch'; - } - - } else { - switch ($symbol) { - case '!': - switch ($symbolTable) { - case "\\": - return 'Emergency!'; - case 'E': - return 'ELT or EPIRB'; - case 'V': - return 'Volcanic Eruption or Lava'; - default: - if ($includeUndefinedOverlay) { - return 'Emergency (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '"': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case '#': - switch ($symbolTable) { - case '\\': - return 'Digipeater'; - case 'A': - return 'Digipeater (An Alt-Freq input digi)'; - case 'R': - return 'Digipeater (RELAY only)'; - case 'W': - return 'Digipeater (RELAY and WIDE)'; - case 'T': - return 'Digipeater (PacComm RELAY,WIDE and TRACE)'; - case 'N': - return 'Digipeater (WIDEn-N and relay,wide,trace)'; - case 'I': - return 'Digipeater (digipeater is also an IGate)'; - case 'L': - return 'Digipeater (LIMITED New n-N Paradigm digi)'; - case 'S': - return 'Digipeater (New n-N Paradigm digi)'; - case 'P': - return 'Digipeater (PacComm, New n-N Paradigm)'; - case 'U': - return 'Digipeater (UI-DIGI firmware)'; - case 'D': - return 'Digipeater (DIGI_NED)'; - case '1': - return 'Digipeater (Fill-in digi, 1-hop limit)'; - case 'X': - return 'Digipeater (Experimental)'; - default: - if ($includeUndefinedOverlay) { - return 'Digipeater (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '$': - switch ($symbolTable) { - case '\\': - return 'Bank or ATM'; - case 'U': - return 'ATM (US dollars)'; - case 'L': - return 'ATM (Brittish Pound)'; - case 'Y': - return 'ATM (Japanese Yen)'; - default: - if ($includeUndefinedOverlay) { - return 'Bank or ATM (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case '%': - switch ($symbolTable) { - case '\\': - return 'Power/Energy'; - case 'C': - return 'Power/Energy (Coal)'; - case 'E': - return 'Power/Energy (Emergency)'; - case 'G': - return 'Power/Energy (Geothermal)'; - case 'H': - return 'Power/Energy (Hydroelectric)'; - case 'N': - return 'Power/Energy (Nuclear)'; - case 'P': - return 'Power/Energy (Portable)'; - case 'S': - return 'Power/Energy (Solar)'; - case 'T': - return 'Power/Energy (Turbine)'; - case 'W': - return 'Power/Energy (Wind)'; - default: - if ($includeUndefinedOverlay) { - return 'Power/Energy'; - } else { - return null; - } - } - case '&': - switch ($symbolTable) { - case '\\': - return 'Gateway'; - case 'I': - return 'Igate (Generic)'; - case 'R': - return 'Receive only IGate'; - case 'P': - return 'PSKmail node'; - case 'T': - return 'TX Igate (with path set to 1 hop)'; - case 'W': - return 'WIRES-X'; - case '2': - return 'TX igate (with path set to 2 hops)'; - case 'D': - return 'D-STAR (D-PRS IGate)'; - default: - if ($includeUndefinedOverlay) { - return 'Gateway (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '\'': - switch ($symbolTable) { - case '\\': - return 'Incident site (Airplane Crash Site)'; - case 'A': - return 'Incident site (Automobile crash site)'; - case 'H': - return 'Incident site (Hazardous incident)'; - case 'M': - return 'Incident site (Multi-Vehicle crash site)'; - case 'P': - return 'Incident site (Pileup)'; - case 'T': - return 'Incident site (Truck wreck)'; - default: - if ($includeUndefinedOverlay) { - return 'Incident site'; - } else { - return null; - } - } - case '(': - switch ($symbolTable) { - case "\\": - return 'Cloudy'; - default: - if ($includeUndefinedOverlay) { - return 'Cloudy'; - } else { - return null; - } - } - - case ')': - switch ($symbolTable) { - case "\\": - return 'Firenet MEO (Modis Earth Observatory)'; - default: - if ($includeUndefinedOverlay) { - return 'Firenet MEO (Modis Earth Observatory)'; - } else { - return null; - } - } - - case '*': - switch ($symbolTable) { - case "\\": - return 'Snow'; - default: - if ($includeUndefinedOverlay) { - return 'Snow'; - } else { - return null; - } - } - - case '+': - switch ($symbolTable) { - case "\\": - return 'Church'; - default: - if ($includeUndefinedOverlay) { - return 'Church'; - } else { - return null; - } - } - - case ',': - switch ($symbolTable) { - case "\\": - return 'Scout (Girl Scout)'; - default: - if ($includeUndefinedOverlay) { - return 'Scout (Girl Scout)'; - } else { - return null; - } - } - - case '-': - switch ($symbolTable) { - case '\\': - return 'House (HF)'; - case '5': - return 'House (50 Hz mains power)'; - case '6': - return 'House (60 Hz mains power)'; - case 'B': - return 'House (Backup Battery Power)'; - case 'C': - return 'House (Ham club)'; - case 'E': - return 'House (Emergency power)'; - case 'G': - return 'House (Geothermal)'; - case 'H': - return 'House (Hydro powered)'; - case 'O': - return 'House (Operator Present)'; - case 'S': - return 'House (Solar Powered)'; - case 'W': - return 'House (Wind powered)'; - default: - if ($includeUndefinedOverlay) { - return 'House (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case '.': - switch ($symbolTable) { - case "\\": - return 'Unknown Position'; - default: - if ($includeUndefinedOverlay) { - return 'Unknown Position'; - } else { - return null; - } - } - - case '/': - switch ($symbolTable) { - case "\\": - return 'Waypoint Destination'; - default: - if ($includeUndefinedOverlay) { - return 'Waypoint Destination'; - } else { - return null; - } - } - - case '0': - switch ($symbolTable) { - case '\\': - return 'Circle'; - case 'A': - return 'Allstar Node'; - case 'E': - return 'Echolink Node'; - case 'I': - return 'IRLP repeater'; - case 'S': - return 'Staging Area'; - case 'V': - return 'Echolink and IRLP (VOIP)'; - case 'W': - return 'WIRES (Yaesu VOIP)'; - default: - if ($includeUndefinedOverlay) { - return 'Circle (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case '8': - switch ($symbolTable) { - case '\\': - return 'No Symbol'; - case '8': - return '802.11 network node'; - case 'G': - return '802.11G'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case '9': - switch ($symbolTable) { - case "\\": - return 'Gas Station'; - default: - if ($includeUndefinedOverlay) { - return 'Gas Station'; - } else { - return null; - } - } - - case ':': - switch ($symbolTable) { - case "\\": - return 'Hail (weather condition)'; - default: - if ($includeUndefinedOverlay) { - return 'Hail (weather condition)'; - } else { - return null; - } - } - - case ';': - switch ($symbolTable) { - case '\\': - return 'Portable, Park or Picnic'; - case 'F': - return 'Field Day'; - case 'I': - return 'Islands on the air'; - case 'S': - return 'Summits on the air'; - case 'W': - return 'WOTA'; - default: - if ($includeUndefinedOverlay) { - return 'Portable'; - } else { - return null; - } - } - - case '<': - switch ($symbolTable) { - case "\\": - return 'Advisory (single gale flag)'; - default: - if ($includeUndefinedOverlay) { - return 'Advisory (single gale flag)'; - } else { - return null; - } - } - - case '=': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case '>': - switch ($symbolTable) { - case '\\': - return 'Car'; - case '1': - case '2': - case '3': - case '4': - case '5': - case '6': - case '7': - case '8': - case '9': - case '0': - return 'Numbered Car (' . $symbolTable . ')'; - case 'E': - return 'Car (Electric)'; - case 'H': - return 'Car (Hybrid)'; - case 'S': - return 'Car (Solar powered)'; - case 'V': - return 'Car (GM Volt)'; - default: - if ($includeUndefinedOverlay) { - return 'Car (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case '?': - switch ($symbolTable) { - case "\\": - return 'Info Kiosk'; - default: - if ($includeUndefinedOverlay) { - return 'Info Kiosk'; - } else { - return null; - } - } - - case '@': - switch ($symbolTable) { - case "\\": - return 'Hurricane/Tropical storm'; - default: - if ($includeUndefinedOverlay) { - return 'Hurricane/Tropical storm (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'A': - switch ($symbolTable) { - case '\\': - return 'Box'; - case '9': - return 'Mobile DTMF user'; - case '7': - return 'HT DTMF user'; - case 'H': - return 'House DTMF user'; - case 'E': - return 'Echolink DTMF report'; - case 'I': - return 'IRLP DTMF report'; - case 'R': - return 'RFID report'; - case 'A': - return 'AllStar DTMF report'; - case 'D': - return 'D-Star report'; - case 'X': - return 'OLPC Laptop XO'; - default: - if ($includeUndefinedOverlay) { - return 'Box (' . $symbolTable . ')'; - } else { - return null; - } - } - case 'B': - switch ($symbolTable) { - case "\\": - return 'Blowing snow'; - default: - if ($includeUndefinedOverlay) { - return 'Blowing snow'; - } else { - return null; - } - } - - case 'C': - switch ($symbolTable) { - case "\\": - return 'Coast Guard'; - default: - if ($includeUndefinedOverlay) { - return 'Coast Guard'; - } else { - return null; - } - } - - case 'D': - switch ($symbolTable) { - case '\\': - return 'Depot'; // drizzle rain moved to ' ovlyD - case 'A': - return 'Airport'; - case 'F': - return 'Ferry Landing'; - case 'H': - return 'Heloport'; - case 'R': - return 'Rail Depot'; - case 'B': - return 'Bus Depot'; - case 'L': - return 'LIght Rail or Subway'; - case 'S': - return 'Seaport Depot'; - default: - if ($includeUndefinedOverlay) { - return 'Depot (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case 'E': - switch ($symbolTable) { - case '\\': - return 'Smoke'; - case 'H': - return 'Haze'; - case 'S': - return 'Smoke'; - case 'B': - return 'Blowing Snow'; // was \B - case 'D': - return 'Blowing Dust or Sand'; // was \b - case 'F': - return 'Fog'; // was \{ - default: - if ($includeUndefinedOverlay) { - return 'Smoke (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case 'F': - switch ($symbolTable) { - case "\\": - return 'Freezing rain'; - default: - if ($includeUndefinedOverlay) { - return 'Freezing rain'; - } else { - return null; - } - } - - case 'G': - switch ($symbolTable) { - case "\\": - return 'Snow Shower'; - default: - if ($includeUndefinedOverlay) { - return 'Snow Shower'; - } else { - return null; - } - } - - case 'H': - switch ($symbolTable) { - case '\\': - return 'Haze'; - case 'R': - return 'Radiation detector'; - case 'W': - return 'Hazardous Waste'; - case 'X': - return 'Skull&Crossbones'; - default: - if ($includeUndefinedOverlay) { - return 'Hazard (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case 'I': - switch ($symbolTable) { - case "\\": - return 'Rain Shower'; - default: - if ($includeUndefinedOverlay) { - return 'Rain Shower'; - } else { - return null; - } - } - - case 'J': - switch ($symbolTable) { - case "\\": - return 'Lightning'; - default: - if ($includeUndefinedOverlay) { - return 'Lightning'; - } else { - return null; - } - } - - case 'K': - switch ($symbolTable) { - case "\\": - return 'Kenwood HT'; - default: - if ($includeUndefinedOverlay) { - return 'Kenwood HT'; - } else { - return null; - } - } - - case 'L': - switch ($symbolTable) { - case "\\": - return 'Lighthouse'; - default: - if ($includeUndefinedOverlay) { - return 'Lighthouse (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'M': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case 'N': - switch ($symbolTable) { - case "\\": - return 'Navigation Buoy'; - default: - if ($includeUndefinedOverlay) { - return 'Navigation Buoy (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'O': - switch ($symbolTable) { - case '\\': - return 'Rocket (amateur)'; - case 'B': - return 'Blimp (non-rigid airship)'; - case 'M': - return 'Manned Balloon'; - case 'T': - return 'Teathered Balloon'; - case 'C': - return 'Constant Pressure Balloon - Long duration'; - case 'R': - return 'Rocket bearing Balloon (Rockoon)'; - default: - if ($includeUndefinedOverlay) { - return 'Balloon (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case 'P': - switch ($symbolTable) { - case "\\": - return 'Parking'; - default: - if ($includeUndefinedOverlay) { - return 'Parking (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'Q': - switch ($symbolTable) { - case "\\": - return 'Quake'; - default: - if ($includeUndefinedOverlay) { - return 'Quake'; - } else { - return null; - } - } - - case 'R': - switch ($symbolTable) { - case '\\': - return 'Restaurant (generic)'; - case '7': - return 'Restaurant (7/11)'; - case 'K': - return 'Restaurant (KFC)'; - case 'M': - return 'Restaurant (McDonalds)'; - case 'T': - return 'Restaurant (Taco Bell)'; - default: - if ($includeUndefinedOverlay) { - return 'Restaurant (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case 'S': - switch ($symbolTable) { - case "\\": - return 'Satellite/Pacsat'; - default: - if ($includeUndefinedOverlay) { - return 'Satellite/Pacsat (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'T': - switch ($symbolTable) { - case "\\": - return 'Thunderstorm'; - default: - if ($includeUndefinedOverlay) { - return 'Thunderstorm (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'U': - switch ($symbolTable) { - case "\\": - return 'Sunny'; - default: - if ($includeUndefinedOverlay) { - return 'Sunny (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'V': - switch ($symbolTable) { - case "\\": - return 'VORTAC Navigation Aid'; - default: - if ($includeUndefinedOverlay) { - return 'VORTAC Navigation Aid'; - } else { - return null; - } - } - - case 'W': - switch ($symbolTable) { - case "\\": - return 'National Weather Service'; - default: - if ($includeUndefinedOverlay) { - return 'National Weather Service (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'X': - switch ($symbolTable) { - case "\\": - return 'Pharmacy'; - default: - if ($includeUndefinedOverlay) { - return 'Pharmacy'; - } else { - return null; - } - } - - case 'Y': - switch ($symbolTable) { - case '\\': - return 'Radio/APRS Device'; - case 'A': - return 'Alinco'; - case 'B': - return 'Byonics'; - case 'I': - return 'Icom'; - case 'K': - return 'Kenwood'; - case 'Y': - return 'Yaesu/Standard'; - default: - if ($includeUndefinedOverlay) { - return 'Radio/APRS Device'; // or "No Symbol"? - } else { - return null; - } - } - case 'Z': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case '[': - switch ($symbolTable) { - case '\\': - return 'Wall Cloud (or pedestal cloud)'; - case 'B': - return 'Baby on board (stroller, pram etc)'; - case 'S': - return 'Skier'; - case 'R': - return 'Runner'; - case 'H': - return 'Hiker'; - default: - if ($includeUndefinedOverlay) { - return 'Human/Person (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '\\': - switch ($symbolTable) { - case '\\': - return 'No Symbol'; - case 'A': - return 'Avmap G5'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - case ']': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case '^': - switch ($symbolTable) { - case '\\': - return 'Aircraft'; // top-view originally intended to point in direction of flight - case 'A': - return 'Aircraft (A = Autonomous)'; - case 'D': - return 'Aircraft (D = Drone)'; - case 'E': - return 'Aircraft (E = Electric aircraft)'; - case 'G': - return 'Aircraft (G = Glider aircraft)'; - case 'H': - return 'Aircraft (H = Hovercraft)'; - case 'J': - return 'Aircraft (J = JET)'; - case 'L': - return 'Paraglider'; // Not official definition - case 'M': - return 'Aircraft (M = Missle)'; - case 'P': - return 'Aircraft (P = Propeller)'; - case 'R': - return 'Aircraft (R = Remotely Piloted)'; - case 'S': - return 'Aircraft (S = Solar Powered)'; - case 'V': - return 'Aircraft (V = Vertical takeoff)'; - case 'X': - return 'Aircraft (X = Experimental)'; - default: - if ($includeUndefinedOverlay) { - return 'Aircraft (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '_': - switch ($symbolTable) { - case "\\": - return 'Weather Station'; - default: - if ($includeUndefinedOverlay) { - return 'Weather Station (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '`': - switch ($symbolTable) { - case "\\": - return 'Rain'; - default: - if ($includeUndefinedOverlay) { - return 'Rain'; - } else { - return null; - } - } - - case 'a': - switch ($symbolTable) { - case '\\': - return 'Red Diamond'; - case 'A': - return 'ARES'; - case 'D': - return 'D-STAR (previously Dutch ARES)'; - case 'G': - return 'RSGB Radio Society of Great Brittan'; - case 'R': - return 'RACES'; - case 'S': - return 'SATERN Salvation Army'; - case 'W': - return 'WinLink'; - case 'Y': - return 'C4FM Yaesu repeaters'; - default: - if ($includeUndefinedOverlay) { - return 'Red Diamond (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'b': - switch ($symbolTable) { - case "\\": - return 'Dust blowing'; - default: - if ($includeUndefinedOverlay) { - return 'Dust blowing'; - } else { - return null; - } - } - - case 'c': - switch ($symbolTable) { - case '\\': - return 'Civil Defense'; - case 'D': - return 'Decontamination'; - case 'R': - return 'RACES'; - case 'S': - return 'SATERN mobile canteen'; - default: - if ($includeUndefinedOverlay) { - return 'Civil Defense (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'd': - switch ($symbolTable) { - case "\\": - return 'DX Spot'; - default: - if ($includeUndefinedOverlay) { - return 'DX Spot'; - } else { - return null; - } - } - - case 'e': - switch ($symbolTable) { - case "\\": - return 'Sleet'; - default: - if ($includeUndefinedOverlay) { - return 'Sleet'; - } else { - return null; - } - } - - case 'f': - switch ($symbolTable) { - case "\\": - return 'Funnel Cloud'; - default: - if ($includeUndefinedOverlay) { - return 'Funnel Cloud'; - } else { - return null; - } - } - - case 'g': - switch ($symbolTable) { - case "\\": - return 'Gale warning flags'; - default: - if ($includeUndefinedOverlay) { - return 'Gale warning flags (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'h': - switch ($symbolTable) { - case '\\': - return 'Store/Ham Store'; - case 'F': - return 'Hamfest'; - case 'H': - return 'Home Dept etc..'; - default: - if ($includeUndefinedOverlay) { - return 'Other store (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case 'i': - switch ($symbolTable) { - case "\\": - return 'Point of interest'; - default: - if ($includeUndefinedOverlay) { - return 'Point of interest (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'j': - switch ($symbolTable) { - case "\\": - return 'WorkZone'; - default: - if ($includeUndefinedOverlay) { - return 'WorkZone'; - } else { - return null; - } - } - - case 'k': - switch ($symbolTable) { - case '\\': - return 'Special Vehicle (SUV)'; - case '4': - return 'Special Vehicle (4x4)'; - case 'A': - return 'Special Vehicle (ATV)'; - default: - if ($includeUndefinedOverlay) { - return 'Special Vehicle (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'l': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case 'm': - switch ($symbolTable) { - case "\\": - return 'Milepost'; - default: - if ($includeUndefinedOverlay) { - return 'Milepost'; - } else { - return null; - } - } - - case 'n': - switch ($symbolTable) { - case "\\": - return 'Red Triangle'; - default: - if ($includeUndefinedOverlay) { - return 'Red Triangle (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'o': - switch ($symbolTable) { - case "\\": - return 'Small Circle'; - default: - if ($includeUndefinedOverlay) { - return 'Small Circle (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'p': - switch ($symbolTable) { - case "\\": - return 'Partly Cloudy'; - default: - if ($includeUndefinedOverlay) { - return 'Partly Cloudy'; - } else { - return null; - } - } - - case 'q': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case 'r': - switch ($symbolTable) { - case "\\": - return 'Restrooms'; - default: - if ($includeUndefinedOverlay) { - return 'Restrooms'; - } else { - return null; - } - } - - case 's': - switch ($symbolTable) { - case '\\': - return 'Ship/Boat'; - case '6': - return 'Ship/Boat (Shipwreck "deep6")'; - case 'B': - return 'Ship/Boat (Pleasure Boat)'; - case 'C': - return 'Ship/Boat (Cargo)'; - case 'D': - return 'Ship/Boat (Diving)'; - case 'E': - return 'Ship/Boat (Emergency or Medical transport)'; - case 'F': - return 'Ship/Boat (Fishing)'; - case 'H': - return 'Ship/Boat (High-speed Craft)'; - case 'J': - return 'Ship/Boat (Jet Ski)'; - case 'L': - return 'Ship/Boat (Law enforcement)'; - case 'M': - return 'Ship/Boat (Miltary)'; - case 'O': - return 'Ship/Boat (Oil Rig)'; - case 'P': - return 'Ship/Boat (Pilot Boat)'; - case 'Q': - return 'Ship/Boat (Torpedo)'; - case 'S': - return 'Ship/Boat (Search and Rescue)'; - case 'T': - return 'Ship/Boat (Tug)'; - case 'U': - return 'Ship/Boat (Underwater ops or submarine)'; - case 'W': - return 'Ship/Boat (Wing-in-Ground effect or Hovercraft)'; - case 'X': - return 'Ship/Boat (Passenger, Ferry)'; - case 'Y': - return 'Ship/Boat (Sailing, large ship)'; - default: - if ($includeUndefinedOverlay) { - return 'Ship/Boat (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - case 't': - switch ($symbolTable) { - case "\\": - return 'Tornado'; - default: - if ($includeUndefinedOverlay) { - return 'Tornado'; - } else { - return null; - } - } - - case 'u': - switch ($symbolTable) { - case '\\': - return 'Truck'; - case 'B': - return 'Truck (Buldozer/construction/Backhoe)'; - case 'G': - return 'Truck (Gas)'; - case 'P': - return 'Truck (Plow or SnowPlow)'; - case 'T': - return 'Truck (Tanker)'; - case 'C': - return 'Truck (Chlorine Tanker)'; - case 'H': - return 'Truck (Hazardous)'; - default: - if ($includeUndefinedOverlay) { - return 'Truck (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'v': - switch ($symbolTable) { - case "\\": - return 'Van'; - default: - if ($includeUndefinedOverlay) { - return 'Van (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case 'w': - switch ($symbolTable) { - case "\\": - return 'Flooding'; - default: - if ($includeUndefinedOverlay) { - return 'Flooding'; - } else { - return null; - } - } - - case 'x': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case 'y': - switch ($symbolTable) { - case "\\": - return 'Skywarn'; - default: - if ($includeUndefinedOverlay) { - return 'Skywarn'; - } else { - return null; - } - } - - case 'z': - switch ($symbolTable) { - case '\\': - return 'Shelter'; - case 'C': - return 'Clinic'; - case 'G': - return 'Government building'; - case 'M': - return 'Morgue'; - case 'T': - return 'Triage'; - default: - if ($includeUndefinedOverlay) { - return 'Building (with overlay ' . $symbolTable . ')'; - } else { - return null; - } - } - - case '{': - switch ($symbolTable) { - case "\\": - return 'Fog'; - default: - if ($includeUndefinedOverlay) { - return 'Fog'; - } else { - return null; - } - } - - case '|': - switch ($symbolTable) { - case "\\": - return 'TNC Stream Switch'; - default: - if ($includeUndefinedOverlay) { - return 'TNC Stream Switch'; - } else { - return null; - } - } - - case '}': - switch ($symbolTable) { - case "\\": - return 'No Symbol'; - default: - if ($includeUndefinedOverlay) { - return 'No Symbol'; - } else { - return null; - } - } - - case '~': - switch ($symbolTable) { - case "\\": - return 'TNC Stream Switch'; - default: - if ($includeUndefinedOverlay) { - return 'TNC Stream Switch'; - } else { - return null; - } - } - } - } -} - - -/** - * Returnes true if we may show data older than 24h - * - * @return boolean - */ -function isAllowedToShowOlderData() { - $isAllowedToShowOlderData = false; - $config = parse_ini_file(ROOT . '/../config/trackdirect.ini', true); - - if (isset($config['websocket_server'])) { - if (isset($config['websocket_server']['allow_time_travel'])) { - if ($config['websocket_server']['allow_time_travel'] == '1') { - $isAllowedToShowOlderData = true; - } - } - - if (isset($config['websocket_server']['aprs_source_id1']) && $config['websocket_server']['aprs_source_id1'] == 5) { - // Data source is OGN, disable time travel (server will block it anyway) - $isAllowedToShowOlderData = false; - } - - if (isset($config['websocket_server']['aprs_source_id2']) && $config['websocket_server']['aprs_source_id2'] == 5) { - // Data source is OGN, disable time travel (server will block it anyway) - $isAllowedToShowOlderData = false; - } - } - - return $isAllowedToShowOlderData; -} - -/** - * Returnes valid view path - * - * @param {string} $request - * @return string - */ -function getView($request) { - $parts = explode("/", trim($request, '/')); - if (count($parts) >= 2) { - $view = array_pop($parts); - $dir = array_pop($parts); - if ($view && $dir == 'views') { - $path = ROOT . '/public/views'; - foreach (scandir($path) as $file) { - if ($file == $view) { - return "$path/$view"; - } - } - } - } - return null; -} - -/** - * Returnes an assoc array containing website related values from config - * - * @param {string} $key - * @return string - * */ -function getWebsiteConfig($key) { - $config = parse_ini_file(ROOT . '/../config/trackdirect.ini', true); - if (isset($config['website']) && isset($config['website'][$key])) { - return $config['website'][$key]; - } - - return null; -} - -/** - * Convert coordinate to pixel position in heatmap image - * - * @param {float} $lat - * @param {int} $zoom - * @param {int} $imageTileSize - * @return int - */ -function getLatPixelCoordinate($lat, $zoom, $imageTileSize) { - $pixelGlobeSize = $imageTileSize * pow(2, $zoom); - $yPixelsToRadiansRatio = $pixelGlobeSize / (2 * M_PI); - $halfPixelGlobeSize = $pixelGlobeSize / 2; - $pixelGlobeCenterY = $halfPixelGlobeSize; - $degreesToRadiansRatio = 180 / M_PI; - $siny = sin($lat * M_PI / 180); - - # Truncating to 0.9999 effectively limits latitude to 89.189. This is - # about a third of a tile past the edge of the world tile. - if ($siny < -0.9999) { - $siny = -0.9999; - } - if ($siny > 0.9999) { - $siny = 0.9999; - } - $latY = round($pixelGlobeCenterY + 0.5 * log((1 + $siny) / (1 - $siny)) * -$yPixelsToRadiansRatio); - return $latY; -} - -/** - * Convert coordinate to pixel position in heatmap image - * - * @param {float} $lng - * @param {int} $zoom - * @param {int} $imageTileSize - * @return int - */ -function getLngPixelCoordinate($lng, $zoom, $imageTileSize) { - $scale = 1 << $zoom; - $lngX = floor($imageTileSize * (0.5 + $lng / 360) * $scale); - return $lngX; -} - -/** - * Convert pixel position in heatmap image to coordinate - * - * @param {float} $latPixelCoord - * @param {int} $zoom - * @param {int} $imageTileSize - * @return float - */ -function getLatFromLatPixelCoordinate($latPixelCoord, $zoom, $imageTileSize) { - $pixelGlobeSize = $imageTileSize * pow(2, $zoom); - $yPixelsToRadiansRatio = $pixelGlobeSize / (2 * M_PI); - $halfPixelGlobeSize = $pixelGlobeSize / 2; - $pixelGlobeCenterY = $halfPixelGlobeSize; - $degreesToRadiansRatio = 180 / M_PI; - $lat = (2 * atan(exp(($latPixelCoord - $pixelGlobeCenterY) / -$yPixelsToRadiansRatio)) - M_PI / 2) * $degreesToRadiansRatio; - return $lat; -} - -/** - * Convert pixel position in heatmap image to coordinate - * - * @param {float} $lngPixelCoord - * @param {int} $zoom - * @param {int} $imageTileSize - * @return float - */ -function getLngFromLngPixelCoordinate($lngPixelCoord, $zoom, $imageTileSize) { - $scale = 1 << $zoom; - $lng = ((($lngPixelCoord / $scale) / $imageTileSize) - 0.5) * 360; - return $lng; -} - diff --git a/htdocs/includes/database.class.php b/htdocs/includes/database.class.php deleted file mode 100644 index 4030cb8..0000000 --- a/htdocs/includes/database.class.php +++ /dev/null @@ -1,59 +0,0 @@ -<?php - -class Database -{ - - private $_existingTables; - private static $_singletonInstance = null; - - /** - * The constructor - */ - public function __construct() - { - $this->_existingTables = Array(); - } - - /** - * Returnes an initiated Database - * - * @return Database - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new Database(); - } - - return self::$_singletonInstance; - } - - /** - * Returnes true if specified table exists in database - * - * @param string $tablename - * @return boolean - */ - public function checkTableExists($tablename) - { - - if (!isset($this->_existingTables[$tablename])) { - - $sql = "SELECT COUNT(*) c - FROM information_schema.tables - WHERE table_name = ?"; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, [str_replace('\'', '\'\'', $tablename)]); - - $record = $stmt->fetch(PDO::FETCH_ASSOC); - if ($record && $record['c'] > 0) { - $this->_existingTables[$tablename] = true; - } else { - $this->_existingTables[$tablename] = false; - } - } - - return $this->_existingTables[$tablename]; - } -} diff --git a/htdocs/includes/kml.class.php b/htdocs/includes/kml.class.php deleted file mode 100644 index cc448be..0000000 --- a/htdocs/includes/kml.class.php +++ /dev/null @@ -1,302 +0,0 @@ -<?php - -class Kml { - - private $_class; - private static $_singletonInstance = null; - - public function __construct($class = 'Kml') - { - $this->_class = $class; - } - - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new Kml(); - } - - return self::$_singletonInstance; - } - - public function getKmlDomDocument($station, $packets, $startTimestamp, $endTimestamp, $color) - { - $dom = new DOMDocument('1.0', 'UTF-8'); - $node = $dom->createElementNS('http://earth.google.com/kml/2.2', 'kml'); - $parNode = $dom->appendChild($node); - - $dnode = $dom->createElement('Document'); - $docNode = $parNode->appendChild($dnode); - - if (!empty($packets)) { - $lastPacket = $packets[count($packets) - 1]; - $makrerStyleNode = $this->getMarkerStyleNode($dom, $lastPacket, $color); - $docNode->appendChild($makrerStyleNode); - - $folderNode = $dom->createElement('Folder'); - $docNode->appendChild($folderNode); - - $nameNode = $dom->createElement('name', $station->name - . ' (' . $startTimestamp . ' - ' . $endTimestamp . ')'); - $folderNode->appendChild($nameNode); - - $stationNode = $this->getStationNode($dom, $station, $packets); - $folderNode->appendChild($stationNode); - } - return $dom; - } - - public function formatKmlContent($kmlContent, $tab="\t", $tabCount = 1) - { - $kmlContent = preg_replace('/(>)(<)(\/*)/', "$1\n$2$3", $kmlContent); - - $token = strtok($kmlContent, "\n"); - $result = ''; - $pad = 0; - $matches = array(); - - while ($token !== false) - { - $token = trim($token); - if (preg_match('/.+<\/\w[^>]*>$/', $token, $matches)) $indent=0; - elseif (preg_match('/^<\/\w/', $token, $matches)) - { - $pad--; - if($indent>0) $indent=0; - } - elseif (preg_match('/^<\w[^>]*[^\/]>.*$/', $token, $matches)) - { - $indent=1; - } - else $indent = 0; - - $line = str_pad($token, strlen($token)+($pad*$tabCount), $tab, STR_PAD_LEFT); - $result .= $line."\n"; - $token = strtok("\n"); - $pad += $indent; - } - - return $result; - } - - private function getMarkerStyleNode($dom, $packet, $color) - { - $styleNode = $dom->createElement('Style'); - $styleNode->setAttribute('id', 'markerStyle' . $packet->stationId); - - $iconstyleNode = $dom->createElement('IconStyle'); - $iconNode = $dom->createElement('Icon'); - $href = $dom->createElement('href', $this->getWebsiteURL() . $packet->getIconFilePath(null, null, true)); - $iconNode->appendChild($href); - $iconstyleNode->appendChild($iconNode); - $styleNode->appendChild($iconstyleNode); - - $linestyleNode = $dom->createElement('LineStyle'); - - if (preg_match('/^[A-F0-9]{8}$/', $color)) { - $colorNode = $dom->createElement('color', $color); - $linestyleNode->appendChild($colorNode); - } else { - $colorNode = $dom->createElement('color', 'ff55ff55'); - $linestyleNode->appendChild($colorNode); - } - - $widthNode = $dom->createElement('width', '5'); - $linestyleNode->appendChild($widthNode); - $styleNode->appendChild($linestyleNode); - - return $styleNode; - } - - private function getStationNode($dom, $station, $packets) { - $lastPacket = $packets[count($packets) - 1]; - - $placeNode = $dom->createElement('Placemark'); - $placeNode->setAttribute('id', 'station-' . $station->getId()); - $styleUrl = $dom->createElement('styleUrl', '#markerStyle' . $station->getId()); - $placeNode->appendChild($styleUrl); - - $nameNode = $dom->createElement('name', htmlspecialchars($station->name)); - $placeNode->appendChild($nameNode); - - $description = $this->getPacketNodeDescription($station, $packets); - if ($description !== null) { - $node = $dom->createElement('description', ($description)); - $placeNode->appendChild($node); - } - - $multiGeometryNode = $this->getMultiGeometryNode($dom, $station, $packets); - $placeNode->appendChild($multiGeometryNode); - - return $placeNode; - } - - private function getMultiGeometryNode($dom, $station, $packets) { - $lastPacket = $packets[count($packets) - 1]; - - $multiGeometryNode = $dom->createElement('MultiGeometry'); - - $altitudeMode = 'clampToGround'; - if ($this->isFlyingObject($station, $packets)) { - $altitudeMode = 'absolute'; - } - - $pointNode = $this->getPacketPointNode($dom, $lastPacket, $altitudeMode); - $multiGeometryNode->appendChild($pointNode); - - if (count($packets) > 1) { - $tailLineNode = $this->getTailLineNode($dom, $packets, $altitudeMode); - $multiGeometryNode->appendChild($tailLineNode); - } - - return $multiGeometryNode; - } - - private function getPacketPointNode($dom, $packet, $altitudeMode) - { - $pointNode = $dom->createElement('Point'); - - // Creates a coordinates element and gives it the value of the lng and lat columns from the results. - if ($packet->altitude !== null) { - $coorStr = round($packet->longitude, 5) . ',' . round($packet->latitude, 5) . ',' . round($packet->altitude, 2); - } else { - $coorStr = round($packet->longitude, 5) . ',' . round($packet->latitude, 5); - } - - $altitudeModeNode = $dom->createElement('altitudeMode', $altitudeMode); - $pointNode->appendChild($altitudeModeNode); - - $coorNode = $dom->createElement('coordinates', $coorStr); - $pointNode->appendChild($coorNode); - return $pointNode; - } - - private function getTailLineNode($dom, $packets, $altitudeMode) - { - $lineStringNode = $dom->createElement('LineString'); - - $lineCoorStr = ''; - foreach ($packets as $packet) { - if ($packet->altitude !== null) { - $lineCoorStr .= ' ' . round($packet->longitude, 5) . ',' . round($packet->latitude, 5) . ',' . round($packet->altitude, 2); - } else { - $lineCoorStr .= ' ' . round($packet->longitude, 5) . ',' . round($packet->latitude, 5); - } - } - - $altitudeModeNode = $dom->createElement('altitudeMode', $altitudeMode); - $lineStringNode->appendChild($altitudeModeNode); - - $tessellateNode = $dom->createElement('tessellate', '1'); - $lineStringNode->appendChild($tessellateNode); - - $extrudeNode = $dom->createElement('extrude', '1'); - $lineStringNode->appendChild($extrudeNode); - - $lineCoorNode = $dom->createElement('coordinates', $lineCoorStr); - $lineStringNode->appendChild($lineCoorNode); - - return $lineStringNode; - } - - private function getPacketNodeDescription($station, $packets) - { - $description = array(); - $description[] = '<a href="' . $this->getWebsiteURL() . '?sid=' . $station->getId() . '" target="_blank">Track ' . $station->name . '</a>'; - - if (!empty($packets)) { - $firstPacket = $packets[0]; - $lastPacket = $packets[count($packets) - 1]; - - $description[] = ''; - if (count($packets) == 1) { - $description[] = '<span style="color: grey;">' . strftime('%F %T %Z',$lastPacket->timestamp) . '</span>'; - } else { - $description[] = '<span style="color: grey;">' . strftime('%F %T %Z',$firstPacket->timestamp) . ' -<br>' . strftime('%F %T %Z',$lastPacket->timestamp) . '</span>'; - } - - if ($lastPacket->comment != null) { - $description[] = ''; - $description[] = '<span style="font-style: italic; color: #754D08;">' . htmlspecialchars($lastPacket->comment) . '</span>'; - } - - if ($lastPacket->speed !== null) { - $description[] = ''; - $description[] = 'Latest speed: <span style="color: blue;">' . $lastPacket->speed . 'kmh' . '</span>'; - - if ($lastPacket->altitude !== null) { - $description[] = 'Latest altitude: <span style="color: blue;">' . $lastPacket->altitude . 'm ' . '</span>'; - } - - if ($lastPacket->course !== null) { - $description[] = 'Latest course: <span style="color: blue;">' . $lastPacket->course . '°' . '</span>'; - } - } - } - - return '<div style="margin-right: 45px;">' . implode('<br/>', $description) . '</div>'; - } - - private function isClientRequestingToOften() - { - $currentMinuteTs = (time() - (time() % 60)); - $limitedNumberOfRequestsPerMinute = 60; - $logFile = 'tmp/export_kml_ip_' . $_SERVER['REMOTE_ADDR'] . '_' . $currentMinuteTs; - - // Create dir if missing - if (!file_exists('tmp')) { - mkdir('tmp'); - } - - // Delete old log-files - $files = glob('tmp/*'); - foreach ($files as $file) { - if (is_file($file) && !stristr($file, '_' . $currentMinuteTs)) { - unlink($file); - } - } - - // Log request - $log = fopen($logFile, "a"); - fwrite($log,'0'); - fclose($log); - - // Check limit - if (filesize($logFile) > $limitedNumberOfRequestsPerMinute) { - return true; - } - - return false; - } - - private function isFlyingObject($station, $packets) - { - if (count($packets) <= 1) { - // A station with only one packet is probably stationary - return false; - } - - if ($station->sourceId == 4) { - // All gliderradar stations with a tail is probably flying - return true; - } - - foreach ($packets as $packet) { - if ($packet->altitude !== null && $packet->altitude > 1000) { - // If altitude is above 1000m it is probably flying - return true; - } - } - - return false; - } - - private function getWebsiteURL() - { - return sprintf( - "%s://%s", - isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off' ? 'https' : 'http', - $_SERVER['SERVER_NAME'] - ); - } -} diff --git a/htdocs/includes/models/model.class.php b/htdocs/includes/models/model.class.php deleted file mode 100644 index 4c3b9de..0000000 --- a/htdocs/includes/models/model.class.php +++ /dev/null @@ -1,116 +0,0 @@ -<?php - -class Model -{ - - protected $_id; - protected $_values; - - public function __construct($id) - { - $this->_id = $id; - } - - /** - * Returns id of the object - * - * @return int - */ - public function getId() - { - return $this->_id; - } - - /** - * Returns true if object exists in database - * - * @return boolean - */ - public function isExistingObject() - { - if ($this->_id != null) { - return true; - } - return false; - } - - /** - * Makes it possible to get $object->field - * - * @param string $key - */ - public function __get($key) - { - $key = $this->_camelize($key); - - if (isset($this->_values[$key])) { - return $this->_values[$key]; - } else { - return null; - } - } - - - /** - * Makes it possible to set $object->field - * - * @param string $key - * @param mixed - */ - public function __set($key, $value) - { - $this->_values[$this->_camelize($key)] = $value; - } - - - /** - * Makes it possible to check if $object->field is set - * - * @param string $key - */ - public function __isset($key) - { - if (isset($this->_values[$key])) { - return true; - } else { - return false; - } - } - - /** - * Makes it possible to unset $object->field - * - * @param string $key - */ - public function __unset($key) - { - if (isset($this->_values[$key])) { - unset($this->_values[$key]); - } - } - - /** - * Update object from array, usually a db record - * column-names with underscores will be converted to camelcase - * - * @param array $array - */ - public function updateObjectFromArray($array) - { - foreach ($array as $column => $value) { - $this->_values[$this->_camelize($column)] = $value; - } - } - - /** - * Convert underscore separated variables to camelcaps - * (for some reason I prefer underscore in db-columns but I prefer camelCaps in code...) - * - * @param string $input - * @return string - */ - private function _camelize($input) - { - return lcfirst(str_replace('_', '', ucwords($input, '_'))); - } -} diff --git a/htdocs/includes/models/packet.class.php b/htdocs/includes/models/packet.class.php deleted file mode 100644 index 3d14372..0000000 --- a/htdocs/includes/models/packet.class.php +++ /dev/null @@ -1,375 +0,0 @@ -<?php - -class Packet extends Model -{ - - public function __construct($id) - { - parent::__construct($id); - } - - /** - * Returnes icon http path - * - * @param int $scaleWidth - * @param int $scaleHeight - * @return string - */ - public function getIconFilePath($scaleWidth = null, $scaleHeight = null) - { - if (strlen($this->symbol) >= 1 && strlen($this->symbolTable) >= 1) { - $symbolAsciiValue = ord(substr($this->symbol, 0, 1)); - $symbolTableAsciiValue = ord(substr($this->symbolTable, 0, 1)); - } else { - // Default values - $symbolAsciiValue = 125; - $symbolTableAsciiValue = 47; - } - - $scaleStrValue = ''; - if ($scaleWidth !== null && $scaleHeight !== null) { - $scaleStrValue = '-scale' . $scaleWidth . 'x' . $scaleHeight; - } - - return '/symbols/symbol-' . $symbolAsciiValue . '-' . $symbolTableAsciiValue . $scaleStrValue . '.png'; - } - - /** - * Get PGH range in meters - * - * @return float - */ - public function getPHGRange() - { - if ($this->getPhg() != null) { - $p = $this->getPhgPower(); - $h = $this->getPhgHaat(false); - $g = $this->getPhgGain(); - - $gain = pow(10, ($g/10)); //converts from DB to decimal - $range = sqrt(2 * $h * sqrt(($p / 10) * ($gain / 2))); - return $range / 0.000621371192; // convert to m and return - } - return null; - } - - /** - * Get PGH description - * - * @return String - */ - public function getPHGDescription() - { - if ($this->getPhg() != null) { - $power = $this->getPhgPower(); - $haat = $this->getPhgHaat(); - $gain = $this->getPhgGain(); - $direction = $this->getPhgDirection(); - $range = $this->getPHGRange(); - - $description = ''; - if ($power !== null) { - $description .= 'Power ' . $power . ' W'; - } - - if ($haat !== null) { - - if (strlen($description) > 0) { - $description .= ', '; - } - - if (isImperialUnitUser()) { - $description .= 'Height ' . round(convertMeterToFeet($haat), 0) . ' ft'; - } else { - $description .= 'Height ' . $haat . ' m'; - } - } - - if ($gain !== null && $direction !== null) { - if (strlen($description) > 0) { - $description .= ', '; - } - $description .= 'Gain ' . $gain . ' dB ' . $direction; - } - - return $description; - } - return null; - } - - /** - * Get PGH string - * - * @return string - */ - public function getPhg() - { - if ($this->phg != null) { - if ($this->phg == 0) { - return null; // 0000 is considered not to be used (power == 0!) - } else if ($this->phg < 10) { - return '000' + strval($this->phg); - } else if ($this->phg < 100) { - return '00' + strval($this->phg); - } else if ($this->phg < 1000) { - return '0' + strval($this->phg); - } else { - return strval($this->phg); - } - } - return null; - } - - /** - * Get PGH power - * - * @return int - */ - public function getPhgPower() - { - if ($this->getPhg() != null) { - return pow(intval(substr($this->getPhg(), 0, 1)), 2); - } - return null; - } - - /** - * Get PGH hight (above averange terrain) - * - * @param boolean $inMeters - * @return int - */ - public function getPhgHaat($inMeters = true) - { - if ($this->getPhg() != null) { - $value = intval(substr($this->getPhg(), 1, 1)); - - $haat = 0; - if ($value != 0) { - $haat = 10 * pow(2, $value); - } - - if ($inMeters) { - return intval(round($haat * 0.3048)); - } else { - return $haat; - } - - } - return null; - } - - /** - * Get PGH Gain - * - * @return int - */ - public function getPhgGain() - { - if ($this->getPhg() != null) { - return intval(substr($this->getPhg(), 2, 1)); - } - return null; - } - - /** - * Get PGH Direction - * - * @return String - */ - public function getPhgDirection() - { - if ($this->getPhg() != null) { - - switch (substr($this->getPhg(), 3, 1)) { - case 0: - return 'omni'; - break; - case 1: - return 'North East'; - break; - case 2: - return 'East'; - break; - case 3: - return 'South East'; - break; - case 4: - return 'South'; - break; - case 5: - return 'South West'; - break; - case 6: - return 'West'; - break; - case 7: - return 'North West'; - break; - case 8: - return 'North'; - break; - case 9: - return null; - break; - } - } - return null; - } - - /** - * Get PGH Direction Degree - * - * @return int - */ - public function getPhgDirectionDegree() - { - if ($this->getPhg() != null) { - - switch (substr($this->getPhg(), 3, 1)) { - case 0: - return null; - break; - case 1: - return 45; - break; - case 2: - return 90; - break; - case 3: - return 135; - break; - case 4: - return 180; - break; - case 5: - return 225; - break; - case 6: - return 270; - break; - case 7: - return 315; - break; - case 8: - return 360; - break; - case 9: - return null; - break; - } - } - return null; - } - - /** - * Get RNG - * - * @return float - */ - public function getRng() - { - if ($this->rng != null) { - return $this->rng; - } - return null; - } - - /** - * Get packet type description - * - * @return Station - */ - public function getPacketTypeName() - { - switch ($this->packetTypeId) { - case 1: - return 'Position'; - break; - case 2: - return 'Direction'; - break; - case 3: - return 'Weather'; - break; - case 4: - return 'Object'; - break; - case 5: - return 'Item'; - break; - case 6: - return 'Telemetry'; - break; - case 7: - return 'Message'; - break; - case 8: - return 'Query'; - break; - case 9: - return 'Response'; - break; - case 10: - return 'Status'; - break; - case 11: - return 'Other'; - break; - default: - return 'Unknown'; - break; - } - } - - /** - * Get releted packet weather - * @return PacketWeather - */ - public function getPacketWeather() { - return PacketWeatherRepository::getInstance()->getObjectByPacketId($this->id, $this->timestamp); - } - - /** - * Get releted packet telemetry - * @return PacketTelemetry - */ - public function getPacketTelemetry() { - return PacketTelemetryRepository::getInstance()->getObjectByPacketId($this->id, $this->timestamp); - } - - /** - * Returns OGN part of packet - * - * @return PacketOgn - */ - public function getPacketOgn() - { - static $cache = array(); - $key = $this->id; - if (!isset($cache[$key])) { - if ($this->sourceId == 5) { - $cache[$key] = PacketOgnRepository::getInstance()->getObjectByPacketId($this->id); - } else { - $cache[$key] = new PacketOgn(null); - } - } - return $cache[$key]; - } - - /** - * Get Station - * @return Station - */ - public function getStationObject() { - return StationRepository::getInstance()->getObjectById($this->stationId); - } - - /** - * Get Sender - * @return Sender - */ - public function getSenderObject() { - return SenderRepository::getInstance()->getObjectById($this->senderId); - } -} diff --git a/htdocs/includes/models/packetogn.class.php b/htdocs/includes/models/packetogn.class.php deleted file mode 100644 index 5150d13..0000000 --- a/htdocs/includes/models/packetogn.class.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -class PacketOgn extends Model -{ - public function __construct($id) - { - parent::__construct($id); - - } -} diff --git a/htdocs/includes/models/packetpath.class.php b/htdocs/includes/models/packetpath.class.php deleted file mode 100644 index d82275b..0000000 --- a/htdocs/includes/models/packetpath.class.php +++ /dev/null @@ -1,10 +0,0 @@ -<?php - -class PacketPath extends Model -{ - public function __construct($id) - { - parent::__construct($id); - } - -} diff --git a/htdocs/includes/models/packettelemetry.class.php b/htdocs/includes/models/packettelemetry.class.php deleted file mode 100644 index 152e7f0..0000000 --- a/htdocs/includes/models/packettelemetry.class.php +++ /dev/null @@ -1,236 +0,0 @@ -<?php - -class PacketTelemetry extends Model -{ - - private $_stationTelemetryParam; - private $_stationTelemetryEqns; - private $_stationTelemetryBits; - private $_stationTelemetryUnit; - - public function __construct($id) - { - parent::__construct($id); - $this->_stationTelemetryParam = null; - $this->_stationTelemetryEqns = null; - $this->_stationTelemetryBits = null; - $this->_stationTelemetryUnit = null; - } - - /** - * Get value parameter name - * - * @param int $valNumber - * @return string - */ - public function getValueParameterName($valNumber) - { - if ($this->_stationTelemetryParam === null && $this->stationTelemetryParamId !== null) { - $this->_stationTelemetryParam = StationTelemetryParamRepository::getInstance()->getObjectById($this->stationTelemetryParamId); - } - - if ($this->_stationTelemetryParam !== null - && $this->_stationTelemetryParam->isExistingObject() - && isset($this->_stationTelemetryParam->{'p'.$valNumber}) - && $this->_stationTelemetryParam->{'p'.$valNumber} != '' - ) { - - return $this->_stationTelemetryParam->{'p'.$valNumber}; - } else { - return "Value$valNumber"; - } - } - - /** - * Get bit parameter name - * - * @param int $valNumber - * @return string - */ - public function getBitParameterName($valNumber) - { - if ($this->_stationTelemetryParam === null && $this->stationTelemetryParamId !== null) { - $this->_stationTelemetryParam = StationTelemetryParamRepository::getInstance()->getObjectById($this->stationTelemetryParamId); - } - - if ($this->_stationTelemetryParam !== null && $this->_stationTelemetryParam->isExistingObject() && $this->_stationTelemetryParam->{'b'.$valNumber} != '') { - return $this->_stationTelemetryParam->{'b'.$valNumber}; - } else { - return "Bit$valNumber"; - } - } - - /** - * Get value eqns - * - * @param int $valNumber - * @return numeric - */ - public function getEqnsValue($valNumber) - { - if ($this->_stationTelemetryEqns === null && $this->stationTelemetryEqnsId !== null) { - $this->_stationTelemetryEqns = StationTelemetryEqnsRepository::getInstance()->getObjectById($this->stationTelemetryEqnsId); - } - - if ($this->_stationTelemetryEqns !== null && $this->_stationTelemetryEqns->isExistingObject()) { - $a = $this->_stationTelemetryEqns->{'a'.$valNumber}; - $b = $this->_stationTelemetryEqns->{'b'.$valNumber}; - $c = $this->_stationTelemetryEqns->{'c'.$valNumber}; - - if ($a === null && $b === null) { - // User has sent us a faulty eqns, just return raw value - return Array(0, 1, 0); - } else { - if ($a === null) { - $a = 0; - } - if ($b === null) { - $b = 0; - } - if ($c === null) { - $c = 0; - } - return Array($a, $b, $c); - } - - } else { - // We have no eqns, just return raw value - return Array(0, 1, 0); - } - } - - /** - * Check if value is set value - * - * @param int $valNumber - * @return bool - */ - public function isValueSet($valNumber) - { - $val = $this->{'val'.$valNumber}; - if ($val !== null) { - return true; - } - return false; - } - - /** - * Get value - * - * @param int $valNumber - * @return numeric - */ - public function getValue($valNumber) - { - $val = $this->{'val'.$valNumber}; - - $eqns = $this->getEqnsValue($valNumber); - $a = $eqns[0]; - $b = $eqns[1]; - $c = $eqns[2]; - - if ($a == null && $b == null) { - // User has sent us a faulty eqns, just return raw value - return $val; - - } else { - $result = 0; - - if ($a != null) { - $result += $a * $val * $val; - } - - if ($b != null) { - $result += $b * $val; - } - - if ($c != null) { - $result += $c; - } - - return $result; - } - } - - /** - * Get value unit - * - * @param int $valNumber - * @return string - */ - public function getValueUnit($valNumber) - { - $unit = ''; // default - if ($this->_stationTelemetryUnit === null && $this->stationTelemetryUnitId !== null) { - $this->_stationTelemetryUnit = StationTelemetryUnitRepository::getInstance()->getObjectById($this->stationTelemetryUnitId); - } - - if ($this->_stationTelemetryUnit !== null && $this->_stationTelemetryUnit->isExistingObject()) { - $unit = ' ' . $this->_stationTelemetryUnit->{'u'.$valNumber}; - } - - return $unit; - } - - /** - * Get bit sense - * - * @param int $valNumber - * @return int - */ - public function getBitSense($valNumber) - { - if ($this->_stationTelemetryBits === null && $this->stationTelemetryBitsId !== null) { - $this->_stationTelemetryBits = StationTelemetryBitsRepository::getInstance()->getObjectById($this->stationTelemetryBitsId); - } - - $sense = 1; // default to 1 - if ($this->_stationTelemetryBits !== null && $this->_stationTelemetryBits->isExistingObject()) { - $sense = substr($this->_stationTelemetryBits->bits, $valNumber-1, 1); - } - - return $sense; - } - - /** - * Get bit - * - * @param int $valNumber - * @return int - */ - public function getBit($valNumber) - { - if ($this->_stationTelemetryBits === null && $this->stationTelemetryBitsId !== null) { - $this->_stationTelemetryBits = StationTelemetryBitsRepository::getInstance()->getObjectById($this->stationTelemetryBitsId); - } - - $sense = $this->getBitSense($valNumber); - - $bit = substr($this->bits, $valNumber-1, 1); - if (($sense == 1 && $bit == 1) || ($sense == 0 && $bit == 0)) { - return 1; - } else { - return 0; - } - } - - /** - * Get bit label - * - * @param int $valNumber - * @return int - */ - public function getBitLabel($valNumber) - { - if ($this->_stationTelemetryUnit === null && $this->stationTelemetryUnitId !== null) { - $this->_stationTelemetryUnit = StationTelemetryUnitRepository::getInstance()->getObjectById($this->stationTelemetryUnitId); - } - - $label = 'On'; // default - if ($this->_stationTelemetryUnit !== null && $this->_stationTelemetryUnit->isExistingObject()) { - $label = $this->_stationTelemetryUnit->{'l'.$valNumber}; - } - - return $label; - } -} diff --git a/htdocs/includes/models/packetweather.class.php b/htdocs/includes/models/packetweather.class.php deleted file mode 100644 index 134b1be..0000000 --- a/htdocs/includes/models/packetweather.class.php +++ /dev/null @@ -1,72 +0,0 @@ -<?php - -class PacketWeather extends Model -{ - public function __construct($id) - { - parent::__construct($id); - - } - - /** - * Returnes a rain summary string - * - * @param boolean $showRain1h - * @param boolean $showRain24h - * @param boolean $showRainSinceMidnight - * @return string - */ - public function getRainSummary($showRain1h = true, $showRain24h = true, $showRainSinceMidnight = true) - { - $result = $this->getRainSummaryList($showRain1h, $showRain24h, $showRainSinceMidnight); - - if (empty($result)) { - if ($this->rain_1h === null && $this->rain_24h === null && $this->rain_since_midnight === null) { - return 'No rain measurements received'; - } else { - return 'No other rain measurements received'; - } - } else { - return implode('
', $result); - } - } - - /** - * Returnes a rain summary array - * - * @param boolean $showRain1h - * @param boolean $showRain24h - * @param boolean $showRainSinceMidnight - * @return string - */ - public function getRainSummaryList($showRain1h = true, $showRain24h = true, $showRainSinceMidnight = true) - { - $result = []; - - if ($showRain1h && $this->rain_1h !== null) { - if (isImperialUnitUser()) { - $result[] = "Rain latest hour: " . round(convertMmToInch($this->rain_1h), 2) . " in"; - } else { - $result[] = "Rain latest hour: " . round($this->rain_1h, 2) . " mm"; - } - } - - if ($showRain24h && $this->rain_24h !== null) { - if (isImperialUnitUser()) { - $result[] = "Rain latest 24h hours: " . round(convertMmToInch($this->rain_24h), 2) . " in"; - } else { - $result[] = "Rain latest 24h hours: " . round($this->rain_24h, 2) . " mm"; - } - } - - if ($showRainSinceMidnight && $this->rain_since_midnight !== null) { - if (isImperialUnitUser()) { - $result[] = "Rain since midnight: " . round(convertMmToInch($this->rain_since_midnight), 2) . " in"; - } else { - $result[] = "Rain since midnight: " . round($this->rain_since_midnight, 2) . " mm"; - } - } - - return $result; - } -} diff --git a/htdocs/includes/models/sender.class.php b/htdocs/includes/models/sender.class.php deleted file mode 100644 index 4f61f6a..0000000 --- a/htdocs/includes/models/sender.class.php +++ /dev/null @@ -1,19 +0,0 @@ -<?php - -class Sender extends Model -{ - public function __construct($id) - { - parent::__construct($id); - } - - /** - * Get sender station - * - * @return Station - */ - public function getSenderStationObject() - { - return StationRepository::getInstance()->getObjectByNameAndSenderId($this->name, $this->id); - } -} diff --git a/htdocs/includes/models/station.class.php b/htdocs/includes/models/station.class.php deleted file mode 100644 index b3a91cb..0000000 --- a/htdocs/includes/models/station.class.php +++ /dev/null @@ -1,322 +0,0 @@ -<?php - -class Station extends Model -{ - public function __construct($id) - { - parent::__construct($id); - } - - /** - * Returnes likly ham radio callsign - * - * @return string - */ - public function getLiklyHamRadioCallsign() - { - if ($this->sourceId == 1 && $this->stationTypeId == 1) { - $pos = strpos($this->name, '-'); - if ($pos !== false) { - $callsign = substr($this->name, 0, $pos); - } else { - $callsign = $this->name; - } - - if (strlen($callsign) >= 3 && preg_match('~[0-9]~', substr($callsign, 1, strlen($callsign)-1))) { - // At least 3 letters and a digit somewhere in the middle - return $callsign; - } - } - - return null; - } - - - /** - * Returns OGN sender address - * - * @return string - */ - public function getOgnSenderAddress() - { - if (isset($this->latestOgnSenderAddress) && $this->latestOgnSenderAddress != '') { - return $this->latestOgnSenderAddress; - } - return null; - } - - /** - * Returns OGN device - * - * @return Model - */ - public function getOgnDevice() - { - static $cache = array(); - $key = $this->id; - if (!isset($cache[$key])) { - if (isset($this->latestOgnSenderAddress) && $this->latestOgnSenderAddress != '') { - $cache[$key] = ModelRepository::getInstance()->getObjectFromSql('select * from ogn_device where device_id = ?', [$this->latestOgnSenderAddress]); - } else { - $cache[$key] = null; - } - } - return $cache[$key]; - } - - /** - * Returns OGN device DB aircraft type name - * - * @return string - */ - public function getOgnDdbAircraftTypeName() - { - $ognDevice = $this->getOgnDevice(); - if ($ognDevice) { - switch ($ognDevice->ddbAircraftType) { - case 1: - return 'Glider/Motoglider'; - case 2: - return 'Plane'; - case 3: - return 'Ultralight'; - case 4: - return 'Helicopter'; - case 5: - return 'Drone/UAV'; - case 6: - return 'Other'; - } - } - return null; - } - - /** - * Returns OGN aircraft type name - * - * @return string - */ - public function getOgnAircraftTypeName() - { - if (isset($this->latestOgnAircraftTypeId) && $this->latestOgnAircraftTypeId != '') { - switch ($this->latestOgnAircraftTypeId) { - case 1: - return 'Glider'; - case 2: - return 'Tow Plane'; - case 3: - return 'Helicopter'; - case 4: - return 'Parachute'; - case 5: - return 'Drop Plane'; - case 6: - return 'Hang Glider'; - case 7: - return 'Para Glider'; - case 8: - return 'Powered Aircraft'; - case 9: - return 'Jet Aircraft'; - case 10: - return 'UFO'; - case 11: - return 'Balloon'; - case 12: - return 'Airship'; - case 13: - return 'UAV'; - case 14: - return ''; - case 15: - return 'Static Object'; - } - } - return null; - } - - /** - * Returns source description - * - * @return string - */ - public function getSourceDescription() - { - if (isset($this->sourceId) && $this->sourceId != '') { - if ($this->sourceId == 1) { - return '<a target="_blank" rel="nofollow" href="http://www.aprs-is.net/">APRS-IS</a>'; - } elseif ($this->sourceId == 2) { - return '<a target="_blank" rel="nofollow" href="http://wxqa.com/">CWOP (Citizen Weather Observer Program)</a>'; - } elseif ($this->sourceId == 5) { - return '<a target="_blank" rel="nofollow" href="http://wiki.glidernet.org/">OGN (Open Glider Network)</a>'; - } - } - return null; - } - - /** - * Get distance between specified lat/lng and the station latest position (confirmed position if exists) - * - * @param float $lat - * @param float $lng - * @return int; - */ - public function getDistance($lat, $lng) - { - static $cache = array(); - $key = $this->id . ':' . $lat . ':' . $lng; - if (!isset($cache[$key])) { - - $latestLatitude = null; - $latestLongitude = null; - if ($this->latestConfirmedLongitude !== null && $this->latestConfirmedLatitude !== null) { - $latestLatitude = $this->latestConfirmedLatitude; - $latestLongitude = $this->latestConfirmedLongitude; - } else if ($this->latestLongitude !== null && $this->latestLatitude !== null) { - $latestLatitude = $this->latestLatitude; - $latestLongitude = $this->latestLongitude; - } - - if ($lat !== null && $lng !== null && $latestLatitude !== null && $latestLongitude !== null) { - $theta = $lng - $latestLongitude; - $dist = sin(deg2rad($lat)) * sin(deg2rad($latestLatitude)) + cos(deg2rad($lat)) * cos(deg2rad($latestLatitude)) * cos(deg2rad($theta)); - $dist = acos($dist); - $dist = rad2deg($dist); - $miles = $dist * 60 * 1.1515; - $cache[$key] = round($miles * 1609.344, 0); - } else { - $cache[$key] = null; - } - } - return $cache[$key]; - } - - /** - * Returnes icon http path - * - * @param int $scaleWidth - * @param int $scaleHeight - * @return string - */ - public function getIconFilePath($scaleWidth = null, $scaleHeight = null) - { - if (strlen($this->latestConfirmedSymbol) >= 1 && strlen($this->latestConfirmedSymbolTable) >= 1) { - $symbolAsciiValue = ord(substr($this->latestConfirmedSymbol, 0, 1)); - $symbolTableAsciiValue = ord(substr($this->latestConfirmedSymbolTable, 0, 1)); - } else { - // Default values - $symbolAsciiValue = 125; - $symbolTableAsciiValue = 47; - } - - $scaleStrValue = ''; - if ($scaleWidth !== null && $scaleHeight !== null) { - $scaleStrValue = '-scale' . $scaleWidth . 'x' . $scaleHeight; - } - - return '/symbols/symbol-' . $symbolAsciiValue . '-' . $symbolTableAsciiValue . $scaleStrValue . '.png'; - } - - /** - * Get array of the latest used symbols for this station - * - * @param int $scaleWidth - * @param int $scaleHeight - * @return array - */ - public function getLatestIconFilePaths($scaleWidth = 24, $scaleHeight = 24) - { - $result = Array(); - if ($this->latestConfirmedPacketTimestamp > (time() - (60*60*24))) { - // Latest packet is not that old, go on - - $scaleStrValue = ''; - if ($scaleWidth !== null && $scaleHeight !== null) { - $scaleStrValue = '-scale' . $scaleWidth . 'x' . $scaleHeight; - } - - $sql = 'select symbol, symbol_table from packet where station_id = ? and timestamp > ? group by symbol, symbol_table'; - $stmt = PDOConnection::getInstance()->prepareAndExec($sql, [$this->id, $this->latestConfirmedPacketTimestamp - (60*60*24)]); - - $records = $stmt->fetchAll(PDO::FETCH_ASSOC); - foreach ($records as $record) { - - if (strlen($record['symbol']) >= 1 && strlen($record['symbol_table']) >= 1) { - $key = $record['symbol'] . ':' . $record['symbol_table']; - - $symbolAsciiValue = ord(substr($record['symbol'], 0, 1)); - $symbolTableAsciiValue = ord(substr($record['symbol_table'], 0, 1)); - $result[$key] = '/symbols/symbol-' . $symbolAsciiValue . '-' . $symbolTableAsciiValue . $scaleStrValue . '.png'; - } - } - } - - return array_values($result); - } - - /** - * Get packet frequency in number of seconds for the latest 10 packets - * - * @param string $date - * @param int &$numberOfPackets - * @return int - */ - public function getPacketFrequency($date = null, &$numberOfPackets) - { - $pdo = PDOConnection::getInstance(); - if ($this->latestPacketTimestamp !== null) { - $timestamp = $this->latestPacketTimestamp; - } else { - return null; - } - - // Find start timestamp - $sql = 'select timestamp ts from packet where station_id = ? and map_id in (1,2,5,7,9) and timestamp < ? order by timestamp desc limit 1'; - $stmt = $pdo->prepareAndExec($sql, [$this->id, $timestamp - 1]); - - $record = $stmt->fetch(PDO::FETCH_ASSOC); - if (!empty($record) && $record['ts'] != null && $record['ts'] < $timestamp) { - $startTimestamp = $timestamp - (($timestamp - $record['ts'])*10); - if ($timestamp - $startTimestamp < 600) { - $startTimestamp = $timestamp - 600; - } - } else { - if ($date === null) { - // Try to find frequency for the date before - $date = strftime('%Y-%m-%d', $timestamp - 86400); - return $this->getPacketFrequency($date, $numberOfPackets); - } else { - // Give up - return null; - } - } - - $sql = 'select (max(timestamp) - min(timestamp)) / count(*) freq, count(*) c from packet where station_id = ? and map_id in (1,2,5,7,9) and timestamp >= ?'; - $stmt = $pdo->prepareAndExec($sql, [$this->id, $startTimestamp]); - $record = $stmt->fetch(PDO::FETCH_ASSOC); - if (!empty($record) && $record['freq'] > 0) { - $numberOfPackets = $record['c']; - return $record['freq']; - } else { - return null; - } - } - - /* - * Returnes symbol description - * @param boolean $includeUndefinedOverlay - * @return string - */ - public function getLatestSymbolDescription($includeUndefinedOverlay = true) - { - $symbol = null; - $symbolTable = null; - - if (strlen($this->latestConfirmedSymbol) >= 1 && strlen($this->latestConfirmedSymbolTable) >= 1) { - $symbol = $this->latestConfirmedSymbol; - $symbolTable = $this->latestConfirmedSymbolTable; - } - - return getSymbolDescription($symbolTable, $symbol, $includeUndefinedOverlay); - } -} diff --git a/htdocs/includes/models/stationtelemetrybits.class.php b/htdocs/includes/models/stationtelemetrybits.class.php deleted file mode 100644 index 68078b7..0000000 --- a/htdocs/includes/models/stationtelemetrybits.class.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php - -class StationTelemetryBits extends Model -{ - public function __construct($id) - { - parent::__construct($id); - } -} diff --git a/htdocs/includes/models/stationtelemetryeqns.class.php b/htdocs/includes/models/stationtelemetryeqns.class.php deleted file mode 100644 index 1b3813f..0000000 --- a/htdocs/includes/models/stationtelemetryeqns.class.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php - -class StationTelemetryEqns extends Model -{ - public function __construct($id) - { - parent::__construct($id); - } -} diff --git a/htdocs/includes/models/stationtelemetryparam.class.php b/htdocs/includes/models/stationtelemetryparam.class.php deleted file mode 100644 index 5b3bf47..0000000 --- a/htdocs/includes/models/stationtelemetryparam.class.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php - -class StationTelemetryParam extends Model -{ - public function __construct($id) - { - parent::__construct($id); - } -} diff --git a/htdocs/includes/models/stationtelemetryunit.class.php b/htdocs/includes/models/stationtelemetryunit.class.php deleted file mode 100644 index c14b4b0..0000000 --- a/htdocs/includes/models/stationtelemetryunit.class.php +++ /dev/null @@ -1,9 +0,0 @@ -<?php - -class StationTelemetryUnit extends Model -{ - public function __construct($id) - { - parent::__construct($id); - } -} diff --git a/htdocs/includes/pdoconnection.class.php b/htdocs/includes/pdoconnection.class.php deleted file mode 100644 index dfc2bd8..0000000 --- a/htdocs/includes/pdoconnection.class.php +++ /dev/null @@ -1,164 +0,0 @@ -<?php - -class PDOConnection -{ - - private static $_singletonInstance = null; - private $_db; - private $_config; - - public function __construct() - { - $this->_config = parse_ini_file(ROOT . '/../config/trackdirect.ini', true); - } - - /** - * Connect to the database. - */ - private function createConnection() - { - if (is_array($this->_config) && isset($this->_config['database'])) { - $databaseconfig = $this->_config['database']; - - if (!isset($databaseconfig['username'])) { - $databaseconfig['username'] = get_current_user(); - } - - try { - $this->_db = new PDO( - sprintf( - 'pgsql:dbname=%s;host=%s;port=%s;user=%s;password=%s', - $databaseconfig['database'], - $databaseconfig['host'], - $databaseconfig['port'], - $databaseconfig['username'], - $databaseconfig['password'] - ), null, null, - array( - PDO::ATTR_PERSISTENT => false, - PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION - ) - ); - } catch (PDOException $e) { - echo $e; - throw new Exception("Failed to connect to database."); - } - } else { - throw new Exception("Failed to parse database ini file."); - } - } - - /** - * Returnes a PDO db connection - * - * @return PDO - */ - private function getConnection() - { - if($this->_db === null) { - $this->createConnection(); - } - - return $this->_db; - } - - /** - * Executes an SQL statement, returning a result set as a PDOStatement object - * - * @param string $sql - * @return PDOStatement - */ - public function query($sql) - { - return $this->getConnection()->query($sql); - } - - /** - * Prepares a statement for execution and returns a statement object - * - * @param string $sql - * @return PDOStatement - */ - public function prepare($sql) - { - return $this->getConnection()->prepare($sql); - } - - /** - * Prepares a statement for execution and execute the prepared statement. Returnes the statment object - * - * @param string $sql - * @param array $arguments - * @return PDOStatement - */ - public function prepareAndExec($sql, array $arguments = array()) - { - $statement = $this->prepare($sql); - $statement->execute($arguments); - return $statement; - } - - /** - * Initiates a transaction. Turns off autocommit mode. Returns TRUE on success or FALSE on failure. - * - * @return boolean - */ - public function beginTransaction() - { - $this->getConnection()->beginTransaction(); - } - - /** - * Commits a transaction. Returns TRUE on success or FALSE on failure. - * - * @return boolean - */ - public function commit() - { - $this->getConnection()->commit(); - } - - /** - * Rolls back the current transaction (that was started by beginTransaction). Returns TRUE on success or FALSE on failure. - * - * @return boolean - */ - public function rollBack() - { - $this->getConnection()->rollBack(); - } - - /** - * Get the ID of the last inserted record. - * - * @param string $table - * @param string $column - * @return int - */ - public function lastInsertId($table, $column) - { - $suffix = '_' . $column . '_seq'; - - /* The max length of an identifier is 63 characters, - * if table_column_seq exceeds this postgres cuts the - * table name by default. */ - $table = substr($table, 0, 63 - (strlen($suffix))); - $sequenceName = $table . $suffix; - - return $this->getConnection()->lastInsertId($sequenceName); - } - - /** - * Returnes an initiated PDOConnection - * - * @return PDOConnection - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new PDOConnection(); - } - - return self::$_singletonInstance; - } -} diff --git a/htdocs/includes/repositories/modelrepository.class.php b/htdocs/includes/repositories/modelrepository.class.php deleted file mode 100644 index 92d8d0d..0000000 --- a/htdocs/includes/repositories/modelrepository.class.php +++ /dev/null @@ -1,102 +0,0 @@ -<?php - -class ModelRepository -{ - - private $_class; - private static $_singletonInstance = null; - - public function __construct($class = 'Model') - { - $this->_class = $class; - } - - /** - * Returnes an initiated ModelRepository - * - * @return ModelRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new ModelRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Returns an object based on the provided sql - * - * @param string $sql - * @param array $arg - * @return StandardItem - */ - public function getObjectFromSql($sql, $arg) - { - $pdo = PDOConnection::getInstance(); - - $stmt = $pdo->prepareAndExec($sql, $arg); - if ($record = $stmt->fetch(PDO::FETCH_ASSOC)) { - return $this->_getObjectFromRecord($record); - } - - // No object found, return empty object - return new $this->_class(null); - } - - /** - * Returns an array of object based on the provided sql - * - * @param string $sql - * @param array $arg - * @return array - */ - public function getObjectListFromSql($sql, $arg) - { - $pdo = PDOConnection::getInstance(); - - $stmt = $pdo->prepareAndExec($sql, $arg); - $records = $stmt->fetchAll(PDO::FETCH_ASSOC); - if (is_array($records) && !empty($records)) { - return $this->_getObjectListFromRecords($records); - } - - // No object found, return empty array - return []; - } - - /** - * Returns an object based on the provided record - * - * @param array $record - * @return StandardItem - */ - protected function _getObjectFromRecord($record) - { - if (isset($record['id'])) { - $object = new $this->_class($record['id']); - } else { - $object = new $this->_class(0); - } - $object->updateObjectFromArray($record); - return $object; - } - - /** - * Returns a list of objects filled with values from the provided records - * - * @param array $records - * @return Array of StandardItem - */ - protected function _getObjectListFromRecords($records) - { - $list = Array(); - - foreach ($records as $record) { - $list[] = $this->_getObjectFromRecord($record); - } - - return $list; - } -} \ No newline at end of file diff --git a/htdocs/includes/repositories/packetognrepository.class.php b/htdocs/includes/repositories/packetognrepository.class.php deleted file mode 100644 index b692dca..0000000 --- a/htdocs/includes/repositories/packetognrepository.class.php +++ /dev/null @@ -1,54 +0,0 @@ -<?php - -class PacketOgnRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('PacketOgn'); - } - - /** - * Returnes an initiated PacketOgnRepository - * - * @return PacketOgnRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new PacketOgnRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return PacketOgn - */ - public function getObjectById($id) - { - if (!isInt($id)) { - return new PacketOgn(0); - } - return $this->getObjectFromSql('select * from packet_ogn where id = ?', [$id]); - } - - /** - * Get object by packet id - * - * @param int $id - * @return PacketOgn - */ - public function getObjectByPacketId($packetId) - { - if (!isInt($packetId)) { - return new PacketOgn(0); - } - return $this->getObjectFromSql('select * from packet_ogn where packet_id = ?', [$packetId]); - } -} diff --git a/htdocs/includes/repositories/packetpathrepository.class.php b/htdocs/includes/repositories/packetpathrepository.class.php deleted file mode 100644 index 6fa2494..0000000 --- a/htdocs/includes/repositories/packetpathrepository.class.php +++ /dev/null @@ -1,165 +0,0 @@ -<?php - -class PacketPathRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('PacketPath'); - } - - /** - * Returnes an initiated PacketPathRepository - * - * @return PacketPathRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new PacketPathRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return PacketPath - */ - public function getObjectById($id) - { - if (!isInt($packetId)) { - return new PacketPath(0); - } - return $this->getObjectFromSql('select * from packet_path where id = ?', [$id]); - } - - /** - * Get object by packet id - * - * @param int $id - * @return PacketPath - */ - public function getObjectListByPacketId($id) - { - if (!isInt($id)) { - return []; - } - return $this->getObjectListFromSql('select * from packet_path where packet_id = ?', [$id]); - } - - /** - * Get packet path statistics for sending station - * - * @param int $stationId - * @param int $minTimestamp - * @return array - */ - public function getSenderPacketPathSatistics($stationId, $minTimestamp = null) - { - if (!isInt($stationId)) { - return []; - } - if ($minTimestamp == null || !isInt($minTimestamp)) { - $minTimestamp = time() - (60*60*24*10); // Default to 10 days - } - $sql = 'select station_id, count(*) number_of_packets, max(timestamp) latest_timestamp, max(distance) longest_distance from packet_path where sending_station_id = ? and timestamp > ? and number = 0 and station_id != sending_station_id group by station_id order by max(timestamp) desc'; - $args = [$stationId, $minTimestamp]; - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $args); - return $stmt->fetchAll(PDO::FETCH_ASSOC); - } - - /** - * Get packet path statistics for receiving station - * - * @param int $stationId - * @param int $minTimestamp - * @return array - */ - public function getReceiverPacketPathSatistics($stationId, $minTimestamp = null) - { - if (!isInt($stationId)) { - return []; - } - if ($minTimestamp == null || !isInt($minTimestamp)) { - $minTimestamp = time() - (60*60*24*10); // Default to 10 days - } - $sql = 'select sending_station_id station_id, count(*) number_of_packets, max(timestamp) latest_timestamp, max(distance) longest_distance from packet_path where station_id = ? and timestamp > ? and number = 0 and station_id != sending_station_id group by sending_station_id order by max(timestamp) desc'; - $args = [$stationId, $minTimestamp]; - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $args); - return $stmt->fetchAll(PDO::FETCH_ASSOC); - } - - /** - * Get latest data list by receiving station id - * - * @param int $stationId - * @param int $hours - * @param int $limit - * @return array - */ - public function getLatestDataListByReceivingStationId($stationId, $hours, $limit) - { - if (!isInt($stationId) || !isInt($hours)) { - return []; - } - $minTimestamp = time() - (60*60*$hours); - - $sql = 'select pp.* - from packet_path pp - where pp.station_id = ? - and pp.timestamp >= ? - and pp.number = 0 - and pp.sending_latitude is not null - and pp.sending_longitude is not null - order by pp.timestamp - limit ?'; - - $arg = [$stationId, $minTimestamp, $limit]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $arg); - return $stmt->fetchAll(PDO::FETCH_ASSOC); - } - - /** - * Get latest data list by receiving station id (will try to exclude stationary sending stations) - * - * @param int $stationId - * @param int $hours - * @param int $limit - * @return array - */ - public function getLatestMovingDataListByReceivingStationId($stationId, $hours, $limit) - { - if (!isInt($stationId) || !isInt($hours)) { - return []; - } - $minTimestamp = time() - (60*60*$hours); - - $sql = 'select pp.* - from packet_path pp - join station s on s.id = pp.sending_station_id - where pp.station_id = ? - and pp.timestamp >= ? - and pp.number = 0 - and pp.sending_latitude is not null - and pp.sending_longitude is not null - and pp.sending_latitude != s.latest_confirmed_latitude - and pp.sending_longitude != s.latest_confirmed_longitude - order by pp.timestamp - limit ?'; - - $arg = [$stationId, $minTimestamp, $limit]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $arg); - return $stmt->fetchAll(PDO::FETCH_ASSOC); - } -} diff --git a/htdocs/includes/repositories/packetrepository.class.php b/htdocs/includes/repositories/packetrepository.class.php deleted file mode 100644 index 9cbf810..0000000 --- a/htdocs/includes/repositories/packetrepository.class.php +++ /dev/null @@ -1,213 +0,0 @@ -<?php - -class PacketRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('Packet'); - } - - /** - * Returnes an initiated PacketRepository - * - * @return PacketRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new PacketRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @param int $timestamp - * @return Packet - */ - public function getObjectById($id, $timestamp) - { - if (!isInt($id) || !isInt($timestamp)) { - return new Packet(0); - } - return $this->getObjectFromSql('select * from packet where id = ? and timestamp = ?', [$id, $timestamp]); - } - - /** - * Get object list with raw by station id for the latest 24 hours - * - * @param int $stationId - * @param int $limit - * @param int $offset - * @return array - */ - public function getObjectListWithRawByStationId($stationId, $limit, $offset) - { - if (!isInt($stationId) || !isInt($limit) || !isInt($offset)) { - return []; - } - $sql = 'select packet.* from packet packet where station_id = ? and timestamp > ? and raw is not null order by timestamp desc, id desc limit ? offset ?'; - $parameters = [$stationId, time() - (24*60*60), $limit, $offset]; - return $this->getObjectListFromSql($sql, $parameters); - } - - /** - * Get number of packets with raw by station id for the latest 24 hours - * - * @param int $stationId - * @return int - */ - public function getNumberOfPacketsWithRawByStationId($stationId) - { - if (!isInt($stationId)) { - return 0; - } - $sql = 'select count(*) c from packet where station_id = ? and timestamp > ? and raw is not null'; - $parameters = [$stationId, time() - (24*60*60)]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $parameters); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $sum = 0; - foreach($rows as $row) { - $sum += $row['c']; - } - - return $sum; - } - - /** - * Get object list with raw by sender station id for the latest 24 hours - * - * @param int $stationId - * @param int $limit - * @param int $offset - * @return array - */ - public function getObjectListWithRawBySenderStationId($stationId, $limit, $offset) - { - if (!isInt($stationId) || !isInt($limit) || !isInt($offset)) { - return []; - } - $sql = 'select packet.* from packet where sender_id in (select latest_sender_id from station where id = ?) and timestamp > ? and raw is not null order by timestamp desc, id desc limit ? offset ?'; - $parameters = [$stationId, time() - (24*60*60), $limit, $offset]; - return $this->getObjectListFromSql($sql, $parameters); - } - - /** - * Get number of packets with raw by sender station id for the latest 24 hours - * - * @param int $stationId - * @return int - */ - public function getNumberOfPacketsWithRawBySenderStationId($stationId) - { - if (!isInt($stationId)) { - return 0; - } - $sql = 'select count(*) c from packet where sender_id in (select latest_sender_id from station where id = ?) and timestamp > ? and raw is not null'; - $parameters = [$stationId, time() - (24*60*60)]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $parameters); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $sum = 0; - foreach($rows as $row) { - $sum += $row['c']; - } - return $sum; - } - - /** - * Get latest confirmed position packet object by station id - * - * @param int $stationId - * @return Packet - */ - public function getLatestConfirmedObjectByStationId($stationId) - { - if (!isInt($stationId)) { - return new Packet(0); - } - $station = StationRepository::getInstance()->getObjectById($stationId); - if ($station->isExistingObject()) { - return $this->getObjectById($station->latestConfirmedPacketId, $station->latestConfirmedPacketTimestamp); - } - return new Packet(null); - } - - /** - * Get latest packet data list by station id (useful for creating a chart) - * - * @param int $stationId - * @param int $numberOfHours - * @param array $columns - * @return Array - */ - public function getLatestDataListByStationId($stationId, $numberOfHours, $columns) - { - $result = Array(); - if (!isInt($stationId) || !isInt($numberOfHours)) { - return $result; - } - - if (!in_array('timestamp', $columns)) { - // Just to be sure - $columns[] = 'timestamp'; - } - - $startTimestamp = time() - $numberOfHours*60*60; - $sql = 'select ' . implode(',', $columns) . ', position_timestamp from packet - where station_id = ? - and timestamp >= ? - and (speed is not null or altitude is not null) - and map_id in (1,12,5,7,9) - order by timestamp'; - $arg = [$stationId, $startTimestamp]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $arg); - $records = $stmt->fetchAll(PDO::FETCH_ASSOC); - foreach ($records as $record) { - - // Add value for position start if position start is within interval - if ($record['position_timestamp'] != null && $record['position_timestamp'] < $record['timestamp'] && $record['position_timestamp'] >= $startTimestamp) { - $posRecord = $record; - $posRecord['timestamp'] = $posRecord['position_timestamp']; - unset($posRecord['position_timestamp']); - $result[] = $posRecord; - } - - // Add value from found packet - unset($record['position_timestamp']); - $result[] = $record; - } - - return $result; - } - - /** - * Get object list (only confirmed) - * @param array $stationIdList - * @param int $startTimestamp - * @param int $endTimestamp - * @return array - */ - public function getConfirmedObjectListByStationIdList($stationIdList, $startTimestamp, $endTimestamp) { - if (!isInt($startTimestamp) || !isInt($endTimestamp)) { - return $result; - } - - $sql = 'select * from packet where station_id in (' . implode(',', $stationIdList) . ') and timestamp > ? and timestamp < ? and map_id = 1 order by timestamp'; - $parameters = [$startTimestamp, $endTimestamp]; - return $this->getObjectListFromSql($sql, $parameters); - } -} diff --git a/htdocs/includes/repositories/packettelemetryrepository.class.php b/htdocs/includes/repositories/packettelemetryrepository.class.php deleted file mode 100644 index 1254ee8..0000000 --- a/htdocs/includes/repositories/packettelemetryrepository.class.php +++ /dev/null @@ -1,221 +0,0 @@ -<?php - -class PacketTelemetryRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('PacketTelemetry'); - } - - /** - * Returnes an initiated PacketTelemetryRepository - * - * @return PacketTelemetryRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new PacketTelemetryRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @param int $timestamp - * @return PacketTelemetry - */ - public function getObjectById($id, $timestamp) - { - if (!isInt($id) || !isInt($timestamp)) { - return new PacketTelemetry(0); - } - return $this->getObjectFromSql('select * from packet_telemetry where id = ? and timestamp = ?', [$id, $timestamp]); - } - - /** - * Get object by packet id - * - * @param int $id - * @param int $timestamp - * @return PacketTelemetry - */ - public function getObjectByPacketId($id, $timestamp) - { - if (!isInt($id) || !isInt($timestamp)) { - return new PacketTelemetry(0); - } - return $this->getObjectFromSql('select * from packet_telemetry where packet_id = ? and timestamp = ?', [$id, $timestamp]); - } - - /** - * Get latest object by station id (for the latest 3 days) - * - * @param int $stationId - * @return array - */ - public function getLatestObjectByStationId($stationId) - { - if (!isInt($stationId)) { - return new PacketTelemetry(0); - } - return $this->getObjectFromSql( - 'select * from packet_telemetry - where station_id = ? - and timestamp > ? - order by timestamp desc limit 1', [$stationId, (time() - 24*60*60*3)] - ); - } - - /** - * Get latest object list by station id (useful for creating a chart) - * - * @param int $stationId - * @param int $endTimestamp - * @param int $hours - * @param array $columns - * @return array - */ - public function getLatestDataListByStationId($stationId, $endTimestamp , $hours, $columns) - { - if (!isInt($stationId) || !isInt($endTimestamp) || !isInt($hours)) { - return []; - } - $minTimestamp = $endTimestamp - (60*60*$hours); - - $sql = 'select ' . implode(',', $columns) . ' from ' . $table . ' - where station_id = ? - and timestamp >= ? - and timestamp <= ? - order by timestamp'; - $arg = [$stationId, $minTimestamp, $endTimestamp]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $arg); - return $stmt->fetchAll(PDO::FETCH_ASSOC); - } - - /** - * Get latest object list by station id - * We only include telemetry that has the same params, units and eqns as the latest telemetry packet - * - * @param int $stationId - * @param int $limit - * @param int $offset - * @param int $maxDays - * @return array - */ - public function getLatestObjectListByStationId($stationId, $limit, $offset, $maxDays = 7) - { - if (!isInt($stationId) || !isInt($limit) || !isInt($offset) || !isInt($maxDays)) { - return []; - } - $latestObject = $this->getLatestObjectByStationId($stationId); - - $sqlParameters = Array(); - $sql = 'select * from packet_telemetry where station_id = ? and timestamp > ?'; - $sqlParameters[] = $stationId; - $sqlParameters[] = (time() - 24*60*60*$maxDays); - - if ($latestObject->stationTelemetryParamId !== null) { - $sql .= ' and station_telemetry_param_id = ?'; - $sqlParameters[] = $latestObject->stationTelemetryParamId; - } else { - $sql .= ' and station_telemetry_param_id is null'; - } - - if ($latestObject->stationTelemetryUnitId !== null) { - $sql .= ' and station_telemetry_unit_id = ?'; - $sqlParameters[] = $latestObject->stationTelemetryUnitId; - } else { - $sql .= ' and station_telemetry_unit_id is null'; - } - - // if ($latestObject->stationTelemetryEqnsId !== null) { - // $sql .= ' and station_telemetry_eqns_id = ?'; - // $sqlParameters[] = $latestObject->stationTelemetryEqnsId; - // } else { - // $sql .= ' and station_telemetry_eqns_id is null'; - // } - - if ($latestObject->stationTelemetryBitsId !== null) { - $sql .= ' and station_telemetry_bits_id = ?'; - $sqlParameters[] = $latestObject->stationTelemetryBitsId; - } else { - $sql .= ' and station_telemetry_bits_id is null'; - } - - $sql .= ' order by timestamp desc limit ? offset ?'; - $sqlParameters[] = $limit; - $sqlParameters[] = $offset; - - return $this->getObjectListFromSql($sql, $sqlParameters); - } - - - /** - * Get latest number of packets by station id - * We only include telemetry that has the same params, units and eqns as the latest telemetry packet - * - * @param int $stationId - * @param int $maxDays - * @return int - */ - public function getLatestNumberOfPacketsByStationId($stationId, $maxDays = 7) - { - if (!isInt($stationId) || !isInt($maxDays)) { - return 0; - } - $latestObject = $this->getLatestObjectByStationId($stationId); - - $sqlParameters = Array(); - $sql = 'select count(*) c from packet_telemetry where station_id = ? and timestamp > ?'; - $sqlParameters[] = $stationId; - $sqlParameters[] = (time() - 24*60*60*$maxDays); - - if ($latestObject->stationTelemetryParamId !== null) { - $sql .= ' and station_telemetry_param_id = ?'; - $sqlParameters[] = $latestObject->stationTelemetryParamId; - } else { - $sql .= ' and station_telemetry_param_id is null'; - } - - if ($latestObject->stationTelemetryUnitId !== null) { - $sql .= ' and station_telemetry_unit_id = ?'; - $sqlParameters[] = $latestObject->stationTelemetryUnitId; - } else { - $sql .= ' and station_telemetry_unit_id is null'; - } - - // if ($latestObject->stationTelemetryEqnsId !== null) { - // $sql .= ' and station_telemetry_eqns_id = ?'; - // $sqlParameters[] = $latestObject->stationTelemetryEqnsId; - // } else { - // $sql .= ' and station_telemetry_eqns_id is null'; - // } - - if ($latestObject->stationTelemetryBitsId !== null) { - $sql .= ' and station_telemetry_bits_id = ?'; - $sqlParameters[] = $latestObject->stationTelemetryBitsId; - } else { - $sql .= ' and station_telemetry_bits_id is null'; - } - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $sqlParameters); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $sum = 0; - foreach($rows as $row) { - $sum += $row['c']; - } - - return $sum; - } -} diff --git a/htdocs/includes/repositories/packetweatherrepository.class.php b/htdocs/includes/repositories/packetweatherrepository.class.php deleted file mode 100644 index 8f0d78e..0000000 --- a/htdocs/includes/repositories/packetweatherrepository.class.php +++ /dev/null @@ -1,157 +0,0 @@ -<?php - -class PacketWeatherRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('PacketWeather'); - } - - /** - * Returnes an initiated PacketWeatherRepository - * - * @return PacketWeatherRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new PacketWeatherRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @param int $timestamp - * @return PacketWeather - */ - public function getObjectById($id, $timestamp) - { - if (!isInt($id) || !isInt($timestamp)) { - return new PacketWeather(0); - } - return $this->getObjectFromSql('select * from packet_weather where id = ? and timestamp = ?', [$id, $timestamp]); - } - - /** - * Get object by packet id - * - * @param int $id - * @param int $timestamp - * @return PacketWeather - */ - public function getObjectByPacketId($id, $timestamp) - { - if (!isInt($id) || !isInt($timestamp)) { - return new PacketWeather(0); - } - return $this->getObjectFromSql('select * from packet_weather where packet_id = ? and timestamp = ?', [$id, $timestamp]); - } - - /** - * Get latest object list by station id (useful for creating a chart) - * - * @param int $stationId - * @param int $endTimestamp - * @param int $hours - * @param array $columns - * @return array - */ - public function getLatestDataListByStationId($stationId, $endTimestamp, $hours, $columns) - { - if (!isInt($stationId) || !isInt($endTimestamp) || !isInt($hours)) { - return []; - } - $minTimestamp = $endTimestamp - (60*60*$hours); - - $sql = 'select ' . implode(',', $columns) . ' from packet_weather - where station_id = ? - and timestamp >= ? - and timestamp <= ? - order by timestamp'; - $arg = [$stationId, $minTimestamp, $endTimestamp]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $arg); - return $stmt->fetchAll(PDO::FETCH_ASSOC); - } - - /** - * Get latest object list by station id - * - * @param int $stationId - * @param int $limit - * @param int $offset - * @param int $maxDays - * @return array - */ - public function getLatestObjectListByStationIdAndLimit($stationId, $limit, $offset, $maxDays = 7) - { - if (!isInt($stationId) || !isInt($limit) || !isInt($offset) || !isInt($maxDays)) { - return []; - } - return $this->getObjectListFromSql( - 'select * from packet_weather - where station_id = ? - and timestamp > ? - and (humidity is not null - or pressure is not null - or rain_1h is not null - or rain_24h is not null - or rain_since_midnight is not null - or temperature is not null - or wind_direction is not null - or wind_gust is not null - or wind_speed is not null - or luminosity is not null - or snow is not null) - order by timestamp desc limit ? offset ?', [$stationId, (time() - 24*60*60*$maxDays), $limit, $offset] - ); - } - - /** - * Get latest number of packets by station id - * - * @param int $stationId - * @param int $maxDays - * @return int - */ - public function getLatestNumberOfPacketsByStationIdAndLimit($stationId, $maxDays = 7) - { - if (!isInt($stationId) || !isInt($maxDays)) { - return 0; - } - $sql = 'select count(*) c from packet_weather - where station_id = ? - and timestamp > ? - and (humidity is not null - or pressure is not null - or rain_1h is not null - or rain_24h is not null - or rain_since_midnight is not null - or temperature is not null - or wind_direction is not null - or wind_gust is not null - or wind_speed is not null - or luminosity is not null - or snow is not null)'; - $parameters = [$stationId, (time() - 24*60*60*$maxDays)]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $parameters); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $sum = 0; - foreach($rows as $row) { - $sum += $row['c']; - } - - return $sum; - } -} diff --git a/htdocs/includes/repositories/senderrepository.class.php b/htdocs/includes/repositories/senderrepository.class.php deleted file mode 100644 index b9e2293..0000000 --- a/htdocs/includes/repositories/senderrepository.class.php +++ /dev/null @@ -1,46 +0,0 @@ -<?php - -class SenderRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('Sender'); - } - - /** - * Returnes an initiated SenderRepository - * - * @return SenderRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new SenderRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return Sender - */ - public function getObjectById($id) - { - if (!isInt($id)) { - return new Sender(0); - } - - static $cache = array(); - $key = $id; - if (!isset($cache[$key])) { - $cache[$key] = $this->getObjectFromSql('select * from sender where id = ?', [$id]); - } - return $cache[$key]; - } -} diff --git a/htdocs/includes/repositories/stationrepository.class.php b/htdocs/includes/repositories/stationrepository.class.php deleted file mode 100644 index 315aac2..0000000 --- a/htdocs/includes/repositories/stationrepository.class.php +++ /dev/null @@ -1,473 +0,0 @@ -<?php - -class StationRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - private $_config; - - public function __construct() - { - parent::__construct('Station'); - $this->_config = parse_ini_file(ROOT . '/../config/trackdirect.ini', true); - } - - /** - * Returnes an initiated StationRepository - * - * @return StationRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new StationRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return Station - */ - public function getObjectById($id) - { - if (!isInt($id)) { - return new Station(0); - } - - static $cache = array(); - $key = $id; - if (!isset($cache[$key])) { - $cache[$key] = $this->getObjectFromSql('select * from station where id = ?', [$id]); - } - return $cache[$key]; - } - - /** - * Get object by name - * - * @param string $name - * @return Station - */ - public function getObjectByName($name) - { - if (!is_string($name)) { - return new Station(0); - } - - static $cache = array(); - $key = $name; - if (!isset($cache[$key])) { - $cache[$key] = $this->getObjectFromSql('select * from station where name = ? order by latest_location_packet_timestamp desc limit 1', [$name]); - } - return $cache[$key]; - } - - /** - * Get sender station object by sender id - * - * @param string $name - * @param int $senderId - * @return Station - */ - public function getSenderStationObjectBySenderId($senderId) - { - if (!isInt($senderId)) { - return new Station(0); - } - - static $cache = array(); - $key = $senderId; - if (!isset($cache[$key])) { - $cache[$key] = $this->getObjectFromSql('select station.* from station, sender where station.latest_sender_id = sender.id and sender.name = station.name and sender.id = ? and station.station_type_id = 1', [$senderId]); - } - return $cache[$key]; - } - - /** - * Get object by name and sender id - * - * @param string $name - * @param int $senderId - * @return Station - */ - public function getObjectByNameAndSenderId($name, $senderId) - { - if (!is_string($name) || !isInt($senderId)) { - return new Station(0); - } - - static $cache = array(); - $key = $name . ';' . $senderId; - if (!isset($cache[$key])) { - $cache[$key] = $this->getObjectFromSql('select * from station where name = ? and latest_sender_id = ?', [$name, $senderId]); - } - return $cache[$key]; - } - - - /** - * Get object list - * - * @param int $activeDuringLatestNumberOfSeconds - * @param int $limit - * @param int $offset - * @return array - */ - public function getObjectList($activeDuringLatestNumberOfSeconds = (24*60*60), $limit, $offset) - { - if ($activeDuringLatestNumberOfSeconds == 0) { - $activeDuringLatestNumberOfSeconds = time(); - } - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepare( - 'select * from station - where latest_confirmed_packet_timestamp is not null - and latest_confirmed_packet_timestamp > ? - and (source_id != 5 or latest_confirmed_packet_timestamp > ?) - order by latest_confirmed_packet_timestamp desc - limit ? offset ?' - ); - $stmt->bindValue(1, (time() - $activeDuringLatestNumberOfSeconds)); - $stmt->bindValue(2, (time() - (60*60*24))); // OGN data should be deleted after 24h, but just to be safe we avoid including older data when searching - $stmt->bindValue(3, $limit); - $stmt->bindValue(4, $offset); - - $stmt->execute(); - $records = $stmt->fetchAll(PDO::FETCH_ASSOC); - if (is_array($records) && !empty($records)) { - return $this->_getObjectListFromRecords($records); - } - - // No object found, return empty array - return []; - } - - /** - * Get number of stations - * - * @param int $activeDuringLatestNumberOfSeconds - * @return int - */ - public function getNumberOfStations($activeDuringLatestNumberOfSeconds = (24*60*60)) - { - if ($activeDuringLatestNumberOfSeconds == 0) { - $activeDuringLatestNumberOfSeconds = time(); - } - - $sql = 'select count(*) c from station - where latest_confirmed_packet_timestamp is not null - and latest_confirmed_packet_timestamp > ? - and (source_id != 5 or latest_confirmed_packet_timestamp > ?)'; - $parameters = [(time() - $activeDuringLatestNumberOfSeconds), (time() - (60*60*24))]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $parameters); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $sum = 0; - foreach($rows as $row) { - $sum += $row['c']; - } - - return $sum; - } - - /** - * Get object list by query string - * - * @param int $q - * @param int $activeDuringLatestNumberOfSeconds - * @param int $limit - * @param int $offset - * @return array - */ - public function getObjectListByQueryString($q, $activeDuringLatestNumberOfSeconds = (24*60*60), $limit, $offset) - { - if (!is_string($q) || !isInt($limit)) { - return []; - } - - if ($activeDuringLatestNumberOfSeconds == 0) { - $activeDuringLatestNumberOfSeconds = time(); - } - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepare(' - select s.* - from station s - left outer join ogn_device d on d.device_id = s.latest_ogn_sender_address - where s.latest_confirmed_packet_timestamp is not null - and s.latest_confirmed_packet_timestamp > ? - and (s.source_id != 5 or s.latest_confirmed_packet_timestamp > ?) - and (s.name ilike ? or d.registration ilike ? or d.cn ilike ?) - order by name - limit ? offset ?' - ); - $stmt->bindValue(1, (time() - $activeDuringLatestNumberOfSeconds)); - $stmt->bindValue(2, (time() - (60*60*24))); // OGN data should be deleted after 24h, but just to be safe we avoid including older data when searching - $stmt->bindValue(3, "$q%"); - $stmt->bindValue(4, "$q%"); - $stmt->bindValue(5, "$q%"); - $stmt->bindValue(6, $limit); - $stmt->bindValue(7, $offset); - - $stmt->execute(); - $records = $stmt->fetchAll(PDO::FETCH_ASSOC); - if (is_array($records) && !empty($records)) { - return $this->_getObjectListFromRecords($records); - } - - // No object found, return empty array - return []; - } - - /** - * Get number of stations by query string - * - * @param int $q - * @param int $activeDuringLatestNumberOfSeconds - * @return int - */ - public function getNumberOfStationsByQueryString($q, $activeDuringLatestNumberOfSeconds = (24*60*60)) - { - if (!is_string($q)) { - return 0; - } - - if ($activeDuringLatestNumberOfSeconds == 0) { - $activeDuringLatestNumberOfSeconds = time(); - } - - $sql = 'select count(*) c from station - where latest_confirmed_packet_timestamp is not null - and latest_confirmed_packet_timestamp > ? - and (source_id != 5 or latest_confirmed_packet_timestamp > ?) - and name ilike ?'; - $parameters = [(time() - $activeDuringLatestNumberOfSeconds), (time() - (60*60*24)), "$q%"]; - - $pdo = PDOConnection::getInstance(); - $stmt = $pdo->prepareAndExec($sql, $parameters); - $rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - - $sum = 0; - foreach($rows as $row) { - $sum += $row['c']; - } - - return $sum; - } - - /** - * Get object list by sender id (close to specified lat/lng) - * - * @param int $senderId - * @param int $limit - * @param float $latitude - * @param float $longitude - * @return array - */ - public function getObjectListBySenderId($senderId, $limit, $latitude = null, $longitude = null) - { - if (!isInt($senderId) || !isFloat($latitude) || !isFloat($longitude) || !isInt($limit)) { - return []; - } - - $pdo = PDOConnection::getInstance(); - - if ($latitude === null || $longitude === null) { - $stmt = $pdo->prepare( - 'select * from station - where latest_confirmed_packet_timestamp is not null - and latest_confirmed_packet_timestamp > ? - and latest_sender_id = ? - limit ?' - ); - $stmt->bindValue(1, (time() - 60*60*24)); - $stmt->bindValue(2, $senderId); - $stmt->bindValue(3, $limit); - } else { - $stmt = $pdo->prepare( - 'select * from station - where latest_confirmed_packet_timestamp is not null - and latest_confirmed_packet_timestamp > ? - and latest_sender_id = ? - order by (abs(latest_confirmed_latitude - ?) + abs(latest_confirmed_longitude - ?)) - limit ?' - ); - $stmt->bindValue(1, (time() - 60*60*24)); - $stmt->bindValue(2, $senderId); - $stmt->bindValue(3, $latitude); - $stmt->bindValue(4, $longitude); - $stmt->bindValue(5, $limit); - } - $stmt->execute(); - $records = $stmt->fetchAll(PDO::FETCH_ASSOC); - if (is_array($records) && !empty($records)) { - return $this->_getObjectListFromRecords($records); - } - - // No object found, return empty array - return []; - } - - /** - * Get related object list by station id (stations with same name but different SSID) - * - * @param int $stationId - * @param int $limit - * @return array - */ - public function getRelatedObjectListByStationId($stationId, $limit) - { - if (!isInt($stationId) || !isInt($limit)) { - return []; - } - - $station = $this->getObjectById($stationId); - $name = $station->name; - $pos = strrpos($name, '-'); - if ($pos) { - $call = substr($name, 0, $pos); - } else { - // No object found, return empty array - return []; - } - - if ($station->latestPacketTimestamp !== null) { - $time = $station->latestPacketTimestamp; - } else { - $time = time(); - } - - $pdo = PDOConnection::getInstance(); - - if ($station->latestConfirmedLatitude === null || $station->latestConfirmedLongitude === null) { - $stmt = $pdo->prepare( - 'select * from station - where latest_confirmed_packet_timestamp is not null - and latest_confirmed_packet_timestamp > ? - and name like ? - limit ?' - ); - $stmt->bindValue(1, $time - 60*60*24, PDO::PARAM_STR); - $stmt->bindValue(2, "$call%", PDO::PARAM_STR); - $stmt->bindValue(3, $limit); - } else { - $stmt = $pdo->prepare( - 'select * from station - where latest_confirmed_packet_timestamp is not null - and latest_confirmed_packet_timestamp > ? - and name like ? - order by (abs(latest_confirmed_latitude - ?) + abs(latest_confirmed_longitude - ?)) - limit ?' - ); - $stmt->bindValue(1, $station->latestPacketTimestamp - 60*60*24, PDO::PARAM_STR); - $stmt->bindValue(2, "$call%", PDO::PARAM_STR); - $stmt->bindValue(3, $station->latestConfirmedLatitude); - $stmt->bindValue(4, $station->latestConfirmedLongitude); - $stmt->bindValue(5, $limit); - } - $stmt->execute(); - $records = $stmt->fetchAll(PDO::FETCH_ASSOC); - if (is_array($records) && !empty($records)) { - return $this->_getObjectListFromRecords($records); - } - - // No object found, return empty array - return []; - } - - /** - * Get object list of stations near specified position - * - * @param int $latitude - * @param int $longitude - * @param int $maxDistanceInKm - * @param int $limit - * @return array - */ - public function getCloseByObjectListByPosition($latitude, $longitude, $maxDistanceInKm = 100, $limit = 10000) - { - if (!isFloat($latitude) || !isFloat($longitude) || !isInt($maxDistanceInKm) || !isInt($limit)) { - return []; - } - - if ($maxDistanceInKm <= 10) { - // Plus 0.1 should be about 11km - $minLatitude = $latitude - 0.1; - $maxLatitude = $latitude + 0.1; - $minLongitude = $longitude - 0.1; - $maxLongitude = $longitude + 0.1; - } else { - // Plus 1 should be about 111km - $minLatitude = $latitude - 1; - $maxLatitude = $latitude + 1; - $minLongitude = $longitude - 1; - $maxLongitude = $longitude + 1; - } - - $minTimestamp = time() - 60*60; // Latest 1h is pretty fast - - // The order by used here is not 100% accurate, but it's fast :-) - $list = $this->getObjectListFromSql( - 'select * from station - where latest_confirmed_latitude > ? - and latest_confirmed_latitude < ? - and latest_confirmed_longitude > ? - and latest_confirmed_longitude < ? - and latest_confirmed_packet_timestamp > ? - order by (abs(latest_confirmed_latitude - ?) + abs(latest_confirmed_longitude - ?)) - limit ?', [$minLatitude, $maxLatitude, $minLongitude, $maxLongitude, $minTimestamp, $latitude, $longitude, $limit] - ); - - $orderedList = []; - foreach ($list as $closeByStation) { - $distance = $closeByStation->getDistance($latitude, $longitude); - if ($distance !== null && $distance <= ($maxDistanceInKm*1000)) { - $key = intval($distance); - while (isset($orderedList[$key])) { - $key++; - } - $orderedList[$key] = $closeByStation; - } - } - ksort($orderedList); - return array_values($orderedList); - } - - /** - * Get object list of stations near specified station - * - * @param int $stationId - * @param int $limit - * @return array - */ - public function getCloseByObjectListByStationId($stationId, $limit) - { - if (!isInt($stationId) || !isInt($limit)) { - return []; - } - - $station = $this->getObjectById($stationId); - if ($station->latestConfirmedLatitude === null || $station->latestConfirmedLongitude === null) { - return []; - } - - $closeByStationList = self::getCloseByObjectListByPosition($station->latestConfirmedLatitude, $station->latestConfirmedLongitude, 100, $limit + 1); - $result = Array(); - foreach ($closeByStationList as $key => $closeByStation) { - if ($station->getId() == $closeByStation->getId()) { - break; - } - } - if (isset($key)) { - unset($closeByStationList[$key]); - } - return $closeByStationList; - } -} diff --git a/htdocs/includes/repositories/stationtelemetrybitsrepository.class.php b/htdocs/includes/repositories/stationtelemetrybitsrepository.class.php deleted file mode 100644 index 290efe3..0000000 --- a/htdocs/includes/repositories/stationtelemetrybitsrepository.class.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -class StationTelemetryBitsRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('StationTelemetryBits'); - } - - /** - * Returnes an initiated StationTelemetryBitsRepository - * - * @return StationTelemetryBitsRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new StationTelemetryBitsRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return StationTelemetryBits - */ - public function getObjectById($id) - { - return $this->getObjectFromSql('select * from station_telemetry_bits where id = ?', [$id]); - } -} diff --git a/htdocs/includes/repositories/stationtelemetryeqnsrepository.class.php b/htdocs/includes/repositories/stationtelemetryeqnsrepository.class.php deleted file mode 100644 index 6fb72bf..0000000 --- a/htdocs/includes/repositories/stationtelemetryeqnsrepository.class.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -class StationTelemetryEqnsRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('StationTelemetryEqns'); - } - - /** - * Returnes an initiated StationTelemetryEqnsRepository - * - * @return StationTelemetryEqnsRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new StationTelemetryEqnsRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return StationTelemetryEqns - */ - public function getObjectById($id) - { - return $this->getObjectFromSql('select * from station_telemetry_eqns where id = ?', [$id]); - } -} diff --git a/htdocs/includes/repositories/stationtelemetryparamrepository.class.php b/htdocs/includes/repositories/stationtelemetryparamrepository.class.php deleted file mode 100644 index 34eba7f..0000000 --- a/htdocs/includes/repositories/stationtelemetryparamrepository.class.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -class StationTelemetryParamRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('StationTelemetryParam'); - } - - /** - * Returnes an initiated StationTelemetryParamRepository - * - * @return StationTelemetryParamRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new StationTelemetryParamRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return StationTelemetryParam - */ - public function getObjectById($id) - { - return $this->getObjectFromSql('select * from station_telemetry_param where id = ?', [$id]); - } -} diff --git a/htdocs/includes/repositories/stationtelemetryunitrepository.class.php b/htdocs/includes/repositories/stationtelemetryunitrepository.class.php deleted file mode 100644 index 0a61658..0000000 --- a/htdocs/includes/repositories/stationtelemetryunitrepository.class.php +++ /dev/null @@ -1,37 +0,0 @@ -<?php - -class StationTelemetryUnitRepository extends ModelRepository -{ - - private static $_singletonInstance = null; - - public function __construct() - { - parent::__construct('StationTelemetryUnit'); - } - - /** - * Returnes an initiated StationTelemetryUnitRepository - * - * @return StationTelemetryUnitRepository - */ - public static function getInstance() - { - if (self::$_singletonInstance === null) { - self::$_singletonInstance = new StationTelemetryUnitRepository(); - } - - return self::$_singletonInstance; - } - - /** - * Get object by id - * - * @param int $id - * @return StationTelemetryUnit - */ - public function getObjectById($id) - { - return $this->getObjectFromSql('select * from station_telemetry_unit where id = ?', [$id]); - } -} diff --git a/htdocs/public/.htaccess b/htdocs/public/.htaccess deleted file mode 100755 index 44ac88e..0000000 --- a/htdocs/public/.htaccess +++ /dev/null @@ -1,18 +0,0 @@ -<IfModule mod_expires.c> - ExpiresActive On - ExpiresByType image/jpg "access 1 month" - ExpiresByType image/jpeg "access 1 month" - ExpiresByType image/gif "access 1 month" - ExpiresByType image/png "access 1 month" - ExpiresDefault "access 1 week" -</IfModule> - -Options +FollowSymLinks -RewriteEngine on - -# Avoid rewriting existing dirs -RewriteRule ^/?(js|css|images|symbols|data|heatmaps|crossdomain.*|favicon.*|\.well-known|browserconfig\.xml|robots\.txt|ads\.txt)($|/) - [L] - -# Rewrite url -RewriteCond %{REQUEST_METHOD} !=POST -RewriteRule ^(.*)$ index.php?view=$1 [NC,L,QSA] diff --git a/htdocs/public/css/main.css b/htdocs/public/css/main.css deleted file mode 100755 index ad3bb35..0000000 --- a/htdocs/public/css/main.css +++ /dev/null @@ -1,866 +0,0 @@ - -html { - background-color: #fff; - height: 100%; - overflow: hidden; -} - -body { - margin: 0px; - padding: 0px !important; - width: 100%; - height: 100%; - - font-family: "Sans-serif", "Helvetica" !important; - font-size: 12px; - background: #fff; -} - -label { - display: inline-block; - width: 5em; -} - -h1 { - font-family: "Sans-serif", "Helvetica" !important; - color: #1a1a1a; -} - -h2 { - font-family: "Sans-serif", "Helvetica" !important; - color: #1a1a1a; -} - -h3 { - font-family: "Sans-serif", "Helvetica" !important; - color: #1a1a1a; -} - -sup { - font-weight: normal; -} - -a { - color: #337ab7; - text-decoration: none; - background-color: transparent; -} - -/* Set the position of the map */ -#map-container { - position:absolute; - top: 39px; - left: 0px; - width: 100%; - height: calc( 100% - 39px ); - z-index:10; -} - -/* Add a black background color to the top navigation */ -.topnav { - background-color: #333; - overflow: hidden; - - background: #464b4c; - background-image: -webkit-linear-gradient(top, #464b4c, #3f4344); - background-image: -moz-linear-gradient(top, #464b4c, #3f4344); - background-image: -o-linear-gradient(top, #464b4c, #3f4344); - background-image: linear-gradient(to bottom, #464b4c, #3f4344); - -webkit-box-shadow: inset 0 1px rgba(255, 255, 255, 0.06); - box-shadow: inset 0 1px rgba(255, 255, 255, 0.06); - - z-index:200; -} - -/* Style the links inside the navigation bar */ -.topnav a { - float: left; - display: block; - color: #f2f2f2; - text-align: center; - padding: 12px 14px; - text-decoration: none; - font-size: 13px; -} - -.dropdown-content-checkbox { - padding-left: 45px !important; - background-image: url(/images/unchecked.png); - background-repeat: no-repeat; - background-position: 5% 50%; -} - -.dropdown-content-checkbox-active { - background-image: url(/images/checked.png); -} - -.dropdown-content-checkbox-hidden { - display: none !important; -} - -/* Hide the link that should open and close the topnav on small screens */ -.topnav .icon { - display: none; -} - -/* Dropdown container - needed to position the dropdown content */ -.dropdown { - float: left; - overflow: hidden; -} - -/* Style the dropdown button to fit inside the topnav */ -.dropdown .dropbtn { - font-size: 13px; - border: none; - outline: none; - color: white; - padding: 11px 14px; - background-color: inherit; - font-family: inherit; - margin: 0; -} - -/* Style the dropdown content (hidden by default) */ -.dropdown-content { - display: none; - position: absolute; - background-color: #f9f9f9; - min-width: 160px; - box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2); - z-index: 200; -} - -/* Style the links inside the dropdown */ -.dropdown-content a { - float: none; - color: black; - padding: 12px 14px; - text-decoration: none; - display: block; - text-align: left; -} - -/* Add a dark background on topnav links and the dropdown button on hover */ -.topnav a:hover, .dropdown:hover .dropbtn { - background-color: #555; - color: white; -} - -/* Add a grey background to dropdown links on hover */ -.dropdown-content a:hover { - background-color: #ddd; - color: black; -} - -/* Show the dropdown menu when the user moves the mouse over the dropdown button */ -.dropdown:hover .dropdown-content { - display: block; -} - -/* When the screen is less than 880 pixels wide, hide all links, except for the first one ("Home"). Show the link that contains should open and close the topnav (.icon) */ -@media screen and (max-width: 880px) { - .topnav a:not(:first-child), .dropdown .dropbtn { - display: none; - } - .topnav a.icon { - float: right; - display: block; - } -} - -/* The "responsive" class is added to the topnav with JavaScript when the user clicks on the icon. This class makes the topnav look good on small screens (display the links vertically instead of horizontally) */ -@media screen and (max-width: 880px) { - .topnav.responsive {position: relative;} - .topnav.responsive a.icon { - position: absolute; - right: 0; - top: 0; - } - .topnav.responsive a { - float: none; - display: block; - text-align: left; - } - .topnav.responsive .dropdown {float: none;} - .topnav.responsive .dropdown-content {position: relative;} - .topnav.responsive .dropdown .dropbtn { - display: block; - width: 100%; - text-align: left; - } -} - -/* The Modal (background) */ -.modal { - display: none; - position: fixed; - z-index: 300; - padding-top: 100px; /* Location of the box */ - left: 0; - top: 0; - width: 100%; - height: 100%; - overflow: auto; - background-color: rgb(0,0,0); - background-color: rgba(0,0,0,0.4); -} - -#td-modal { - display: block; -} - -/* Modal Content */ -.modal-content, .modal-long-content { - background-color: #fff; - margin: auto; - padding: 0px; - border: 1px solid #888; - width: 80%; - max-width: 1200px; -} - -.modal-long-content { - height: 80%; - max-height: 1200px; -} - -@media screen and (max-width: 1000px) { - .modal-long-content { - width: 95%; - height: 95%; - } - .modal { - padding-top: 10px; - } -} - -/* Modal Close Button */ -.modal-close { - color: #aaaaaa; - float: right; - font-size: 28px; - font-weight: bold; - margin: 10px; -} -.modal-close:hover, -.modal-close:focus { - color: #000; - text-decoration: none; - cursor: pointer; -} - -.modal-title { - font-weight: bold; - font-size: 16pt; - margin: 15px 15px 15px 20px; - float: left; - font-family: "Sans-serif", "Helvetica" !important; -} - -.modal-content-header { - width: 100%; - height: 55px; - border-bottom: 1px solid #e9ecef; - border-top-left-radius: 0.3rem; - border-top-right-radius: 0.3rem; -} - -.modal-content-body { - height: calc(100% - 56px); - margin: 0px; - padding: 0px; - overflow: auto; -} - -input[type=text], select, textarea { - padding: 10px; - border: 1px solid #ccc; - border-radius: 4px; - box-sizing: border-box; - resize: vertical -} - -input[type=text] { - padding: 11px; -} - -input[type=submit] { - background-color: #4CAF50; - color: white; - padding: 12px 20px; - border: none; - border-radius: 4px; - cursor: pointer; -} - -input[type=submit]:hover { - background-color: #45a049; -} - -.form-container { - margin-top: 6px; - margin-bottom: 16px; - display: inline-block; - width: 100%; -} - -#cordinates-container { - clear: both; - padding:5px; - color: #4d4d4d; - background-color: rgba(255, 255, 255, 0.7); - font-size: 11px; - display: none; - min-width: 130px; -} - -#status-container { - padding:5px; - white-space:nowrap; - line-height: 20px; - font-size: 11px; - background-color: rgba(255, 255, 255, 0.7); -} - -@media screen and (min-width: 800px) { - #cordinates-container { - display: block; - } -} - -#right-container { - position: absolute; - right: 0px; - text-align: right; -} - -#right-container-info, #right-container-filtered, #right-container-timetravel { - position:relative; - right:10px; - z-index:50; - - color: #4d4d4d; - font-size:11px; - font-family: "Sans-serif", "Helvetica"; - - margin-bottom: 15px; -} - -#right-container-filtered, #right-container-timetravel { - display: none; -} - -.modal-inner-content { - max-width: 1100px; - - padding-top: 10px; - padding-left: 30px; - padding-right: 30px; - padding-bottom: 10px; - - margin-left: auto; - margin-right: auto; - - font-size: 9pt; - font-family: "Sans-serif", "Helvetica"; -} - - -.modal-inner-content-menu { - font-size: 9pt; - padding-top: 15px; - padding-bottom: 3px; - -} - -.modal-inner-content-menu a, .modal-inner-content-menu span { - margin-right: 20px; -} - -.modal-inner-content-about h2:not(:first-child) { - padding-top: 20px; -} - -.modal-inner-content-about h2 { - font-weight: normal; -} - -.modal-inner-content-about h3 { - padding-top: 15px; -} - -.overview-content-summary { - float:left; - padding-right: 30px; -} - -.overview-content-summary div div { - font-size: 9pt; - line-height: 14pt; - font-family: "Sans-serif", "Helvetica"; - word-break: break-all; -} - -.overview-content-symbol { - float:left; - width:200px; - text-align:left; - color: grey; - font-family: "Helvetica"; - font-size: 13px; - display: none; - text-align: center; -} - -.overview-content-symbol h3 { - font-size: 12px; - font-weight: bold; - color: grey; -} - -.overview-content-symbol p { - font-size: 10px; - margin: 0px; -} - -.overview-content-symbol div { - padding-bottom: 10px; -} - -.overview-content-explanations, .list-explanations { - clear: both; - width: 100%; - font-size: 12px; -} - -.overview-content-summary-cell-time { - color: grey; -} - -.overview-content-summary-cell-weather-time { - color: #227152; -} - -.overview-content-summary-cell-telemetry-time { - color: #823030; -} - -.overview-content-summary-cell-position { - color: #754D08; -} - -.overview-content-summary-cell-posambiguity { - color: darkred; -} - -.overview-content-summary-cell-status { - color: #375654; -} - -.overview-content-summary-cell-phg { - color: #440B2A; -} - -.overview-content-packet-frequency span:nth-of-type(2){ - color: grey; -} - -.overview-content-number-of-packets span { - color: grey; -} - -.overview-content-station span { - vertical-align: bottom; -} - -.overview-content-station img { - vertical-align: middle; -} - -.overview-content-station-list { - padding-top: 5px; -} - -.overview-content-station-list img { - vertical-align: middle; -} - -.overview-content-station-list span { - line-height: 24px; - vertical-align: bottom; -} - -.overview-content-station-list a { - line-height: 24px; - font-weight: bold; -} - -.overview-content-station-list span span { - color: grey; - float: right; - padding-right: 50px; - font-weight: normal; -} - -.overview-content-summary-hr, .overview-content-summary-hr-indent{ - font-weight: bold; - font-family: "Helvetica"; - font-size: 13px; - padding-right:25px; - white-space: nowrap; - width: 180px; -} - -.overview-content-summary-hr-indent { - padding-left: 20px; -} - -.overview-content-divider { - height: 20px; -} - -#raw-content-output p { - white-space: nowrap; - margin-top: 0px; - margin-bottom: 5px; - font-size: 8pt; - font-family: "Sans-serif", "Helvetica"; - line-height: normal; - clear: both; -} - -#raw-content-output a { - font-weight: bold; -} - -.raw-packet-warning { - color: darkorange; -} - -.raw-packet-error { - color: darkred; -} - -.raw-packet-timestamp { - color:grey; -} - -.telemetry-subtable { - display: table; -} - -.telemetry-subtable div { - display: table-row; -} - -.telemetry-subtable div div { - display: table-cell; - font-size: 8pt; - color: grey; - font-family: "Sans-serif", "Helvetica"; - padding-right: 10px; - padding-top: 3px; -} - -.telemetry-biton { - color: black; -} - -.telemetry-bitoff { - color: lightgrey; - text-decoration: line-through; -} - -.horizontal-line { - height: 1px; - margin: 5px 0px 25px 0px; - padding: 0; - background-color: #e9ecef; - clear: both; - margin-top: 3px; -} - - -@media screen and (min-width: 600px) { - .overview-content-summary { - display:table; - min-width: 500px; - } - - .overview-content-summary div { - display:table-row; - } - - .overview-content-summary div div { - display:table-cell; - } -} - -@media screen and (max-width: 600px) { - .overview-content-summary-hr, .overview-content-summary-hr-indent { - padding-top: 8px; - } - - .overview-content-summary-indent { - padding-left: 20px; - } -} - -@media screen and (min-width: 850px) { - .overview-content-summary { - display:table; - min-width: 500px; - width: calc(100% - 300px); - } - - .overview-content-symbol { - display: block; - } -} - -.tooltiptext { - display:none; - width: 150px; - font-family: "Helvetica"; - font-size: 14px; - line-height: 16px; - padding: 5px; -} - -.leaflet-marker-tooltiptext { - padding-left: 3px !important; - padding-right: 0px !important; - padding-top: 0px !important; - padding-bottom: 0px !important; -} - -.leaflet-marker-labeltext { - background-color: transparent !important; - box-shadow: none !important; - box-shadow: none !important; - font-weight: bold !important; - font-size: 10px !important; - border: none !important; - color: #000 !important; -} - -.leaflet-marker-tooltiptext::before, .leaflet-marker-labeltext::before { - border: none !important; -} - -.leaflet-infowindow-content .leaflet-popup-content-wrapper { - border-radius: 2px !important; -} - -.leaflet-popup-close-button { - height: auto !important; - padding: 4px !important; -} - -.leaflet-bottom { - bottom: 5px !important; -} - -.datagrid table { - border-collapse: collapse; - text-align: left; - width: 100%; -} - -.datagrid { - font: normal 12px/150% Arial, Helvetica, sans-serif; - background: #fff; - overflow: hidden; - border: 1px solid #c3c3c3; - -webkit-border-radius: 3px; - -moz-border-radius: 3px; - border-radius: 3px; -} - -.datagrid table td, .datagrid table th { - padding: 1px 10px; -} - -.datagrid table thead th { - background:-webkit-gradient( linear, left top, left bottom, color-stop(0.05, #E8E8E8), color-stop(1, #D1D1D1) ); - background:-moz-linear-gradient( center top, #E8E8E8 5%, #D1D1D1 100% ); - filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#E8E8E8', endColorstr='#D1D1D1'); - background-color:#E8E8E8; - color:#636363; - font-size: 13px; - font-weight: bold; - border-left: 1px solid #A3A3A3; - line-height: 23px; -} - -.datagrid table thead th:first-child { - border: none; -} - -.datagrid table tbody td { - color: #404040; - border-left: 1px solid #DBDBDB; - font-size: 12px; - font-weight: normal; - line-height: 22px; - vertical-align: top; -} - -.datagrid table tbody tr:nth-child(odd) { - background: #F4F4F4; - color: #404040; -} - -.datagrid table tbody td:first-child { - border-left: none; -} - -.datagrid table tbody tr:last-child td { - border-bottom: none; -} - -.datagrid table tbody td table td { - border-left: none; - padding: 0; -} - -.datagrid table tbody td table tr { - background-color: rgba(255, 255, 255, 0) !important; - color: #404040; -} - -.pagination { - display: inline-block; -} - -.pagination a { - color: black; - float: left; - padding: 8px 16px; - text-decoration: none; - height: 14px; -} - -.pagination a:first-child, .pagination a:last-child { - font-size: 9px; -} - -.pagination a.active { - background-color: #4CAF50; - color: white; - border-radius: 5px; -} - -.pagination a:hover:not(.active) { - background-color: #ddd; - border-radius: 5px; -} - -@media screen and (max-width: 600px) { - .pagination-rows { - display: none; - } - - #raw-type { - display: none; - } -} - -.decoded { - margin-bottom: 20px; -} - -.decoded table tr td:first-child { - width: 150px; -} - -@media screen and (max-width: 600px) { - .datagrid-statistics tr th:nth-child(3), - .datagrid-statistics tr th:nth-child(4) { - display:none; - } - .datagrid-statistics tr td:nth-child(3), - .datagrid-statistics tr td:nth-child(4) { - display:none; - } -} - -@media screen and (max-width: 600px) { - .datagrid-weather tr th:nth-child(3), - .datagrid-weather tr th:nth-child(4), - .datagrid-weather tr th:nth-child(5), - .datagrid-weather tr th:nth-child(6), - .datagrid-weather tr th:nth-child(7), - .datagrid-weather tr th:nth-child(8) { - display:none; - } - .datagrid-weather tr td:nth-child(3), - .datagrid-weather tr td:nth-child(4), - .datagrid-weather tr td:nth-child(5), - .datagrid-weather tr td:nth-child(6), - .datagrid-weather tr td:nth-child(7), - .datagrid-weather tr td:nth-child(8) { - display:none; - } -} - -@media screen and (max-width: 600px) { - .datagrid-telemetry1 tr th:nth-child(4), - .datagrid-telemetry1 tr th:nth-child(5), - .datagrid-telemetry1 tr th:nth-child(6) { - display:none; - } - .datagrid-telemetry1 tr td:nth-child(4), - .datagrid-telemetry1 tr td:nth-child(5), - .datagrid-telemetry1 tr td:nth-child(6) { - display:none; - } -} - -@media screen and (max-width: 600px) { - .datagrid-telemetry2 tr th:nth-child(4), - .datagrid-telemetry2 tr th:nth-child(5), - .datagrid-telemetry2 tr th:nth-child(6), - .datagrid-telemetry2 tr th:nth-child(7), - .datagrid-telemetry2 tr th:nth-child(8), - .datagrid-telemetry2 tr th:nth-child(9) { - display:none; - } - .datagrid-telemetry2 tr td:nth-child(4), - .datagrid-telemetry2 tr td:nth-child(5), - .datagrid-telemetry2 tr td:nth-child(6), - .datagrid-telemetry2 tr td:nth-child(7), - .datagrid-telemetry2 tr td:nth-child(8), - .datagrid-telemetry2 tr td:nth-child(9) { - display:none; - } -} - -@media screen and (max-width: 600px) { - .datagrid-search tr th:nth-child(3), - .datagrid-search tr th:nth-child(4) { - display:none; - } - .datagrid-search tr td:nth-child(3), - .datagrid-search tr td:nth-child(4) { - display:none; - } -} - -@media screen and (max-width: 800px) { - .datagrid-search tr th:nth-child(4) { - display:none; - } - .datagrid-search tr td:nth-child(4) { - display:none; - } -} - -@media screen and (max-width: 600px) { - .modal-inner-content-menu a, .modal-inner-content-menu span { - margin-bottom: 10px; - display: block; - } -} - diff --git a/htdocs/public/data/coverage.php b/htdocs/public/data/coverage.php deleted file mode 100644 index bb662aa..0000000 --- a/htdocs/public/data/coverage.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php - -require dirname(__DIR__) . "../../includes/bootstrap.php"; - -$response = []; -$station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); -if ($station->isExistingObject()) { - $response['station_id'] = $station->id; - $response['coverage'] = []; - - $numberOfHours = 10*24; // latest 10 days should be enough - $limit = 5000; // Limit number of packets to reduce load on server (and browser) - - if (getWebsiteConfig('coverage_only_moving_senders')) { - $packetPaths = PacketPathRepository::getInstance()->getLatestMovingDataListByReceivingStationId($_GET['id'] ?? null, $numberOfHours, $limit); - } else { - $packetPaths = PacketPathRepository::getInstance()->getLatestDataListByReceivingStationId($_GET['id'] ?? null, $numberOfHours, $limit); - } - - - foreach ($packetPaths as $path) { - $row = []; - $row['latitude'] = $path['sending_latitude']; - $row['longitude'] = $path['sending_longitude']; - $row['distance'] = $path['distance']; - $response['coverage'][] = $row; - } -} - -header('Content-type: application/json'); -echo json_encode($response); diff --git a/htdocs/public/data/kml.php b/htdocs/public/data/kml.php deleted file mode 100644 index 79321f5..0000000 --- a/htdocs/public/data/kml.php +++ /dev/null @@ -1,60 +0,0 @@ -<?php - -require dirname(__DIR__) . "../../includes/bootstrap.php"; - -if (isset($_GET['id']) && isInt($_GET['id'])) { - $station = StationRepository::getInstance()->getObjectById($_GET['id']); -} else { - $station = new Station(null); -} - -$color = null; -if (isset($_GET['color'])) { - $color = $_GET['color']; -} - -$startTimestamp = time() - (60*60*24); // Default to 24h -if (isset($_GET['startts'])) { - $startTimestamp = $_GET['startts']; -} -if ($startTimestamp < (time() - (60*60*24*3))) { - $startTimestamp = time() - (60*60*24*3); // Not older than 3 days allowed -} - -$endTimestamp = time(); -if (isset($_GET['endts']) && isInt($_GET['endts'])) { - $endTimestamp = $_GET['endts']; -} - -$startTimestampString = strftime('%Y%m%d%H%M', $startTimestamp); -$endTimestampString = strftime('%Y%m%d%H%M', $endTimestamp); - -if ($station->isExistingObject()) { - $stationIds = []; - if ($station->stationTypeId == 2) { - $currentStations = StationRepository::getInstance()->getObjectListByName($station->name, 2, $station->sourceId); - foreach ($currentStations as $currentStation) { - $stationIds[] = $currentStation->getId(); - } - } else { - $stationIds[] = $station->getId(); - } - - $lateststation = null; - foreach ($stationIds as $stationId) { - $s = StationRepository::getInstance()->getObjectById($stationId); - if ($lateststation === null) { - $lateststation = $s; - } else if ($lateststation->latestConfirmedPacketTimestamp < $s->latestConfirmedPacketTimestamp) { - $lateststation = $s; - } - } - - $packets = PacketRepository::getInstance()->getConfirmedObjectListByStationIdList($stationIds, $startTimestamp, $endTimestamp); - $dom = Kml::getInstance()->getKmlDomDocument($lateststation, $packets, $startTimestamp, $endTimestamp, $color); - $kmlOutput = $dom->saveXML(); - - header('Content-type: application/vnd.google-earth.kml+xml'); - header('Content-Disposition: attachment; filename="' . htmlspecialchars($lateststation->name) . '-' . $startTimestampString . '-' . $endTimestampString . '.kml"'); - echo Kml::getInstance()->formatKmlContent($kmlOutput, " ", 4); -} diff --git a/htdocs/public/data/trail.php b/htdocs/public/data/trail.php deleted file mode 100644 index 064f0e5..0000000 --- a/htdocs/public/data/trail.php +++ /dev/null @@ -1,55 +0,0 @@ -<?php - -require dirname(__DIR__) . "../../includes/bootstrap.php"; - -$response = []; -$station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); -if ($station->isExistingObject()) { - $numberOfHours = $_GET['hours'] ?? 1; - - $columns = ['timestamp']; - $type = 'speed'; - if ($_GET['type'] == 'speed') { - $type = 'speed'; - if ($_GET['imperialUnits'] ?? '0' == '1') { - $response[] = array('Time', 'Speed (mph)'); - } else { - $response[] = array('Time', 'Speed (kmh)'); - } - } else { - $type = 'altitude'; - if ($_GET['imperialUnits'] ?? '0' == '1') { - $response[] = array('Time', 'Altitude (ft)'); - } else { - $response[] = array('Time', 'Altitude (m)'); - } - } - $columns[] = $type; - - $packets = PacketRepository::getInstance()->getLatestDataListByStationId($_GET['id'] ?? null, $numberOfHours, $columns); - foreach($packets as $packet) { - $value = floatval($packet[$type]); - if ($_GET['imperialUnits'] ?? '0' == '1') { - if ($type == 'speed') { - $value = convertKilometerToMile($value); - } else if ($type == 'altitude') { - $value = convertMeterToFeet($value); - } - } - - if ($type == 'speed' && count($response) > 1) { - if (isset($response[count($response) - 1])) { - $prevTimestamp = $response[count($response) - 1][0]; - if ($prevTimestamp < ($packet['timestamp'] - 60*60)) { - // Previous value is old, make sure we have a break in graph - $response[] = array($prevTimestamp + 1, null); - } - } - } - - $response[] = [$packet['timestamp'], $value]; - } -} - -header('Content-type: application/json'); -echo json_encode($response); diff --git a/htdocs/public/favicon.ico b/htdocs/public/favicon.ico deleted file mode 100755 index 6a8a77bd5a18e9e9377bda4b1fe23d8e7ccac6c6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15086 zcmdU$zi!(w5XR4N0gny}bhd{U$e5|CJEdD+Ax5+GEvzT$)FF={pg_^3?bKb5;L!yP zv)?D{QrFNQQX(mez~v;0y!(BW6FS04WF~XDxe@rae0m}BRz%k8^Z66{KcnyNt~!4s za{o%?7GrP;GtT{RA{gh;USjN1WjuCi9RCw$D&w(jjO)2BF`DMu#ORva7Q=RKT@2T` z*D-jHw9nP+{dJwE<2ipQKSDUisQWzGa@5Tw16x;&wz=mB%`t4|HpOt6dl^ITFLl+n z(@x~L5jm_x_DhjsA(GEUvf01kJZ2xSaSX?D4(Hxt*c$c@#=lQx;~yS>?H-}N!hXZv z`wMFo=>tanftkv9%)S`yI(JNlrra?Yx^jnPu+1HU!8Nx}hQ7IdFbvH-guz$tJ`BEd zyD)^xZNm^ccN;^j+;t4xyDs+<9TVC!C-+e9pP_R##pnJ_Yq}n~pW3+wW39h_ZyEFR z2l-`-#nAR$DKtY{?$GOClRFfHOK#r`eRBI^7?OJ^gOA*O8GPn;WeAbmmLX*BE`}Jn zn;2r|RtD}}+&{U0a}Vv+%xP!LabwJ3Wz2qQOtCN~pBt0S3^spr64@O^HV2W_USwH_ zEOL=~#>Wa(<8h9@0@pZ(V>yR&8KaEFn2gOF%*C9@&F2(%ur2KQImK(7#A$P+d4PR` z{enHh*f)hn&M&a*?`Z5xT|*PQYDrl`7kkPYY}r%P;L4tohQ916Xc)>qrUqZ^V`%Wr z9#cao_81yMvxn3Wi#>#f*z7(vjK%Il!`SRYG^E1bM?-4tE*es0x6zO~dz*%-u-9pr z8vC_|k2U{m>zLI27VJMJ%>NziwA9zRiH~c)oiIN?`&0k@g@nmzsCy1JmHSY~&U?U? zx`sCPvx0Or*s!On!G%3F4Sm>C(J+L4Yz;ox$I{@FJ+_7r?6EY2WDl(&274$CG1+}< z7=zuHhB4WPYDj^-uZEP^T{Wc0ZmS_>_AU)mV87Jxh!fV%u!iOV#{ccSx3X9WPgl;x zL-Z^pqGwSNJqwKJtHP!780T7q#DXODu{epIg-Y}Vik9eefYWEFL!zew{J?ZnG2y)` z`VHQ(qF>>CD|)_{MZds%SoBby(W5d-Jx?!N#*>TdInOb#php~yt9dl9asa91dgjb4 g?xND6x>Tp?)^$LD|JO;^P1jM^l|@<{%K|ZxzwTpeUjP6A diff --git a/htdocs/public/heatmaps/.htaccess b/htdocs/public/heatmaps/.htaccess deleted file mode 100755 index 413bd31..0000000 --- a/htdocs/public/heatmaps/.htaccess +++ /dev/null @@ -1,23 +0,0 @@ -<IfModule mod_expires.c> - ExpiresActive On - ExpiresByType image/jpg "access 1 hour" - ExpiresByType image/jpeg "access 1 hour" - ExpiresByType image/gif "access 1 hour" - ExpiresByType image/png "access 1 hour" - ExpiresDefault "access 1 week" -</IfModule> - -Options +FollowSymLinks -RewriteEngine On - -# Do not do anything for already existing files and folders -RewriteCond %{REQUEST_FILENAME} -f [OR] -RewriteCond %{REQUEST_FILENAME} -d -RewriteRule .+ - [L] - -RewriteCond %{SCRIPT_FILENAME} !-d -RewriteCond %{SCRIPT_FILENAME} !-f -RewriteCond %{REQUEST_URI} \.png$ - -# Images that needs to be handled by heatmap.php -RewriteRule ^/?latest-heatmap\.(\d+)\.(\d+)\.(\d+)\.png$ ./heatmap.php?zoom=$1&x=$2&y=$3 diff --git a/htdocs/public/heatmaps/gd-heatmap/LICENSE b/htdocs/public/heatmaps/gd-heatmap/LICENSE deleted file mode 100644 index 7ffb009..0000000 --- a/htdocs/public/heatmaps/gd-heatmap/LICENSE +++ /dev/null @@ -1,20 +0,0 @@ -The MIT License (MIT) - -Copyright (c) 2013 xird - -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. diff --git a/htdocs/public/heatmaps/gd-heatmap/README.md b/htdocs/public/heatmaps/gd-heatmap/README.md deleted file mode 100644 index cba16fe..0000000 --- a/htdocs/public/heatmaps/gd-heatmap/README.md +++ /dev/null @@ -1,6 +0,0 @@ -gd-heatmap -========== - -GD-Heatmap is a heatmap generation library using PHP and GD. - -Take a look at the test.php script to get started. diff --git a/htdocs/public/heatmaps/gd-heatmap/gd-rg.php b/htdocs/public/heatmaps/gd-heatmap/gd-rg.php deleted file mode 100644 index 74066a4..0000000 --- a/htdocs/public/heatmaps/gd-heatmap/gd-rg.php +++ /dev/null @@ -1,195 +0,0 @@ -<?php - -/** - * This class is originally from here: http://planetozh.com/download/gd-gradient-fill.php - * - * It was then modified by StackOverflow user Justin (http://stackoverflow.com/users/265575/justin) - * ..in this question: http://stackoverflow.com/questions/6615602/radial-gradients-with-opacity-in-php - * ..to support alpha, and uploaded here: http://codepad.org/1eZ3Km0J/fork . - * - * Only a couple of changes were needed to use this class with the heatmap lib. - * - */ -class gd_gradient_alpha { - - // Constructor. Creates, fills and returns an image - function gd_gradient_alpha($w,$h,$d,$rgb,$as,$ae,$step=0) { - $this->width = $w; - $this->height = $h; - $this->direction = $d; - $this->color = $rgb; - $this->alphastart = $as; - $this->alphaend = $ae; - $this->step = intval(abs($step)); - - // Attempt to create a blank image in true colors, or a new palette based image if this fails - if (function_exists('imagecreatetruecolor')) { - $this->image = imagecreatetruecolor($this->width,$this->height); - } elseif (function_exists('imagecreate')) { - $this->image = imagecreate($this->width,$this->height); - } else { - die('Unable to create an image'); - } - - imagealphablending($this->image, false); - imagesavealpha($this->image, true); - - // Fill it - $this->fillalpha($this->image,$this->direction,$this->color,$this->alphastart,$this->alphaend); - - // Show it - //$this->display($this->image); - - // Return it - //return $this->image; - } - - function get_image() { - return $this->image; - } - - - // Displays the image with a portable function that works with any file type - // depending on your server software configuration - function display ($im) { - if (function_exists("imagepng")) { - header("Content-type: image/png"); - imagepng($im); - } - elseif (function_exists("imagegif")) { - header("Content-type: image/gif"); - imagegif($im); - } - elseif (function_exists("imagejpeg")) { - header("Content-type: image/jpeg"); - imagejpeg($im, "", 0.5); - } - elseif (function_exists("imagewbmp")) { - header("Content-type: image/vnd.wap.wbmp"); - imagewbmp($im); - } else { - die("Doh ! No graphical functions on this server ?"); - } - return true; - } - - - // The main function that draws the gradient - function fillalpha($im,$direction,$rgb,$as,$ae) { - - list($r,$g,$b) = $this->hex2rgb($rgb); - $a1 = $this->a2sevenbit($as); - $a2 = $this->a2sevenbit($ae); - - switch($direction) { - case 'horizontal': - $line_numbers = imagesx($im); - $line_width = imagesy($im); - break; - case 'vertical': - $line_numbers = imagesy($im); - $line_width = imagesx($im); - break; - case 'ellipse': - $width = imagesx($im); - $height = imagesy($im); - $rh=$height>$width?1:$width/$height; - $rw=$width>$height?1:$height/$width; - $line_numbers = min($width,$height); - $center_x = $width/2; - $center_y = $height/2; - imagefill($im, 0, 0, imagecolorallocatealpha($im, $r, $g, $b, $a1)); - break; - case 'ellipse2': - $width = imagesx($im); - $height = imagesy($im); - $rh=$height>$width?1:$width/$height; - $rw=$width>$height?1:$height/$width; - $line_numbers = sqrt(pow($width,2)+pow($height,2)); - $center_x = $width/2; - $center_y = $height/2; - break; - case 'circle': - $width = imagesx($im); - $height = imagesy($im); - $line_numbers = sqrt(pow($width,2)+pow($height,2)); - $center_x = $width/2; - $center_y = $height/2; - $rh = $rw = 1; - break; - case 'circle2': - $width = imagesx($im); - $height = imagesy($im); - $line_numbers = min($width,$height); - $center_x = $width/2; - $center_y = $height/2; - $rh = $rw = 1; - imagefill($im, 0, 0, imagecolorallocatealpha($im, $r, $g, $b, $a1)); - break; - case 'square': - case 'rectangle': - $width = imagesx($im); - $height = imagesy($im); - $line_numbers = max($width,$height)/2; - break; - case 'diamond': - $width = imagesx($im); - $height = imagesy($im); - $rh=$height>$width?1:$width/$height; - $rw=$width>$height?1:$height/$width; - $line_numbers = min($width,$height); - break; - default: - } - - for ( $i = 0; $i < $line_numbers; $i=$i+1+$this->step ) { - $old_a = ( empty($a) ) ? $a2 : $a; - $a = ( $a2 - $a1 != 0 ) ? intval( $a1 + ( $a2 - $a1 ) * ( $i / $line_numbers ) ): $a1; - - if ( "$old_a" != "$a") { - $fill = imagecolorallocatealpha( $im, $r, $g, $b, $a ); - } - switch($direction) { - case 'vertical': - imagefilledrectangle($im, 0, $i, $line_width, $i+$this->step, $fill); - break; - case 'horizontal': - imagefilledrectangle( $im, $i, 0, $i+$this->step, $line_width, $fill ); - break; - case 'ellipse': - case 'ellipse2': - case 'circle': - case 'circle2': - imagefilledellipse ($im,$center_x, $center_y, ($line_numbers-$i)*$rh, ($line_numbers-$i)*$rw,$fill); - break; - case 'square': - case 'rectangle': - imagefilledrectangle ($im,$i*$width/$height,$i*$height/$width,$width-($i*$width/$height), $height-($i*$height/$width),$fill); - break; - case 'diamond': - imagefilledpolygon($im, array ( - $width/2, $i*$rw-0.5*$height, - $i*$rh-0.5*$width, $height/2, - $width/2,1.5*$height-$i*$rw, - 1.5*$width-$i*$rh, $height/2 ), 4, $fill); - break; - default: - } - } - } - - // #ff00ff -> array(255,0,255) or #f0f -> array(255,0,255) - function hex2rgb($color) { - $color = str_replace('#','',$color); - $s = strlen($color) / 3; - $rgb[]=hexdec(str_repeat(substr($color,0,$s),2/$s)); - $rgb[]=hexdec(str_repeat(substr($color,$s,$s),2/$s)); - $rgb[]=hexdec(str_repeat(substr($color,2*$s,$s),2/$s)); - return $rgb; - } - - function a2sevenbit($alpha) { - return (abs($alpha - 255) >> 1); - } - -} diff --git a/htdocs/public/heatmaps/gd-heatmap/gd_heatmap.php b/htdocs/public/heatmaps/gd-heatmap/gd_heatmap.php deleted file mode 100644 index 5d9b4f3..0000000 --- a/htdocs/public/heatmaps/gd-heatmap/gd_heatmap.php +++ /dev/null @@ -1,293 +0,0 @@ -<?php - -/** - * A class for generating heatmaps using the GD image library. - * - * http://blog.ampli.fi/heatmap-generation-library-using-php-and-gd/ - * - * TODO Automatic generation of gradient from source or from scratch. - * - */ -Class gd_heatmap { - private $config; - private $debug_log; - private $im; - - /** - * @param array $data - * An array containing the data to be represented by the heatmap. Each - * element is a non-associative array with three values, where the first one - * is the x-coordinate, second the y-coordinate and third the value in that - * coordinate. - * - * @param array $config - * An array containing configuration variables: - * debug - Set to TRUE to print out debug data in the image. - * r - radius of each data point. - * width - width of the image. - * height - height of the image. - * noc - Number of colours to be used in the heatmap. More colours looks - * nicer but is heavier to process. - * dither - Boolean. Dithered images tend to look better than non-dithered - * if noc is about less than 16. - * format - String, "png" or "jpeg" - * fill_with_smallest - Boolean. If set to true, the image won't be filled - * (i.e. areas with 0 value won't be coloured) with white/transparent, - * but instead with a colour that matches the gradient's low end. - */ - function __construct($data, $config = array()) { - $default_config = array( - 'debug' => FALSE, - 'r' => 50, - 'width' => 640, - 'height' => 480, - 'noc' => 16, - 'dither' => FALSE, - 'format' => 'png', - 'fill_with_smallest' => false, - ); - - foreach ($default_config as $key => $value) { - if (isset($config[$key])) { - $this->config[$key] = $config[$key]; - } - else { - $this->config[$key] = $default_config[$key]; - } - } - - if ($this->config['format'] != 'png' && $this->config['format'] != 'jpeg') { - $this->error('Invalid format "' . $this->config['format'] . '". Supported formats include png and jpeg.'); - } - - $this->debug_log = ''; - - $this->generate_image($data); - } - - /** - * @param string $key - * The configuration option to get. - * - * @return mixed - * The value of the configuration option. - */ - public function get_config($key) { - return $this->config[$key]; - } - - - /** - * Generates the actual heatmap. - */ - private function generate_image($data) { - require_once('gd-rg.php'); - $time = microtime(1); $this->logg('Started at ' . $time); - - // Find the maximum value from the given data. - $max_data_value = 1; - foreach ($data as $row) { - if (isset($row[2]) && $max_data_value < $row[2]) { - $max_data_value = $row[2]; - } - } - $this->logg('Done sorting data at ' . (microtime(1) - $time)); - - // Create the heatmap image. - $im = imagecreatetruecolor($this->get_config('width'), $this->get_config('height')); - $white = imagecolorallocate($im, 255, 255, 255); - imagefill($im, 0, 0, $white); - imagealphablending($im, true); - imagesavealpha($im, true); - - // Create a separate spot image for each value to be shown, with different - // amounts of black. Having 25 separate shades of colour looks like a decent - // number. - $spots = array(); - for ($i = 0; $i < $this->config['noc']; $i++) { - // The gradient lib doesn't like too small values for $alpha_end, so we use - // $noc for that, which happens to work well. - $alpha_end = $this->map($i, 0, $this->config['noc'] - 1, $this->config['noc'], 255); - $temp = new gd_gradient_alpha($this->config['r'], $this->config['r'], 'ellipse','#000', 0x00, $alpha_end, 0); - $spot = $temp->get_image(); - imagealphablending($spot, true); - imagesavealpha($spot, true); - $spots[$i] = $spot; - } - $this->logg('Created '.count($spots).' spots at ' . (microtime(1) - $time)); - - // Go through the data, and add appropriate spot images to the heatmap - // image. - for ($i = 0; $i < count($data); $i++) { - $value = (isset($data[$i][2]) ? $data[$i][2] : 1); - $value = $this->map($value, 1, $max_data_value, 0, $this->config['noc'] - 1); - imagecopy($im , $spots[$value], $data[$i][0], $data[$i][1] , 0 , 0 , $this->config['r'] , $this->config['r']); - } - $this->logg('Copied spots to image at ' . (microtime(1) - $time)); - - imagetruecolortopalette($im, $this->config['dither'], $this->config['noc']); - $this->logg('Flattened black at ' . (microtime(1) - $time)); - - // Get the gradient from an image file - // FIX: Fetch image in current __FILE__ directory (script including this might be somewhere else) - $gi = dirname(__FILE__) . '/gradient-' . $this->config['noc'] . ($this->config['fill_with_smallest'] ? "-fill" : "") . '.png'; - if (!file_exists($gi)) { - $this->error("Can't find gradient file " . $gi . ". Make one using gradient-source.jpg"); - } - $gs = imagecreatefrompng($gi); - imagetruecolortopalette($gs, TRUE, $this->config['noc']); - - // Get a list of different gray values in the image, and order them. - $grays = array(); - $imagecolorstotal = imagecolorstotal($im); - // FIX: Loop over all colors supported by gradient instead of colors in image (might not contain all) - for ($i = 0; $i < $this->config['noc']; $i++) { - if ($i >= $imagecolorstotal) { - $c = array('red'=> 0, 'green'=> 0, 'blue'=> 0); - } else { - $c = imagecolorsforindex($im, $i); - } - $grays[] = str_pad(($c['red'] * 65536) + ($c['green'] * 256) + $c['blue'], 8, '0', STR_PAD_LEFT) . ':' . $i; - } - sort($grays); - $indexes = array(); - foreach ($grays as $gray) { - $indexes[] = substr($gray, strpos($gray, ':') + 1); - } - $this->logg('Created gray indexes at ' . (microtime(1) - $time)); - - // Replace each shade of gray with the matching rainbow colour. - $i = 0; - foreach ($indexes as $index) { - $fill_index = imagecolorat($gs , $i, 0); - $fill_color = imagecolorsforindex($gs, $fill_index); - imagecolorset($im, $index, $fill_color['red'], $fill_color['green'], $fill_color['blue']); - $i++; - } - - $this->logg('Replaced black with rainbow at ' . (microtime(1) - $time)); - - if (!$this->config['fill_with_smallest']) { - // Finally switch from white background to transparent. - $closest = imagecolorclosest ($im, 255 , 255 , 255); - imagecolortransparent($im, $closest); - $this->logg('Made transparent at ' . (microtime(1) - $time)); - } - - $this->logg('done at ' . (microtime(1) - $time)); - - // Debugging text - if ($this->config['debug']) { - $text_color = imagecolorallocate($im, 0, 0, 0); - $y = 5; - foreach (explode("\n", $this->debug_log) as $line) { - imagestring($im, 3, 250, $y, $line, $text_color); - $y = $y + 10; - } - } - $this->im = $im; - } - - /** - * Prints out an error in the image if something went horribly wrong. - */ - function error ($text) { - $im = imagecreate(600, 480); - $bg_color = imagecolorallocate($im, 255, 0, 0); - $text_color = imagecolorallocate($im, 0, 0, 0); - imagestring($im, 3, 5, 5, $text , $text_color); - header('Content-type: image/png'); - imagepng($im); - imagedestroy($im); - die(); - } - - /** - * @return Object The generated GD image object containing the heatmap. - */ - public function get_image() { - return $this->im; - } - - /** - * Prints out the generated image or saves it into a file. - */ - public function output($filename = null) { - if (!$filename) { - header('Content-type: image/' . $this->config['format']); - } - switch ($this->config['format']) { - case 'png': - imagepng($this->im, $filename); - break; - case 'jpeg': - imagejpeg($this->im, $filename); - break; - } - imagedestroy($this->im); - } - - /** - * Debugging function. - */ - private function logg($thing) { - if (!$this->config['debug']) { - return; - } - if (is_array($thing) || is_object($thing)) { - $out = print_r($thing, 1); - } - else { - $out = $thing; - } - $this->debug_log .= $out . "\n"; - } - - /** - * Simple utility function for mapping values from one range to another. - * Copied from http://stackoverflow.com/questions/7742959/php-map-a-value-using-fromrange-and-torange - * - */ - private function map($value, $fromLow, $fromHigh, $toLow, $toHigh) { - $fromRange = $fromHigh - $fromLow; - $toRange = $toHigh - $toLow; - $scaleFactor = $toRange / $fromRange; - $tmpValue = $value - $fromLow; - $tmpValue *= $scaleFactor; - return $tmpValue + $toLow; - } - - function debug() { - echo $this->debug_log; - } - - /** - * @param integer $w - * The maximum x-coordinate of the test points. - * @param integer $h - * The maximum y-coordinate of the test points. - * height. - * @param integer $r - * The radius of a single data point. Used to calculate data point distance - * from image edges. - * @param integer $n - * The number of data points generated. - * @param integer $mv - * The maximum value of a single data point. - * - * @return array Test data that can be passed to the heatmap constructor. - */ - public static function get_test_data($w, $h, $r, $n = 200, $mv = 1500) { - $data = array(); - - for ($i = 0; $i < $n; $i++) { - $x = rand(0 - $r, $w ); - $y = rand(0 - $r, $h ); - $v = rand(1, $mv); - - $data[] = array($x, $y, $v); - } - - return $data; - } -} diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-16-fill.png b/htdocs/public/heatmaps/gd-heatmap/gradient-16-fill.png deleted file mode 100644 index 61fdf6204243173a688eab735ea99e821773088b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 373 zcmV-*0gC>KP)<h;3K|Lk000e1NJLTq000mG000jN1^@s6?Q>5r00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru;s^;6Bn&;=&hY>M0Rl-x zK~yNug_E&P#4r#<-}o+wlW3`ED3OqkhUOYt{*IrcpaHJR2T)R6hQfBTu_NIoQD$a$ zcD#{apUrWArz?K%cAR%++?&t+g>iV~e0bsgaN>h|ZolDXgzGPJ`VkLrkU-4G;P?#K zL~{z1P~ZuqND38cFxLY0t;a&MtaPat@zm?JGBp=;=e{}stc4j1TG_UZv=(k>&=BT& zV!Qn^f-{iYEpFtQZ?BDp5I2&OvY!4r+ssm6<u=hpTn+`JU5L>q3qK3A+LP)~rAf}9 z4p%lsZXJ91R&J%Hlh%W&5vrReH<-AjHpJD>&?dHw;gZ8dw+H6GQ~ga!42Av&-(O&= T_*${q00000NkvXXu0mjfILMzX diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-16.png b/htdocs/public/heatmaps/gd-heatmap/gradient-16.png deleted file mode 100644 index 119782bc87e07195298c76a3b5f70c33d04a08ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 386 zcmeAS@N?(olHy`uVBq!ia0vp^0zk~q!3HGX7W?Z1DaPU;cPEB*=VV?2Ic!PZ?k+$Y z2!1;6t_M<_1s;*b3=G`DAk4@xYmNj^kiEpy*OmP)7Z01B+Wx7Zw1K8DdAc};Xq<1I zywUH7fq={XA9@{=GgfB2n7E_unN-xizFGW>7cj0n#U2n8({`wA(?;coYJq8K<z;&& z#?L$RnBll~-TSgR<!N_jpa0uhSn;5y;@RJVN6poF`yZyYyw)%NC78cnqj5(6!H<#~ zI-iMXEIc6WF;PV8Qo=gcSJC~gX^}63^dGIfo}HSd_u^b_DMJLevDlVPxzd@scg`(P zJoEKP+3!@AbcOBFcTO1JkCWzA%u`WMwf$SVZRXMgr*ao{?~vhg+byuzU#w0nW2^er zg<g~AILfZe>AGX}?bF&jUcTyU*@Kls%zg6=3O#c>R?lDPn<IHxwY@Ws|4jYzU$du3 baQ)@aKA9-_^}A&TDD*sC{an^LB{Ts5Dl(a< diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-25-fill.png b/htdocs/public/heatmaps/gd-heatmap/gradient-25-fill.png deleted file mode 100644 index 725e67baf325816d9514e10ac9e1128e1869a50e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMN!2~2<9y2}(q&N#aB8wRqxP?KOkzv*x37{Z* ziKnkC`y&ocA!E(r=y?i2p$1PE#}JO|xxIV2m>hXp_UDvs58B}*5-4!)*r`Kt@fW`f zzqz_sn179*idg$;CBKPh{AYB$Ex$6a)hIk{pS-8C%F^Pp;C1ir{><dMt+pmQcHZM> zPtvc>E!^}&VVjU%h(Djcn!Ai78^?V{i8h79Mnx%q+%Kvgo|!UrrU?J3b@K0-Ct4}Z UEHsgQ0dxz4r>mdKI;Vst04j)0ZU6uP diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-25.png b/htdocs/public/heatmaps/gd-heatmap/gradient-25.png deleted file mode 100644 index 3b6ff273a3d8f59bfa0d81e80ae6b7a873c88cd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^l0eMN!2~2<9y2}(q!^2X+?^QKos)S9<Zu>vL>4nJ za0`PlBg3pY5<o%r5>H=O_Pbm>f}HFI0Z*R-g&I6v978y+=l1U9VshkZ*`HIkJ!prQ zAnU>GH9Bv;K7CW`a4_z!^~VFRT#^cR=sXfR`KP7xM&9XD#^GtFE`3+dY*|urF7MRU zz1H@giI-b;T|H{K&c80|uB3W5f0Fh?r>`mh9~B&#nAq?^wjq(jNJrWISiMNB(HzgP hnVugPy!rLf?($V-_GOX52Z3&3@O1TaS?83{1OUW<S+f8D diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-32-fill.png b/htdocs/public/heatmaps/gd-heatmap/gradient-32-fill.png deleted file mode 100644 index 4f52e9ab4b694157a4dd71a1e86245f69f1dea95..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 268 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-l!2~1|R97_vDb50q$YKTtZeb8+WSBKa0w~B{ z;_2(k{)mH9NQ+~Mk$M_XXtk${V~E7%(%#d4Oo0L}{$KYVNK@kEHa(Q|gZc5a{wKmW zrIfAW<fM%>#UB|kFEqcq@{6VF`g?z-%wWHKB>9D9rP%QY+8Ir?J6LWn2;A)->UsM8 z9-W`5;+ww*?v>QFTOrrAT6eOO-Gq9Re<g2L_*doH#%eP^x+kG>=BMYYM{-Z}KEyBR zV||o#IpOPv)zQ<=@A)@XNKB|~{UL`K9=V8hS@}-9*}TW5Rs9$Gz-`TMy+C;VghHUR O89ZJ6T-G@yGywpzNMfJ> diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-32.png b/htdocs/public/heatmaps/gd-heatmap/gradient-32.png deleted file mode 100644 index 3a30889d0744c78c4c6e6b92f53b5e4cc6b4b2b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 282 zcmeAS@N?(olHy`uVBq!ia0vp^3P8-l!2~1|R97_vDaPU;cPEB*=VV?2Ih+L^k;M!Q z+`=Ht$S`Y;1W=H@#M9T6{Vo>|7b}bC{OyN;LTfx-977~7m-agPF$D^^#DD#NAZ-yR zx8k9uosEU3@7gehr)2ji)LiJDIfXlMM&pIq??Qg<oiu&@Je9PA$&WNmeC3Y&Z{RIE zXc*JvyCJyPC)D$6_&V=8yCXkpH$?D1lMmrPdbKT3v3~M*sX8k@ow~1=e&jCY>8MVg zV6a?$Wv}&w+XwzPMu~NF`|iDZaD85+-A5~JRUMT#eyxo=B<^gExq7eV)pe;J-O_)m a5BPVc*zo0=mRbSb&EV<k=d#Wzp$Py2glPo; diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-8-fill.png b/htdocs/public/heatmaps/gd-heatmap/gradient-8-fill.png deleted file mode 100644 index 0fdbfcaedc669d50ea87a61733d59300d965ff15..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 155 zcmeAS@N?(olHy`uVBq!ia0vp^96-#%!2~32*1ud1q&N#aB8wRqxP?KOkzv*x37{Z* ziKnkC`y&ocA!DwKHt#_itvp>ELpZJ{|A|lkdU9f|{qgh4clcJbaMi~O8QOlkzq5B@ xCnJ-D<OK#{qv!UMq;{|<$6T*xb7Ny;V^F)nJFDSfMjOx+22WQ%mvv4FO#tvLDx3fS diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-8.png b/htdocs/public/heatmaps/gd-heatmap/gradient-8.png deleted file mode 100644 index 7f890cc90e83bf04a01115dff01d079e8464d265..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmeAS@N?(olHy`uVBq!ia0vp^96-#%!2~32*1ud1q!^2X+?^QKos)S9<Zu>vL>4nJ za0`PlBg3pY5<o%r5>H=O_Pbm>g1ii;BDOjKg{(YX978y+C;y30|9Wy_t^M)y%6Iry zvvAeN3K`mds}I&z7G`EKFj~N<mU6CM#k7FaZO6L*JUu)-JPaPOd>s3CCHn(SVeoYI Kb6Mw<&;$UaR4g0- diff --git a/htdocs/public/heatmaps/gd-heatmap/gradient-source.jpg b/htdocs/public/heatmaps/gd-heatmap/gradient-source.jpg deleted file mode 100644 index 821bff13a0de21365d5feb74cac294c4494f7c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27121 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 UtVj`}QkS9^UM|bp@p!-g*--6^5C8xG diff --git a/htdocs/public/heatmaps/gd-heatmap/test.php b/htdocs/public/heatmaps/gd-heatmap/test.php deleted file mode 100644 index abaf659..0000000 --- a/htdocs/public/heatmaps/gd-heatmap/test.php +++ /dev/null @@ -1,31 +0,0 @@ -<?php -// This is a test script demonstrating the use of the gd-heatmap library. -require_once('gd_heatmap.php'); - -// Generate some test data using the static function provided for that purpose. -$data = gd_heatmap::get_test_data(1240, 600, 50, 500); - -// Config array with all the available options. See the constructor's doc block -// for explanations. -$config = array( - 'debug' => TRUE, - 'width' => 1240, - 'height' => 600, - 'noc' => 32, - 'r' => 50, - 'dither' => FALSE, - 'format' => 'jpeg', - 'fill_with_smallest' => false, -); - -// Create a new heatmap based on the data and the config. -$heatmap = new gd_heatmap($data, $config); - -// And print it out. If you're having trouble getting any images out of the -// library , comment this out to allow your browser to show you the error -// messages. -$heatmap->output(); - -// Or save it to a file. Don't forget to set correct file permissions in the -// target directory. -//$heatmap->output('savetest.png'); diff --git a/htdocs/public/heatmaps/heatmap.php b/htdocs/public/heatmaps/heatmap.php deleted file mode 100755 index 7e7a539..0000000 --- a/htdocs/public/heatmaps/heatmap.php +++ /dev/null @@ -1,86 +0,0 @@ -<?php -header('Access-Control-Allow-Origin: *'); -header('Cache-Control: max-age=3600, public'); -header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 3600)); -header('Content-type: image/png'); - -$zoom = $_GET['zoom'] ?? 0; -$x = $_GET['x'] ?? 0; -$y = $_GET['y'] ?? 0; -$filename = 'heatmap.'.$zoom.'.'.$x.'.'.$y.'.png'; - -if (file_exists($filename) && time()-filemtime($filename) < 3600) { - // File exists and is not older than 1 hour - readfile($filename); - exit; -} - -require dirname(__DIR__) . "../../includes/bootstrap.php"; -require_once('gd-heatmap/gd_heatmap.php'); - -$dotRadius = 16; -$tilePixelSize = 256; - -$totalMinLat = -85.05115; -$totalMaxLat = 85.05115; -$totalMinLng = -180; -$totalMaxLng = 180; - -$totalMinLatPixel = getLatPixelCoordinate($totalMinLat, $zoom, $tilePixelSize); -$totalMaxLatPixel = getLatPixelCoordinate($totalMaxLat, $zoom, $tilePixelSize); -$totalMinLngPixel = getLngPixelCoordinate($totalMinLng, $zoom, $tilePixelSize); -$totalMaxLngPixel = getLngPixelCoordinate($totalMaxLng, $zoom, $tilePixelSize); - -$latPartPixelLength = ($totalMinLatPixel / pow(2, $zoom)); -$lngPartPixelLength = ($totalMaxLngPixel / pow(2, $zoom)); - -$minLatPixel = ($x * $latPartPixelLength) + $latPartPixelLength; -$maxLatPixel = ($x * $latPartPixelLength); -$minLngPixel = $totalMinLngPixel + $y * $lngPartPixelLength; -$maxLngPixel = $totalMinLngPixel + (($y * $lngPartPixelLength) + $lngPartPixelLength); - -$minLat = getLatFromLatPixelCoordinate($minLatPixel, $zoom, $tilePixelSize); -$maxLat = getLatFromLatPixelCoordinate($maxLatPixel, $zoom, $tilePixelSize); -$minLng = getLngFromLngPixelCoordinate($minLngPixel, $zoom, $tilePixelSize); -$maxLng = getLngFromLngPixelCoordinate($maxLngPixel, $zoom, $tilePixelSize); - -$latMarginal = ($maxLat - $minLat) * 0.1; -$lngMarginal = ($maxLng - $minLng) * 0.1; - -$sql = "select latest_confirmed_latitude latitude, latest_confirmed_longitude longitude - from station - where latest_confirmed_packet_timestamp > ? - and latest_confirmed_latitude between ? and ? - and latest_confirmed_longitude between ? and ?"; -$parameters = [time() - (3*60*60), $minLat - $latMarginal, $maxLat + $latMarginal, $minLng - $lngMarginal, $maxLng + $lngMarginal]; - -$pdo = PDOConnection::getInstance(); -$stmt = $pdo->prepareAndExec($sql, $parameters); -$rows = $stmt->fetchAll(PDO::FETCH_ASSOC); - -$data = []; -foreach($rows as $row) { - $x = getLngPixelCoordinate($row["longitude"], $zoom, $tilePixelSize) - $minLngPixel - ($dotRadius / 2); - $y = getLatPixelCoordinate($row["latitude"], $zoom, $tilePixelSize) - $maxLatPixel - ($dotRadius / 2); - $data[] = [$x, $y, 2]; -} - -$config = array( - 'debug' => FALSE, - 'width' => 256, - 'height' => 256, - 'noc' =>16, - 'r' => $dotRadius, - 'dither' => FALSE, - 'format' => 'png', - 'fill_with_smallest' => FALSE, -); - -$heatmap = new gd_heatmap($data, $config); - -if (is_writable(dirname($filename))) { - $heatmap->output($filename); - readfile($filename); -} else { - $heatmap->output(); -} diff --git a/htdocs/public/heatmaps/transparent.png b/htdocs/public/heatmaps/transparent.png deleted file mode 100755 index 5ac920731787e5acc2b38c13795ca9d6d583b640..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43203 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 LNkvXXu0mjfV#D*_ diff --git a/htdocs/public/images/aprs-symbols.png b/htdocs/public/images/aprs-symbols.png deleted file mode 100644 index ca20360ce32cdfd7b55e6c4d55e1c86422470d40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55290 zcmc$_19v3v*9F?KZD*2+ZEGgBJ+W;&6Wg|J+s4GUZR7Uu|K9r<Zmq8FTGh3>`qYE7 z&))k9lb01kfW?Ic000OQ;=+mm0Jt>pcpn-P_?`pq9}fV4{5AjmTVCS#Z(=(KTN86D zV*r3M&O44zd_WL?NLOiyL<Necl+&nG7E@RRzX?{P6xkw3l|Y*QGk_dHB0QpCN7L@c zu<mSUud*Vrf*9JzkCU5=s$D$nTMCxWfS2=Xq{B0&!_`lofo19p8;W(4T`8<Jb*wu4 zPYtw?AcHXc_$2euPb!%0Tjv;n?zI8$#P>!{f!LG=Jap(_!z82i9>U(K%=%8J9KODY z1{psEA<JpNV2rjJug|`=oyJZY3QJZxMKp3m5WDJHDuzsyTR3OA1@|EwPK?U5R%Vk! z65I8dF81^(&4hLdS0p%Q9e5bGqPz%<@k;2w@&tn)BJcJ@-?8T@qeZb5;G)qG%DF-= zpF6%c9a=O3T)SjJ`+~<2`(BZNKOKSvN1WRu(es=j0W-ZxTX$+_y^|EDP05&ipl{9o z5$DOp7a%D-y}b!PGU{m{%wb=7Z+t|z6CvJg{jb<+T8{W-iTqfdlR7~V5&i#x8rQsc z@+@qv_n4-Cege3B9AZ(Y>)n9O0%;&6CJgun9syV=yzYS?Fm~b^jsO5X>3=(jTakbZ z@FbLzgp3H(5i}?g5@{>i`y=oaj+2PG({EdAYhxQHz;6d*eJ5ihVpnq~Gh#6b8F@8- zL@WS+7$6}mr0lkKk>%>9EVA6|+aMth0{WL6WDYu1Imw_en1mV>lQ^7M4~!<DKO(mu z)Bx)|BwSKK7+MdGfh3o8DEJL@jul3tR1xg2;P{o7?}p6wrqx^Wy=S&}eAn~UMw;VH zm+N#|nxh~xxX}NfuMHG365#zyJ)C$+<yi|buS>N!=}=Mr-#_&{{PTa`YC7@8fI0r- zmBW;3#58T%ab|_U1e`X{fUdI(A%9{5uja)(ZG;OTR{r6ELswf1SNf+m4&@B-D8dPx zA&;#V(@e+e-6xmgCMHxIc>PAu&CN}Z-%}BOvgb~(KOiod7<!Kpc+=8fPP`F*JmJ<~ zDOPKxd6}p%Fgg~}NA}RIm@8EIsKPxEuEe~&URZYBUEY0teG3(8NWE*F?)MTl|6*pj zjbHB$BeL)nuo7t>n+8Vd!865=xmlMBPW|)Q<e^Gc22>_Q9dQSC+Z6`V3*x+bYzW#M z7B`UWQ=#ea)?ah4K&o4u@h#ll0_**~do5}wgQUKaEoqfKC`@5e3SRrJ8dUEC+5;s> z$oe9p#(0f>>iic<FfbJ1T$S5PeSLjlQBectwm*Xbk1#MW%bcgy@PMYtCtopQumwWh z?%_ZK^GY_u#3K}9@L3zH4x{zAFw;f@6FW#2f!7okhmv+A;6sqqcLbcI2=T$bc$$+s z3UwiPfI3aZS<)**u0@8qe84+7z67xT6GBLoZQfZNHX>w3WeD|wvk`K0bAv@rd)}Ox zi3tsb?(gphjE;}@8`Pb|#v&Ir`HUDbTid-<FSmm+YEV5^En0le8ZoanRaL55)+$=? z$HGP`NJ4N@-8<*DExqXo2=sKRRy-R0`qgji65WaWf?x*q05%O;A^5pF(QK_vLpYy~ zW$j`U8?yL~9~)+{7ypyL*X{wDtxA~$w2vtR%<oXp*0pl;aXG}{vdI|+THb2gC)s*^ zy54v~!@*(v)9Q7}ZTBU4zECQK9)u#A@G?rV3Il(Ee181k;2<IY8{;>F31zsPq&w(H zg%DZtIdnh^PJ)3lZ2oq@Ix-<)H^cQCBm@Ks8rp9=J4V1rG=bsuR#&6dsv?Kgiab>j z;n&-F&9<|$>UOtxjgn*)$PxL^pBv{VtzVz-%Zr*hpv@FNe>&Nz_V|3hT>|I<^y1>; zD~E+8yGYtFUJwgS)*E0CQ29b+FLTaa9aK#-i~2v(@oodsZY1mWE;NFF;u9-ft)&m? z3KMhgvTZDAFq=rDnM_-SQ6Js$xX`9B^hlfD?x9s`IKuv6-yTEA)d9`ENz>6cI)FG8 zi}5a#x4!dQ88_fV!9(HWWwMqFV4&&I5$2HA{+l#)COgirxj#eh(1s#|+r%kN-*%u! z;wMN9A3Chr9S3GTEUaa~WG^{nFHWdZ#F*p*kp3a`SHW=jXRmv&h0$vO@f+O&EjeX7 zI0XeoNMj@G-26OWDGoK(g9tjO6d>O}x%-F~XCe6Ln6^?BE%2B}3SePAB_kyC;bJOP zt=pIa=CHnm5A28dH)1@s{1?$|aPZ2~nJbll8^Ck*fBRl_)Sx_XE{9HKu(&_1epYI0 zB)6u&F|F|8wO`#m(clvj5*mn90rJByEpn4|Q1MXykulL(cQ9D=L{ng{fWH`m63o!E z=IqRrSOCiCoed#l;eYb1ctfu!M0+@cUqN2gJD)T>C|0Y2y^3UOATpwbn_%vYz<u-z z%ZAEZ45m&NaMgm~gkcHy1f}l-TTQ&-<irdB3{pZyhKyr*e$V=BQ;?L0=L)=v@y$(V zW>coj+A(<$bSrU{64@*ZueaQ1*C{29oGpZQ3>f43dG2tl;S_yGC3^;Y6GX4Uzn?!d z3x9{`<ri4)9;+!9sa0~0g`!a5bM4(l+_0T+Pp{Y5Nh>e#NwSRWT4FycIGkm_dn>#< z^R|HGtgjkFu;-`F2p&-x`v!;V2vUMLK~0Yc<K+^jBd=evn9ccb_S)3Hs317vZ%8o| z;9x?64fsvFAg1N*xrqX!B_MC`hqBr>F*HepE*g#;>le?J7JASsMM-C~bn!GZJAtxZ zYlLBWi%&)!NtGr~WMXzj&opU-gG>i0@h6pyX3>Y2KO`ft6P3!?^@XhkK%t?cUK9!~ z{b4exJo3gxfAhsFP3zX1Kn&NXvTK;?+lexwQpd=dq!X7;z!fq{g^tb^SnjZ#T5F~Y z-A>HRoU(2q1F_q32Z6_y&&m6Z=WtrobRTm%UqYzW+-Nu&%UAj5Tyd#stJ^L}MwQ!~ zf?g@8sR3yl5R&QSRxPR&BNrM1Di#t=0c!Xp=9>$*V|r0bvjG|~`tSB5d=E~VRvC;_ z{XiYA!M|IUKCzJ8<$|^ilJerg)31!y7`8%$lg&apAaW2cfBP4L{mo9_Oo#J%^B+q- zg2>#O#X(zo!e`IA>k;eCFfc)KyZ)8pXsnMJn8?p{IB#1-e1+hIVVXJ!x624u+5vmv z++e)D{5Am}B%)CQZ7|ikP{G=nqj_xi@y+NIU7Nm_TNw~>aZZWvuP`z`!mi)$S8aCf z&NOzJ2M1=5h|)*rHBx_aJYd_G?ty(A55ssVohmwJ)-qmEsbbFFq(8N8*X5+9R0@;g zl9#k$Ryq%+rY!ql4WCR6kl=@BWnB)98M$LUQ^8p<P^gAHYMw20i~f|g;jM!Ion)#C zV=4h%3lU1!OaXBcng)-e7=@D%6epM#aMB{*b?rtv9YPUTp;yCRzmv#zK0%cm5g=^a z5e>{Hkx9yt8vNb8x4A6B;^Vt#VkW7H!^+iSXpw0(-j#>W8%+jS+VVHmD{c3cn}(`Y z+(WM0Sx2j;8Ml)x$GgWR(9rU<8mI$RE#$XT9I^?$f8Y8cRBwuc$2jdWEsFSS${j~U zMfu|@7BUkP(OV*`i*0rrqfL>Jl?G><QA@5^MMED**7WwQsa-|miR^gnI--vqX(JW9 zSKxRn_FpkWM^fLkUa+(dgsfAJDNkuZ3?(0wcO+00qVN**z{fvyA|?Op-J<b)mEG_D zn21jVjjN82bwoX+=-AfpZWwFh>MB8j-%(n^D2vT3UrpK>oeqqLM2apSHD_yZO%1=W zEzh^17cE&}5Sc_NTR{52=eAk`AZ%RL*&Mz<=KWXH4b%4co(mamx0p&sp05bTQ*@h2 zI9ISg1f0izwb*pLyk9%Y`YbL|Tt%&fmSQzBIp)0->~_3G_1nCCK5x_T4LMYVmj0vU zBc)<%s@CcW-G4=GCA$vp&B<82#9uOzZZriQzQ`=sVeo{+uGw>2RxLTgKCQW5VlJuR z#2p=IA8hF05uMc$yRWS3O-fz;*<Y?;SkL%>DSPqW=ed&;`5mLtj&a}s5~9ND61I*@ z_KrWwFASS1JcDZgS*Pzm5X0GrlB;O)cNwutZi1bFvquVP&7~_~MRv1vxzs#u{Ke!; zYclJ}P37F??H@F5jh0yT#@J%WB%}Rw#6c9J=`AyaKUfeh3FWA;laqgm>vFYY(U-|$ zxzdJ*C91A3fs|e@3F|_P@r1$2mN%B^jHb6{c9=O8njs14w_>RnM&my_c`AN{N`gC0 z6;3Gw64GmkE&0+-!r6kg;5|$|zFD<R+2F6t;DdVPKi2j(7GModynOziD)_)jQ4NH~ z-v%4;PhM$5A?8gSnkfvnR0)6oq(~|k#jgr`L)8BRQGa1q9mYd#<6$7E%-Avqu+2`9 zXrGcrbAa$|6scJEDWo?jWw!c#anR*TwnBE(44rTn<&s_Ka=7dPJZwmH$^i@Csht4= zwq&s@rc9e5piBceP1450m>$b6TV<(K$TE32X?{H;5(MDzG>1W>i_6M<vQn`f)(<Wu z21}Gt5uhq5>a28odlo@KTVi0aY3K0+5=E~aJ^Ltqz<kIuzNn+&yCO{v?)ccy(A|)0 zRefdAFh=Y@+F(}v4Jyp+V6q{(TkW*9YB@S2Bgb$V$s_QRuttrMfq1o#Ofo|Koo~24 ztD~#zAFPLhf7&n7Z1=z)XgYiGcu;PU4d4ZRs#UGB3*8<lAz^%5B(d?NiLg^vlUI1_ z16Y*!JqNx1__EoJtsm>F4Kek4eYYRiXyln<o9#Z`^ol*IasT!;MMN)cFmRGKshO#% z$Vn_5-k&aM*w);Dc}kC!=#bAbQ8kZ=iOGgQU2W)=&8`i1oT@7lQ~d?zL^)99Op^Zm z;TLY%I+rN@a{PqUoigPhE4Ly$#pt~BJ_$;u7Iwl=)VPZS7x+J0AxeyIMSQrnUW#6X zb~kudBvGw4(Cg{Q{ZPT8HpzvpC>!RSL(T+(&dGc~^IkNP!t^{lNqsfb6m*l17w`X) z$c`RbUY^eba46OrQ+TOnSCQoNLwJknZwD(%^QG7yF-IylCx>T~k~81A6g`gQ-gPNy z{`+&N+0qmqj+>SkUqAQfuwbwD#I3)!7B$o<kou3Gz{KN-cFEPAt~&`j388??jRFpj z{FnMGG|MK_`-g{~>;IZ#8I(u34Z`)`^;%P&5Ll@aRDHwlAPlE7EG_0g+nB@piJiKU zjSATg*MWtyB=d<Ws4uWcfX+=k4c2)BcZFB$CEH(4>2SkhG{&tllo*yMW9cI?6jcQE z2rP6XL`O0o3426>as8?E`G<2;X`7SPhUyt^Y2aXa2e@*scpF*?KkN)P^1)HNMQ31~ zv2@Jfib%227?2hmX?{w}{iLACapJ%+k1~L9q=K$LL)897OavNu7$zT@#p{o<TvVwI z9tom@VK_&ZN#@RqQJ`2V@rj5S%<sKZUa>PyllO-Qx)JS&hXxK6P5)SSr4^<79kJOK z>+=aaKVPplqf3^<x?DLVEPw#l2ZC_+CY~8I$FqGtx4NdhQnfp7YCa1&L_&Y^1<bKF zCz%EbO_e`U&z~)jhAK$P@O){~D@3Bf1caYPsz^n^)V;n@;u&iEk})hS^t7m!e&{u{ zXU?vsUfrW5JQ6=GG5sw{3x+D2LgB%6Ai6)x1Eyku_-I@SBvqCbvsgLzuetOwP4*!X z6ZwQ#4!?J)TFnV{$3O_u{if@-N})Ovb&$pK^>EZ~oY>B8NYu9!DI@Y)3kN?K6z;mq zbugEs-jkKM92T(d>Q8>hc7tjqB!#Xl+3z55yG)RZ<J}{_M}dpKHEVCRGt!D={i7so zwiuF=lP{AIu$y&9I|ed3O&^Mafqu}D)|8|e)zsjok?tTiWKBTeodhh2!sAb`@fV9B zup49?Fysn>+w#l18BUx!W5+Gry>nM&k_7<D`)ka47c4UJ*CE-8s;C?<!=_OaZbG!% z<Dy#IPC$Mgt?$cjNI19jU@3aJN{{Db00dmF`FwcR%g6n0QA(r+1q@97w#`&Jo81)K zl}bs1ak|}maqz!h9byFWrq7(`&sgRy%kA}OqA*uZ>GDP}-y>!2v32%@gsh<<KHI0P zU^o|)5D7w)wOsdR_@2~3)@~za-|(CAkkV33a0rY+D*Bmte8138(2)y&FfJ1H5lr`i zR7|F-glDo8^94S3>NCX(6^0W0(=FDG{gP7xG#oBwE;eV8DE96Cbqv=2igXWkH^SDD zk(|wfTt$*$-6>^J=Ah@HR41PQLQ?KY3cz96DJzNm7U}U0B^A^A^pLX=0?VzqG>oA| z2!VYx^%xUjSlXPJ`r*8+>hk?XI=1dZ@mjOJn$n17-Q=K=BV=>Th*C~upNdUjgLd-+ zS(|)S<2CfT?XN=U;vWQbooL6q!lI4o=!$A;^(XZ$4eD<Hv)qqLUtkB@fT|QJyRMR~ z+H5eDD=*M(3=ciYXWJGGT1sYDEBzi87Ve78OlB@4*Q`!)Kv8}3=oM+#VmNeXo25vJ z_e-;*X7S59GR`)Hn5k8ZlxX=KDVaC^@LrUn_u;lIXZJ*#$piIxu9hAs0>mZMpj5bx z{OZD>8LEQ~Cbv*Otv{o@!+2^nX-Uxg!u~M;c;U4*qPPDH{ul<-ghE$j*VckMtHA1b z)p7ZL#Eo6|n8qh29xCFXpfs6nw(DukJa6Y<_9cf~fNVq^*(5AAhDS<5@=;K+J-Wlv z>4ru}U;S0_g<GgeY@j9|78UW%NR3xK{4L-?l@c4F=z7NjP|faRG2wgD-xcTu19;GV zX$Oi>acHX=nEVip)faP&as(0MFk-hG_K#EOLAAt@q|abnpAuBY8@Y8m<95$k0>d;s zqPI^DRiJ9k@j=2@Z*Mp_kRT--3&*%wx3w#toiCL@Yke_jJwR=JRBgTa_0P7iDo#je zr^itT>j#jaq54h159-$ak&HQ?HtmpYTvDpESZ^pM6uUetFF-EM$?)yz(H=Au5yN6Q z{Nw3r%0+$Hc^O06i__s}N|hFiNUbpi<bq=z%0Kfkb5DK{GXflU|HX1OFa(<Aggj4x z${ypt9F!n|-~Zr;#$PFmK?Tld%zx2;@*Y`GLY}(~mvb_6_Jb$e)#yx8yxf*$O!2y7 zw}P6T9;6Q2$j@Ll%Ng4P+!mCgBsheD%{uqM!-~G;v;N8?mE1cT7aiC_$PZ7WhMQBS z6lKL7!wdSnN%2Mp9k7ECIsm>^VlV*(T6aU=jYV6#w%W;+pwSS0b2C6@UH<m?iOp8d z#OJwmxEJB-a1{9&Y5w_!0WVtf#}l_g<v`OWB#^n-t=Zxq^-{PoLZX0p<-TL-fh65b zWEfm4+>rPVtW%!G&u|8iQGMv~g8Z6gQG1>nrgRy~?B7ffG)hjq0(t6wCUN2WZc$5f z(%edINK-A!w-;HpJB&6K&S+|lodG7!87Mjw8#mfU_&YnNfmY({z2k*RnVf2eR6}ex zfFs=Gu4hgu;OL}Q=^^q$p5~dk{fglafFcC^3EtX_CI}ul2*T=}k$YH|dF>rIJ0G8* zhFA%TW9Eb;6$<)~dMhJV!ihc_mZUtjn2hY7^vqXOnIMfRyge-$IbE(H{L}t-wn$1m zu87-u4g6n+E2XZNf&*o#i!~a@mU?Xa$9c`XNba;o4P7x*Voy`Z(itpTdkDQ72vH+t z7cn<CH)_Qp4{>MYbaLHzI7X{D4ZZSgHY(NLLd^K~b%dm~0uLq_*yROR>E27ul>OW? zSk2;8??~Z27y_q^KiUg3YYNEBIa#D?;7hBhC0Ed5>MMX$(zj^7OoF0Vhc9W1sq2;_ z$*arRW(~*Blc6(3+mfCpLDgVO&t!eqT4ix>HC1C5@@-dU8WoscB<HVp2MDg$y9o%r z8?C0}`!Cih-Y%<4>w5x!`F9IK?H^wNPywzd;yzz+oepIvC4~i53{3}0D=sNa4fljU z>%xgc2MV=$<qYfHn^2{^!j4~Rkig+8?b)rz_2!EsKd!-`*opc1$pvmSccr<5{;QVz z`i8qJX{YWEDMV6>^d@5Okr<JP+1Z=xrl+Gzvyz(5wFL#eBXYhyi1VeVQD4Zo$PT0W z*EK~%Hbal_qTZmZkZ9040xd$kn!VqjE+lQ{WTF>f1#5_7;py*N;fmU1GnmR04o=+I z4JX}br1@BFg%Eh80T%b*rmdKvRh1;?OXU;iUAm^?AwN<R$C^@d#&Wu=-sdQqk>Hx? zcET3r?6^A=4RJ4jq~6-(5^SB&q5u&_txt=YK5dTuARGg>{~wW_E+lK(BzTA2*|71{ zw%Z?MDHeo~giE5xiyReWR4D2f?+LIzKvuX4_8J@X^tWC>uu5-<UyioB(2Yq*SlTxj z<oaqt^u9481yga+>OT7FU$7|Zy5u|{s5Y5n4ER|6y~``855}|JJviBwU;bpi#p}nh zZIyOSD<RiXYq3bxF@i{lpZxuOwphaHu1I2#k~BCtNZK2Ba&l5kUh!4^0=I^d*l$(x ze8(A^W<B;g)9w9UZu1(jC&D^^nfZ+bU~WU6i6q{RMQrT1vsraa1$-P}vJuSS6f=R+ zoYNG5Vf_(EHwH`j*KPmq@VQke4S&uWNk7$Y_a474!Ih?nQ`Km&M@TL|uTa#rszD-Z zJah{d4C4CxtAPRHg@F-mp!7k~6h`oREBZN$2TCd>+{cp%LEA2MQc<+`HVN^G10<Om zyK0xT)CKDG9rg(fulBmK%$CO_KiIT%GSVS{7!j@Iz&w|TED(a-uEAqiF|44tR{=DY z(!wGq78y;~8$-&iwJ!d*B{my%lHrJh6uu{rnR&R>+8NR8d}&o1-T4?DHH%<(o<AH# z&;R$Y2!F0pMY!?Pyh8QdFn5|kEXh|^Qi5vkH8d<7*N`@9e!gNs1C%iqhjs{QDv^W$ zK7o$2{KzXt1(L?v&sYBEsy*qq5WQ=M%pZz-QWG7hVU-1qdixhq+z@46Rjc>m%UAtD zByFba@Nv8J&S9ga<=RB=zW<)fD;LrWXlvujQ*-kSWd`Y?l&w=TpwWEaZQHg-NHzJS z1xsnoDmDRZ*IFCT%&m>!VFhHMEI{1`k&^>N$90dEYI4D@^~0}@x1>nhL+C~|M1l<x z&WVL^&%EQ5?og&gZ#t8*-3f+D9_=1vZ~t;+2$w1U2M9>;Sz(FR%ZKAkv@R+J#^RFP zd5fb$m%Iw5Wh;VYk8XE&@W8pr^!xY6{Y*`UC%q@ErT~bSZjVC2X<@Ny)0UZDd9*1O zV@l`h&vfPWZPjc~rP+3IE!dY#M|h=yi{is7u70=R{SCjmqxQ*#DwUKXuoTtshMzIR zKcZflucWHqUZ`b_v#4#Ec>KrMXg8Dj4``{Zl&eAM!8CBSVEcMucStBk7C`p=w|cob zDtwDhTn#B=q7M}NqqZH9v^~l!k6(Mf1FN(|dNw2Hetr2i!4npq=q*s~un}Xqp^j!W z<2TORiPC})mKDGGzSlGHRMrNPgBhBrlivvEc{d^A2BJ;)F$pGX`v~2LhQJ&^z-2}; zohejFpL0bOH)Y`R?H2I3?;mrN?>7<|nv|86dS`o9bGdFPF!q`K%iovI@tM7<^YICP zzh+SPZqn;xVrJpv;FCQsEtRTFw-s8vuPx7+*L)6-3U8OToSxxJaVC}5?dzY+ynu@L z`Q|HG^MbRdU6OjmqtOMUt6c+ap*r)ls-~%^GBhP4Q0hiIq-$nTO|usWB9g(J$Bs_Q z@z*r|d<9NRCBOF(MVbk?9R6CbOG4UJ>Gtpo2?;gYY^M7Gj$vZy&744Lw4Y%MR1?ot z5+cHOrH`}`q@In59Fq_JZ7e<Y-6cDXuP6cwBXB?iQ-H&9tHLLZNDm&DMxu9TVp}wy zXa6Ss^r}{Ory@Ri{&tcSyd4xH_=$<>cTTf+5RN|+4cra~Jd`S-+DazX;!qAYOEl~~ zvM4Q@UsP|*&>6?r)3<8dN5D=MBAVYCuQ?p%N_)HPYMumCcH13JBAxhf`T^VGF5{{k zv7s>EC5w|8HW~%y0m#Q;3d@G4ZTW!sQ_H4mj%pR`o{{%WpF)haCvfbXXU?1Qml$Pc zDn~+}+C&5g!alYxfdeR5J)$JazNMrkG}O=@6~JDVe1{KTm@>2xSJ{_u)eq%g)9hsp zB8mBOA#cO9mfe|s4NM>zn`i~jR|-jgbHh{BdG8NL!4qDrBtt_(=l%{sgvVo#L?IPL zMnyGvZq?5UW;%b?uzGcs(x~ZUCBM(W6MrHn@)3D)SpPGxXn3%pq6xOV%NZRwqGMQr z#!)}^^X>AGqwhzgV3n<f8Q4Rfnc(6gc7rJFy;$D2FGF(;VJ)Fsd3t&+Y->~GqgKT3 zPfaRZV(6_4Mw}U($;e*y2DQU~*<hcb?$1ZA_gQ3%rfLoXXn)4rt{k;}+zI$U7^wwD z&w*tMJa+8hYD2Uq|Nbx=of}v+|IkvEDPQyF@h@gkf9mZ1=fXLQPF3!$sERK~2a9oI zKi!gInZV|+_Zlr)B!$3LtwJ!1p|ie-FIvEvtjpPqSp{Um-j7EgLQ*;hS2bV8%QJI& z(*Y`JSy@EiuUCryb|SAEklWkaMw>r#-!_Wm*<E)Ukn{xV$$Q^BygG>`jXOuIB^UPa z^v|NC=cNgC32%=g3SJNpzJ^}m4Jr9xjWPP*E{nY<1|!9*<L+g+72Q~*>W+jl2DC5^ z%01rL6Bpn@l%(V_6?JJc*#6PwiT}+L7B_0zDE1=GEq0hDw_j_d)a97EUjM>-1qbq{ zMr-FvW&|#_uic7ooR=35<E1Q)eSKezXAofun$C0`3f_>$+h?lIqoyaM4ehZ^!@!t% z)wp1p>)m1-z$Xt3z$YBX5^yl_MXyu0=rR7QkA|c0M!cUl#bOBg7%_0!x9SX`yx$&n zN8?Ccd_4^-@XV199JFs~rQr<|*J-t0hC_5Qx;I?ZN_Ay=?B6Xfc9x(rq5figKH+rJ zKYdE*;nhN<DvsB&DfEOe27rG1*Ev-bpHo2V1dfqf5)896ho}~z;$n}pDJ<W-A=D&r za>wCmZpv@cNfo~p-@BtbpTFHcF4wV|8%T%OYwDlO@>#9!tqd!|X8U&QrQH+x8r7Rj zQN<(&Dhgw)H?mV%&p_GeoNp&6De)B~nC_)Q2~6>|T$#A!xveGrejj}5+df!37zHMI zX2W54ld1Hf=WXAa9N#aA_a}(ckombe#*8T!Upzfn$_btwD)NTSsGn~{kxmKS!#-N; z5F?4E3p=qHO?iqBo*fB1PkRwRRwM#m?e}w4DgtI!>hiaBM(I(q!~Z`oz_)^fxs+$F zQk``NQ$Up}hoc`+xV5F!*o!cgxTL;NsUFrk8jcJmd9dMuSPf&vwa!!+3<c-wg2WP{ z?nJ882r@3V=4MsBfdRM)65(z&H5pr90EB|mh5D?g`&pT{*JIMXG)EvLTdwDGz$%$i zG5!stJvfG=XeGomqEdNc_SKd1q}ci#oF|EDhf+8n)Ko@mY*c|*1mPjS$a=H&>)iwc z3@mkP6#wf18Z!&aC84i~REi1q7ohXdWNriQVX!5WJjCxj4xXgQ{%<{$xAuP2TbBs} zqG1jMWPj|BXkX8l+BgY{YsZ&bV1ka1Ksj-?rCK(oq@Rwhd}!g{fV;4Fm{idEl$|(4 z{|md4PpEZ2_5m|l8kwIS!d~JdA2q}2oi=8Lo<uuVQPZ63`yFu3;(EoT<399Ctf7}{ zFdPXC3y;I3*6URQ#pJPpkBN+|FEBflhfj6x>*CH#hKc!gBQUQ0-|2ljiLkJ+-2egv zi&%Yq{Ys~M!=|Cu-)73HR+bkgP}j*{;NLquvI)PjaY$WAS|2p&2I}zqbh{LKzCW>= zIm6C*^+6Y^>E15)KOmgI`Tvrv&eZ$K`62cm;dUc&>rVz#UA)dfVy>S(7ifzLm6p2i ztnywLGu+kJ2Qr(4-C$g`mHaRq!34Md+zo*z^q_27*p^APBdn`~0GY}0u;_tqfRxvi zf#9VGX-K-<i33SdS_C|~clM`B^r=%^#hN&$tGuvUuQ$`(efIi;9rC2?*=LiDMUkDs z$)W*SuW3-dGPn_f5$wJv%}<|A3E|Eab+>Qtn|rj+Cwo~?BtVqkG`5ruF33PHU2?yP z9=Mlv<Sy^2!TY!Dcni23@?V1&Pp8YN0|OIIQNMznJ5015zAc-Pmpv1#dA3eVl@<~x zw1HIZK}R~ke>LmpGaU0FIfbeHy0wInF_-Qp3Lc*N&&wOr90JpMa*b1EunTGF^@hm= z>dOCURdzs&TVf%`wtLhPWnu$_wx*hwv)U~)zVR=bN9{FI2kJwdBuggdLN_!6>EwG% zKrkSLNfCY>kM|ue6s*MsT2;MA;1iu(_OAi|f>$uS|ExSV7b+qFDloQb`KLpxMG0~h z<ZT6Ha5>jhKNQ;8$)D7*TqB*+R<7>{6%=Y+1Hw!}V`Kr6ue?=SQ1wpc@IYM0=WtgT z<nxKj<-xk##)&bRjv*u;OZDw4$6F@{u1U)0@QI(z+EJLhr<=<=sh|J4L6bNvjh?=o zN#MY^Pn?zEQax+#az$(5%WAnax!WeWi!fO^Af3;Fmt+%;oq$1#M+$NJj?IKf5B`gB z?+5Kjs=vW)Y;&Sk4;>~pAFgUO>t4}nfv$kKWPlt$Q}p{e1F1>am{B2-%{Cz<BKm*s zmm5`Sow?{1D+WoqeN%eMxVMR87=*|D2nJ0Q%p=?LS+iio&4FlwBDsF|i#l>`UvHt_ zt&*IrnY`azBnxL0R3vO{TZSJ9L`qsChQcqC22|NeIxmbA>JYj6xA*E%OopIGpw3wY zE;~*`0UXz>4IwHOs)xQv@bHC}YVXmvpCwXRr@DBlA*Q378Og_?Od9T1L!+H@c&(tV zc%)DMLj!9HHlI3OxY_h%Vrt^hk+=}LULfBeU=(uwVQ96cNVK|$Et};3V?(OkLIwsi ziKx~R9EMFm2g2@KWhIjKu4~krX@j3G;Z)V52s&np{HiY3Aa3^}AOfWXzEb-<uL&^n zmcYZ0mvB&y_yPs9A-fkGVH5{A15qZYSY{_x3xJaE0+^yRZyjMdo1vejB+p4mmq6k> zxbNp9R?C(LjfRHC>-tsqyUnj(zb*)Sepm<63_a;l6m)HtI*|^hqEr9r(e*+ZjtSY& z2Feh~;CYnfHRfSy=;(58@=+9ePdBW&D!p2^O@(ST0XQVr-JXA2w(0qFb;U!&g5V6H z5!sdB7O3EW>Sw@EzDVh!oW*A_g1{rT?*Oxbd?W;}Vn}P}7fVuNb7weL;JBQ*C(*Fe zgBqW#;bbF3w&UUKH~CizeuZVja597L^t_zF)NdrdLAGV>-z_$qD@_%|Y4XCt;3f^L zSGJCoT$PeKhxw?tpeEdI9SWzAp-fcDX+Aw~)DLG6P)Mpe#x9r4CV4>5P5`kRJ$a2q z6#0bVSvhZMb&{}r?AR`@K4bDc?}PmQ$F=2BroqEW7kv_+r_0YQ9;``8_mA7Ii`D(# zB<yKt?K9q`CLdq#*Vzq-<NXzav6nb^jXDuM;iL$ummo8pYAX0*5845YCT4(*e60Bi z!vou4qSTlO|Bm^YqK=DE^$r)hn(jAh$D_&Jk{q9Y3p(hsd7uWSTB$As1d*3tE+Tud zbHGd2!UgsCuhDicMU4?ihK+`x2S(GG@JOdlbRzw#wfx+%aRh#K7FHcDT|b`ZIa^}$ zU_K?We5{6{-K?70Z930ZXQA8+KWHI?_c`7^rzfYvKy5vwzFFvuOll%QW1gS_1))YW z6u}70CTJuiVv_!s^-gy>&1Tjw+l`f+4ehCX5em1HJY{BP*vJ$-TlmArWvv6>?XGwH zKuEHL46Qf#xPJv1j7H+>U(XP5(JVl*SGPUpv-aflaB|sRkw#}wGOc8fawq}2>>QTn zsXMp5>DY798hfTmaCh<8nsX9akAIa{h7J-iwbA${VRT0VaCQTinFxp&$awRnS1z#g z9ZA|VXWg8*OBg#RcLV~bTP0&S0#syVL7>pqcAV{r&F{t8*Z1VjifP@~xuw07tUW12 z4m!^}S^Dr-uogH|5}?^J*^$mdogg9_UOIsWufNGNfU<zdA$_UXeDXU&Zn=S(Oa&0~ z?VMHYj??@ghs0(7+upnzwxJDFsOIMMfSOJ>0lSr7jt}+y9O3^)fPJd+?-V@#L2RIv z;4T0{=TgF68khA3=*kFoy2OpYMh*)t70KeRmQlTXR)Z(N4PHvuA5a94K8@y!FulCu zV1Cybwmn>Ch<kXP8vIA{)pV)un61_y(iVsod0Zk`DrDL=Y2N=KB~LiD0xF4yYju6E zIE*W|Q3WMrMTOI}a({sGmFNj7BASc!cK0S)a{U2>xc5M`yv|(CT@!9UOxNF#SucIh z;npPT+%~n%0WP3~s!mB*UrT_14bi#3gr$#*rGI!@|8-GA>U%r3B!~UaT{!MiO~;*V z+v{E?Z2x?@Mh<B2s;jF52T$aOG1^LYzu;^y;HC3OHuoAZ^0{X#8Qbdegn@;nuD=B4 z+9U-rV1ix3Y9BxPXvHy89Nu1T;ga6->+TgoN)Zcs;Nihrs%GO4DpP^`_}ID70LrsM z$b<TOKco+ZSUKGFraWr{N0>w%H?oJLK35yd=<4eHG3d{$JNmI%Oo+(Qe*PR(tjT7& zNlGZd;bcr39Gpv;*LKmc#-t1H+up7<jv<;kd|FQ!oooa?zl`{JMWZM|X=&-d_3Fjz z4aXQ(b*T$@<P|OljH?<o3I#0^k2+9FRK-JVX54G5^N9c*kSn#o7fFUA8RahrELZ*T z_CN&o<uTe^|13lDQ@1UZtFu_|2*GF;qVbl<!!b6wxgrfLZuV346P(3V%bKp{UyExV zZZ!MLkqqBFi{oA<b3qiG=RaJ36>-YgwC)C%mu6rmRL{e?;hAZ{82^E{>K{$tKh;R0 z_9j<xX+CKoh7MrZePxm^MvFQkL$c|+&qk%S+h{E=;+B%lX|6RK;Zm*PANqJ5NoBtz zM&eHu?ePh7I<05%#fi?z**nTOzkNNf3Js&8yx$F(S8us;Dsw(vVM_h`SN+#7cnp5m z>G8`JiiFGytvvn2AqRm{ZnEbS?W(HhSB)w}3P_qE^_Xxr#aCg@Ro5Jy{w(&9an2n$ zj`HVUE;pclI{gE^Rfy4+keS!ba{|-wwdb`CVUZW`khBE7yORS+sztst9}|9LV4Mk# z#Uw-8y;Lz8$x0igP89p<krK-{P+L%{N?g<Ny!n1XZX><v|BF^W53B0fVEAv4yWk%r z8xi6grfWwS8$#QiemJ<jKI^r_zVW0IajA(TpaTDNJ!5jcg)f`q!k^mZa%ukdSOL}B zaV;v};o?7Ib2RDudNVLL4{$w0pG;@7Hd~pM*R8+^MwHS2e4FQYgUk4+#q$|_Fi~8~ z-Zms9WoUk9nQ93uquPFZm}dx_fzG1|uc*bkkY_<xF9hN+@L-2zTgKv!<)0H=ebC0k z<pKp{Yo`~DO{^~S(%SPU{!M!gE{bx+4yTz?8r*hNSUIltLE~#KZg^nHh{Tu5n#PSc zFvWG5W0lW>1#<)j>7h)gxI%)wvo+!4J+Q4rZZi>?KrSSJc(zH+m;TD#v229R8fV`j zjex!*IgVwE;juN)^NW0UVEKRq$ab$`A45V)8{46Tq=HL3TfW!J$1Xjdv!wEOT})&E zGaKKwzT%2TJrLS|-RI0f`Et9mXOczX;*?jg@xGbiP9$f=cC;abw5>7#4ycn(O-FL_ z(c`es-MrYZ>)S&ddr9dD)?=i*0=A550odv+7$zViZ5#rz=UEqqFewHCvHLz4BR^Wu zKWG+?;P375{pzJJ1iEt01-i1;JiEqgWe3Lbp_lUMCfAu`ZY_t^oJ=J2rPb3Wq?}AZ zvk%6cp$Zg%eZai|HjB(%8gR6OW4<H;9Qt-)sstT#=hJaXnkGPFjoE7Pg9sRpkB07# zkg((lwM)0Fczl-2jm<uJ(M#W8b0^1RYC-{>+ICXfO0VYWPWO?Q*W-NAv7@Q94d-P- zTFm1ZzihtqdYjExkxVkf;fupf*O<{PZSAbHg)vBR35it*kA|!e>-E&o)N^4);~TYy z9}&aw!_eXCS=SZXta41T`aum_ltHTYA96#t9a%F!S}+c9bf64q8b*O#olyIhc$5E3 zv|j+`KwT=QGR1J}$8HXIyZ1s=NRN9fGcY(|$7D6WmD0+vLpTHJ_G$Uv#VsG)8*i=| zw4j9E-TZA}i_8Budbb$BFd93o(cyIr4#V-);~#cXzHY;`A*8+8_Jxa#1=?gLRDy@{ z+fIvpvH99zfKcy#gea}^^GSa?+nKP`c{G;sXfiBcl`iR;7KhJ+;kwgN{c2BfR&q)) zor{dHb^HywR`jQGaEh{=gMXL@)46;nlCbJ6m1{w(+E85>Pp6=tQXApar;5tQ6X`lm zs}u2K;Msq9wXOaz>F+WEMW+oX?9kWzJD1%X0Poqx$aqc?2t?GJBg71jXeKLf<O}M# z#rA-Tbk-3zh)z}=#0$DQh}Fm_wCYyq=)Ql<ZMMG*FiGCLOw*Mpus-}-%E5#{4hf@? z25I-$eQfnpk{(gFIB@ZL-ZanlX~zMi=xAn$MtuMajFw5D3s@_aeX8k@7s!Q{DP=I3 zE3zcgp-9_QAN4`aznl~lI6!syjcxnpO^<oU#Z!^LivYJGpjRL?aXh#^(Drepks`K4 zA#zw8O(!i=_?|gjZIPG(M}$d<Xuuw**rfyESA*F*38uB~0V3TuG7ABtqjsbu6FE)T zDmInhWn5t0!p(pIVzd;EUH22Vd3cIv96YeU_BBX=6FH}vp&s6;F=QVzGC490r)%08 z)6R?Ajp+Fce8dU?)mNZgd2_D>R0U$(@1s>#Uvb$VOn3XuJf0D!wv*%Z$>{0RY`eLr zTx%+969)$?fwng;&0FQVKR)C%r2Y~lMfC;2_K>NCSj=d?!+>W4qvA4Xb9TcM0%xeL z;)4c1yIzIfJZ=1#bR)2*rAbx@O=SnZXOQo;RUN$2!yOLitWLQM&})Eem;%+X5g8-s z$-dF|Cw7AnEE=@-$*<KCdwk(<0k@Qa|L`F1s;Qm<X?jHB{&Rgxe9&E~-<^)XDVOvl z_$oIjh>n-c2D`eRZ1mB(t(^S`0Rq77Zmihr<Cdv%X<T4=QEl1y>w}Vn6fQgP{mIyI zf==S&R;+lV&3N$4)<aE$c3%*q?Ko);NmxWgMoL10i$allAc8ylOOVysP401*@+LCc z6gGUz>}{2Mw7T$NvDXEC+wf4zrCukk4)g^47w5<yeA8}+dw5NH{+{b{rxO1(yU0Vx zN1C!hr58sopnssTQ}e%O1Fk99ai)03TC-0EXd5}ECk{hK8V5h+W9o#V82JXCv;cF> zLTjCoeiZv{YfY0D&aGGv8bYbf{ziivilIem%YJho=(a}%v59yHVjn#2LayQj5-c;Y zx|({u>R1BKC3x&cvsLRr<vuY1=#FQVhjAh7iu$Oemi?(L%1Y<YF}g$4m0I@(cUHkk zYk|C7%1Nkd-#C;??ZK6f(u=)=!zx$cj*ktg{R^N^9UX0f98<xgUNNcuc+C1QBCS^= z{@-LVdmo7%R4SL?Seg=sekZ3?CT>y^4y9wy6adR`&N-8AhzmT@rFLfVkh2F+!@2tH zE6DfH7C6L8%@M_J37$-|J=~uYA_q_^fsyI(ng)-tRu7IFF1nASnaag_k+h9A2jW0g zoIjAJjW0{@_FOsP{3n+ljw@}r71T)|EvjkV?8lg{wAAeBV|qMQPE=~3G+JvRPpDbC zT{iiqaoP*CwZ)591jMYm3T~?Q8wdD+zZb*@7&fndH48H(;1{0{{mfMt1z0Xv7glga zg9)tiPuEQT!rh&b>8(1L!%7kuViiF+OblIzQA&+U^B1gvO>QJ)Aqo|gVxy)p{P~4! z*HtCm$9C2Cs+bu95VJI5u)oC@06Pb;AX}UILapCl@T+B8{@)a;QmG|&)vG$GoGy__ z3Nu=K7$LFVRV8}nbEf`U?@7&B!d6oSbYYqaKIZf0C!758uTu6Fg>~I0ZaNwL8LjeN z#=-L->vXM?k>hKVLG<^rre}JtVp%|>{v<KTWC|1*F(y1AzN*oCxA!VgLZGftTmIX% zvPgOr1$6td2&RMz?Gd44w|hQcp-Qy_Rbp$A`MSS-Hf+vvTNxi(8q)-LI892w*A2+3 zBqU|Jw$^Q>KdBI)?XU;uVLu??RqZeAG^Y)Q^IDM%U!(c5-Zh8pBRb0^^|}A4uZX?| zUYmesF-Z}#VVV6ADsbqTV#F}4x8jBDyy#_AhlaPmTQ`D2j3tR7C59J=3I@BE<nkdE z#mr{#8~DG6vk7k@#MmSbf&2c;vuRI#NrMCxk$C>H0!L0Go~0qR;U^lYU2fNmkJfST zmMPCo$7Mqe?3sJ6{Hrfl*@zFtBLi<&CC+M5F=C~Q&*!6b94!X{H~9U$+_7UHgt6nz zQqA><<4n-~^EQDbrxYeFr|d{HkHx6Q-Vl<O+wzu+R=9qj$O5t~r+aX!ywx%MSP|AB zW~5+UG``ci@EZLMttX@C(1g2C8tpV{O4;ZggdC2$E`n9_JxpaEcNc;ah))yg{6ATr z<v|Ejm|nz;25>$9Dy02L8vkdj&uq3{N=Xv~G$7}bH?CeE(?FRG!Z1dD(wP$<l~gjQ zp{TU?tU@iIu1D_Uw5Ji@`CBkU4$L`|;C9OsB@$O<X8}m^-{pK?>~}p!=Vn!Am#NLf zgb>+Gw%W_Uz|pi*UtIUh+^!gUYBZIL5|H7{HdRw-7u8QQ!XP0b!6244AyE=~k;D1+ zgccV5Oc8_ib`OT}i#CO@Q@Wj^)G;AOOX@FTGxDISs*CsgB(8HU=fs?-7%wtyhcR4u zzhnNoQ(Lp=vR4-lHO{Xjz0F1k+%rCj(f;;pVAJLh(8CW7WQ1--c$pi!{q(QVrhF!i zgy(s!!HOi~jvAM5!H0*sVfwG~ET2dwK>y7<8<XyAp+=@b+5IPeu*xrEgkn~PagU>E zq!wju#VYzO=wcim9_kZDkE3?NB*7N^Fqs8YhTqdu#izEnq-#V2RNiA}AcRnI|1bsV z(6>fuWDq#!KOU5{synI+dwww2W3rew>jBkt-fypalIeIB(@Ng^Nf2)5HHG<UR7S-P z4>Bl3{88ofR~HwEGyDm@yDhp29{+EQbqCC;EDL10wli7~d9c?I?do2gCm0$nky(0y z`KlLtfmoGbU1PB4u!chIMB|@2pn9r=m^)-U20N=j5mCPRg)B${)W)B=h~s-mDw7O| znRbM_>Ku=;tAC($5*O%&$&zs4qRwO)*S>R0IdROg2-yzU5i<1Ioo$<Ys)?*;l7lqM zfvq=3`1kcH>y_PVbs;=h=5~Y+4E{;&w~8z)#5lxSYulbngWbw2Dz2QvC6`{A`Ft*M zIFc5!*_EO%16l*Efus`O{jnGmkoXb!u;Z7IAi(BnrUFVRheR1kMegTS1C17sSS%*^ zKWQfDvLPzEG%l-D=V>E3@kDA`_dwjQlgISyvG2faF9*gK&k*+}oLe@B6m~q&9bv7v z`Uoyig;M-YSHt3Drc`u#wa@0j@(e_aXq8HFT|j5r>^6do?Of1J(PmelmNEAJ!^)*L zsEDzrIlpZYe3hDo&^WG5;)9NezVSUewiWRSU_J0p2(YC@Mhw6qYevs7jA`~^b~t9& zt&dA@HNMG-dPZ1%A`1=7%j%ij_o0iNqxlNf2#LI%5~s6VYxRGN#$6ug5DnJqBe?JQ zi$0tvKne5&c%EEn&|G)9{$;oR+PfWjPUg|GQenlHcH}#E*NpFda0*$bch|iW=xuRv zX$p^yj;0+5lgiYhI%Fw}T*$KO8$YBBPLT0*rsz>A?c}UqB)<CX$ij$lqLrLR{fmDl zP)as7>+fwqXoX~yq#S|!bMgChlIfed9d<4^Mk^%giB<T$D@9HOkfxJIqg|WuuXJ=$ z3%9)qP9+bwg81fhjkbw+a_EiHiP6t3S=)lD0bnWbj;*au$HA__xBGKSTZEgg1{z30 zNTyC3HGAghwSU62UT}&_j_;jSxX#z;lK6g|uE2P_*wLHZgOHH6+|K?sFDz<XXOZ!R z#<IQ5wfWq3VZT~`1KJ2PzomN&O&v|DG@GJRb}u@l5-XbIrb6Xi?=o-)N0QRs)HeHI zF-FiaMhH(qlfW9R(-35{R#bO<L_KH36Y;Q<{xH@TXEu8CH(4jdJ*OWw!i{_=j(^63 zbq1m=8zR@jOGdib<a_xm0$Up50piGzwqkV9PSa!WI8uh<2$W-gqK?GU?=P6qFok`` z94{<B)U>-EOMT;BYV+M_yb)yk%p_`+Aksi62Xk6{9dboHWH0*uYc3I#b$M7wqWqVh zzm~bEnyCA3I#<Cr8oa-yV2TR8(*?Hl^;Vv+=n@Iz>|kFYm(_+_IszW^=$QR_UkA~y z6T`_V6VeKB6U<7u2P^Gt^1&=x4E@hUE%{nTMb7L{_X}at7nM3&T3W(=^UzUDRHstm z+^@6D;oCw$>G?mT<X#GGbEEBxV5nKbr!z3gi4wo#_ghejXMOX>iKT`+o?Bz0p%2t} zyACh*iLqnu2BdU-mK5^%FN&Stxfv<V*I4jSUoLG6ixa?AWZun)a+FhOg4XaMs&pJx zHqD^MK`drE6XOQOo^*Zx>aY=~CN>Ly34jg=sc2ou+ov8dWx>_nP*jVlHv>`(Od4F_ zOq3YGKZr_EbSfEeQ^87z9)Frjbnla}v&$bJZIw0JAXZ9C%X|(jz6+2u*T=w2w`hK{ zlV8iw-^a%TO-|wh70!OciB+H<m=xsXgmEEZJD903AkBcfp{I*Hb^;vTyrR?q*L@kp z1jODY#jR~zQh=@n*Nnots!wofv^=Cuf2gMt6frTeUj%)7XfmCaVu>t4jFr5oD5SZ$ z`Ny^IHz@^$FYO~MBY+_$=D1qh5#cLJu}u{Raf`-(X-$}*$dbJvTGc3xwWR5YsA#2> z%`#fJ-et4>W5w;tfMnBTMLa24rMaFHAribv9G`q~yN^9^V!}~pcoKXYW%~M$AC#aj zQe&@oS7UX2R2+;M+YN}*=WiQ;&`rDP8(Z&l(3UgqNmQF+fH&M$1P2$eR0kQ5;yMzG zbi)TaFn+PkjuksPCn^pO4c+#FA<6gnc-NS1grQNS@_DiY*O7`?W|?mM37%v{;f1sY z)d3rBbr&%O-H(FdRtW)m_g$(j^`&Jl<;UZ`ktI#DZ$_gN{$srOmbalq*Sfo6(x5~r ze^KFsPd7AdDiM%BG8sfBVrJUX-UMs=<b^9>n^$(w6s7XIGk?B4-j4_S0R7&)&l`^J zvI#kUgv5Ot5Uyg&{dSE=PqDBJ;G%xz^~gA=4^3txYma*Vd$hpC%{Sn~VDDC<H%cUk zeNYl3;@%mG<Ms@o1R~nMFy?{Ou-yoOt6NnA_)fBxjef5mh`TNWm`&mYLn}u+<_$#l zJ}pS=L}>$JX*n8@lHoM*8G41D@JwAL4nPI|cBtta6*^J@c2JrVO6U&h3)pT@_w|Tf z`p5YJhd;Ler$yMyUuq*{Y$mCzp6@SezPLrrdzwknX#B9A9^b8He}`9yXAznmF!++< z68nbRukv(w?mfo38KcMrlc7~4Ub?;iA|Nh~?L|iwMh>Xx5@j$ONa}4tM_5P+jq6_2 zuv?1oGZlvTOMT$*U;iqVG)y)!F=6(4vHN=N`R3w1nqcTTcwE-4nHvrc3i{XPc-&dT zcW?)1Gbyc?3bpLZc%!I-PK$`<nL0K&`02tegERqM1Z*H;Xq#y|?Aw*@T(hU1DM8=J z-s9+0Xl-f|^zu+UKTJAJ<x>fuXvBHld7sK|jk~%^w)lB4me6@W%>xbvrRE+;N<tFe z_y>6di4Xc2>E;Y}Ur_DMfy6$Q(}4M$shI5W7RIC-v+utf{Ysi0G^vbf`eaDV`D*T2 z1~^jT9{AEBhwMlGKQvusP+d*a#NFK;g1b8ecXuZ^!7aGE1a}V>2=4A4+}+*X`A(j< zK7LRIRdDa_Jv%$o)7`_ZszlWF|6G8NZZO+p1IYY@GDNkgLX+NL*k2_j0O(1avc%<l zAa}CxXRPCKLwEn4dQPLI1cFPfiPrqqllL+(wrm`1z<4L?8mG)6P9^G#I05jgfl8G1 zkiMWfLupuVbW@eZo^eEsWAFh-qMOj*vyp_im=Zs|B<p)&!02FzWD6x?04y5e_Hfc- zu~Pqe_48>L8EDw_^hcnVsmqE!z;s4ybPov&Fj=b!80Gx=o*c+6mt_nA?+xJ*EKPtK z@ZU0vX2G9O!)fao(4Ih>W%^ak?P}`Iakt`4Ru8t<Xl|Gt62n!mzP&tNDn4GUrvsbX z($WHi)2m*1CWl#huIUahchsL-r)yyhl|NG*DU)&H#0jX1SVADi`=dzyIS1s=v=C|` z1}`r!f{;5Llc1`mHxKkY*qqsB!q7WAcpD4`Ly@WUB&M@lp#dEf)9v1n@m!%?)1g=v z^Kl&1=&ju&<}FAjyRET2I?CF5Zn^*52ufjzz*9gb0&yWgqXJ;(m!s~C(j|=OM{0)9 zpjV+mbqUUFkoYNn(|WK13Dj=9B+)h?;j_3{YvKQR+6@i~i7<jNv_O~|j#^!Wz|qHr zjOY{lXS@)6A_i){#en@v3TJveoH=7pldMaPx5W`Bx7CH@TNrTBtqlDd7NrHLSYp`a z`~3NMGA|23_QcJL;V}n|_riVDipe0xOZ4x9BvHd|U}mkBqZzW7RDFrYFg(<NUhM*% z;C|NUbZ83l`Tmo=FEH$O!|O6WIaypo1FO#bFIoUh=Y*8EX^R=om9RKGAOQoOLmKvz z%~HErP<hh~Bul*6YWuzeGE@<2Y}WvYtxC8gfIm*C&KI+!n!1MoTIpInnXF~I2}XnT zFhY;sW4hew!xx3cF#6f~Z3L~+c9|>?)f?B)vv^Z;8thHn5Lj}SX)i_r!wYg=PHvZ> zTj56xFX8*kkzIT=NwXaHV8Ty$y8MbU|9c!<y&1835Em$OzNJ*y3Wt0IM0yCS<z+4$ z4=`@J0xW*msDa*ST()YRKhLWb8g#QIiU8CUlAxh=CE~)B2QHk=do_Sf8RzllxKz{k zQAO;9@bbvidcMTce5){I5giu>HE>YJ|42|_Xy3*EXS)ZQlxNv7Js{v}<O}7PymUZ3 zc?_#<J-82Qsn8f53t-a_NRrgMU4{I)y0<_z8=x7W1N5dCwxIsKaWSvV9wOxkvqo@V zC_AW+JI7~E5J6~Bf-^(VZ_Qc@-e-JrC!ju#1l$@ZYY9N`xdGThsY^Kt3B7=Q1P+hW zFBs`74yeQT#CT9;WfXkfJO9&4XMo1Wi*aVQN5q8$DC$}|#NlzieOc7s`181I!EA+= z<!&(jPV9%EX^4mw_3kN`sZpy}j_G+%yF)*+TN!zW`As?&cr4%v6olTWs{cMTxX<cl zJfN4shyuDr-#jM(v1JG61mV(fYRRdm7=rMI>gVP;m}O0R<hsfX^63-HhEybDV2I&y zKHy#xa=*|^$VN1V4|JbtyGo70mnCx8Pk!*jK?B3)P5a{cy#LT-=&C;Q9U7@SM_}+% zG7gJd5pK3HjAeF!C{-UyQBd3IRoA{}rNPZlC0}Zi_21*)gSil2Zl`X_;fd(4@e)&t zs$8ymP?Uwf4Z|@my!9eOJ@oSVp9jjoN7&}F8k$ULe!r-)45MoqS)j=!WQ|^pG1Jz4 z<UW>mB-ki2hB8D=FJzIFs#-OPxG)TLpcLvciWC?H1x4oB#AO^0eCFTAZ<C?l*e-9+ z63>=-4#&r>*m7?f(lSLKIMw_YpO_mvc&kD73;8?Xh+a{jn%rK6jC^UDo?)j3#%{_3 zLc5K9MyzOg8JqCi)-UShjEzYF<=9~mvLK+_zx>Ie4!R6tmj5FIlWr>jIx_W!GVSgN zw6lGQu~VyM!(->WZVnmHOuo7va>$kZmaJ(QV&56SpgTb?E9DQUB}z+o%$mNdrqBvn zBG(dyN7vqEV9BxL#ZXDj9G3VkZlypu|GWdw*e9ICH<8m~H}17=;7nC%T&gzi<7(yd zo<YRC7F2^{R%FISh%WS|*EWrj_Jvn#-TB=c(=F@kn~TVA7<xV-2Fp-mFc|#^R&^|^ zpgNt-=gx@F1=ZNS+5UqK=)~vyeSWmgva1KkUP%dD{_Xu`{B^&$&e`I6AKUQEtFP1d zmMX16@7QdL8Hce0W5TsgGA2s3l4rf`t8u;#r!|J2hw-&*RAkbU)2MqAgK_=)ZLQ1y zmQjp>!4s7egEhSf645P-Xm7`Te)ZPZ<~o_C2=D_>md+oTLQoI^JCJ{-5rkW8?c8!p zp&)}GUjecvSn_XfNDl;RIAh)99?C<}Bq<8-w@v~|JMOXSbGa>>B$C|`^6t~^6LOko zG^xshMZ;DUy%PJc`ObGo(<((sIoyt99bS)AJUrU&IaD*xnTLVdeA`o`mUE>~HwGOt za8v?bo(48bU7aso`h2D8@CsSnw_e%2Q?0HeG9Ku13R(VPL@HR6z2_qfW$5i!fpBQ6 zCCL2uY9p?IfO(-3ap^&=-l$;Ol70J&jmSdhUS^`C>>f;B2Ku2^l58*)1hA}V6qABi z*0%KxOiL?o{W%~6a14CWyeX@%uNPhSDptnWd2uYw%XiNj;6xBBBIv|VCZs|uvqN~X zetvp)-!dn`aPP75z?RDZ_wgt0oon3fZcx8_$;`JGIba5EEhi_ZK*rqE)FHa6b|4`@ zcR92o%TC$As?>pe=a;C(HbfxyJ)*)BqmxC(_Il_}paj%KCthkvPRq|Pr#q`xcWz@7 zp_{(91}#Oh#xoQiI}tl$VMyvJ%&H|RYa3Nvfqyj~8li*SmS!#4GgMRx^9D~#x57c1 z=DUhM=36yI3$^Ra6-s8)4_>5bUX}SFzw^=TpI?|+&y|w8PNvIH2TBue@l8}}?d(u( z>E_wtE>;a6CW8nHchKApihOn8#@g}4DxjBdzjnY`ef*Bu`O!JslsBc_>OwP?!a#TL zDfE7aE}KF>O;{S?!g$rloYq}M$SWL!XVF=ur|l%5*hFA&$1C){$9Id^eLI<2ZyOP- zVIp&TFp#=>K8iV{SW4#3NN-bO1&<yhQAk6{*R`Vk(_8h%S!Fn6@XlH<C=>q-MY%u@ zok22x*K)8oI_vjZNu9-{8;B|h@Zkw;=`#%^L`Fs)*ss(dhYP~@iE2Y8-Ud|pYhac# z2>9pv+xSb#1YMIkw8d>YDOsgFrd1R3F++RIjoCMW-Uk#KTN<k8)c97}i{v}r>`4R6 zSj~fbL$7m=R+nSZ^OXiy3v04u&kZb3bUDUm;g(|p-d~+wk;HTw5Lj}7F@`$|c8qIY zRV$5NMvG}_31(r4s#sL{^#VBmJ$1D7BV1oHQHN(pi`JOvO-x_fU1q6P6ryhRNRtzb zgzKT)WF(gj<aFt=B;R#U{5)JXrX@@DXyp3>lWJ2@dUb7~Pyqodi`kvXJj5^hK<O`A z@M@8pk%J-B(|f!m3}CT}hThQWjAAWNA0|5=#oPMK5s(+4gPH5Xq}(Kwt1vw-tqHaI zFm9*1N|w?1T(O0cW0kvvLcUqB=v2%uM@sAI8B#@|O(B__WjJIF`~(7C55YXnbDudT z!=uU7UR-CZ(1%%tDX!<gYmb)BmHuQz3hhL2ISwYymm9Bf<LrFF)6vO@)JL;k4HAK; z!iy>1QOJr<{EHhBlr*!vRSYF$YP=I~Dk*5Hy}XW$w>i~p5KoV1XQEmdjDbAgRr66_ z2p`9|D4Ao>>07Nu-!T;^-AsMX;fP6#E*k^4R{YHfcZ%2y5`FDY$&MrA6%ERMVJEU_ zr|TeX(rG>y+kvD%SMQvrY?)`Ew7Q!(YX}gZfV3au#tr!1udb;t?*3?mh$p|Nw7x1D z_B8@S(~CRp@nm10d1N$j(@*oWN(<C|^Up_>1|qM!h8@>>TdJIhZBt*XYmfTfeyX}& za<O~||J|=zQ5t%Ej5gLdbr%HSAyrkcCOL}z=INwzlM%|rVXJzeZKgI&SDJ=+pus#k zqe5IfTM+)3UXj${f*cYv^KGPsSS$G1WQ1zG392kMa^%{GQjpV2*^aq)Y$y<}5g$qC zWy!*(_Y1wc__Z)R6{(Vv5+F+?kDtj>y_wfEq-0`Jbgw9u+5W3OxUT|W-CH?g*7LNK zIv%={$<jlad=oGCzN(*Ch4T1P($^oEC=TCwLZOi}Ln1I&DMpDL<PoFiNxl?kS*W2e zvbh9w+OlU1i<A9P8Fsz5D|7!o*d9$RTW8myd+ORd(p^0_Mq~Q>r3UcK`NLRrwpAh( zmIIJQwHmC|V+9lCzi7cH_E5Vc7~gz!LECYhT;rx?m~h~E5SuYvqpjTkA-feA9Vpei z4C9;Ko^l)>4SB+`%z|LR7qNZ%UPDMtM=g*0<8j@6xye4)YL(C9ibS<oZadu~XF9t) zf?Z)}Hzb!!6Ib)Mk>YiqKE*ZG5KtD5VRiM3>k)Y0L_9WAGD^g%;r`&XM`}GcBjO6Z zWpN;MP@u*~vDoKN(4n8U{0#+*Wu>k4dGOK^Hz9;qvDsD4&47MwheiCdK13$2E<`>5 zTm6)@=<d-ra&&U?Qe++p36~KJmP)x>Y^#R(%nOOxpRLTn9&BUK3n50y19ZRm7GUW; zdeWSzZl94t@Tk-hVKzUqBjyIGn#qw7eGeFyrcAvY3x<_77Qy>v;nhMs(7RuD<v@IN zjy2<PY<~2Z^69f69jp<v{kzd&b3lo2+G6@%G&pO%bhOsz)y;e&%j(6=Vmz%US<^r| zlk>aFm)9+c(s&qHH;3%?d3uyfH*)#vQkPp0ZuJ(esMblZ72K=@qOz&%pHXnaF%Xjc z->^k5Y)#XP<@TP?<Q6JJ-n_%(+`W$Q%L4T^$T!3i7<5V4&`%Zw$kY1!g`4cmu;nCT z0_Wzo#FFjS1Ks|X{S1tdD4bSvv4$fREJj{1GRc_hYWeWV3G$F%KAtX=Yyb?yoC%R6 zBL_^RK_?Pb3{d-jGwJ?WxacN|8gS}9cDaa)iCM4nygyNG)%<FboV$sp%)(xY+~@lR z<Wp&Pca|H$_<+f%e&n@{*fJ0<A>$9SSI9T3=F0|R#xQKbATS~K4^=m<dSxHhjes;2 zseSF1t68M`ABVb6Ps&Hry*A3{v8oaTNYFq+S5jI!eD|F%TR|ckr>EX(7EnfyAJ34Z zB!b?X<W+t(Ln%X^!&Xuh)d#&VAkh|f&9C^d;UN_fZAV8FE<5Yo;e&}RpWKQ5iH4E0 z>iRdr9vT<21?(nf(h;^K>*uLI0xYgD)=x?`&pUc}0@Uh9)nv~O+C<Q-!}G8}uzl8D zhS`|cTGbM@Zgp%GTI_6md$rBeIb{}kYY*<T)=|iv1X-i2t%R{u`T)90r3-FGUbkRu z!(deMK)W_9xn3YZ_PhQvp0<7AbFsH%$3zd{ri%B9&NK%532X}vj&$4Juf6RXs^<_@ zZg_9Zs08I{l~Ls)W}h*!qQ`MCG}Nr9U()`qV$mVe*4Eaxz?T527&)mJTOJE-q72*a z?2=s*7ew%Y%87%HKn$`%Nrvg_xf^gr3OXpsw2Yb5oPi<nWKRSsD=WA8e}#mEY~uom zOyyNLRdQl2D;|Z6v{1w1=9BKxKAq<!<2WRQ$xbVB*fDhemk6NL>$^>T!m2(pS?ZmT z21tv8Lq3pw2d^GEFdQ|`8I~4FIfzYNkV30@jw8_xo5y|noW=5)gT#JssEy~BOEp1O zv&H{_IWfJ>b);OPAie@6nFcy;We#dN2n%_X29j1@EfeL)A6eIB=H4dC2NbY&CQ{Kg zYvL6{?)H10sLK4rbCA?^3H<k(7^3%jrFNQ|sy7HCl-PT))T5w>(kLY)tuXYA93PBQ zbb$tSvO3LTFtx<tJic(Y&=sA&dM&lTjGV?8XhS2Sa{V-Vbl0_OcA|~I0N8@E>HYPR zR;xnjw`Lf!5X7YMwtZLGxndefoX6fI0DNvoF&XU+`e)b4!&4cPMVLNblAY?)aXt?G z7;Nx*;Z3<3fwE;fBAT@vjnRwno+M+)Eq0eP4EwXRYL#FwWp@(own6d>$5w9Y{RrcR z5`szlt-mLQtaRELDZxE^hKH_Dbr5Qjm!r8w#F=y;MrF9?N$H6W9?%H<Aw)-a)`4LW zLv=Ua<L}*T-3#-`OGhb4r+dmp*{Lr@Lq`vqw-$gRNKhfF*P?IxmDCoD5*CaC9iSf( z5#g1}psS%4Qb`Vr5VnKN!<CU=JEmuO;|uTa6`(DW^bW%fGCr_IQkNYt-_1b;UUsTn zme9blyll!b`chJC({t(`(5Kx#b%B8M>3VIZXb8%XAR9@-=(_|*&Yx9PNPned-&}=V zZ~d#2m>Y_&kw!L&!w;(RD)X`X`95#BOwXtI4Wz5BV{BqX^FpZb6<hZ_X<9>`X1UFs z>9XU|VCnH6)G=M6NSwhLLyzdnx%LCPoob5%`pyTU`7QcDxsoEIjc0o~6l@E5SELcN z0t>U=^XoSQT;G8N|AL-K%u$oR?1ewFDc6lTU9R4L4o8-1rp8VC4b&iz1xx9Ta(u8D z+Yoe`wND57yYG&T8fa6=7}ByJv!v`rAkm`ZUgw`Jkq4JGZYwxp7cF}~__xqy>-Ssw z>X0o!^tHOng(dSy9SD|EI;nj~nL`BIXY(|IBvINgeynGVCoQEdr9Mn<_z@gUh)UqQ zT7wXPHxi}$eFMEhieqMZmbys{9gt}s3hES{snl<S0_=6-^44%Z+_3sl>Pivkute(} zBWP7dXO}U7%76gyQsg4-CkX3fF$1X8lH^Y^P9SmMo#ur4%IOYxY3-ZzYS9VFMOqd# z4(X)dC^EHDi@Ozx?ngwm^Tt6d7r55y8~~#k=@Ga!uur5T?b@}ME}&@AYzm6<8TL{M z{BGcQib`s91Mc9pxMP+%7s}UGK3NcB1nb~_F@vG9&dR&Cf?L7Vr_5FLOzg{4v*JWL zyeQf3B1Hqxx7dLoVZ52TZf7x9sw|hok4s8MH@;+1-2<g*7b1Px_w{f0486((s?nEf zA}#obAQXJa5(qg<#4fe%u_62LIrVb2$ZcvNa(;V9shOFrJ!v!29sAXf=C_-K1#*zS zFgi_A|24hlPv58Op&eJ-S*TE?kW_=4wkQU(bM|bF=6=Y7A6)bwI?r#s`qjm224|{W zp3eR{kl!}*yp#%I>BLorU*pF4oHn<Y!&Y&)x-J7O0_XzVx+%MbxBR+AQdq8r1IZKV zXJ#Om2xG64e(p?=-^TH``aOJ1P(!}rtI36q#qi!sK&HPTaCc*T<OmAA%TuhQ5O6y; zq24Fh%i5)Q>pIo#(IukO$&|RCE!Eh|$&I@iK}>a`MN#&kK)U=?i3QHy>K~2MBGi=$ z{;w2QlqqX4ZzxbTdrV0-lcTH^r*IIhfA@IjMOysVE*j|<k8;y3C$Nf#9+v8neV0|e zm(TTOBPny%rj)g_lR|X>IK%Ye$CFru$qHc!!awK}kgc_>Jv15jK^;uy636>kfm_&6 zW>x)whof`uKLs-)ykZ;<P<paALM7mZP=(a<0kfVA#Qr|8Yo^YjvGpZ-JOZ6Iyqt*u zNvm#fY^z<W<>YC-h8R9kr(r7ynVJQDvl&$)j*+Il{aRw=JO5|<<2XN*LgBd%Gc0uA zj`X^Xrfk0QU(NwR`BN9RQK#GsmKZ8qZpfXD!rNG1gg0m{gnChJ=RuE_rg<@K^f%(G z`EAIs$4KhwMg2VHuiYX}7B7K!+TGMfL{ngx1Pm*Z*(U`%;@-aBw&MvE!s?hRao_?| zi@tu)5Z)-Jqo`fYI`x>;v_sGR4m{LDW99%`bw!|L_C4NxgjT*_GS~g~9n2FFg`an8 zsEb#uXMor-l>6q_Dl6ZWyHQ2wdk$twMn{jCL9agl6rDFB_ep#rY5q56Xu_+8B%tGP zv!H9A{ObFUK^{xMgH}@z5iE%;d^aeg@kqZb!2(Bs?0@U}bIe$^(z9pQk%~PBQgI^C zzLS<nA^-P;Z5&GXOmA*=ja4F=x=h<f0C=@U+~ww`C;Y_q@E=_zkjITv0q}{g&p$gE z7{ukhlElyTPS2QP=|P>=JrsFHDtaMzR3r0>whDSKWZmi-23Ehk<O^ZpcV`bvCLsVr z38`yt(+?>zZ4d8cK`tMrKtAT<^FXm!!P>21{w<EJV--1O^nh~zAGq*rZZQ3uWlLpp ziNCLYU|W3`veZK^Zx_0$2E8=x9J^5YN`L)D%K(ZV+_(QPX5SFbGn`T5h^tGHyzlIH zZ;AlY?yjlh&@uNn$|bZdZyJs^{)0AUtm;rw_K>8j5n8RL@~0clfj(c0-y-eB>;Q@z zdUkfBXy*zP#}YAkm^JS&xVEu@xhd*kr%_!>9|@CRw|7qh%r+rpBe$-prP5&u&3nR^ z)mQJSrf!?%0wcOMQ<#`m?YTB!z@d`#J~lsl&54o3AR!$#eJFz_Ic=b-+IL)&fA(7u z_ECT+1Y_8lQf!;~QU!-daI93nF11oiPYZOPwjPp&DP;4mBWL}C)%e%(EubUTuy@0M zET<`T1j9`k;Ozt`bcd7Y68|XsV7M1TQQ^lhY51s6SF+htj@<y^7dhS>)C6aQGLXy7 z{jd(o#2XjBdW__8L}mMxq^L3CtT>8`I+wMn%);~VjDy?`&QB2f?i=hRO?Rhi4l<fC zbdTf<I=W(78+Y^Et>3M@`@)teLd}&OKuw3Pg!L`s=Fn?*jX8uqZVsPghjijs{8f-D z=?1qKGNEd^BY#Vq2hO&ANa;)^Xp#9qB&PT0`=f==XR5xNw%CI`D*ZaBK1|k9v7RFc zpVD-^=GSe<<n7mBbSxg@e8Nrx7@ik6*bH3iCdaC`C-U)!YhII_-1Mmoj?Tr`JJriE z2CQV-CFhPpNuVbGi~&5ppb!H)eWI8Y6+$Iql9*B?GaHQ1CbpfJi!$b{$1Y4yQHEcE z-|)DcE-)08mL3V@<ylPT#Ay7{DY7570FA1a6Kp=(qA^M!uIXnCrv9lS@k*WOAK%NK zapZ_Z01it!{QKw5dA8xXOP)#r6-23OH0g>*0?Zq}$0SX*y;g9MC>#}V?R|xVhd2F| zgshQ&C=s7@^A1>*B1Qass1Pyp8@apDbyaK3u<5PdWTB3q-K=wAX5QHKj0W2fhcvry z=<GvLZv@|EUbKE7QX4GM4M2Zk^j>&ckn5pXAb(NG?`x0za2)=;<Z@LBFj}9wmX#5) zv$G4SzWUb!%jR=022{VOi$h?I-$W`pz^JK~yCsYWx&1(`!b)+T`jB#EwbI~DZ7q9h zq9r{AhX0m=d{A<G;{ZK~ca7T{nXa5!SVbZIhZMP-3PI2(LNTcY2_0q{nx7b%!rGD0 zs*lntqHwS^4I_2LHnXU@hcQbFr=8LMxT?z2n=z*pt$BG{Zd>5%bQWJ(jHzhtL`>}; zbxFmHfvjDmFBH+{V1K{H_uaE?-Ok+;m4?2XJnVqbv!&-RqObUXEH(Os)}dS;(}q50 zWH3ss+xZISLX}~cgq<BDAbMe<r>A!*FroB_R&M4pH6Hu~GRGdIEih9nJMrU>`Et!% zFrxFNnq5D7ELlZ0&H|lM9F~SRZ`ze`*44DPmlp!I4<a|->~b>duM?tM3Tkkwig*Pk z=`O54av53rHkGL0()|74<FS>r9pAJ|+asK2)2(l~KUvi(l5DQ+k_%ylWR*<PX^y2& zJf9j5v4jss62|^g(1;ZA5_zjf_=ocPO4F25vxosYV}O}S_W82dMdpm<g7uh<^ou6` zmjj&`kBHWm1?+9WGuzsZ;otdGu~Kij`5!%>zNPp8`Xe0d(&b|-)EfPDxl5Iy7;D}n zQ7T-zKu3-N%_PB6rH+A*HKi@E3y7$!N4_tlWM)i2T9++t_p)}^6+NN}ONU4r{0@Zq zm_NEr7gnS@KwmN%cpU7M6%=9*h507ZxI3e7zB7~?Iqe;t6@~@GQ`4bN@?x(0zMeZu zOG{t4My7MvXiS%>QXW*y`?m#re!ZegfcG~vEi~2Cs0TNOfhm&4Bw1<vo~Z^<ZYXHX z81hoCAMf0o6cetGMYozszxd}W)BK8Siy{(*S=`*Myet8N*2k)S7h#F@VBQnVzPak& ze$zs?X7>-OOE&Cg@J$gjmdbsrQug_PW@1Z|q<hSEBRtxTfx|TXyeE6=(=40mYpPK{ z2r6!R$}aFSbK9z*RJQlmO>m15*icY`Nf;(a7Nv5$HwMU7&M<2h%E(U|2)|=;0s?$a zTceHk$X!eU`wf1^t~aMvw{tw@cl!KLW+FTeC7PKG&_mM%lj8vJr@l1icZ3j0QYt*B ztm-58pMKrhA+$N_DV=a~7Ob?Kn&&X~7FeBipw>P8^jTXjUDA6ib;Au7&mPruHb(hx zzjGHluu<z>Ub_k}VsAP>va$;ar=JJKnhI0BQaa4WQgB^Q7vvocaq#hF0b{>{uD6>p zu#(wht7%6f|Jma=E-WfM?C<x~7HV=dzYm=Lo(M~G`Kz9<HVNe<C8^PaxajE-06l_O zgW7M>owLVx7`{3<=kHAeCO--f$}&#fCpK|mr`PuFyWZUp%vw+}fRtL+)afKn9pJ7k z9@9~fm@0uLbW9U!LCmrJ$UUZBB=%!MJjtst@Jumj)6CPusT@jHA01o6#>76NBN^!D z<d7)R>V(AnsiE5GZIfc;WMzYSG{0>=EcAiD&xnq{6aI8PM#52~_I(B-07#DahU15~ z`1h=qs!0`EKkWXW3joyFW|`f51O$Kt@G3}NMk0>r?|3>}L{wB%S|=7j7kp(Mt`oi& z<<=CnC8RzBXW`n~M^vU65%2gT1KvVJ@Qgx;*amML>(3Nvv~OEf^sAsYNk7&JP;`0K zI}3M)cn08%wCAt<hD>DM<o`BhPf^7G4pCX|#b{D``S8ip$~T%C{fuj6XNd1X<3vkI zIZ)0a8U%%SMV8|41YVj`11O+rO{J(kGHq8f*{xJIHM6PH!Eoos2;y0oO!=zcVI+Uw z8FQ7%sSgIAoqqvZ9avj_NrE0uBp+e}BFoz)a;jgaEVV<=-6aOz+n_efBDf0s^9F?Z z&{s9^pP)QIl6|#QI|E0I*f{5?rL_~iTMx!-8D6)q<F?LUNjApTfB0dwzwyZV3X5m3 z!xDB;NC73Gz{ABlzRNR>YVlOF<1Xv@=~hqBn#XR8Nb)*RI;xf^?2mjQ|3dU)Yo>P- zf9gdXUI|ZFoA(Lkv1cRY4N~Bh>eOae$tkYevjd?F<2O*stqyPD*_CS#`hfH3#gG;( zFSq3w*P=iXAM5mrh|7=$fgu;1#G7cOKDb`Tqv1ZJJ&;M`3s`|DG!8j}srhq94XEt7 z@OG>p-pKt<<eFbe$j;7Q|0SKsn<JFP|6_(D{hq+Bt-|s*zsjf_DHz@-a6-5syE}ZL z(t?ygH5jNa-5DIfX>DSdT0soA^xqItic6cxxbpPO+8u>s?$eR=Oib{1l|)r#)n3fx zpRd4ab>nF!w^HpxFB`j+o7x_;T&vx%*QOD5xI!)A&&C4PSB;O&shwzh`YEy`GTA|w z0OO9?V)^pw``5ih#iP|GCLk<D4u2RH>+vjtpI(M4w=nMzda$BnBCZ}f6BK2%>3v5M zjTVn->vZdV3t_Gh9{2)>@pYGO%REW)ClPtN(3k+!jksL+wXz5<SZ`9^xiN+u{o;rW zcMpAU%cS#DB~xjgA`sJBCB?<nQ&p&BXykdSf>D$eO4yW?WZdCHaLVUB+pL;sNY6yW z{R0FDk%mSP@i{A|EkOB{>|@t0W?_L-DPC4qCMJp9mHkJ%Ztxh`U~#3%{`TRMHfmh6 z_Q90~n>c-s?GVcGK!C||>cE@5G3Vd+a)qae6h+DQ^SB|2RrN7R)5(9;zi7jbr(0>) zloMXb(c=v^UNdj!Zl2lL?|x1z2h=}~B9s8UQmliaV|E<1csi^>*$US+CDZ}=7_vpB z7VF4t@F8O^^iu%o{Y$T76PueMRkXeyqx=eWFqRMawhJ#VhcyPE;K6K+MG6br?h9iB zJl0v;K-IC#OTA81-;Ga8t~3zB@gx7{&i!>@7)H)N`V}eZRE=@~3ZGqV`;g9lehCs5 zxOA@BZAzVbhWPRu2A&uUS%nvSd9>Tfs8t&uKGP^+aI7mk=gh=Qth=uC47un>c`~W7 z9l@IoM<Xlrn^jM6v(7g}4u$Y<erBd1<*QNTe^S(vKog&+U>pn8q-bDw<Qq#oSjWcS zp?4GMf`<p!NJ5j7AxpUs2PT3F3JQ)Ch2GguN9n36^Z`;_d}ihtkcGiLo-LEp(5&z( z+c*E+aaN;>F~MSVYZI_rsL)Q=)N>SH2hiO3?Cih5AFFv>ZHd@xJHgTDlgvwf*%AW= zM_Bg!q6kwi9@|hk9Kh@C(KlYYd>!;(*sM74HG<n%pB|MV809DirEO^9f<qv+K&D-d zO-B%IvHBpqTn=MDxcQ?U2rJxlP<>{2wKr64ExC1rXcHiwwt^*}2m2C@Yr9fk*1PBo z@PEd$coMw;*9{qhRP8G_q0(m|k0QwMR%_NDv_zeX{?D6zJp@M>kWuEI$VvLMIBY-A z<y4{_Gsg5^_>v$mIDjH{6+t$z9eJMvlg2q_w;TNTcT7EIM|9Z@w5z0YP&8j?6xy`7 z!vM#;x41eb^QJ?1k2$1Nm%aH7{AbNFRen5^5zX$R!2;F60nLu+pe91J2N(_|>oTT# zC-NG&rj883H~&cDt(f5U_Vy=8c&t5HnsQju$X{^OdkntPg0%Og+VpoU+OoqVBN3Tg z_8T;X3Lz?GrW+?}!I_iQ5<|>1;H&;b-F8e}l=%=X8&sF7V12M>88=|eymIHUU{qk( zJF6>S3&1vszy^&g>1G%P{XZmp6hgC$x|t_K8ql}RZLZDk1M7{gb%?QqpoPx;A@S!n zzYeKqY(HrMjTgenpwpE;S3<RFEqBlX=Pr&QKb6xbN>J|qbzaKY?*S7acff}bnTCc& zedh_r<1gT%5*VCnH0-3s38_#VSYP&9Eu_n!DeUdu^9z(2{K&@JFcz&18H5g@XAjfI zEciV9qihfkbyuAQrJs?F3rC~p7h4~c%$}+Yh@;>uylEWIunqK{TH*GI8qq2FwmOMS z_u}(6!G`pv70~m5<-g76Qr}lTz>jFECxz1&Q%;N)C~PW7Q{J?tKHzmd*j9SVI34GB zHlq0o(4~B#FhPY-{Pq*?`?09zB#KP3mIFa0ZKk~|ShQw?vA<C63aVkk-EBjwIo#)a zDDK<Dt7w4#t6rL$Fu{cK10^yBShhG!RnoS2(w)l_nH(4F5a>CN`@Ayz7sy3n1b7%? znNX{19DN(Oe)zd@kX+kb;KiV!6Vrq}Ad8x9;11&^+AD5AJm9)=ss>*KjAl7Aj3$Vq z6D{PcgkgJ4FSLVt6YSu+O+%ij;;rPU9=snEnp|1FU7eIyC8VZmTAgI(=1u~gJ%HV& zV#Sb3M_Je72)*{eSKkcRscWu<Gl691Y9BblXJ-Oix}-{sciUN|RHJYL#U?lv+|QjP zDP?xRfs&iqF<lKyB~U$ILv9EjYf<~$xIT^>AoB>_O@qX@XzEqS);LC4@S(A>kunxP z=@@0*71i=!*-5aGgY68dw~V_=cv|Cw*KWktUfBN(adm3w{UV0t*A88;%r-^e$VwxW z^Fprr<Hq{2^@s5)lHd={O#Q?FXMK2gRtCNt&riAiG7Dy!{p`WZZ#-p@jRKOyAG7Tt zPGiSV{i!AbR(HGp%yU*4wDVS8GT2Sh1r^6c^I;7*paUpCc~AXe9!_a)@yH9ihU9%- zBIjy)=IzSU_(+sTN*gNM7{{86A9NFvmZ{K!C==d+v{b4naEls9Mxzb2rZ$pUD+6=h zyB{YWg;irNzYo9K2ozDBZ#S})T^}#Bj#+}L+S4EOeZO-8r7>v3o4)ucgB_cglKDYi zm34~tjyjj7B0p-*yi9@^zzu~mZ2xuyHOZSkt~xWHkYyApaNHfFprmYhct7*B{WFWx zN|H)W41OMr0;o5YIy_zdm&k4;KL*ZPgahaskZW(XyG_1W{FJ4y(W1|Cp5URNq5|tb zbav@SD(*l$d#phnl136p{99Sp-7-Brodv|O{-Gi8x$!T%=Y17Kv6oFcc<A9VG2iWK zv?@VzKsV4uD<nF;N3uV_kaj{1%Fqx4u%iC$?QH{O;_AI6LYm*#2+JO&;97{5=qm_K z2C)wP4T-B|cR1x`F-Gw&mg_Ve$VQ@REGp0zjC-tA+nPO;lfSt_HNQw{Nlxc2^4C+r z%fafsI7S7mszzSzf?3JCbaH)-$<a*wEZqr&2>wS1P+NJ412_T|74$wN;G1;W-KdM? zgl0eXBg8_Km!QtXTJ|k_`M?sX%clmCt8WZJ9)n<HNgk@T(_p>{`3pU}2uQ4yzFxG& z{o{}q6p$4wWRC)D3eeEJaV<U=QjeG85}>PGl$YlZkPoVz4;5;cSo3I_n4l|<g8vLa z+46y(Z;tNajO6175O!Vr-Rqf*0NJ0_{BO+X=jUi*p&TFujI#akW=72H0$m`<QwGX{ zNuf`EAanr~RA$dROIB7^6XdJE^N7baC`X4X)_39-jOChD6Rc3O15k26L1B-EkH4xT zvn(UC427v#ob33uveYd;WU$|qu38(WMqQ?bhnLs$6i7ho?x&H4VUs}kusm??-Fh>} zqGml{KBM8rJ(#0iM?qQ(=#4H|F8)mWp41a0zucD!W)TtYxtQaDQ|2z(8yMse#lI92 zGsnzm8$tG64*JjMPED<$sOn@5JbWT1+db*DLld|(6!BeA(!K_2t3hLd#+lkxP{f#6 zLDY*td*Al~rVWENrbD#f-|On?aDmA|fFH|m!L$#^MDi?H3<C&ne^1hr3CXM<xbGYe z&?jbXIi?|+>@*NR(3x?Q>5EvI_2<<wLT#Y8qm2_two7*39EpUzz4@{AUE)`)T-bqf z$_<w4uyFiTT0wz|L;Xi1K%Jj1*JN_LSc9Dc?U(xbmm$2Ex`<`!t%!&g@i-3WV^uzb zohO@4Ku|CTU<A~9J=&SR`dT4R0dt#XL9+oikqD5iX}5c@2t!ABNR#m4?srXN>pfqc zR&@~xLx#|@z*qrpWam#$PlLkbG-jqWX5>kVU9X$Y%v{cWEL%U5Zb%%YU>v7VB$2?v z=&{CnZYPEOCeN1Z2w#puf(a?VbsEblynxFqVNtUTIzHhgr|%9q{Z{QH-D<a+E6a7v z!NdhdchGDlvT()9h{dO*XjnGryqksc)|ic9eV;ze?nxtF!r1jj#8|4&B*mJm0(qap zc>={unqR!XtW9BAb){ZuzWjy4O;TCR-sjQ7NwXaGoT9ov;OJ6}oLd2;)s(U+YA<f| z+O@&um93G0y~t_MNp>i;&89~l`lx_Y1xqNN(b`uF6=1ds3vEC+Cg!9R`bOJ#)Zwsb z$5Us_=7Jd<=PpZgi7Y2fxtZz)j*kw4Jm55pkN@L^!<WJ=LGg4O=E+^(+}ub>Db=7O z6L4?QI+MiYoBFf#Tz+nb`A-ZkN`eB;XTy_|?k%&;i`&Bfe+eO^6cvZI9kM1GE;>J; zLVbfg+ltFb-X2!%hoU2HvHaXa?ABX3sOjnD8nx)<vlJ|92TZKUisZ0F+2d6n@|wH$ zb!hf|NyS=|oVo@~c*u&@umR4|H-P$d+%sph&g)af6|YZC*FZ`g6}&PiP;^DVV8usk zIwVA^lue7D?hAnqH0Tqk)s$wx^i`ivDr=~I>@co@y&<CqmOWe`PETLyAH~8qC>I=e zJjIH8pzZHGc1}yoN@SLT%+o+9v{cX#Zh|4J&9wS`fp{^Czy_92HcD#>@B_8}XlQzX z#*m>l52FZ7unitE$`13JRvys(onqa^b&0`}8<l5|x3*=_%%}Ia)~tpz2S*M{Qzzn! zVhr<nLm)_2S@7G9;rdq=eNo6VI-Z$LNj5C-=DoeSy+t34BUY?3=m0kF@b$9GJz4u( zFL)yf7Z;b^+tc;k*>YkKH1f@EoDfvo`#^UWFh+{OzT+NCqdXbFlK@M-t~7O_zsq0o zL?w9*Sd(2&=8hRigXtI^&H&b6PwN=%MU7b5cB?{iE<#>9F^jl!DEAh6QgZULT(^6x z0k&d3eTV3TiQDNPW*=TL@t*F0lTVZgXu+?LW=+r3rd(plLWuEwa!>^uIUDj<*D>s< z^l3+ZhuMInB_St=h~=Ee^Nt$OH6Q^2&|6)wVqUp24jWt`z+mup6d!ibSuRgcMt~=z z7Ox#DdBQ-|w|B(*XQmRPN(Ze}QA*)X@|(H=A3bsp1wN**`9eIoqzS-7IsRDnHDyjg zdPDcH07j<m_<g?SdZjZ2+bz6&p*1>t0>UqRAL7t}gqpRfUxh?Ek5H5AsYavS`pL&C zT78uhg){GYI?9g!1yW40-Z1s9y?P99H`trS4`B9$2Wm3w>LK+g3XU8qE`Uy7@AjB* zqx;;zvfCr|g@y>Ou$^e(Z|=mg58}T1yUP>duYW_htCAd|XAQE4McFL{t5YKu6o#}_ z<ad?9{qudJJsn^^i|LUcj;HtiBhG{&5jr$rn$2S!XT`~&ds7yn&p=)g(JG{HX^vJY z?RX0aAW_@*Gyd#QW>l>LN1RX*uT`qlxeNi^9?@la&MgFG%=E&Y?3dx%V`NCr5|TE> zi+;X9VIo+fGvi@Ou`CAjwnyBk8kivH_<~C0jrZLIY5Bo8q&lKn<k4G%=7EhJgNUI5 z3>ltm^?_p-qB((r>EK)ttDt*f>1m8))Ir;tUm#|v+lurN;vJ9(+VrSkgV6z8oBZS{ z%_*z4%&xzkrda|+x(VLe5If=`1-><MNNLVRrNZA?;om&(;1O$ZKER;Ly>-y`fcgVQ z-^yBA!&lpVj=bddIOjl}%3=cH)|L&B_b_a{AZFo`^Uv`{&0TRU#xYlaJfF*&W@?_u z9#yRQP=+fijc|mjbS})McaI6Pp{S1P(g)nsFgw<O-WLxL3*qEC)bu|kB`Z$zbeH2@ zpmV*uDHQ_QNJxa=O1_?WW?K8YY4=}hXHCO7;Q@#i+BsnIM2{qKPqzCDBbx)sTsgG+ zCgP9$F`TBnHL^FzYJGnIn0EtNJplNMP%cx4O3zs2IDV9(x~W;lm=4=OdN49R{tY;A z#diEWJUqW#vFWvpE=X9}5)J(Xva4;(Acz+^2OE~D`_JdtbL<6_H2fGpM2m1bq0;i1 z3hP3+kr1GHkoHAxNJh^&2y7(=6n`N1Yd1_pE<hU;UdQxpbDOgmc<Iomn6^r?X8?0n zwOEVpKEO!*@1@nZoQx`2O4$>^siUO*>@V>PH*Q>ETrC=G`re)$MkoWuHeAr(uE6#D z1PBoI8!rNCF*>l8b_>UK3fDB#Y%o<8)3`T{?+S};y`!9Vks^Pb8ZQ$Mq`u$caW`G0 zUk=?G9UTTVsdquu+d_2ciUiH*2k`oi-~u5E0~7OlT9O#BabVI&iv$3M>0c2oymvrh z;K)sI@jXtAw~!y=B*}Q4K1u46@2Z`J>wDlO#)Eu-kiX_#kqam47v*i*!GN>yTDcA| zOW9=st*k+uZ#2x{{Y;oe4LZ!zmT!t{3Q-gaC92SubC#o^eg)wJCS{|6BR<r`mpF+{ zZMgRfc3ruwWu;BNhoP-?RPsjGCYFngPp++QA@k+i88${ku|HQ=q0IIj329@~xjw`o zn_tnA=X>bUlr`uT3sj<QWG0=GPPO!yL;N-%iT_Y{o^3=$!Be$BQjR@kYw2z+OkACu zi@<(KxYAM7<m}|E>>~QdVF$qAHGqhNx;zD(UuM4#@5M#TVDo(g<(6R&&N;YR?^Z{| zDq*v(<=*rus5WJ*<#$y0H*8Elm6NeDG7`?5A1R}r-IRmQjT{c7GE%alkYG@lV~5-_ z^sAw0-HoNrqH0ofCJbqo>>rFjkB&@%y)F4%1P)_TU!i6=f*}@_nto~)w!d;3@!5^n zmc~|aE~}6Kk3s)06f2GDCeku8$BW-L2sA2`Qm9TB!`3b&2J_zCOu-Iqj5hI;tqyt7 zU-{uMoBq(y`ezf}rJj5U=On#B=y^7tY&rCv<r=RuYQ2aGPw#1xN-auWu%mgvP-e_| z?<Z?60Tbim1Rii)Pv#=Rq09mGo7D`3d(9ril>-FPm>~6|xZiUka$dzt3V!Y%-_g!6 zrx1bwKe`abd!M@AjeIu$$r#1Gap?Pic}s8SlescepuGmdN=mvNe1ZBe+Fl80qp8a? zM*xsPT!``NY;;7_x?=jO|8Xfs2kCSZ(|9&~gLSeG{>VtRE$*5lv^Q?6s;sMN^(S{{ z-THpPPE`jYzqQk67YIe+TQ~f@nIUZ_fWApv!`)r}{%FGPiFMKX2?Z%`F?u%PZ+r^? zxL^zFs#%*cUSoQB2Zy<S6Tm2&qp5swAQuO!DD_c^e;i{VP+bGrUu)ZTmT<((D%ly1 zK?K?iI)BQg1S|z({NALB-J|-hukPZ|<#Q<n8J>JgJ|ud~ATq#$9Bt6~<F+*i<d%^x zaR7IJC|6biGs-w2{CNS9k!p+YZ)H>uHSzvWwi84gkjpM)7AkIZN~+#K$g90XW*(Q4 z6w4%74>;O}YAyomo)adu2SK(L;{B>k<lzNPzbS9oG*g^<TbN0YU{0bX{K_AMS$3C= zhxYzW7m!i*t4xGl{f{hX0kyQv!`lu&Q&J>!baW^h93e+*DQ5Z;PL;HW_(Sd%l^vx- z_aQ$15OHKU4HN*=jbX#bCKU>&laN<>_vHMQ>ITrDX?+KcyrU?=k~N+X*#=>Qpn8Ug zGl8HV9vSGq88Tg{4!47XTFM@wdi_aeg#gU!&<)ZvmaE7(k`=O?nHY3#@p9&_GPpMT za!X1+bV%#AyJX#d%QuDIywd#92*#7#EWjgyzwy-!tu1&MUDi%gJEh;NMM$tp(Mq18 zfI*HuqnqGsx|t1o#tkX>ey*MgZ5Dt-VD^t4q~+#ACehr2%w>ug_Ja}^vbF?^sbR>a zfhh8$cE);cLjuItVR9v$)@T-#(y+*fOS*__N$T9UmQsu{^XZ8+EkpDGboyCTu&|^z zf2UJwt~2qU$CNE*1(#QKLa_Nm$RbxU*VAgY7h)|=o)g4|5(9+OmSkxEj;7t+@$45t zK0dyAlNx|Q(+DVKz$c);0ibdUD84@;&^EybvYIy`^U0j^sgC05w5ZwRGvgYqNa}RN zVrF1A2Hz+XugWo;cL1EX1(kMpOgF8NnKk&Wvc33MGC?B1{M+}vchmTBvx@cd?i6}C zpRZvpc+}Df+@W7Gy{Ox4&{2l7hDJUhH=4I%&OOlITb2io3OcUG?@;uiY-enh{ednG zsEXx(U7^s{rMAuIL*$5SlUuW+M*S201kKIOEoEh8$&rc$(tQncsJq7!y^}DL1BkG- zHj9-$X+HsW`!sch#_514OlDGTRU8=$R@A;^`FyL4439a`|20I>j=!-7Ggo2_Hz<7* zHyR7MRW2jd4Qs9Abv4=+1qOt@@m@sIsX=AiRE2;;i*D#?szJq-gBnUlFBa}Fc|+E- z*U-2kkZu_mrF7CgQC9S*bv;2&yoSAOUii0zUG75}x;~tgPA8$q<%89DMp6bTiHvY$ zgadHnv?W48Vc}`2Q$fM|Uk*I<BcOla1-vsbt!+tq$C45hll*yW{f#o!5;xQtL~!Lw zR`V#z)98o}07_sOC8YRP^UF&0>A2(uQ&z9urbH|;<zN{5uTsH?xbNtj*_$1Zwh+j0 zd#P*^dXq!&#h9XCoryc}EBdrYP-1~H86dm6J+?%kQya?{mW}g6x9_r8xPTxR44}zl z{!<Ug8~y6^Wyiby$2#UHpMMD*FwsWV(+ic?qYsv<)A?f$lmvx3X4#MVwRI41+&Wk( zU_JpZLS`>`=pRW+?h8fm722j5M#@xrfqw_EGizH~yV15hh0JP|M071O*Dy4BkGbya z2ATHldZwviFIr$y-r)^ed+eu)gM}>?XVuI<f=0b}i4-ePFb|K(*99_u2fB>_TLzfT zEP?|a3yz)LUDaR|#B2qNNR)zn6qBwbRwPW-t-K^BVh3tQ#tZ)oj+o+##8XDZbGO$; zVK4L?)1Y%VuS-V#R=ql)2<uBO#Wx9f4Djl$K9BR4yvm*4H%L-KclyYns{&*fc@i;o zn`N#i-A$Xl9gn>gQ`tIb%8vRuU>o<!RK(5j+;C}xJ8mdbIG7b&hMPPxR}8e@%a8R| z@NAn(KN+w}wGmG!es_r!?50}MvMs8z{<Hy|BGxKxlT=Nf0!ZGwgMhGK0n87FI7R}U z>Q_<}j6U$02i5##O#TJ`yRZVS5~;6o2!siWnhgghE>%vfXg>hj=;oXAEL50`9>I7T z=>2Kms(n~{3$+m%?ZlX@M-#70k<A8Dbe~@NPv6ods-}W9es+r|q-3I17rLyKh^g)N zpPc#sy&Zjl&Rj4%5ev2%HIe%C5{bfT%h6<DUw+BZ@MU)B)0iFp`#~d+(K2}S&a_cW z1%f})uZ99{KkfsHG?G%Zdn*5`2O3kBo@afEI*l83!{e(qOj<X5ci2<Y@DKE6;_A$` ztTClZ)x#q`sTyZy^rs>)jdOpLmw~8amD}3uXa^s(DU*oe$bV50FGj+d^9uh~L`GX5 z#xZ877U*Doq5ILcn#Wq6mTgRjZARO%q?it|rK&c%HU)(|J?aFghG~7nkcld0kdSde zp8v&^Ft{fl{4F3ZvTuQ0@hFY;7r!BDf$PD){kA79(S~#R?e98c$&M!vkq6vrz=D(L zP8a^Hn#f(en>6TXf>nCc*>Kt}IS?lE#W)}*UAhY-HhJOf+vgmV$ms*V7=9_~{bHE- zdn-0{ibId5B_^3`o^)9->t*{+Y8v@A%Dv%Sosy8O2GK1Vq%i?z-G95|UhKfA7gMom zwX$8_(14eWK&h9F{kPS$w4ePbQo$&b$}Iy4y8gt>hV;v!GT%=X>8+sNf?-Xh`$7Se ztz=nxN5^HeYA4Dp(^&6mB+88X8&z|*Dfp-Ly<&=dxn29|CK%xs+U%QqQ*U|-N{ml2 zuV~*8YHcc(%JKVn%N{Y{rT%Sh;dC&5`8@Bcb;Crge=z|Em5RBqMn1jd+cadd2KU}O zhkfi?4LFV2{s#fKzwPEmz3ETst)!&}Wfq%p!4JuM!d@k63R$`-o`+09GT{HA^H`=5 z$XiKEbg;-m>VRS61@)|y-bLkkAIIV5o|i_m=_=Xp#vU=wS+e&i2JgwD&Lpj;+32$( zKk@l)RDf%OIs5-ie0MvAioz<ZU`x&(j4@tjZGJX4V?ZZ!RbnK41nW$|A!dsm_|kn& zm8*(3&_u0S7O8^$ZzY!O>fwx~cZr$G$FHL=oa3->p)xH?+V17gE*EP*^5(7Atr~Qk z0R|{V`8-~smv~_r3cENkcc!oQ;iS#y|G5BL3~G(|e*7>P88uy*_7VsC>b_%WlZw8A zH<fL2bq~~{MVJp^AQGANUF6-6FSROC(j{;%cKTIu;s3pbctyl5o}|kLgjoxCS_u)v z_4VR#%1=ODJ@Y;b$Q7?!E!Z>Qf-r|k*{7GW`hTsNFZcjxYdn(VUIb-j+-w8^@7&zs zN+v`sG8c|RaCMwsUR!5YBrFvc4UY=wM42c}nRY<yfsR^x<|nwxm}6I2x3}70Y3K{W zyc(7*r*8dUbKPHFqJ`5>g-FZ@!*GR4JAa|qLY+>hlLBH1`5J3<{)p!UM$B6?032CU z)Ag@-@*&$m1^TS)@6>ZG$<90w{aTA6BNeWe-+y~Mh%Xg2P;aqfOCs1^(~3D<Xq!UM zbv!m)Zh4~($(^d9mdDuAw`;&wn)R@XH0-c?`FXbtw2K2rATs|RObO&)6X;p7=WWOc zhO=TnoLX%Dl169jd@|8#vXch{i9Cl{&Qfx6zs%+DRVexRGS}Ah08RlgnSS+O4o;_8 zxd(vCA7UB#-RPxr{=~{Hb;e12zy%H2o_QpxOP|80Y^Rh_%NkAhQ>|}MbR9PX<r&Tc zAx$UJ)k&#_sq<R3n3pzmkRxA%nG;L!4dtS<?SvqyCun=kdHd2YOtl2Ku7%W?H*`UO z>sko<MdgKkHc06>pM&x_g=8i<EIl%Tu!NX--89RvgW%znYnOYD;qcv>ozxVt2#3s( z&~~<FAD|k+`wIzpH6R;8^15G)3p}p%0XndMs~f9N6#94ys_Od40J?U-^~(fKRqp>9 zko__R5e7Vqu<VZynMqFDp@{f*_#>=BBGSSG8)Xs%W$pbe>oj<(6ZDiA&^suj6(86_ zW_VzRVA-O7)MD_My*Tw;)#v%CZ5Fx_|Bt4timIw>*EG`I-QC?tNH-GFAtl}2ozf*B zT}mU}B_Q41(v5Wd^BZRzZyb8J_g-tx_kEI2{6jcH_KGcWo1gzk!}}<!eYn~V&}cGT zQ71d>_3cHxxg*qgPq(U%rQ0&l2f3c5n}+^)%W(=WRj?yyrOr&8%s5$8k_YE8$hO`M zJ`K_-aK@ru`p|Hyx#obi>}nOEXiJ(oDlTph#9~;0&-6pDDZVEJK3$g?(h7k66T;WX zK<Q?A{dWwRnE&gdPBm+z2#{$nM9{H=j*_Skuqij-`u%xU{1qRC8=6q9`%9}3w?*7U z;9W?Dqeowt&NNhN5HlE6)Tnei+mE7YAlBL{MfuN#HF)p%j8P`nRWdh%VuCYN{Ub3I zxkdBbPPR@ut%f1zbNB3<;WFf$YR!opVYhG;SfxONeGCm<VC59JISRyL?S6%q#X38+ z@^KsHu_exbPh{_gd~^3pmtSK&9czW~9EZDoCwhykiC$wV|7=_fe7tDad2i1VDJdy6 zTBaMFezEu*!603LtaPRlc9q}w-LmjFomM3eBo53ZUOXX>O+TC7uOG5^TIHn;YeA{s zoIH}=RhiN&xb0ghk`wM3I{i%FNXuWxCcES7g2y$HXx*OG)M?jgDYn|2q-cKiUaaX! z86$zWhkK^ssDk|?-E!!8#p6iDNE-HGC#F(0NNWvL*oo_U5+m>Uv$3CPpIuJZsg*Y@ z9Q75H|5nUkr(k7bI+mFoMZjC`mC`V+!Byk`-VvH+2$x#?nJ<y(jskZt*rhamm@k=D zsQ|?4?5QUL?kfVQb=Vy@#YqF6op|k64|I2RQ(7LNrG5qCAO@+!%Y6R)c_2R+)+X3L z8dC=MTtk>QR-6--$gb8&-6M%sDq1y&AmF=a#Xl7_`zTod`3`~%NKK?hOuxtOcCW7~ zMQD*RAL2HL$npaM?vE<J@}<KtbHpDil6_YG9$F7#?^Zpa8U5pM6}VrUlafq_l{eLU znbI2A&y3DY<yak|fh$lG3P9$x>iWPRD39*MDxh9`#1*2(YlRauBs}j~hKr>TijGXc z84Bc+>DfBl${@M_zXbfZ=Y27Zg3zs*weEKE&>%)RP0bY4b>g&AdbUE}IuQXf{3;<? zGfcXmW3{xes3}N`Yxj5x;0>k<Wlmdl&&Gsl&{0o1nlssw@I0WH$?bUS3qZycVu$b? z;K$>IULe?y1iuQCYMRZN=`g9;LlFDfov<;(WWSwmuG2W{LWH!&6ag3zj5jIPu(HIZ zR;3iWS?_Kb-99yy%y3P>h{-(epz+3%ofEDiOLn}(U^AB?b1z_%VQX3b{gbH=>Juy* zodHY`OCpq}z}gbpcHRjNLsLWA1wuEnK=%oT@Dz0<ISaEwk`bIgcp(Ji`i2&%XUuU3 zMbIQ_P_k8TGQ^SytU9*h{|DC=6lOk<QcL%xFiaL9AR~zcM;_nL!M$$n=+XwgK@<jR zJbINPh_lTi(EwP3e?<Og!_ERfImPcfo}f0>c@5Sp)$Q|y#~Ld}LEz&%-*Xi-S`f)c zuwh0IvSa*vZt&AkBx}u4a*~O!Z3`~mZe`FY1`qnC{=G*w;xaBmEElO`X}NYaX$&5l zD3caVXY=JC(E}(rXgO;={!O1-v1z}_exc%bm<!wkQcsa@&V&(t`CO*3F>zKYy6s{V zBf-h#iwBW$zH8QmSdQC9%su>U=V&jv`JqYgLtIPYL(q-u-#c>(zi{(QG?|fvVk({e z)1cM9Yo~?4gN_N3O4yU@M%vR)*P!S7Ms{Oz35?jH-&q*>&qy^Z?hixx$g2lK0F0ii zt*ObKPR_hw$E(MT?ohu}$7H7Gpv^GIl+9mjOKYxKBWNw$Vs-C$%cA!|%`g`>!z!fe z*T`GizOr%6Q!r57)cQU+gPY8t0!4rr)&KRu(*J%79y|rzx2G#hT>)>_F<<-prLwrK zCBVrE?p=NF!(vyU5msO@Gy_`URA9MF1k99AH0?wI%#Wo<#gEw7*itgmhl`qj$KvsW z`w69nwYn8DZhjdRA_R|0tce3_?K8)!Q^eVy>8tylk?Gy4HgYz$-LZf3A{7Whxn-`i zb4<PLFgy%ThGe*T?Y6NvtMI+$^v8!=^n9b%t=YX3K&e;p+0rrqbr#JzRj~W7Nndye zYcVnS_>6kO1M+-E&Sm>%Va~@h!BKdaM0_PLSSnw6-I)V%Jkc{gMP<)IWt?=9Q&0qj zA>pOTGXrlh8IW@Fg3OrxZpaP$T7YbW{GVE{Ym2|*IY{F2@`xZ?3r$7z!F)2)W4Xb) zZ+jr7<)m(u->WVI>F$X>;LYyQ7B*P*cXCovLzo=<Vl(=1fI{tH7yh`fp+(`Du#$AC zyPZxAg!jK`KQ%4;b`1Y}Nc(2Uc;cy-d;zAL??pP!?>rMXq1$s~oO_0)buIAF@8j%A zj1d{*7Y-@N9EnDzrFU{(?^O^Cky0Zm$X+<vS0hhOPSDimMT_&RQk=OR-+)IUmq^g{ zAib5T5_j2U37#a+J331#yR|dkALmGG+w2)(WJ7a}C3LfXLbMR{aJ{$N1lz6f?V?$O z)l@Kt+2B2nf^TiWn?I0^DuK`*5c@#)`_CU_n+~ujfs4>}LcE4Y6)FuEQk7Mp6;H7{ ze1N}N9!r*sknWsI7oK`v({@~pOzY>gX%vC$DI$}Wc)dj{8~2{Fhi29xq5bHz+F_X( zWGBkiHTFe3hni7fow)M#^%7b;xSS8+4~7dJ3IZ2`Gk-(xOtIDV3H_;GdR4NjWzdsj z=&D(=&0Dnn1+!N8(W<Jrty^ZOe{dRvbs88QFTcqAs{Sn;=}qL6MIjjuL$c}icyrib zGZ#IaOlQ{g)FcrT6-7Zi_|{$vm`}N6+NrwF3ZgGJGvAN?%a6KD2zc&uxg4N3QdL67 zr5#EjW1C#V{z|6`c_XhNgL)l%CaNS|Y^TT5!&ZD(Jcx#8_)hE%8PA~TNkYTkRYKQ! z)>Y3PX0M{DF=Zu*bmOHZhflm^rP(sBzHr)rZ8~CrExoV~;bEI9<>N4JVV;}!3Ok4G zVofEx11ledj+pQL#jjS&%1GAlZQXqP25va}x2MOCkN1vNM#EXE@Hp0Q+<^ZB?>U@) zZB5PB2vYAzNNBjPsUJCUKLTZ~=gpK1;H7Bwn(Tqf0ita!e$BoVd`uR-U+kcWjMV?$ z<Y<BIkTxSTbJ)ORZNMx+<b#QcN%vzcsYn)>qrF-E<F+xDE2$+S#T}@3!M2Y059bt~ zXdkLN&C752-G}d`g;|I)8=YW7gE>SfXMlA(?oFa`OvCzPT>(d;#^C#<jm0I3rYqgV zXB<<7<9rsrv#?o5J<?mDOO-4w&=uw4$vkCrd_%Rzr_sj&AD_ciN`Ya|l0Js4-U`r2 z3*blfaYd66UA|$0$jS8z@7VBzN8byT>q{BdXV_Qg5B$fws5d?r09UsEXj-e|`E=R@ z{V8a7Zx2*RHGu{<qx6#m<s8q$;`HXjl5AglI$qv1Uc2SV5+x#VPP4B2KiT~q%N{CI zE4<%JH;NWxpjEMWdwl`52r;2B8}oMHwgN80%(Jz&oivORQO1?-3r7DexH|UQCjw;a zapX@np*8-*sI-vjN1gMU*q<7Mt2=}7PuX#KLAm|9u+;+UFZ;Qdd;}yCl&M|=W`Sr- zg<mO7+2ar!9D@lPM9E%wVP(`%*Z)iqqNkhfunEcHqQFPaLXFsQ(fpC&NW7r}mK_j9 zWHHl0((>(NPd{9JZ_N_YTGuYAsN&x=mRakWK`zt};&s35_uA<4T#aTWy_=g-pxRJa z8+%mtW;=M)L@P?YK*{^z{8(3`k%>vZb}cmnLljVQTmidXS}U2Esp-K6D8hRDX9i&W z|E7+U6RxF}|71)cRc!(!PCZ8p7__>A$SX4Qqgm5S5BNf<AKxmxF_0(<if@Eu7OWj! zIAWi^>f80Ed7JI1*|t{-ebm5^m7g}1Ye6n5$k$?7L(8h+h}$-mgBzJMQ+T(M0@(>2 zTLK;gm}ioEeX^wQ4@}+XZ;<nl0Z?tKxU{9NO_|&i4KD#c`y`~&jjxvzCnf4o`H~Qc zjMMdynwk{`tYzFdqtdnci~icuu(<8cwfXu|1OBi`2vCfO!SCEDY$X!ogC!0yZDe_e zL7J0Cl5OUiZ7;2P^0im4pD`U*o8`#(w`-B}C%;qNO)6okB8hbrc-rOD+fVLoFD7oY zOouM7%mHtcssZ2cNZt-^Pkp_YKF?Y$r&O5@PQK3Tg%DnxKOZq^iQbd9d?;T<M~7XN ze?Xx1Xc03mEGYO-SQN8%(D`(BjiCTc4kOPG*8)wyVVX2`m~sDm?jHXg525g_c7wl> z-fqE@$LW5eV+aPMz&sBBXHU`lO=u6XRKdZ{PR+1@p#hYrlz=F)5>+xfw(twAyqyi- z;h7UHc<p>udTferk?Mzcjs)rq7mDv_d;4E}t}!;?J`NO{`$kDUe4zN-E`(wBfI5hO zLb&s>`(tEzHKk^U@WhT@ny`7(iduo(UeQR=?zh$Y2(qEL9pg`gWAMoDn$Pmxj&<%H zkH1F<*L5ljoL!xsIoP+I{xThX7|-My67mlDZ-4{3Hw-*Hyt?p4(0_W~^_B}XLTTW> zuXTJNa%g`KD0{#Ihi=#bq3JkF(`v8KdHYVMC-z4jb_B}aBIkFs?iNsdS<id)uQSH+ zTN{7Q_?5FZ(|+MXZU5fUJ9!R!yHJViUKhHg9mO@ZOz}2nz($l#-Fa^ex2?;GsY4Vz zfjrpPkJ=zZnMMZlw?aeBloOcA?ZlBW4;`^};Pp|2qb$9w_E-ogX_c~EL#mDwQm+?8 zxvi&*`mpGfeYJ9eMx;}(*_YCidVi(JvwiiDnLREjJq<yFTiu+@mlQn)V+_wO$e3uf znKPX#kk)q|rU7SjzT*QlnsE2$bb}9Tt*@2*VmFhL>%qehfhY`q+Iy339Tid;!m!9N zS+ErB-;_QPRfBw0*}?LmREd05O*v5x!+h$Dcge2p)2leerflk+EyW9${$%C%{6zF+ zzY1WI(T$r{+KyUZ#ms{%+MjkO6tlPwtAWg7T+6cH>bs)RX!_OT*81)%EqIMlLEiYP zF<`4n=NxSos>Z;BHY&x;@EsWEfK`_)dra%V+WG#%gjV_6@5<`VBab$4swZV+$byiZ zr){G0)?m3f@+u*upi#K+9;~m0irc8JovgzS<@UA)k2xz7mJglDPxqJAWYG3PWozUG zKh#J^Z;3bh*nIpMF5Owz2A;>RrxeZ*eArZ+#MeY|wtNzTPgf{dP<ZV_SGgK^Vq-(& zNhlZ)J~gTjY3I|!iV=nU3$`rhWMU&?g%KTCc%BQEk}-l=4bK>Fg85Y@>29Hz$yr=A z14I*=B!Wz4A_fZ^z}9e80t9;evjhwzl3QOku^pu%6gMLW?(z5wdN9&2MWqXdQ;oN! zc`x`lEA@XuHPDeEB*zxtV>a#4WO(ip#}N}WZ_fdVm?v=h3#WD5Z^u}k=wc!RN7i4^ zh_wS;9xVE|K%K;8zsiq^iTP~L=e#TH(6d`t;VCJnsMwBMet{XO#hY!{GP>6)AR^-D zpmTm9m1eT9w0UOC=k!-7)8&Pj4AN|Li=`p&unW^MXHk$Dzq5Pj+UoSR(KUN+?A-m5 z<FaI>_*7wMW-KqwH9@R<T=?ICW+)Y?wZl^BK3UrQdrhLgy|Y!4ZG5CzrY1?^5=IG; z*v;RsVFtBbeJO~Uc%mLbx7z@Ti^ruUfL1Q$%65?^Xl^<9L${vt?sSC@jsK3Bk7jVs zc`QfJt>QF_E|<S#T(P_vTh5H@qnn$G)4*pd=l}?4jiP8BS%mb-Y9nrrTj3$pT6ZfO zyuBI<Q;C0W0!{lWD7g*d+Coyx`B5a>l?tTWJl$=B(1*5@5Y?{VfXa+<6Yf9ZUt1I- z2z7V{U;=X!+=knNf$QOP@r56#tmU#CM{XX&(bnJUD8tHy`<$AUFB$O(Oui>sC4L_q z85sP4lx`W+p)>XQ?^j;a*N806sqm{@T-zH}@436Js0j^r4K8)ad1!<jD5D6eQH{L) z{xjci(Ym(Km445g`kouD+_Hp{_~DRFRxvb_YgCyT^7o&V^MhFgz>*Ic<X_y$N>&`j zLemnyO}v-K6@&Sv89`svPnpZsGdod%>TBFyQ7)<N4b~Svk^_zRSu>16LQm3eS|hMA z9B?P)eSV++!Qy0gaW_w+;wgoGc5fyf-g$=0u#8watyxCZ{<H}-{-ggB`?q;xTQe&z zjP(rikQ)yGckjOiU%LNp=(GBc(^<SQLe;yges?Y>EBoC}?~S1hC`N(RYRGH}>?Soj zBj?i~T}t?2H<@%4?8YIZdjY+LfSu;HUtN4!G*rhqLtJZht9%1GFt#Z-KU0K&zJEMQ zPa_ufN=-|)TY9!PM&Be9<E}&2%!g5pX1tVU4(5Lc6v^I&o|TOL%u4Mai~_>ULEf1? zqjUO1;{s?8&UnRt#G0W*WPUK|hK$zydjnMl?8Xp(KK@EU47=-o@uG$;rQtLqGJAfr zr0(4%+4OfSlNe!^ie*G-!rzyA7)%KU!|__U)R89jS<T96dSyKpp)0;^7)*?(wqa4< zoZxC%Pe+#2*y*(KjcSb+O^^9!Zr7Z5*+J5>2#s$LeL=6?DBWDLFINt9-HH5algXoH zA_U?IQ5WND7sMBI7g-#RM1dJ<uSf_^t0ocd?$$ef*wUyxHGL35$QkPHQ|P2qG<Zh7 zPTi^6)rLwRK781Ef<qx>x0?Kp8So!Jr`zc(Fq+P`4|W!s_1D(pszSpK;7e`uI0w#K z9{+^}?lId9LCxE2X;af}8r+!AKTE8k<sUEz*>Ugl0Z+=(dn>;9K;ZeH2$L*c@J==~ zO3a(~=7ueU`w~Y{c`tW+L8L3q9L=b&N*;-^H=)C4D+s>Z4HxR!fVFv_bg^D02VQy+ z>vJUGt0BUB-@$=yT1n)nZWnYDj`aj7#%BE=s9pzf!{PU8#1@GM27x?-Ix-m4$#g26 zstf;gacZmyFS6F`6VxpksQJZ$I$TU#5T7~Ga3?}klD6W^JwJpD1;H4&1~XD*Jbxmo zBB4W^{<JCIkIpc-8-xje1E)@w7~lXWisa;js+Zqo5Nk0Hb%%diZtX0*lepRf+YKYs z4)vV3()Wd+<_|*0$iZTxO8_WPd<tZ$zKAv<74~FLOaucSv7l=tuoYpEkxc|bLgRx6 z1hh{7hY<pZ1pY-JF)<ODRG8m*rCk6>{o3(9T6{FDU$RBB$@)cXg&90?448-iX7(?= zw~@13*2a?Tl~rOjxgB)3X|mXIHc7j0n>;Aw85vR;%x`7_0uS%;m>!`$B}DLWwtgQ> zZT=-QJR=rCyj!mv51~A<MtLUPY-I2L)fkxBEx$=jJ<?A$B~E3GaDkyJL-NQ~0DZB6 z`HqQiCmZ!6R#eH`_Y9X(h+Mzhr9sy8FS$-E+ESmavr2O1^D$VUysM8cVAX#;rE%V$ zAr3Jx#XjS4%M|czGl(_}nhKNuUC!5w<yVeyj<^2f8O8oUs&*UF5;VshngoB!9yb}o z|7x|9Pu_s?gMyzp7j7K9s4R&((~V!Wlal>Hya5QH0F=fG)LA#j`?|x_s-XztZSJSO zxE}|Jq=2B)X4&>vOXNN7h-Ox6Hy*e~yn#5dSLKCN0TtJt>RlH($r|@azfq{1#28H0 zEc0}6-F2M^ES4AsZKIiui@lvub!~AM8;X0izD_fV&;5RK0K}YF=sg<6tC`gmLj$+r zzVExs;m_!t<@{~W&s@I$=9V0W3Z!ei8wJUt<>R_OX+Q^&$im_>b(U{>(XQAGwk}Xi z(T2=!vEa-l(%%{T$|eN~M9QYZJX_R_vvjM-Mh66SPs4xoZbolgBTdfEZu>f^NS#K| zS|ui6x6DoBpL6KM{DEB#<2crfQ2z~W<9oO~U4|kNno!V0;z42(Iy|#4R2_FsM45=# z^4{Pr=VVHf+tn9JYssG|mqo(CDaS2c*1*`+oeFTxqs#R*-$wqySc1Owj@Otfb8~aY zx0jyM0igR901uk=db?M*Uo|rDGyIwuAAiNc|MbBqAJPo`2{;0{(rAs4IF>AYE{erR zu9-O(n;glIBa~<yb*+<6JwY1MseajmJT&<w4pI$2Yg@J|yHd!paxJ06LPxjqU=xQY zd0_38!qbyXbUAJ1!*@6wIWgm<dNG*HcY#L!i*}LJ@g9w&7Uzjv_}p-fC+i=%aJgZ} zJ;aZ<q9<jtlwp{P*r~+lQNeKC!u>+kteqH3uq!{{r_uYg9ZX~GkVH#^1pm;O(qa-A z5es2d_w}B!s{7xYCA+l|?0><h4E`z33|Ugpu8bJ(mB4Og83Lx#)hgu$0*w=V{fIZn zxq_|15$23$%Az0hZi8{lKD%4Mgt3Hyfw6=eGZ2-6&x@t>;m~<UU`Jh<usvuu8g+<o zRlxyFs_x*ayGlw*y4u;^u2U2(5WEOBz<%4a&(qW5ITw*CX>RV$nt6SB5?P1WljrB+ zO7^;ru6ED*_U%utSx*k!`T2U2gHiXtFY`ATXkWBS+9be{DXTQ29^wm;htXO^*P>r_ z18#7~KiN4@*h0deZl5@>^u0t!$J8C#HQdy>)OB;V9&jwI1uR}^gc8nn@BVCrEF~y) z7dZ+XFig@J%2$*Up_R#?i<REe+_MZ4-YuMUr)GuHsX*Y81^>IQ2xL?H+{<LF)+n7% zPvm^5I7|>N6|NuiZY(QGbz7=p=Y}0_-z;b*L&oX@gf`V-zDIc<2{s?q)agJX{3?v+ z0;-TTa~GKr2NSB?l(k8_L$oK4Eo2(uzI>$({HlGESa77QNl?`>T1DP40cjsO?X>!) zj8rJHb>p{a+KlH{?i0APLB3Y%%J(5~GBWYR1YE#Okg;Ol#!>;wjJ1?z+NGljyA9lb zBU+$;B-R>+Bndv3n`Ud-P5K68*uo`}5vUkoI+_QAkJcBkFwE@Yqlu?HrNZ(l#vsR! zKqYvW^4QG2YrX<gJ>nY~4vsWv-c&V8N=pl`I__B|_nr2CR{Qyh2e>5_SF}=LlIKB1 z(~9k{!>p3A4=_zvl*%&=Dj;r4tQq8m_0hRbD(6nA36NMd{y9-3o9a^}hTM3UJlj$J zW4V4rgPlWel;fHWfwPqw52?wN4=0F;cz9AWoxXed^F7b0K@DRIva=e_XGw4G0c!;g zf*eHY=DHqqVM9nlXd{Ypl1BDBM@OhG@~L+k#d-?V7qpl!?W+k^n07Z}7UXIuV{`d; z3Pi?j6o%MC)Z|~GpA|PLsSyWAP>ccyP@0iz*>oVkX@~VELCQkLI~L@u*`Me8vszMr zf+6w}COU8qDQXJ~ttYv9E?IaAuIm=X(*%9$XP_UINarVJ92NnAT$ld~B^rrf|K-k* zpWyOf+^%18wzAxBzfbK7RlTE4)S{xIZQwvA9R;c0|9SF(S9<(f@RxG`gEzz1?>+lF zdw(lbJyB=dJRJTyx2Ol^T2`WDm8@;M3JL*u+U*`#Yx;Hs8|z_(RMZvszR?J!IjYsi zKt)p#W~nS~&c<pQktLH;DF!pr{oqJM2p#x#KQxKVF@J?Y&oVVNdo&kwzur+k)xtG3 zmSysjHOol(1Kc5WbhOai$$XsF+e5<8ZR@D?{NFKR{hB~CvDe5clQ(i$RsjUFH#yID z@*h*{t#3ait`w+-2I}{tIRsz6wINUSM`Md$(8B+gVdUuylj8A^mVYNh<&R(a^&m9A zdu7nsVTxu1zuQ5EQZu*IcY3rh%!=Bs3zpOA8tH=jZ#nb^)tqPy6$-(@81J|WWRL~7 z50x~7J)G!Iu*@PIMu&c0K9fBna_snjEr0}jrqRc#t+#M-qfIuH*IAP$9QUDKqjR5I zG%@&ByHtqSuZnr!=3>TJg|_1k$GU(sO$Ma+u~Y|<fE_AcQ9;3Fi-2VZ=4f$1@vsn` zdv55*cf$_v2MeabfdOkkC(?<DiS>TT%UUdUR@R;H$>~=L6ZPV(@h}II*#nqy_r43{ zm|I%H<9s%)kJ6TOQlrf(NzBN=*X*mWs{?LpQahwjIhc_s$4(3&<}^5UZn4nd&_8O^ z{izi(X3++`CcfCT5f@$EVqde%8Dcz`Eu1%oNk_e@J&)>t9yJu$+phKA1&}@^Lzkj{ z%}I<?@GzO$)tUiI1|>5_n6+qQ!I!DJU!^FDxl9SEZCbbsXGYc&*ISN(UBL&*NgMWA zE9<wZ+GYEt%wD<aH3s{2qh(urdN8W>U$hC=J*i~USU(>x*0wwhCCD7Hw+gyup)DAq z1ytIHNaUAE{D6K%D58S<{>BA2`&tpa3%NmYh)D1|bVI6Nq1u@It)3!D7_kWdSVe}i zqGQYy>2Vh;t}8)m`aSjq6s1&9k=zSW`H28gxu~XiiPP#;$nz?dZ1h~RtmcTxcN6sO zu?Sh9u};-wE;m6A@0+W?u%RYVRugQs!VDxgQ<Ulufkh63mQ9m~+a3sIg_|$zGi1LE zDR<6EPA+`VMeQt?*7}3;Q$9wec^eGTN-N;H|3XW7kh1aT!08UMN$w^NK8}cw6<ZMk zT*$h%45oqLh2a80y)%dcXa7xx%Z(v1%Ns2-T=->RL7>4=jE^`(5eHLY!eOguSad3_ zHr72m2gjwn(##o9lk4I<$weax6~>MimwTx!cXFfV3Lco;eCqn-m$hIsZZ!1Dh%K=y zHzo_asWZ;;>$M~G_TTQE8cQ7^$&rWgT98|yRJtco=WF|uW&9q@&BZX3y_wErPFekk z97eICr2O&C`MEYTN5?@Sv^K;Kmxn!Sfbs4QW;=|JEVniiI=&};zGu+)3dvY!z>cnW zZ!1oOJ9UdX5W$l}D38<R{bAS6mI1*e%knc$O6J>@xBWhOF?j;P8|iG(^-~1gN`dhT z7R5yok|bh*{2<ZG?+AMNN{-_$ORDm64~kx1aWN1Rn7Yu4Yt{id*folg+%M4WGkCq> zbIS}z@Z*OJB~30(B%@nuMkV?L#@*$LXOWbP5p_q&_vamhLE|dwgF%j0oQ=q5@q%H` z&2V|ocAiax?;7~$l1v~Byw|?zTwNvc>&&EQOX*gB#8DrUX(};EvTP8T&KE{UMy^yT zzbVrJQ{lwFYl3{{(T9k;U~m_;fWVi%>ouSk^kPkCnlBP*8$G=Dn!Q}>5V~0KPXB8F z*u6<3ZqNquANcXw0irSgWN=U&OkBU(C)f3mJ_8&b@=k;puq^*<c~>wCu{0?Z2CTE( zk!l7l>OTTCL5_iy@b>ux>)Pi}+Y1KN;JRVx9vbRrVHx_<)&GMt0WZPKQjcH1(xsTo z&IZCNDz131ej@GQTAwbaOIn7{S|XjTvrKEof(iY2d^93YG$_8pL6t$42hO>tJ%veb z07D@S;>q=X9v}Oaj5CIB7C(@Vq7#(`BV@#Lr<edrzJ2AGxZkJ{etU==8^5s6oaAq_ zu^TUOZ69B9k5(A!wMmi02v#ItSRXn=fl@yvNfe{5E%BXKq%jYPjs;~}^9<%aoE%em z%)Lni2VBX+JuZEuxUecIS7>q(<0DrjuM~3q@C;L&%Vmbs>w1xFHzNv4>@_y?3)2o{ z9>5b}MygEBy>82W%1dQi67@1+v0{nhhLo1~oCp5o2;JR}=Lor|<O&Z18UaN543CeE z@x;hJF!Y~3%u4l_KLF>&-r0J`lPgG6Dpkq*3wUuC`}OuEYiE78=x5y#LbQn}kiUt; zXME@RcG|Q7_ago8XwD4S;lTUXYi6-#TFY+Q|85?vAOJK7c@;iCSC&V7Cgx=jYG?W8 zKLGwyffEinJ>tE~3UnnP6b3vV=AmWMGc#*iW2o0LXwN>>R&qWQb)}7TNg-KN>t|ka zaL;V=1Ozw;S|D?bDf~sq@DOeeWd9OJ=qfK)u2t`I7o7PA6t%n|P#3)Os7pkMGBzCP zDlv_u+5dt&8YY@E{9Cqy$406{Imc?gn#?W&wHUO_B;8;1=^%66McT|+Ep`YYr0Yvu zkFpk;+@19|TB+UWCB&Ebr?WORU&(($C6=8L^(&jNF?ny)*oCCEB>k-%k(m3Ddk0-5 z1~tP+XP116UmJRXiXrAr91$s&<-J%y8ATwnM1j{Jxf*8MrBQG*3g*iNRL~1gZ<LhO zjY|LuZ+ybjv6B??jSN!JCmGzNEAH<Z3t{3s$rFb`o|7q|gqn2~0zgMXSakdtI#R>d zTGb?@=1&!juBL|KVnJCPw$^t<<?Q0}1+Zr)%>$;xQ*LX;$E~`HFHX@M{>-p3=>OKA z3aWp3UT$ju`4-G~qC}cGMZwT>HTTb<9hbkE)*2WbIdVJwL{3R@S@nPam%I}ji~NcE z;eIE<3%CLiE4RSyhNCyWNK`sA+#7}j{c9|HESvAiihk<~i8nL??`vij*B*DxC_2v{ zM{<E*^IXrlI-5AzV`&*VIU*Jyt&@&vHK=h0CiCO<=t5V(>6Y|1YmyER(;A@%lm6MX zLD8uK6Q*K2r6Q}9_xmY<f6?p$-`p~8UJeJ=MvMl>5l>FaelJvh6tpdAaZ7YNPIA;9 zW>SG;%7D-TBoVuh`)qhm$hC^yk}2#qOAR*x9CBq*%QB+0v>C3{S%^UEC=NXOLIEta z#TaFkmrH@o9Ov5K`znJUIUFI&cFXLZQ<Mem?Ze8aD?<^3{YpbZXW#c{RGxeX|05f& zpRZ30YkLvfjnltAx1FZyNwuNNCCFXOXnPR6j0nh9jLT7DZgq7#cIA1G@qD+gu}WMr z$|e^j9`1(jMw4|NrS2Ejx;~P@7M41P{{YcMIrphI^;aZ@ec9j#j=_g_X<dOa4AHV( zSRA)3){XsZd;EXtpX_ti{Bx_0-wL;tuhLVl=Vo?ehv88P?s^_62o=JLjgxFv%iuS^ z*x>9tKkyuk!}?P-PaD!~QJcE|WA03)sDQUZldU@2bryCfO=K36FGlDBg76R!G+bvn zL3)@$EZ7fRDEPd#I#Hbs0Fu7}Dze$QT(N-8h;&dlFy>caBs`eeYX8fDi0P579URp> zre<av^KO2g??lhow>`y3@GXRO{3f|id!C=4b3lv~tHA=<<{zcc4slUYhf84k+B!Tu zJZ7BSnnTBG3w-k6KW2~jLrsvy)Wage9qWDgH&N<suC`$gplRX>2Es)L{^lT!mQut8 zYolrr0523C3;x^|Da=iO?Zi$uwB-mo>VBf0X)AclDC(9L)ZaQkkCTb({iOKdtkJWp zGt7)YxxIY=T1n>Jpy7`Md~U5|@9*o(5BL=2?HIA6InDE=NL-;Ke;VagioIquyNqAH zeH)*!90)<%9+@b;i(z|=q*<4G!Z0}UIPCpM=KuTeQvJhWd8w<m;rdVU70a#1Qez_; zp+9r6qC1j<KJ`)Yw$xC2TKzw8sE<raI6N<CfSp1)49ZD}1{U}gB_saKlZH!mipCcu z3x{jcJiNQCjN-+B%OXD%d*fOrji-HHo49H&6Tp1mxXS;xSZPg1SJxl;?O`Hd+r`<r zQ(XNIBNEE!!_$Wp(@7!^WK7pdo1XQoZI+Mr2Q^C*dAyJs3q2|;Qi{KL!$k1JEtSr+ zKWqJJp-eY#ML<Ba#Vm48NeHDxWi7mIkKTnf4EI|6Mlh5(`TL5S>g9bE55mw2$cO^u z`@ds&z)pka9%>L6#iGyqc?3HgnIL#TUDVXx-(M6&&R^>AI`94t+~~5Np}jrdIRE#w z9TDvtp(rnJQ+oVZ+FIqo-<Pm#9ZBtggI`MvD)p{;iQTA}02je#d_Ge;F$<7H)ET!I z4(k4<hK70_<}Ls_(GjB#-5@#z(mA0CYQxqaC6Ooy!z6#2YP8ZQjY|lK@)1Opoy%@~ zT9~fXt%l-2)H5SuUE4FeCkzdcgX~!B4~c9s3X_0mk?uF`>c_)E_<QFOP_X-QSQd_Q zct1?H-1?=80bTzHa&-Uw289WE1|#-Xw85iD0$%&Mh}|dgS{UQC<7yXjo<{bU5}k%_ zU6@mcmatFzxs`q*HYrSZyTeG%6mzH{r>R35e-StR`d0=N>4&)<-MP@sCWyatB(WZL zoeR0r|M`aS@7RZxh#ex=6Kb9NAJ$KlKN1BU=kFPBTzTPcl4ISQ6DSY`ZTYCIMLZz# z!j>+p-&wDrIsW~qDO!PjN8GlSl$?A`G1;25ro1!q@MPZ;AkA|3x-N4~9d|-QJy5+# zx+?*NK}y0n<>!$mnSI{hWP0|buqj4ojF{A70=o$PD16V0c}4&u$z9I;u^1+KCvv$B znL`MXo5u+=^YcMO=t0WVVo<)U)uY>h{)KX(Qb^*o-QMtf^G#K&=w@&s1j1FA4aRN( zrkAyhzrWS(*z@>jQ!|LB7%lDr#agC);ROiWVBrBU7?x*uTmMjmsR+*E4G#mu;Ris0 zNjWPhC}fpb&wQCJyPO(HWx5uA%KSwBuc@YW4E(D;2rY04n4!<lom)s@s`6bQsyMot zz^IW9f*sdt!J1oWc?u!c*Rp%9UsK7pR2zDk9)G7ZFOuKp5Jt?`w*ZU@x*zE?0*m%` zcYR7ck6Xv<Hqukg(MpUh8QlFV=@)D{bu_3=>Anw*=V}`c$Jx!4sLuY<tPH1NL{v~j z#%Qz|u5`DHe|xO7oDk!x*F253TT1#>-8u4i#a=S~p!1Pc=M~|GWGg@maG>7^3fV`B zei3m5|9ydek|$kih~i;uhY(NqIYT%?;{JI*q?#PVW-+;+r-zF|P+&<WkObi?hH#ca zkAc1=Z)f(^nW>Y;59#-NS_S(L!b;rzp--?~FH?hYTXWi5kH=$OJffr)W5GZHo$J%R zAWPQY?TUr@?+VIP_z6~>x2a=ToOv1l;E&|=k_?t;_;a~zk-bclU%93J-R0hF__TKd zG1uc;HagbENcT1RDz#3ATH&{@YOw(yWWRrzu_W4=`p39CqLWOpRRoMvw2~uUWViuv zY(fKt4Y|V(B>}9@{Ah3}sa+d5M{rV_7cocZ+ub6BHAH+{?{;X@LW(w<zamn-6`zb| z??E+D2^3b7Z@CC=pML$)z<_xV!*L|2hZgnuEO;2?On4pSM?6=pHdt$bnA-thTr_Mx zsU0FM40wBOus8VCdj@bJFQCE_PKzTIX<ba}CG)?}UlP^k2MQ-Fr|tfzfaBIzPX;lG z1vfu|iw%$iz!vSL^LQMZl?pwtp`p<Q*?9=IIpB=&7UQJS?7&88U$<#o2FQ|3QE~Ch zr!)Aa_%Ppfx|*^hDsN%|zfi$i=_R4HY}dP=Uz1HJGtBR`Mg;bR_iAlldj6dV=@!Ud zT5UpGOeMET?jQNl9vCm|`s01=N@tBTw;rx12ZKXzf>M_8PeX&I!2xRwo-dec^|Wb6 zb5Wp0sq%825KqS3S2*$VQmTIlOScqtZbB#_)aT4(;!Bul0}9K90V1<&58s^elsI3$ zDtL}KJOc6S-2;R#cK+<SUY$atZH}bs={5p&C@~`(pVp7WuYuRQ!@;R$ZugU@YlM9o z9vU2Hc{Il4oO+-7RPux;4lI{ZdML@ty{~DdX}<U+?EFr=7-3SSi$q?ntO`aUGJf{N z(D9x5Q%Uf05<t$?)kT35^MT0E1Sz+^2X=~1n<DHTsT8eEZ&1YAtC8vy1D0H2GkP<O zoUV;y+DaxoGkbq!>Y!&iE2cHs?JEr!En9UL{>d;McHFoM1Q<E-&3`MrP_24rcS*hk z-x!NMyfc)LoR^m{HKhCi?cInCS==6)_sr}$%YgCaAL24lT11pspPg31{V{-FYm*I> zl$9QjWN)sy3S5ZOrrY_r&>UnZ(F-&B^!Fl;LY7;)z&MNYAuE9LXkn>J;Vtn=NeuL} zZTLUM#gn{fZ~Okuw3Jm=X1&1>@PFp#TXlrq2zc|`N}!zu!PL%uD145+EZkiH0R{R4 zhE4abms_I4Ls5$?9DDb2kj<+E7Me_3VRMCOjfH<LU@~a|Hbi4}lxIX*uw-tId4ct0 zB?#W<_C!FGjqN;du+c>sVZ|rD#CiiDnU_G}^x*ue^h)Mv9d*{}ExPf1iP9&C?e*`* zW<4ezCEA~A+?Vbc?FS!@p76Mfgi8FLC+Vwc<xa*-+>3Bjs8HU=zdc^899K+FbX(;b zpI*x~`0sLRao+opeE7ot$o(w~$;j&BO!fXlr4*beqO_M;`Ur&q<R?QPyZ3v9T}7gI z#4@XjO96g=30MQ}3>wgjA6lJVoCI>#p@RcXLk!)Ur&#}H;^chjCJHY@-*X@jk(yW! z&RCYg-|nlw&tA1!QdhTqOs}c4)hAZWV=Wgfl<7-jvG`&TD%B($5jrp-A@T1m!V^A2 zI$Me=afy$rU?msPSD9O~n=sgup4a_p#n9Z871k3wQ!&H*+tAft=$$qp3g|w(i<<#{ zs|Ghx&fmzD`x~Gev<+bGd`y=t|N3>CtDtMmGd25dP|-<9lt6S%6lX>D-rv7<b}PJf z_4Sa1g2t0AHL4+rd$X@(ohg>8M1f^x^dK5m!L?!49)y@Ig0@9nU0n#bUp-?vCPB1n ziC!P&*qtn)aYk1iRA4(Es^42cAj$;%Cv^SU^sG%=sn^5`*nUR7bx*Ucx_`$DE~kwP zbyiaaUt?%9Gc)ylP8)4k56WTxOU1jt?=ILJWqZPYzickt&xHKn^|QCP=NIa5pi>($ zcpx<<tDwL%{EqW$h=nTGX{FXrK~%;6MwdT;_Rt4Ij$~Gefo3qT6qE+gD!WDWsfq4w zoP0C-6l8K4KR_BB<&m2020#B$v<&g=b)s^cx2jS|IIUu%+5w4D;iJsU^3svgIU}gT zm06u3ezer??{@e+Pwrb@6*aXKiM^N$RsZecZ0zbuogSNJ=QjB5+n?W?5ksVXgd}l1 zgM1@GVssI4=bgu16Z)+w=VX2<7PNyGOU1HdG36Q&f~PA!k(~C>kFG-PKYEl&+&}b= zBU&LpsZcWt_9o~geQ~`Z<Lrl9!zb<vQJj7-t?kb7=xwkDF<pmx?w12!)8HmV;5ACb zt5mv`k+;9N<xm9vfb`bToEosrD+m+~KX4JlRMVJhes>wJaCLo0+if@ag=d><n&2M& zl9w4x8PbEQTz6PDC4m41IjDl%?+Y_$CJ}D4e$`-Bi4ve)9ILzCsQdSu^=B4%nm?p} z*%JIS<`Uq%(G?mRDp3nV&dHesNbp(!lLt$uf1&J8O*g*6vM=8P0ZI(m3J{c(lveXU z2*9A~=CJV;X<S#|u1P0-e?@;`x;4Yd7)>JNJ_%$dfkbOA6CywxIclc6Kc4e&GovDz zmRk>=K9G0jO;)=L<nNYXf`M#$0ZB;!MM7!GMZ1(KHxADPY{)3L5|L`K(yevYt%afC zI#cl_R4o9M*zeA#NKhkE)yLTZaV!Nu!g;qBt>}rMl<eq|F<memvFwqjNkMeM9BjfA zsl|Ob@iVX9Xn)8o=W2Olx+agA_~1Jzw*1nkpEEL6Fz(`}IFLrZq)5z5%5YaRCV?w{ zs((nWSz_5Qhq68v#=zGT#J(0G#$gc@ycLYJnQk;v?WB|?jsP9zPkw(;L-sW(`+XA) zRpImPOE1#aLJ|%2tMo9{!#JWl0l7Qc&W8W5DW~<%&uv(XpM!E(7p>EM47{8PquSZq zx
+dUu%eoOUJMMgw=QOgg-UyKV)QuV`9&i@P%I)jMl+aUCc+&bYmH>HKV>^Ryl z{V9magQeF~l^~ReD5*xXNDJRQfvzY@B~H_Vo)}Xk#UmN5DwXQE0{=CVTpDN3JyHO6 z!3I<M<2{jU&zI}nSLdizWkK(EnB;0890Koyel-c|-I22qql>F2pETuh6^zwJr^sA| z*Sz8I#Dpa{kzpO0&?1iA@T+=cTqJkx@bX#n<wvt4H5^GG0OY_mA>5bk02l9^&0z)y zPVOzhW-;sk7iwqA`=0||7|6m|-Tr-he)e7W+(7|ZDf@}x(EmAY>VIR9(W>O0u%tcP zoqP$CnBo3XV}PkNQ*zk)dI|D9$Eoigbpqpc%lkM;P-O@mJtlHR=zvUjE&h)t40pzq zn@H<7)a(9fV2yfGIkN=ggsb)9z|A?}4`F|d=<I2;>$ZH^%Z#LfI29P@lC7B1rBJcp zV#@w*C>c?U!OjS4A-E-g<5ZvuBR#|J5P)o|y1ed}Unz_JxPq?c|EoJ2Yov2~KCBy) zdPsCciQb74OWdLL=Uu!<8&Xtks0?Y)a54oW<IT^LX=%;wbi?2%EDE|ITVxJgj(9S= zcOu#p)|3u}A$3+wFGBAJxGvjCqP8zBxYQfA*wrgq@HP!aD3<y8l+ADb{ha&?xpw`j zPX~W=wP9q2O>kG08+vNJkCmcKzmDZ)svtj)aTK2L^m3_joOFC_NHBJOY#4f8>uI@Q z+TPPJ#4Zs7M99-STH4bm6bU`4_XxD9=~%LdExk$K|4UZ_oyyz6NURraYUbwD!^6YK zM7)0_x&OPt|Fa+f7oH$Mfp#8`tLZ@WTv<4Ojxs3em`GvJ5U$t)&M}w$aT-d>i@l7j ztP#MwoOgH%swb97<R7;d;}5;%xf%qpvar};Q2b_d<0o$6&1ON`NLrxa=+p-iNXX3= zAUA9$CL$7&0AoxbtECcqZE~bu)aZ1b=aXp{IHBcC5_Y!s%(j&gMiAh)O=z!SvF^`) z=y&;#+tFYulO|wq?QZ3BN|ve8KkroRK4~v_(zI;)3n@0mII3x_qkRdo@7C^qh_pVk zl<n^|*%1(h#26c+Gh%IqSoa6s1^N{#EDXp5F;u=)@^xA!?W~`3h&uM~(B2~MeSe4- z@K*6v<&A~ws3%Sr+J=AK949pAUHQ?wM<dJlQM>801EdIs#(G^=`_q)w!UU}yNsQF; zqdvt4y)~*nL#`?j8J$=82-BZ=dT$&kcHhHsag>!7rnJfQJuf;DSNk0Ti6H*_N&&C6 zh0n&umLTFIyh@jrQ+&JjX|fYI<*-Xoz;##ab9ct+kS9M}zS<9l`+rEdpwb`?u*Nt{ z?%;Xn06O1<5rMPWO6>&TFq{E2`+ud5;4+NlxXJ{<dP^Wa8JM!oKqCXQesj&F;(Rvv zo$}I+{9ANt`wv~G3uVy2)W6?(PhN0O_R|V}-J(7-EMXrCi3N8Q2|)bipD%KJF1Z<? z??*ubo5qJH&)UnHPE?gkxAML%`nC&AA&w6+Td_XTexGhk2JD!8)AAg1zu(R-H@jXt zNsN_c5&Lb^<BstyAGK>wm>qBEN!FGMMHM3@q_@4tXSirZy;J3B_R7Hj90AQpQwn3J z#vqX2x>v^pO#c#tD_a|%pGi1m>7PBsdyqe>7*}oV7<32<KQRkm1m35m(6QnH)4qxb zY^gGAt4y4@#rO9GD&9m;s_w8tLrmxnsZf8ZrYM7!3BG*G3p(>7-FYFsdv*UkxJ+54 z)K||qEnz+{qN-PzSdn{1W2{XHmuDgqa!mM)W&k&4GMFzcGU2{kPu0fcNK{F%Gf)Dd zRoOV%b_EQ;upg}u2Mz2HPO^1yr6>|Lf997(tGrMB*4{4Ru%KAzM^UZ*<-J<wFpRLx zZAob<(1A9a^2J6*ZZ<9$?j);-<{OF_ZA=4}<r=6&U9QLYW@^o308|I?TWWB(E-vZ_ zx*hd{xFoOr91q2TB%tdCg2(^*rlWBb#7BsIqG%xADk4o0?t#==D&=(^HNs3sH<AX< zg0F^?>F1FnzrQO#aUZBi5bEa<!y2LKHMgPf#|+GSeH<?BMUfSZ2XPnTs!Ps`P0`(X zL$AoGI#7<Rr7^ydBUl|UAy@L<^~0|gPB@6Lp*7Rpx|{UUu+Z{J!F)aTuH&O$Z8tgi zYGL}3`t+GwZqzx<{Vsa0@D$8bC^ueK92_6^Ugrhj`9eOJZID(5nhp;bnhwMD_t!PM z=kkUk-l2By$<7XMb6V}oo3S6Wrr9D(EJ9xDw%|;d68L>h$*C#W+6?yyE!Rn^&R^5% z8AuAQ?M2_@j|}Stt`vUf-N-f_XGDB|+<wfjvrQEE{u-?5F(6+M)ZJ{erkO+YrH1JM z&2vSMk7tXSN;YrYf7eV|Tm%}~IC#uk&O4ucotJ&RHNCvf@TwR<a;fk|H?-|qYwCYq zp1E+4aD1`x_PXG6iPn7*?LFyc&_w?EAQz+&I{bCyCk0>XXM>}Qvb+eN%%rTW$B4cy zPfA+azr>sGL5{jRTKKSja7KDqsJ=EU1Cho()iqke!d1>_%$oafJdNne*o&Qg+1))W zt&@_MVOzMTqdj_M)!ZhEl0;(ZQPQ$=&9?xX(V#Yi?UreBGE8R7=;sFQ2wrp+Zu}xr z9K^6U<p6|v5y(H2n@1><G_b8Num(KC9(i`IzN3VA>?=@sB1nFx7Y!t|%Ucz`<q*6x z_=<3pn9Y?E#4n#3jpv!=BCJ<#Pnt@lk?tSA$SQ}oy7m3b>Ks3Q!J;`}%aMq+?+`nG z0zZr%tsM*d5=!`tr_#49U&Aokt=7<1!N*z0_TS(@KkDv<9_=e?sr>q`iN>>p>ga>f zv4m8&klqi;vkjxoY}!W=n&*sq2nd{LIjQ%WlrXFem2BD!0v|)PWXDZS1j=pZDr#+) zI9Xfi?<;Bv2nhZg_CZ#b=Y9;10syfI0ICVFt$exUO}|<#Ak74V4gNiXS1;^gk(a^( z(hCqX^3OvsN6dD$c}mxC!@7PcZS#2cHMwuAxmjI*z<nFttg!-@urq;P@RB+pJ=wSp zzb|g}<e|EU?!lN0as_?p6^1(cXu|xk-vAnf+^C8BFG8*gC`v5p5uMt_{t10U^-V?2 z6pWqT{QSLHFk1{6Nt9>Twm{ukeiAn|39CYntqYnZMCad2^`=;*v=#n#V*pX0KvQpT z+IF?O7Xc674os}4oW=9o=PREFBF`7Cj1A27ftiHfZ0@$V>7SnmV2qRY*)2XEFl~lL z&sFAIs+<>NC2AH%D-tFhL8<fnM4-7oiemp&xx>5YE8Gt~qEFrE4=Zg*9TD^)MX|qu z63Y`M_6~Kto4u>un!kAqndIfQ=D5Y$*Wa<Hrza%`PhEE!KQpop|L!a{+Fcj_G)C%= z!KiSsOlGGRioc8?d)UkdSlf^Zxg){*5D#W+u`)CuEH)lVVR(Mpc>7P^`a`D{Dx$9k zyfeeUf7Ac))u^{n0&K3;LKO*E#BNSk@PHR!`$!NZS#5*x=UZF_ary2SwL~;eZ|}z? z)s(T`UFDAj$DUc*@WM!M^`Swp?pXz@^WmYLQ2mC{v8M%>JliypUD7QmS42DJaF{ka zCBBq7oB^i83?%kMv=sAZpqqr(K45}?c2IwUT9VR~-9v_e``XfYlYJQHj_zz1HTfz{ zg;tU=$&8e~={d=3(nNMidq|bOH(Jgyn>19Xpa%<UV37+al1sN3>tYq&(Sch3Ek(1q zMQGM^*rxf23B%m`Nw<{s;s&0b88SRBO}$d&<;O~$#J5mF9{J9=s=f%aUU;(ZDub`* zmcAqy6c|)Zt5AF!$XQyqc9r<tE>B${Nkl~Z1O=lIJAN7x4pwc02Yo!(nBG?k_W}=t z?%G)=K4B$On;%&8n?FQs{c9BAqr97E$5CLf+VjI{_JfbrZpjBnm1Nx%1O1O|KVYly zzB>aY?J*!A$#Rm+yjBNjkKsi|90zw6i~{zSzf|*Fi+N$(Yvzo9hfV$=U+>|5Ce>f3 z>TiK%{#9Q{Dla1}Re@mQe9JSEXF}LIVLTsh0S!x|=A*b}vRgsoK~iNz4_Ehrxh|>v zl({7-a;sd$J##mU&3KILrs4Mu_GV#SMjqzUvd~i9ggPR5b~Sq8p|uND^vVt%3|@*4 zDFb7%4Zp*1*d(gouzDJeBD0PJQTsYE^LaC5i+&N*T<A5o<`uCFW&hA%u~k`ZcDh(~ z>G|1aN5pJ^n9bXh!til#y6W)uZJMyM?XJZJ%ey*n@AK^Zr!D6s{bpJX%`8FN$L%!V zQMXJau7vzDZhExjih-_+3OFb5&HQH_v&{3;G9hd+?ty|s#y6%-`}6)!ANEHzb_S%A z6Y1;Wa}lguMD5ysPx6c``Y#vf`J701D1S|(7LF9feWlJMdub$t;mjP8g2sZ$h5Swf zCn9<X4dB#+94p8|CAK7=Oke%YIobp7lVMg$f4E_ay2?MyKchFg+;R__u*o6X#GDr! z?N$?xC)Nm?$t3i~6ki|(ym~GDvT^)<`i7$LKoGb3N@nv`#rAbp3uqVY^wyZ@N#8|a z%^o~{Si^8xxp;5cHM)J&^cM4Cb5)#_PpMde%ev_<h0xV%3^1qCX5i%V1kSolK{uOP znut+Eut9-z)^QLfHszK_|BEe1E!4qNZ)u~{O+@AzrS#)aB|q&It$VmC_9wkhT27)| zy^n;!*hK}&KGcJ+Gnh*}AxR(OYS2O^G>pHo=5%q<*wHgfSkx+TO3uSJ8zqnL<5NHO z$1aYzTbGtfR%-3t`N5-Uee)A@{O)@vLKQM1&l_avDW(hi#{H!9i5b__6jWw&&YiX? z2Hm=I91HDmma^WHT|^zq);gJim4C6#quOU60?OV1IZ8XqamRq=OMp&p?Of$c=_U-N zn9;9}XXgrt0M(TE73e5h#$gx@C1F2te>!fOuz>fuO-QSc4nho^rst@$;=X;s#jUjo zXHSN;wPsE~-9!rW$E3_!{!ahem)YI7Vf`5vzfPJn%H1&fyqc{Hk!PL7%g4sY_Hw@1 zbvJ}%L`BKBt&d_yu73OIdoB94Qy0h^Z+u^3+7H^rIERIG?_AeDd`g+0+x}m1XW<mp z*Z*-~r5ow)?vhXtSZPpV0i`?ry3(L5@dcDlr9>noBvw)+mM#hDQetTVX<P&reurm% z&)@Lu%+Ai-nVsEp=bU@*`F!5**Sm&Hi)>}sn4)&{ujDw5qPQcXcS$hau7K!;cX&tp zMPm^6R?`Sb;kBrCzz2Jw;22|H^$v-)O8~E0^fXgq<gIZ^AM=lr$R2iKi5p4}@-Z<s z9v3Q^_}dSj*dCT?tZNB;_Gb9&^&!ybQK&*SoUlt>-ZI#Xkw7aI?P+I+?!h1UqHFr< zp^j?#lr8|LDTbWOW@V|+DT}o?Ccr2DN*}oSMmvm@Xz!h>wp^P5T@5I&znb{v1U6;w zRDPT6E~D%Z9BRl$&T~Rg4~D8m=oA$X`Z!?6TDf_)ewcgRMXQeyQ#lgh<}D2J?&Fa_ zqI(-e6uG$Y+lFH0fcY3>^OT4?;(eK2>O~6?JNaGq`0QR_wNX3XSh)yZ>!((^zVvx# zm}DotBfJ&#rij+>==^7h{Y4kXSpY>X<9AT?`fZvCtZIjkmdVgu<~$Sm*6w1==HJtv zK+Wg3Rv4wjzj8>G|8ytfQ)TXqyAvm*YaJ(#x>%=akn8=8HK)U_$y&{Pw(<YxPeLE+ z?#4p(EQKiKibYixWd^nBUZ-CeABifjif(u~QD;zH@6a}PdL^EeI+*3e4w+^~x-ye{ z_@YS7Ife`52uH2YZRs=Cm23Nx+x{v;r0!vBPGOaWNxkfBcF!LxZEYpU84N;Q3kTPq z1fLyu2|N<)fExXRrdh`4obs^WD?ITPZ`$I%>5H5lu97M<JNJNG$^lR?4FV>wp#t6e z>3{kjrO*@uZgQ<X0&#WGRCOV<J?U%RCL%5E9R^f`!)W+rX<|0<>f8V?f5EYXkSdyq z-<0{9bYW-MSmXX-W=N$?s}h8ef>+#--x8>62DhimTUB>Flr2n_S=cn+>lBJQgw1du zxBmeqiJQCgYoefcH&)1?<BgyU1yu&Ok2)TPp{mN*m~$>cT9p<$ZAnEz{+Y_ws8|H{ zoSKEj@{FZ*t02yzrn_XtQEPdXs_xK9zV5(gw&Jl&l8Qbsa)AO)>s+_K=a7l;xbT#T zp>A8VkBl@Ij7~?brGezVr$4mi2VHkVWlFjUM&<NnQA9%X0V1}*^gF9=9``-UnB;h0 z<qTWSsg>BmkJSj=pvZ8_<#2q$*aY(-{einK@A_zJuWPY6R4H}PU5geTLh6_{)1>H6 zQAd(xO^sn%;r4++wvAT*F-qTn4RQk(2LK9z{zzi!vppmLa63T&4SFG9N$$2@B3JFh zYh#BPMc{CNg9=|SjzbJa!zXIkC1)Nep#}X;^tFa0c<3y2zXdZNTRAJ-5`jW7sP|W$ zymTd?FCOJUd>_~-%Fvcl`TV068QzVqP}G{Wz}blvC_{rX<;u#6+s|3w0whzo#%>o^ z*-G7cz8Q1piq(7%W(c|2!Os*H^g0uGR7}e^eq}sqZYV?gKPBZ7%3x2>aYLA<?-!1E zF-c$S<tDDy#7e{!c-KH;>cl^Y(+n6{71>+zs&_5$o{4F=DaI5v)3#9HWcBXoU#|Ic z!Inr~YjHb`kQP+N2?>Xg9Z;Z?Qw#qyAv?5jy|e{C5E_=G1uO>L#6betYCpIF&4Q*~ zS(_V3LTWh~*So0!01?>nUh{rxj%T*>F~s<-DXdEheUk=PKj$@(!aCE$H!F)5co+2c z<)oylYn4(}cpwaBd)=Xm4yvnxd&_&@QpBgt2~?MY<C%*J8CGS~WBwSh$y*Y1Z*fU- zG-%KIHeile)2NPEk3S!IErfo1Q;rBsU$!Ynl)i~Rk=z!v!EK2%9XQHtZ-hoh-`z)b zg+tym4+2fvuu5>7h%Ab7iaF<}qyPTmZ*(3A2kA>>D^5FVJ{0A8Np!XuIA{A{eO<^d z>Bq%!a%n+HIKRz~JU%~nO5)R>Z?D}&B|Q086c0y9gwXeh4=C`TMMH-a$i|Ao+79C7 ziOUZ?KutprCbkL2D_XDm*!_##{HNa8H$-nz3vmXrT4)=|1KHCk^n-(yfSl#-`Bot? z!ez!upfZm~l#_1W;2GDbP?Owaist(lz}^7OO=9p*hXIk`2BM`3sK^%>hMhcr9G$kT zgjiuIJ|Us9LXhM}v}CoDItp$mF!`L}J-C8RvQ#x**r8YN$Rv$#m`&$Mwyr<z-Yu2( z{;Y;rk!$w-H-O8f33@9+lFTX~lSV7?jP?zji|Zm`q|T@*^5-**4GPfvZ_r+?!KXMk zKTa63pk>`o!L~O#q>3<E8qJ6VS?%rcQ;ka6qG&x0fp(?%qh*u)x3@<E)FKFoQ;wP+ zN12uiInC8LTfsZ<CqaJ!$iR$E3<5B&McZaBLfJ63J3iYi`SY^W&7_1dK%oYupkz>c zqoStn03#l1dHY$XP7RMHyn&X{Q6j6XnES3Gjum0W{diL~vU_>B{5*@?S=!LPuYnJY zxn}zPw1o{H`w$&+T)r=m?vh*E9Jr-Hrg&=-G9op16*)GofrdLoQ?Pj~eD!fvwVru} zo56)=Ry6GL1G#hV!Ko-O|K~UlaX!#@rwEh}$+>xWp5a8}<pSoUHBg>GcE|m&A_fy1 zO00=f{HtVQ;KVmq?R15EhS7rvu6dVQEV&nsG0@FzR@$~Lmi!Ac9gx{`b8`?sYmO@S zCzKyjhFu2b&Q+J(vgJVy^E+0akB`q5yW4r&fDJE-p+3bp)bWsPRYdQKpqOV$(R9K4 z+F?M@dd9Y|Hew*_=p)!hnz32m*@ZGeCK7upzUC@49cZuXr)83wyTOqJgReS~VM%I$ zCrEx1+yVAcAk1mthd%YP!19U{)1y-bjgGZ{(QxG0z-d1ggr`g*ZSw%4O=gT>nUF2G zq@T=M2KnOQCwz7eyq&J)x)UiS%$q0<L1`N@mxVZyF%$+DRnB|i%^+F6rs^&(*^GRL zyU)3i%ZD~!?j-RQ72q_2Jn;HSw3)|oDe&?T|FWx(<ppm?VCKs!MKV^#%Ydizx7d^d zC34+}DA4Mz%QE^e;dq~aP;s)Z|D5*MwEPjJW~moB>{4FhKHmi-iIULNm4fevkU>A| zr7HJ%E+>cLv_t)B`r6;(b{~t~L-Dqn5Q)zpitjP^YeCD&+Y#0?JD%Co1c#a;;>_z* zpY<o|tbzG)9^A`da%_B=g2K3R35KJBm+4C+xGX7>OLvTF6+7<g({sv@<*#LSp-U?h ztCHNtAz9cH%%~r3NcC|DU9j2Z6Oyr2eqH<RGxlz1ke`aj{YB0!z83@!yISoU)n7St zsQqTlQmgZT9|ijq_QmSU($Fkcr&^iAV3KoT>AZessn{4<0!O}>mzRuRbVIlbh*P&G zIr~q2!t_cl##B%dIupfIu!x}43ekgvEpkIi_er9bOIN%V-_G~<(Bhe4`c#RKy*^(2 zDbM69TRUO+iD-R2{egn?SEel|XQrnid!h|;Za`?`j{=}^(T%^jV}966pnw?uRLiDP zn$8-fYKSAjB*6mbDLC^lI8o0T+!7Smh+i9@vKQ}o4V$Py2ou};wuGv8#$*6mJFE4~ z1zw1s^?pJqGL6yC$pAlXYBmU8N>hF{L74Y#*bu=|(on^%7sD?#ghakynzZQFU@wD6 z;EEk_caXSx2{~rrxVDX{|C%aTK5*k1rd`)!m!?KnKrhnchU~7j;lBdh+ZUWi6I=U> zI=N$$lKs9_7I%Ks{HrN?PD10XbyzmhkxUmob3k3x-+tU)-;Tpu|4}^EyLND^8KL7A zANxJhu{}+jZlF8?6-2t4t-3NjjXV(Jt9&G=8xCA*9m^jC(~&CDJU%K8$x{RaSrreA zY}ScaqY;dUtg{i&w9ET{*MiMPsLQKfXenRjyU*WgstUbLO?`L@EKi9qupvAL!uK(I z3zi$3o0OxnPs7Hj1>u27>bE4<nN|mH*-@eB9Hgmg8$W3ZOY12L5REy}t<)RQ&rG=& zrYR)htQ(Ts;ImgbZQ6@*GtW&uloib)dozL|>L#sx^*r=|L9U1;v@NM7P8i$c)~DZH zF&*z~7hnC)gVk5MaIwf^6;`}O85_D>p5FbkPj92m1iz7knX7v&nf0uNc74!@6I|dw zHdRUZD6od&-y1hDz(RCFf_(u0dm6wAd5E`2Po4r5^dx{Ecu%5FI}Pd6zTRdKIf(z% zMERnJ@|hTq$^%^*)Qan)bo>^wOO|VD?)>Fv(6eT`K%A|OKVR;4Z#t5Eu1S6W$~7#c zx4NnrQDLtp&+Xl65rcVtXOtxdhlRvf&83x+Qz(RkdyLO{cwal{WaM?@eDBu&RSXn` z)$Wl~woND!Szs)lY1fLJ&d@ZfpDT5rm$se>_|^2@wb~*ZEZqF(dBmns{8}@oNHKc7 zrmCF_>ZRJZud_UlIrkjn;!z_y1{2Ic5bzIZm51y6^}b`(j>#^@?s|Xy<B?6D@BW0; zdPV}GRBFPsC`frbN<E(_GWYT8Jj!;j-JhQ*NH~pLuwlL0pZYa<`F6V>yXl1#?K+AZ zi!BGzDG}~N7P{)Nu%0d_Ik@r%?`gUYs&MErxhz3I{#JPsA^i)nW)f=K@3aez`-o^F z{-AAIVcl4?{Sn(iM%7MS_!?MSr-<pNK<60EZPfldd9n=K{tQf_ZSSx271qtuUJiP| z6w(^+As-@0^YCiiFXZE4uBttEDUhetH}p6#Rk+Vnb!$~nO9$1`ory|FJX-|IS9)kZ zCo^-FiLuyy9(Lac3=hW6kG?Tpl0<P+`LBd6g;^9R<Oy^Yislu3vr`-ANsBi(?-bbP zWn*MpYkJ0VK~M2c)3}6H`+V4?s3`*I&ji6&Z%`c4{8CiPU6bMeJ@Eg>|JNU}-W%7r X7*sst91J0f17120453x(b`k#vT{Rck diff --git a/htdocs/public/images/checked.png b/htdocs/public/images/checked.png deleted file mode 100755 index 57bba8979fd4747eb4b3625af843712ba4fb6c52..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 775 zcmV+i1Ni)jP)<h;3K|Lk000e1NJLTq000;O000yS1^@s6m$m(a00004b3#c}2nYxW zd<bNS00009a7bBm0000s0000s0kK+RVE_OC8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10)$CKK~y-6os~Oi6j2n0zjJpN6e60H4H5AH7FJm^I};zINh4w< zib3&J*sDab5ET@BHWEP*OB)qI1VL0x!lI3C?!D<mB&M^l(U@w*-8mLnVRtfF-Q4p0 z|NTGC<;)xb2*Yqaa2?nUbko_Xs_KWixw&1_)6>5IhK7cgmCNNSfCNFX!5H%%=mlnh z89+M#tOA}n=gtle4z8$HtIvULB68GP`&6PRdaSAkfP26x=iKiOI{+XI!<8cPQdM^} zN;Tk+gkkst$O8GLhWGdPugYXHuYs)zY1TAa{JPZezP`ThY&QEQB^=;Eb}6CF;kjJy zwW>x*O;zuE??+MrK@e;)#vIRNGIuML%I8Hq1!K$@P)uqfGU}W=4X8<qrBW$0#!LVw z>-GA(Fbw;Wo?@}sV~iP33kPmlYe#5IVhdnkU|^kyj05>bsRtM@l}g1XPj4=lD+3F_ zz)k1endU;v6V+<96~>sZ#HE6WOhi$%vtF-%i{p3#*qlsO)vMn73(0y*2UAm1AAw`c z&v5fut*T?jn73)+B68V#e_?odIMWsY;GBD?s)th`d0<o04_vg?UJ8PsFf%jbqA1$k z769PAe<C6Wfq#7)=bUp_0E{swfGu$xFaIY1z*_qh*bDqh(^d7nbM8h{DRtx*1pqkb zUWmwEpxT<PBi{RK?e6{;0Ki)NQbhJOASxm!z4xOjR#^-%3#<*pFxL(O1R}ECT6-tW zqpBMLMC3;cKviD>UBK;j5a-+{Yi%V>i=t?ci0lWx10P!2YHYLjz#8Bu@P*D6P61dC z#3FLUTKlL40Q0|yIFA3W%>2TPwx<d>W6Y(=$;q*#_y;vp@z}tV0z3c!002ovPDHLk FV1hixPGSH6 diff --git a/htdocs/public/images/dotColor0.png b/htdocs/public/images/dotColor0.png deleted file mode 100755 index 94510499be66f2ebf969ad064a88679e7c860f59..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt;u#E{-7@ z6VLXa=4>z!VR7egoU?^BxG|#V)}mY8vNPmtem2|aE1h?E_pb0}qwJ5^O*>X(Yp(AW zOSmnu=lnI54?XFEtCoNI?YDSg4D)l(^~V^_MOp3r$<S~_+*v_|F<F9P{i>%HGbZsd kobyb4t8IJilKmOpFW0r$ZeEd@3$&iW)78&qol`;+0PtQ`zW@LL diff --git a/htdocs/public/images/dotColor0.svg b/htdocs/public/images/dotColor0.svg deleted file mode 100755 index 7992852..0000000 --- a/htdocs/public/images/dotColor0.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="12" - height="12" - viewBox="0 0 12 12" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="dotColor0.svg"> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="653" - inkscape:window-height="480" - id="namedview6" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-0.10614088" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="0" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4182"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - id="path4197" - sodipodi:type="arc" - sodipodi:cx="6" - sodipodi:cy="6" - sodipodi:rx="2.4999955" - sodipodi:ry="2.4999955" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - sodipodi:open="true" - d="M 3.5000045,5.9999999 A 2.4999955,2.4999955 0 0 1 5.9994001,3.5000046 2.4999955,2.4999955 0 0 1 8.4999952,5.9988001 2.4999955,2.4999955 0 0 1 6.0017999,8.4999948 2.4999955,2.4999955 0 0 1 3.5000057,6.0023999" - style="fill:#2a2aff;stroke:#1a1a1a;stroke-width:0;stroke-linecap:round" /> -</svg> diff --git a/htdocs/public/images/dotColor1.png b/htdocs/public/images/dotColor1.png deleted file mode 100755 index ce72213702baedbba1944959831a8b7522621218..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt(m4E{-7@ z6VLW<<ZU((agjF*V&YvRP<BG&0Na%_&d&KaRE!VsWj<2-kg2gx=T7m{%eF81@}{e> z*d}Y*WHa=aGM_cq`qHE7`AzUi>7uLMwb>^#94of0;t5F2>3zr2G_m_;b%;R)`<krx sk2V&6VRmTOF8XJBpudF6|Gojc*>@#&9~(n{pgR~mUHx3vIVCg!0Cm_^djJ3c diff --git a/htdocs/public/images/dotColor1.svg b/htdocs/public/images/dotColor1.svg deleted file mode 100755 index b20db8d..0000000 --- a/htdocs/public/images/dotColor1.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="12" - height="12" - viewBox="0 0 12 12" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="dotColor1.svg"> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="653" - inkscape:window-height="480" - id="namedview6" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="12" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="0" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4182"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - id="path4197" - sodipodi:type="arc" - sodipodi:cx="6" - sodipodi:cy="6" - sodipodi:rx="2.4999955" - sodipodi:ry="2.4999955" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - sodipodi:open="true" - d="M 3.5000045,5.9999999 A 2.4999955,2.4999955 0 0 1 5.9994001,3.5000046 2.4999955,2.4999955 0 0 1 8.4999952,5.9988001 2.4999955,2.4999955 0 0 1 6.0017999,8.4999948 2.4999955,2.4999955 0 0 1 3.5000057,6.0023999" - style="fill:#6f02a7;fill-opacity:0.98799995;stroke:#1a1a1a;stroke-width:0;stroke-linecap:round" /> -</svg> diff --git a/htdocs/public/images/dotColor2.png b/htdocs/public/images/dotColor2.png deleted file mode 100755 index 10df02363dfec44689e533eedb55fe0e47740dcb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt<V}E{-7@ z6VIOC&D-q2(ERYd(!^<N9NZEnnN+Ufcr%GNq5X^Cbfxx^hIPm1>i(Z}_Mu4G$+NCc zC&r|I&}9DqN!r&-ZHr||6l41OH9X-qpHE56IC}R;h8}Z#?5vF$B0Nv|3&OcymR!mA bmk+T2xk7}4KUpOKXf1=MtDnm{r-UW|X6I2x diff --git a/htdocs/public/images/dotColor2.svg b/htdocs/public/images/dotColor2.svg deleted file mode 100755 index ba2eb64..0000000 --- a/htdocs/public/images/dotColor2.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="12" - height="12" - viewBox="0 0 12 12" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="dotColor2.svg"> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="653" - inkscape:window-height="480" - id="namedview6" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="12" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="0" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4182"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - id="path4197" - sodipodi:type="arc" - sodipodi:cx="6" - sodipodi:cy="6" - sodipodi:rx="2.4999955" - sodipodi:ry="2.4999955" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - sodipodi:open="true" - d="M 3.5000045,5.9999999 A 2.4999955,2.4999955 0 0 1 5.9994001,3.5000046 2.4999955,2.4999955 0 0 1 8.4999952,5.9988001 2.4999955,2.4999955 0 0 1 6.0017999,8.4999948 2.4999955,2.4999955 0 0 1 3.5000057,6.0023999" - style="fill:#005500;stroke:#1a1a1a;stroke-width:0;stroke-linecap:round" /> -</svg> diff --git a/htdocs/public/images/dotColor3.png b/htdocs/public/images/dotColor3.png deleted file mode 100755 index 5b7b83f0ce5e5bd50e2cb632c7d4aeb95941485b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2V8<6ZZI=>f4u@pObhHwBu4M$1`kk47*5n0T@ zz}*SLjOHg#uLTN9mbgZg1m~xflqVLYGL)B>>t*I;7bhncr0V4trO$q6BL!5H>gnPb zA~AJq|3*Fs2LYG+@8XsQ{hIq*DDZRaBmH;f>r@sBn;dD?Q1LOf-duU|z<aI-OgpmI zy}URxG_bT|Rc&_Ivbjr^tgvFZDd&51(-XO8(t;84e}2A5bX&rxmLM|m*MhxLpZA)5 XH4<0Z_2pa)&_V`JS3j3^P6<r_Gb>X% diff --git a/htdocs/public/images/dotColor3.svg b/htdocs/public/images/dotColor3.svg deleted file mode 100755 index 6aabeed..0000000 --- a/htdocs/public/images/dotColor3.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="12" - height="12" - viewBox="0 0 12 12" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="dotColor3.svg"> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="653" - inkscape:window-height="480" - id="namedview6" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-0.10169492" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="0" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4182"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - id="path4197" - sodipodi:type="arc" - sodipodi:cx="6" - sodipodi:cy="6" - sodipodi:rx="2.4999955" - sodipodi:ry="2.4999955" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - sodipodi:open="true" - d="M 3.5000045,5.9999999 A 2.4999955,2.4999955 0 0 1 5.9994001,3.5000046 2.4999955,2.4999955 0 0 1 8.4999952,5.9988001 2.4999955,2.4999955 0 0 1 6.0017999,8.4999948 2.4999955,2.4999955 0 0 1 3.5000057,6.0023999" - style="fill:#a70202;stroke:#1a1a1a;stroke-width:0;stroke-linecap:round" /> -</svg> diff --git a/htdocs/public/images/dotColor4.png b/htdocs/public/images/dotColor4.png deleted file mode 100755 index 35d1e796908ed4fb9b116e8d8dddeebc33ebc4a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^JRr=$1|-8uW1a&kmSQK*5Dp-y;YjHK@;M7UB8!3Q zuY)k7lg8`{prB-lYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt)ZSE{-7@ z6VLW<6g*@g!18@cMn?hXG1UMb0jnbJC4P6AWF@K=GGAd9?E1n|!FE&b>AnxozC9N= z6W8tDm9Onu&otqtMBDA%99L?iUp}7SaX5r^rfl(vv*+CFPab3F^?Y7q#O|~0->o3Y z8%G5>>gP@Galgp8U}sr%@jLaomufZl9;{(}bwQ1@HD2>6&@~L6u6{1-oD!M<UHDwG diff --git a/htdocs/public/images/dotColor4.svg b/htdocs/public/images/dotColor4.svg deleted file mode 100755 index ee4a483..0000000 --- a/htdocs/public/images/dotColor4.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="12" - height="12" - viewBox="0 0 12 12" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="dotColor4.svg"> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="653" - inkscape:window-height="480" - id="namedview6" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="12" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="0" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4182"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - id="path4197" - sodipodi:type="arc" - sodipodi:cx="6" - sodipodi:cy="6" - sodipodi:rx="2.4999955" - sodipodi:ry="2.4999955" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - sodipodi:open="true" - d="M 3.5000045,5.9999999 A 2.4999955,2.4999955 0 0 1 5.9994001,3.5000046 2.4999955,2.4999955 0 0 1 8.4999952,5.9988001 2.4999955,2.4999955 0 0 1 6.0017999,8.4999948 2.4999955,2.4999955 0 0 1 3.5000057,6.0023999" - style="fill:#217867;stroke:#1a1a1a;stroke-width:0;stroke-linecap:round" /> -</svg> diff --git a/htdocs/public/images/spinner.gif b/htdocs/public/images/spinner.gif deleted file mode 100644 index 19cb4297f9bf3b49dacdb693f5e3f5da9350f016..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 54394 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 Ka|Qm?3j80s5#E&m diff --git a/htdocs/public/images/transmit-original.png b/htdocs/public/images/transmit-original.png deleted file mode 100755 index 07216aef0cf6cd1492bcd6e742a6dfc5ecb81132..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5420 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 W>e%T(>i9PR0000<MNUMnLSTa3<w#Tj diff --git a/htdocs/public/images/transmit-original.svg b/htdocs/public/images/transmit-original.svg deleted file mode 100755 index 3bc5068..0000000 --- a/htdocs/public/images/transmit-original.svg +++ /dev/null @@ -1,111 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="86" - height="72" - viewBox="0 0 86 72" - id="svg4310" - version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="transmit.svg"> - <defs - id="defs4312" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="0.98" - inkscape:cx="-337.92553" - inkscape:cy="276.19386" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:window-width="1875" - inkscape:window-height="1056" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" /> - <metadata - id="metadata4315"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-980.36219)"> - <g - id="g4878" - style="stroke:#2c5aa0" - transform="matrix(0.50474232,0,0,0.50474232,-105.22361,729.73976)"> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214" - d="m 246.84931,501.49154 c -46.53731,31.96085 -45.53599,101.06369 0.67435,132.84715" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5" - d="m 262.10498,522.50881 c -32.37593,21.6208 -30.92504,70.04354 0.44957,90.81259" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-9" - d="m 273.93876,539.70487 c -18.88891,14.42772 -19.46108,40.82167 0.44957,56.19592" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-9-1" - d="m 282.31201,552.74211 c -10.7967,7.909 -9.5706,23.06376 0.44957,30.12101" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-53" - d="m 340.47459,501.37914 c 46.53731,31.96085 45.53599,101.06368 -0.67435,132.84714" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-95" - d="m 325.21892,522.3964 c 32.37593,21.6208 30.92504,70.04354 -0.44957,90.81259" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-9-2" - d="m 313.38514,539.59247 c 18.88891,14.42772 19.46107,40.82166 -0.44957,56.19591" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-9-1-5" - d="m 305.01189,552.62971 c 10.7967,7.90899 9.57059,23.06375 -0.44956,30.121" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - </g> - </g> -</svg> diff --git a/htdocs/public/images/transmit.png b/htdocs/public/images/transmit.png deleted file mode 100755 index f2ef93cd56c5ff344171dc0467bbb637d8b29bb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4250 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 diff --git a/htdocs/public/images/transmit.svg b/htdocs/public/images/transmit.svg deleted file mode 100755 index c69dd5c..0000000 --- a/htdocs/public/images/transmit.svg +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="76" - height="64" - viewBox="0 0 76 64" - id="svg4310" - version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="transmit.svg"> - <defs - id="defs4312" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="7.1892188" - inkscape:cx="11.050423" - inkscape:cy="47.464992" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:window-width="1875" - inkscape:window-height="1056" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" /> - <metadata - id="metadata4315"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-988.36219)"> - <g - id="g4878" - style="stroke:#2c5aa0" - transform="matrix(0.44605036,0,0,0.44605036,-92.988018,767.06851)"> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214" - d="m 246.84931,501.49154 c -46.53731,31.96085 -45.53599,101.06369 0.67435,132.84715" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5" - d="m 262.10498,522.50881 c -32.37593,21.6208 -30.92504,70.04354 0.44957,90.81259" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-9" - d="m 273.93876,539.70487 c -18.88891,14.42772 -19.46108,40.82167 0.44957,56.19592" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-53" - d="m 340.47459,501.37914 c 46.53731,31.96085 45.53599,101.06368 -0.67435,132.84714" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-95" - d="m 325.21892,522.3964 c 32.37593,21.6208 30.92504,70.04354 -0.44957,90.81259" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - sodipodi:nodetypes="cc" - inkscape:connector-curvature="0" - id="path4214-5-9-2" - d="m 313.38514,539.59247 c 18.88891,14.42772 19.46107,40.82166 -0.44957,56.19591" - style="fill:none;fill-rule:evenodd;stroke:#2c5aa0;stroke-width:8;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - </g> - </g> -</svg> diff --git a/htdocs/public/images/transmit1.png b/htdocs/public/images/transmit1.png deleted file mode 100755 index 7cd8e5b26b1d74877e4489511761c93b38bd4a9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 789 zcmV+w1M2*VP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004b3#c}2nYxW zd<bNS00009a7bBm000ie000ie0hKEb8vp<R8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H10+LBYK~!jg?U_4hR6!Jmzs+il@tJ6d5E~z;2nM5;X%)m&K|yUS zY%Hv;tSrPvQm7yZ60B|Ptb&DBB1VJpftXH3K}<qqO=5nFJr~wTHqP$M#NvFg3=4bC z_s_j|FLURD<2a7vIF92uj*}d9g1RI2+Xm{1*DosS2Yt3rON4$cps)5h(tN+D=me+& z66kKkzQfjY4s<47-=@$p(5wX;0+l27E`cst?|IPic)c47v=206fi5TXTr@`obTFN# zeuy=omlou92Hy>Hy#=jL@B1^r6$>y1YR}+X1$tu6tLc5e%D3C)^#gP$qj$gkm%oE{ z<@2KJcBF?hN(=WbbKlG*+yI&eEr9lBlGgfnn|r33CB5*Z9pRA-vc)otScX%fm5r>3 z25h|7Ky54v_dwlW#X+y_==NriEta9zGQ3JHT3vIOT$xx_FGs7b?&d*lA(f$*bQe$t zK0;|Our?y4S>Tgp*%VS4I^lITP6yVdVA95*J9X%Ui?g~Sur39~rCbRq3Z3wjjU9n? zDJU{b*8Np;s05m_J7i}<(Na0KScWg5m4RotBw*aW^o7bIa=^y1(85L*9uI6h+CXhA ziUmiG)t>t8a+-*{yYbKdR?r8_kmE^BrJ4u-!3@IR{in_SET{CmNuTCD%WADICneC? zd|uQBdS~Ku8NC<GIlc@_TMe3g8nh>aug`W_7C?v7`~Du{PR+j7#)O`3+q@I#S~}0t zLDqs^Sdd56oy_Qt4$!DM9#=Q>mKF8X{GUfbTO;=_Ci{k{@2#3bJ8CYu3DD*UJ-b2g zt><(8zn5z20zI?`^9VOF?F4-T-OsdH*9a<CCmyX|dv&4XIF92uj^j9v<D}&$a56p9 T{>mVv00000NkvXXu0mjfnBi!X diff --git a/htdocs/public/images/transmit1.svg b/htdocs/public/images/transmit1.svg deleted file mode 100755 index af0a2b7..0000000 --- a/htdocs/public/images/transmit1.svg +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="60" - height="60" - viewBox="0 0 60 60" - id="svg4310" - version="1.1" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="transmit1.svg" - inkscape:export-filename="/run/user/1000/gvfs/sftp:host=aprsdirect.com/home/peqv/trackdirect_dev/htdocs/public/images/transmit1.png" - inkscape:export-xdpi="96" - inkscape:export-ydpi="96"> - <defs - id="defs4312" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="8.0000002" - inkscape:cx="35.059875" - inkscape:cy="32.310313" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:window-width="1865" - inkscape:window-height="1025" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" /> - <metadata - id="metadata4315"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-992.3622)"> - <path - style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 20.044871,1008.1516 c -9.534032,7.2823 -9.82283,20.6045 0.226917,28.3645" - id="path4214-5-9" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 39.955129,1008.0949 c 9.534032,7.2823 9.822825,20.6044 -0.226917,28.3645" - id="path4214-5-9-2" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - </g> -</svg> diff --git a/htdocs/public/images/transmit2.png b/htdocs/public/images/transmit2.png deleted file mode 100755 index 1ad39170fe0ead8a1cf77286641862a97481d02f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 938 zcmV;b16BNqP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004b3#c}2nYxW zd<bNS00009a7bBm000ie000ie0hKEb8vp<R8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H111CvDK~!jg?U_%AO<@?uf5(_%7>qwfY9i!cQACZ^q|^{28&RUM zwU886%+gM=VPS2uupp5rkt}Fd%3w+iA%hXa7|c8t_q}G6b7tK0e%D=mzs=ii-upby zd*+^VzVjW3L?V$$Boc{KBuYT7pdDrKIu1GoniAgY?*V3mu7CvkPzJwO=G6sS8{Y3v z^VOg?7N7^TxeT65Kpo~e0NNhjvtZl^>NVpVpt)r-22=w&Y2H6TyFweT1bs5Y^PuX$ zhG{vDT85vXjiF5H?fem_9aI&_XsmhKEXzC4ybuN#%%B4_F@V9p=1D*oEz@1lI8X6S zCj1dJ-%&Uxst0vjw!L1W)u2ZvdcaB45$&{WubuAE+HHcJ|L-D|g%Z#m%edb|@Scga zI*0{A+brXgoaeIEj96S$z=bLeRe_#a)~2k^(T>JetLGs3=8`Q4$so{fAGYKW(tSH> z%?_yoqbAGxpj3gWpg~YSsMa-G5L6B7v!SP_b!Gjem)qYTLelS^&z<B4&}ko*rFCTu zT>MgJMo*<t%(^_SA#30Ut54nHgs0o;oV13lf$OY(c8e39KC6?{8pbkkUq(-*QOsJG z){r&uPpjkI;)G|C)vsv{Sp)Z4O})fdAjPb`X$@l;c$Qn7@XWUQKCK~Z;4Z7F_p}OR zh1G{8d{+&&YI*CKC>*K+eE|)Drj;tvV?!@;%@zc$v#gJ^x<-3ix@NV-Csa_1Pj;7c zXlREWwObyE!l7iuHq`n&LQ`!YdI+>)^#1>anr+zUpuFpb-#h(hU9ts1S1sdV53z-| z!#@C8>LBQhHrTMAvYvzgRrHLBUUw37LN&IVD$pTM;hFYI!*j#i0i77JTRFj7e2<Cu zgH}6>my)M=2N?i0hB7&ACf%R~flS7dV}q@#1lkwUs0MV~j9!2i2Q*8|u*H65D*OY& z8`gnt4zIJz@%A5Vt$YOZeRx>cH-?$!wV+F8JY@IkfExv>FRb<?+d6Iw=an8J0Ufl9 zhCl(=+iEe7mpPY?E@4)Ij)77)&Kx|(6;2(^2<H)rL?V$$BofKTFE#6m7B<}NoB#j- M07*qoM6N<$f*|^=%>V!Z diff --git a/htdocs/public/images/transmit2.svg b/htdocs/public/images/transmit2.svg deleted file mode 100755 index 68640e0..0000000 --- a/htdocs/public/images/transmit2.svg +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="60" - height="60" - viewBox="0 0 60 60" - id="svg4310" - version="1.1" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="transmit2.svg" - inkscape:export-filename="/run/user/1000/gvfs/sftp:host=aprsdirect.com/home/peqv/trackdirect_dev/htdocs/public/images/transmit2.png" - inkscape:export-xdpi="96" - inkscape:export-ydpi="96"> - <defs - id="defs4312" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="2.56" - inkscape:cx="-82.653226" - inkscape:cy="86.278417" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:window-width="1865" - inkscape:window-height="1025" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" /> - <metadata - id="metadata4315"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-992.3622)"> - <path - style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 42.996273,1003.6012 c 12.939755,7.9568 12.788207,28.9745 -0.3669,37.1316" - id="path4214-5-95-0" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 16.996446,1003.7979 c -12.939757,7.9568 -12.788207,28.9745 0.3669,37.1316" - id="path4214-5-95-0-2" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - </g> -</svg> diff --git a/htdocs/public/images/transmit3.png b/htdocs/public/images/transmit3.png deleted file mode 100755 index 298ceb685b791bc64945edfa709812b6bbb15e5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1034 zcmV+l1oiugP)<h;3K|Lk000e1NJLTq002Ay002A)1^@s6I{evk00004b3#c}2nYxW zd<bNS00009a7bBm000ie000ie0hKEb8vp<R8FWQhbW?9;ba!ELWdL_~cP?peYja~^ zaAhuUa%Y?FJQ@H11BXdOK~!jg?V8<-RaF?qe{*J1b29M*Da9ZSol*M0h$smqqVy(( zF6tsd{6b7bh|ul=^&dzoyh{inO2r`PBBCH7kS4>=6jKmIWpu=5REm1Km}j@P<8kK9 znZ5Qt=dgb;ys+0=@B2La%s%_94=5=qDJf|wG!^tY=xb100re}OA3@)M9*JG-Ina5K zKo>zBkqcJS&;dGU4VOSmVij5oy5mAWfo4Z4REw4wpl_|^Z_t*k3#<eE;{tm?<1#K# zkES-zwv?{-vr4=X^soOmWt22Sv^r&a`&g5$OqqQr3wd$Snw04`>rFBj)aNAcWvVX< z+H9>iL0zLAJOR|>1YZ>M`l$zfX3a-I6Gt=f0}nh6njA}B_NWtd%-VO>I%qa%z|ZaC zsQRLyXZ<|i0X<R6fPKD0`=V=$hW6USmm_tY?@xB1*dG>SMKeMD_R>9E#}9pHKFLj6 zH1v_Z?7m-zNuV3<^i;0eqM&Yn!Z$$=SL?9KX1~u{T0HcfJ-wY=siaz$JC5|AHxmaP zmk+tFc2KYHMlE0EO@ijw)3rg5p<$65&J?CC8ai!niy-_<Kk0b57*SE_aa;(&aPqD? znY*0$oO0}jU^tmww4&h?j$IH8&v3k$yPWu3ahwLha59w|$X!l+`W-tV818gzWy23a zFx(^){JM~18wA6Bj#F}%6Q600*Wg~mQ*)OSpTzKW2!?wdV{cs)LE@<wg5l$iEif&- zho>EnLNI*9@tNG^#3%7|By~-*?lY@sax~5h00K=P+IY$hFBPIK3VO|+eod~V7XZF; zT#>J+s3cwvRcX^=-;F;&l`0*Y40SNLhyDLtcxZ=;%?k8-?)oxEZ`sR<VYZ62wRINq z^s~LJAFfk+srH53v}KN7wuh^r2S@6>!<`Q|=d-K_yn9&dsQ^tR92(gWU0>$t-LN33 z3AGM-!-KAa9*?RoQ`8Om)7qDfcJKiY?5W{7XaF<`bkdsl){|f|==YGIkxv1rGPpG= zfqr9jyZ?73>Pr0<-P4$+)eid98v8(V$C_{%=(ZDn+*qd7PT2hJ2QAGi@vER)PQ0In zIQOCH44$`?zo@c4f~Z#r$C%E53Y<IZMbHInxeR(fR-rkdUtH)GXkMg3!)aIm`pX)A z06iMJ;CRq(&{@!9k&9KUKhv+uT@-Sfx1^+`q$D2y0XX5+E)(kaHUIzs07*qoM6N<$ Eg7^L0%>V!Z diff --git a/htdocs/public/images/transmit3.svg b/htdocs/public/images/transmit3.svg deleted file mode 100755 index dfa844f..0000000 --- a/htdocs/public/images/transmit3.svg +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="60" - height="60" - viewBox="0 0 60 60" - id="svg4310" - version="1.1" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="transmit3.svg" - inkscape:export-filename="/run/user/1000/gvfs/sftp:host=aprsdirect.com/home/peqv/trackdirect_dev/htdocs/public/images/transmit3.png" - inkscape:export-xdpi="96" - inkscape:export-ydpi="96"> - <defs - id="defs4312" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="5.12" - inkscape:cx="-23.97789" - inkscape:cy="34.822542" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:window-width="1865" - inkscape:window-height="1025" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" /> - <metadata - id="metadata4315"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-992.3622)"> - <path - style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 14.071862,999.47211 C -2.26964,1010.385 -1.537315,1034.826 14.298779,1045.309" - id="path4214-5" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;fill-rule:evenodd;stroke:#0000ff;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 45.928138,999.41537 c 16.341502,10.91293 15.609177,35.35393 -0.226917,45.83693" - id="path4214-5-95" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - </g> -</svg> diff --git a/htdocs/public/images/transparent.png b/htdocs/public/images/transparent.png deleted file mode 100755 index 81e94b216a2b4233194076c77be9e3c12a5b890b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 180 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~2QQnD=H*;wZ=jH5iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c#{r;B5V#p&cf|Nq-Ft2T5tIvHdgSi!iMjYo``A$b<F>>Jz9 QjzDz`p00i_>zopr0QoB~<p2Nx diff --git a/htdocs/public/images/unchecked.png b/htdocs/public/images/unchecked.png deleted file mode 100755 index 568ed12f343a2f7515617a12c8c2ae90b80eb32f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOR<w@2nP_<aHMnq`J4qFk;OpT z41^gsMkOZ#8ImQg5hcO-X(i=}MX3zs<>h*rdD+Fui3O>8`9<lo-`Pk36@Bz{aSXBO zeS5{w@34bN%ftKMzO^W{vMovR-!Mt_avrPtjqVFA$}Jw2o%#*=3{z{HSXriWPuh|8 zSK|>EXJ_f#m(MR>)>dQG=t>fGs$j`$G=5aXvP$64uFP56Qx42)Wc|Rp$E`^_fp3dq zi?nIXHiojO*QJru6y1u?rQZ9kTd;o0EtSf7@(uZGzozPZ<IZg~dHQAZ`Hd0>F8pOk zdl~U$z0U&{zX$aPl?$HEIekp&S`=#x^KX$A4czblmhoh*4UN5?+qknMq|-2MX6jAu z<-T{A?Jiw8V0qzNZM+J@u^CH)vXqs|59kQlbex#nVRNPQ??2`z>G3z`8@q#oi^0>? K&t;ucLK6V%Vv@1| diff --git a/htdocs/public/index.php b/htdocs/public/index.php deleted file mode 100755 index ab412ac..0000000 --- a/htdocs/public/index.php +++ /dev/null @@ -1,400 +0,0 @@ -<?php require "../includes/bootstrap.php"; ?> - -<!DOCTYPE html> -<html lang="en"> - <head> - <meta charset="utf-8" /> - <title><?php echo getWebsiteConfig('title'); ?></title> - - <!-- Mobile meta --> - <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0"/> - <meta name="apple-mobile-web-app-capable" content="yes"/> - <meta name="mobile-web-app-capable" content="yes"> - - <!-- JS libs used by this website (not a dependency for the track direct js lib) --> - <script src="https://cdnjs.cloudflare.com/ajax/libs/mobile-detect/1.4.5/mobile-detect.min.js" integrity="sha512-1vJtouuOb2tPm+Jh7EnT2VeiCoWv0d7UQ8SGl/2CoOU+bkxhxSX4gDjmdjmbX4OjbsbCBN+Gytj4RGrjV3BLkQ==" crossorigin="anonymous"></script> - <script type="text/javascript" src="//www.gstatic.com/charts/loader.js"></script> - - <!-- Stylesheets used by this website (not a dependency for the track direct js lib) --> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.2/css/all.min.css" integrity="sha512-HK5fgLBL+xu6dm/Ii3z4xhlSUyZgTT9tuc/hSrtw6uzJOvgRr2a9jyxxT1ely+B+xFAmJKVSTbpM/CuL7qxO8w==" crossorigin="anonymous" /> - - <!-- Track Direct js dependencies --> - <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.4/jquery.min.js" integrity="sha512-jGsMH83oKe9asCpkOVkBnUrDDTp8wl+adkB2D+//JtlxO4SrLoJdhbOysIFQJloQFD+C4Fl1rMsQZF76JjV0eQ==" crossorigin="anonymous"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.1/moment-with-locales.min.js" integrity="sha512-LGXaggshOkD/at6PFNcp2V2unf9LzFq6LE+sChH7ceMTDP0g2kn6Vxwgg7wkPP7AAtX+lmPqPdxB47A0Nz0cMQ==" crossorigin="anonymous"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/autolinker/3.14.2/Autolinker.min.js" integrity="sha512-qyoXjTIJ69k6Ik7CxNVKFAsAibo8vW/s3WV3mBzvXz6Gq0yGup/UsdZBDqFwkRuevQaF2g7qhD3E4Fs+OwS4hw==" crossorigin="anonymous"></script> - <script src="/js/convex-hull.js" crossorigin="anonymous"></script> - - <!-- Map api javascripts and related dependencies --> - <?php $mapapi = $_GET['mapapi'] ?? 'leaflet'; ?> - <?php if ($mapapi == 'google') : ?> - <?php if (getWebsiteConfig('google_key') != null) : ?> - <script type="text/javascript" src="//maps.googleapis.com/maps/api/js?key=<?php echo getWebsiteConfig('google_key'); ?>&libraries=visualization,geometry"></script> - <?php else : ?> - <script type="text/javascript" src="//maps.googleapis.com/maps/api/js?libraries=visualization,geometry"></script> - <?php endif; ?> - - <script src="https://cdnjs.cloudflare.com/ajax/libs/OverlappingMarkerSpiderfier/1.0.3/oms.min.js" integrity="sha512-/3oZy+rGpR6XGen3u37AEGv+inHpohYcJupz421+PcvNWHq2ujx0s1QcVYEiSHVt/SkHPHOlMFn5WDBb/YbE+g==" crossorigin="anonymous"></script> - - <?php elseif ($mapapi == 'leaflet' || $mapapi == 'leaflet-vector'): ?> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.min.css" integrity="sha512-1xoFisiGdy9nvho8EgXuXvnpR5GAMSjFwp40gSRE3NwdUdIMIKuPa7bqoUhLD0O/5tPNhteAsE5XyyMi5reQVA==" crossorigin="anonymous" /> - <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.7.1/leaflet.min.js" integrity="sha512-SeiQaaDh73yrb56sTW/RgVdi/mMqNeM2oBwubFHagc5BkixSpP1fvqF47mKzPGWYSSy4RwbBunrJBQ4Co8fRWA==" crossorigin="anonymous"></script> - - <?php if ($mapapi == 'leaflet-vector'): ?> - <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/mapbox-gl/1.13.1/mapbox-gl.min.css" /> - <script src="https://cdnjs.cloudflare.com/ajax/libs/mapbox-gl/1.13.1/mapbox-gl.min.js"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/mapbox-gl-leaflet/0.0.15/leaflet-mapbox-gl.min.js"></script> - <?php endif; ?> - - <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet-providers/1.11.0/leaflet-providers.min.js" integrity="sha512-TO+Wd5hbpDsACTmvzSqAZL83jMQCXGRFNoS4WZxcxrlJBTdgMYaT7g5uX49C5+Kbuxzlg2A+TFJ6UqdsXuOKLw==" crossorigin="anonymous"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/leaflet.heat/0.2.0/leaflet-heat.js" integrity="sha512-KhIBJeCI4oTEeqOmRi2gDJ7m+JARImhUYgXWiOTIp9qqySpFUAJs09erGKem4E5IPuxxSTjavuurvBitBmwE0w==" crossorigin="anonymous"></script> - <script src="https://cdnjs.cloudflare.com/ajax/libs/OverlappingMarkerSpiderfier-Leaflet/0.2.6/oms.min.js" integrity="sha512-V8RRDnS4BZXrat3GIpnWx+XNYBHQGdK6nKOzMpX4R0hz9SPWt7fltGmmyGzUkVFZUQODO1rE+SWYJJkw3SYMhg==" crossorigin="anonymous"></script> - <?php endif; ?> - - <!-- Track Direct jslib --> - <script type="text/javascript" src="/js/trackdirect.min.js"></script> - - - <script type="text/javascript" src="/js/main.js"></script> - <link rel="stylesheet" href="/css/main.css"> - - <script> - // Start everything!!! - $(document).ready(function() { - google.charts.load('current', {'packages':['corechart', 'timeline']}); - - var options = {}; - options['isMobile'] = false; - options['useImperialUnit'] = <?php echo (isImperialUnitUser() ? 'true': 'false'); ?>; - options['coverageDataUrl'] = '/data/coverage.php'; - options['coveragePercentile'] = <?php echo (getWebsiteConfig('coverage_percentile') ?? "95"); ?>; - options['defaultTimeLength'] = 60; // In minutes - - var md = new MobileDetect(window.navigator.userAgent); - if (md.mobile() !== null) { - options['isMobile'] = true; - } - - options['time'] = "<?php echo $_GET['time'] ?? '' ?>"; // How many minutes of history to show - options['center'] = "<?php echo $_GET['center'] ?? '' ?>"; // Position to center on (for example "46.52108,14.63379") - options['zoom'] = "<?php echo $_GET['zoom'] ?? '' ?>"; // Zoom level - options['timetravel'] = "<?php echo $_GET['timetravel'] ?? '' ?>"; // Unix timestamp to travel to - options['maptype'] = "<?php echo $_GET['maptype'] ?? '' ?>"; // May be "roadmap", "terrain" or "satellite" - options['mid'] = "<?php echo $_GET['mid'] ?? '' ?>"; // Render map from "Google My Maps" (requires https) - - options['filters'] = {}; - options['filters']['sid'] = "<?php echo $_GET['sid'] ?? '' ?>"; // Station id to filter on - options['filters']['sname'] = "<?php echo $_GET['sname'] ?? '' ?>"; // Station name to filter on - options['filters']['sidlist'] = "<?php echo $_GET['sidlist'] ?? '' ?>"; // Station id list to filter on (colon separated) - options['filters']['snamelist'] = "<?php echo $_GET['snamelist'] ?? '' ?>"; // Station name list to filter on (colon separated) - - // Tell jslib which html element to use to show connection status and mouse cordinates - options['statusContainerElementId'] = 'status-container'; - options['cordinatesContainerElementId'] = 'cordinates-container'; - - // Use this setting so enlarge some symbols (for example airplanes when using OGN as data source) - //options['symbolsToScale'] = [[88,47],[94,null]]; - - // Set this setting to false if you want to stop animations - options['animate'] = true; - - // Use Stockholm as default position (will be used if we fail to fetch location from ip-location service) - options['defaultLatitude'] = '59.30928'; - options['defaultLongitude'] = '18.08830'; - - // Tip: request position from some ip->location service (https://freegeoip.app/json and https://ipapi.co/json is two examples) - $.getJSON('https://ipapi.co/json', function(data) { - if (data.latitude && data.longitude) { - options['defaultLatitude'] = data.latitude; - options['defaultLongitude'] = data.longitude; - } - }).fail(function() { - console.log('Failed to fetch location, using default location'); - }).always(function() { - <?php if ($mapapi == 'leaflet-vector') : ?> - options['mapboxGLStyle'] = "https://api.maptiler.com/maps/bright/style.json?optimize=true&key=<?php echo getWebsiteConfig('maptiler_key'); ?>"; - options['mapboxGLAttribution'] = 'Map © <a href="https://www.maptiler.com">MapTiler</a>, OpenStreetMap contributors'; - <?php endif; ?> - - <?php if ($mapapi == 'leaflet') : ?> - // We are using Leaflet -- read about leaflet-providers and select your favorite maps - // https://leaflet-extras.github.io/leaflet-providers/preview/ - - // Make sure to read the license requirements for each provider before launching a public website - // https://wiki.openstreetmap.org/wiki/Tile_servers - - // Many providers require a map api key or similar, the following is an example for HERE - L.TileLayer.Provider.providers['HERE'].options['app_id'] = '<?php echo getWebsiteConfig('here_app_id'); ?>'; - L.TileLayer.Provider.providers['HERE'].options['app_code'] = '<?php echo getWebsiteConfig('here_app_code'); ?>'; - - options['supportedMapTypes'] = {}; - options['supportedMapTypes']['roadmap'] = "<?php echo getWebsiteConfig('leaflet_raster_tile_roadmap'); ?>"; - options['supportedMapTypes']['terrain'] = "<?php echo getWebsiteConfig('leaflet_raster_tile_terrain'); ?>"; - options['supportedMapTypes']['satellite'] = "<?php echo getWebsiteConfig('leaflet_raster_tile_satellite'); ?>"; - <?php endif; ?> - - // host is used to create url to /heatmaps and /images - options['host'] = "<?php echo $_SERVER['HTTP_HOST']; ?>"; - - var supportsWebSockets = 'WebSocket' in window || 'MozWebSocket' in window; - if (supportsWebSockets) { - <?php if (getWebsiteConfig('websocket_url') != null) : ?> - var wsServerUrl = "<?php echo getWebsiteConfig('websocket_url'); ?>"; - <?php else : ?> - var wsServerUrl = 'ws://<?php echo $_SERVER['HTTP_HOST']; ?>:9000/ws'; - <?php endif; ?> - var mapElementId = 'map-container'; - - trackdirect.init(wsServerUrl, mapElementId, options); - } else { - alert('This service require HTML 5 features to be able to feed you APRS data in real-time. Please upgrade your browser.'); - } - }); - }); - </script> - </head> - <body> - <div class="topnav" id="tdTopnav"> - <a style="background-color: #af7a4c; color: white;" - href="" - onclick=" - if (location.protocol != 'https:') { - trackdirect.setCenter(); // Will go to default position - } else { - trackdirect.setMapLocationByGeoLocation( - function(errorMsg) { - var msg = 'We failed to determine your current location by using HTML 5 Geolocation functionality'; - if (typeof errorMsg !== 'undefined' && errorMsg != '') { - msg += ' (' + errorMsg + ')'; - } - msg += '.'; - alert(msg); - }, - function() {}, - 5000 - ); - } - return false;" - title="Go to my current position"> - My position - </a> - - <div class="dropdown"> - <button class="dropbtn">Tail length - <i class="fa fa-caret-down"></i> - </button> - <div class="dropdown-content" id="tdTopnavTimelength"> - <a href="javascript:void(0);" onclick="trackdirect.setTimeLength(10); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox">10 minutes</a> - <a href="javascript:void(0);" onclick="trackdirect.setTimeLength(30); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox">30 minutes</a> - <a href="javascript:void(0);" id="tdTopnavTimelengthDefault" onclick="trackdirect.setTimeLength(60); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox">1 hour</a> - <a href="javascript:void(0);" onclick="trackdirect.setTimeLength(180); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox">3 hours</a> - <a href="javascript:void(0);" onclick="trackdirect.setTimeLength(360); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox">6 hours</a> - <a href="javascript:void(0);" onclick="trackdirect.setTimeLength(720); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox dropdown-content-checkbox-only-filtering dropdown-content-checkbox-hidden">12 hours</a> - <a href="javascript:void(0);" onclick="trackdirect.setTimeLength(1080); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox dropdown-content-checkbox-only-filtering dropdown-content-checkbox-hidden">18 hours</a> - <a href="javascript:void(0);" onclick="trackdirect.setTimeLength(1440); $('#tdTopnavTimelength>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox dropdown-content-checkbox-only-filtering dropdown-content-checkbox-hidden">24 hours</a> - </div> - </div> - - <div class="dropdown"> - <button class="dropbtn">Map API - <i class="fa fa-caret-down"></i> - </button> - <div class="dropdown-content"> - <?php if (getWebsiteConfig('google_key') != null) : ?> - <a href="/?mapapi=google" title="Switch to Google Maps" <?= ($mapapi=="google"?"class='dropdown-content-checkbox dropdown-content-checkbox-active'":"class='dropdown-content-checkbox'") ?>>Google Maps API</a> - <?php endif; ?> - <a href="/?mapapi=leaflet" title="Switch to Leaflet with raster tiles" <?= ($mapapi=="leaflet"?"class='dropdown-content-checkbox dropdown-content-checkbox-active'":"class='dropdown-content-checkbox'") ?>>Leaflet - Raster Tiles</a> - <?php if (getWebsiteConfig('maptiler_key') != null) : ?> - <a href="/?mapapi=leaflet-vector" title="Switch to Leaflet with vector tiles" <?= ($mapapi=="leaflet-vector"?"class='dropdown-content-checkbox dropdown-content-checkbox-active'":"class='dropdown-content-checkbox'") ?>>Leaflet - Vector Tiles</a> - <?php endif; ?> - </div> - </div> - - <?php if ($mapapi != 'leaflet-vector') : ?> - <div class="dropdown"> - <button class="dropbtn">Map Type - <i class="fa fa-caret-down"></i> - </button> - <div class="dropdown-content" id="tdTopnavMapType"> - <a href="javascript:void(0);" onclick="trackdirect.setMapType('roadmap'); $('#tdTopnavMapType>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox dropdown-content-checkbox-active">Roadmap</a> - <a href="javascript:void(0);" onclick="trackdirect.setMapType('terrain'); $('#tdTopnavMapType>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox">Terrain/Outdoors</a> - <?php if ($mapapi == 'google' || getWebsiteConfig('leaflet_raster_tile_satellite') != null) : ?> - <a href="javascript:void(0);" onclick="trackdirect.setMapType('satellite'); $('#tdTopnavMapType>a').removeClass('dropdown-content-checkbox-active'); $(this).addClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox">Satellite</a> - <?php endif; ?> - </div> - </div> - <?php endif; ?> - - <div class="dropdown"> - <button class="dropbtn">Settings - <i class="fa fa-caret-down"></i> - </button> - <div class="dropdown-content" id="tdTopnavSettings"> - <a href="javascript:void(0);" onclick="trackdirect.toggleImperialUnits(); $(this).toggleClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox <?php echo (isImperialUnitUser()?'dropdown-content-checkbox-active':''); ?>" title="Switch to imperial units">Use imperial units</a> - <a href="javascript:void(0);" onclick="trackdirect.toggleStationaryPositions(); $(this).toggleClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox" title="Hide stations that is not moving">Hide not moving stations</a> - - <!-- - <a href="javascript:void(0);" onclick="trackdirect.toggleInternetPositions(); $(this).toggleClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox" title="Hide stations that sends packet using TCP/UDP">Hide Internet stations</a> - <a href="javascript:void(0);" onclick="trackdirect.toggleCwopPositions(); $(this).toggleClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox" title="Hide CWOP weather stations">Hide CWOP stations</a> - <a href="javascript:void(0);" onclick="trackdirect.toggleOgflymPositions(); $(this).toggleClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox" title="Hide model airplanes (OGFLYM)">Hide model airplanes (OGFLYM)</a> - <a href="javascript:void(0);" onclick="trackdirect.toggleUnknownPositions(); $(this).toggleClass('dropdown-content-checkbox-active');" class="dropdown-content-checkbox" title="Hide unknown aircrafts">Hide unknown aircrafts</a> - --> - </div> - </div> - - <div class="dropdown"> - <button class="dropbtn">Other - <i class="fa fa-caret-down"></i> - </button> - <div class="dropdown-content"> - - <a href="/views/search.php" - class="tdlink" - onclick="$(this).attr('href', '/views/search.php?imperialUnits=' + (trackdirect.isImperialUnits()?'1':'0'))" - title="Search for a station/vehicle here!"> - Station search - </a> - - <a href="/views/latest.php" - class="tdlink" - onclick="$(this).attr('href', '/views/latest.php?imperialUnits=' + (trackdirect.isImperialUnits()?'1':'0'))" - title="List latest heard stations!"> - Latest heard - </a> - - <a href="javascript:void(0);" - onclick="$('#modal-timetravel').show();" - title="Select date and time to show what the map looked like then"> - Travel in time - </a> - - <a class="triple-notselected" href="#" onclick="trackdirect.togglePHGCircles(); return false;" title="Show PHG cirlces, first click will show half PGH circles and second click will show full PHG circles."> - Toggle PHG circles - </a> - </div> - </div> - - <a href="/views/about.php" - class="tdlink" - title="More about this website!"> - About - </a> - - <a href="javascript:void(0);" class="icon" onclick="toggleTopNav()">☰</a> - </div> - - <div id="map-container"></div> - - <div id="right-container"> - <div id="right-container-info"> - <div id="status-container"></div> - <div id="cordinates-container"></div> - </div> - - <div id="right-container-filtered"> - <div id="right-container-filtered-content"></div> - <a href="#" onclick="trackdirect.filterOnStationId([]); return false;">reset</a> - </div> - - <div id="right-container-timetravel"> - <div id="right-container-timetravel-content"></div> - <a href="#" onclick="trackdirect.setTimeTravelTimestamp(0); $('#right-container-timetravel').hide(); return false;">reset</a> - </div> - </div> - - <div id="td-modal" class="modal"> - <div class="modal-long-content"> - <div class="modal-content-header"> - <span class="modal-close" id="td-modal-close">×</span> - <span class="modal-title" id="td-modal-title"><?php echo getWebsiteConfig('title'); ?></h2> - </div> - <div class="modal-content-body"> - <div id="td-modal-content"> - <?php $view = getView($_GET['view']); ?> - <?php if ($view) : ?> - <?php include($view); ?> - <?php else: ?> - <div id="td-modal-content-nojs"> - <?php include(ROOT . '/public/views/about.php'); ?> - </div> - <?php endif; ?> - </div> - </div> - </div> - </div> - - <div id="modal-timetravel" class="modal"> - <div class="modal-content"> - <div class="modal-content-header"> - <span class="modal-close" onclick="$('#modal-timetravel').hide();">×</span> - <span class="modal-title">Travel in time</h2> - </div> - <div class="modal-content-body" style="margin: 0px 20px 20px 20px;"> - <?php if (!isAllowedToShowOlderData()) : ?> - <div style="text-align: center;"> - <p style="max-width: 800px; display: inline-block; color: red;"> - The time travel feature that allows you to see the map as it looked like an earlier date is disabled on this website. - </p> - </div> - <?php else : ?> - <p>Select date and time to show map data for (enter time for your locale time zone). The regular time length select box can still be used to select how old data that should be shown (relative to selected date and time).</p> - <p>*Note that the heatmap will still based on data from the latest hour (not the selected date and time).</p> - <p>Date and time:</p> - - <form id="timetravel-form"> - <select id="timetravel-date" class="timetravel-select form-control" - <option value="0" selected>Select date</option> - <?php for($i=0; $i <= 10; $i++) : ?> - <?php $date = date('Y-m-d', strtotime("-$i days")); ?> - <option value="<?php echo $date; ?>"><?php echo $date; ?></option> - <?php endfor; ?> - </select> - - <select id="timetravel-time" class="timetravel-select form-control"> - <option value="0" selected>Select time</option> - <option value="00:00">00:00</option> - <option value="01:00">01:00</option> - <option value="02:00">02:00</option> - <option value="03:00">03:00</option> - <option value="04:00">04:00</option> - <option value="05:00">05:00</option> - <option value="06:00">06:00</option> - <option value="07:00">07:00</option> - <option value="08:00">08:00</option> - <option value="09:00">09:00</option> - <option value="10:00">10:00</option> - <option value="11:00">11:00</option> - <option value="12:00">12:00</option> - <option value="13:00">13:00</option> - <option value="14:00">14:00</option> - <option value="15:00">15:00</option> - <option value="16:00">16:00</option> - <option value="17:00">17:00</option> - <option value="18:00">18:00</option> - <option value="19:00">19:00</option> - <option value="20:00">20:00</option> - <option value="21:00">21:00</option> - <option value="22:00">22:00</option> - <option value="23:00">23:00</option> - </select> - <input type="submit" - value="Ok" - onclick=" - if ($('#timetravel-date').val() != '0' && $('#timetravel-time').val() != '0') { - trackdirect.setTimeLength(60, false); - var ts = moment($('#timetravel-date').val() + ' ' + $('#timetravel-time').val(), 'YYYY-MM-DD HH:mm').unix(); - trackdirect.setTimeTravelTimestamp(ts); - $('#right-container-timetravel-content').html('Time travel to ' + $('#timetravel-date').val() + ' ' + $('#timetravel-time').val()); - $('#right-container-timetravel').show(); - } else { - trackdirect.setTimeTravelTimestamp(0, true); - $('#right-container-timetravel').hide(); - } - $('#modal-timetravel').hide(); - return false;"/> - </form> - <?php endif; ?> - </div> - </div> - </div> - </body> -</html> diff --git a/htdocs/public/js/convex-hull.js b/htdocs/public/js/convex-hull.js deleted file mode 100644 index 376cb7f..0000000 --- a/htdocs/public/js/convex-hull.js +++ /dev/null @@ -1,87 +0,0 @@ -/* - * Convex hull algorithm - Library (compiled from TypeScript) - * - * Copyright (c) 2021 Project Nayuki - * https://www.nayuki.io/page/convex-hull-algorithm - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public License - * along with this program (see COPYING.txt and COPYING.LESSER.txt). - * If not, see <http://www.gnu.org/licenses/>. - */ -"use strict"; -var convexhull; -(function (convexhull) { - // Returns a new array of points representing the convex hull of - // the given set of points. The convex hull excludes collinear points. - // This algorithm runs in O(n log n) time. - function makeHull(points) { - var newPoints = points.slice(); - newPoints.sort(convexhull.POINT_COMPARATOR); - return convexhull.makeHullPresorted(newPoints); - } - convexhull.makeHull = makeHull; - // Returns the convex hull, assuming that each points[i] <= points[i + 1]. Runs in O(n) time. - function makeHullPresorted(points) { - if (points.length <= 1) - return points.slice(); - // Andrew's monotone chain algorithm. Positive y coordinates correspond to "up" - // as per the mathematical convention, instead of "down" as per the computer - // graphics convention. This doesn't affect the correctness of the result. - var upperHull = []; - for (var i = 0; i < points.length; i++) { - var p = points[i]; - while (upperHull.length >= 2) { - var q = upperHull[upperHull.length - 1]; - var r = upperHull[upperHull.length - 2]; - if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) - upperHull.pop(); - else - break; - } - upperHull.push(p); - } - upperHull.pop(); - var lowerHull = []; - for (var i = points.length - 1; i >= 0; i--) { - var p = points[i]; - while (lowerHull.length >= 2) { - var q = lowerHull[lowerHull.length - 1]; - var r = lowerHull[lowerHull.length - 2]; - if ((q.x - r.x) * (p.y - r.y) >= (q.y - r.y) * (p.x - r.x)) - lowerHull.pop(); - else - break; - } - lowerHull.push(p); - } - lowerHull.pop(); - if (upperHull.length == 1 && lowerHull.length == 1 && upperHull[0].x == lowerHull[0].x && upperHull[0].y == lowerHull[0].y) - return upperHull; - else - return upperHull.concat(lowerHull); - } - convexhull.makeHullPresorted = makeHullPresorted; - function POINT_COMPARATOR(a, b) { - if (a.x < b.x) - return -1; - else if (a.x > b.x) - return +1; - else if (a.y < b.y) - return -1; - else if (a.y > b.y) - return +1; - else - return 0; - } - convexhull.POINT_COMPARATOR = POINT_COMPARATOR; -})(convexhull || (convexhull = {})); \ No newline at end of file diff --git a/htdocs/public/js/main.js b/htdocs/public/js/main.js deleted file mode 100755 index c1b3a9b..0000000 --- a/htdocs/public/js/main.js +++ /dev/null @@ -1,158 +0,0 @@ -jQuery(document).ready(function ($) { - $('#td-modal-content-nojs').remove(); - if ($('#td-modal-content').text().trim() == '') { - $('#td-modal').hide(); - } else { - var title = $('#td-modal-content title').text(); - if (title != '') { - $("#td-modal-title").text(title); - } - } -}); - -// Init local time presentation -jQuery(document).ready(function ($) { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); -}); - -// Switch between regular topnav and topnav adapted for mobile -function toggleTopNav() { - var x = document.getElementById("tdTopnav"); - if (x.className === "topnav") { - x.className += " responsive"; - } else { - x.className = "topnav"; - } -} - -// If an external website shows map in iframe, hide all menu's -if (!inIframe()) { - $("#tdTopnav").hide(); -} - -// Set correct time length option to active -jQuery(document).ready(function ($) { - $("#tdTopnavTimelengthDefault").addClass("dropdown-content-checkbox-active"); -}); - -// Open all internal url's in dialog -function loadView(url) { - var view = url.split('/').pop().split("?")[0]; - if (view != '') { - var requestUrl = '/views/' + url.split('/').pop(); - $("#td-modal-content").html('<img src="/images/spinner.gif" style="max-width: 100%; max-height: 100px; margin-top: 40px; margin-left: auto; margin-right: auto; display: block;"/>'); - $("#td-modal-title").text(''); - $("#td-modal").show(); - $("#td-modal-content").load(requestUrl, {'modal': true}, - function() { - history.replaceState(null, "", requestUrl); - var title = $('#td-modal-content title').text(); - $("#td-modal-title").text(title); - - $("#td-modal-content .tdlink").unbind('click').bind('click', function(e) { - loadView(this.href); - e.preventDefault(); - }); - } - ); - } -} -jQuery(document).ready(function ($) { - $(".tdlink").bind('click', function(e) { - loadView(this.href); - e.preventDefault(); - }); -}); - -// Handle dialog close -jQuery(document).ready(function ($) { - $("#td-modal-close").bind('click', function(e) { - $('#td-modal').hide(); - history.replaceState(null, "", "/"); - }); -}); - -// Open station dialog if user clicked on station name -jQuery(document).ready(function ($) { - trackdirect.addListener("station-name-clicked", function (data) { - if (trackdirect.isImperialUnits()) { - loadView("/views/overview.php?id=" + data.station_id + "&imperialUnits=1"); - } else { - loadView("/views/overview.php?id=" + data.station_id + "&imperialUnits=0"); - } - }); -}); - -// Update url when user moves map -jQuery(document).ready(function ($) { - var newUrlTimeoutId = null; - trackdirect.addListener("position-request-sent", function (data) { - if (newUrlTimeoutId !== null) { - clearTimeout(newUrlTimeoutId); - } - - newUrlTimeoutId = window.setTimeout(function () { - if ($("#td-modal").is(":hidden")) { - var url = window.location.href.split('/').pop(); - var newLat = Math.round(data.center.lat * 10000) / 10000; - var newLng = Math.round(data.center.lng * 10000) / 10000; - var newZoom = data.zoom; - - if (!url.includes("center=")) { - if (!url.includes("?")) { - url += "?center=" + newLat + "," + newLng; - } else { - url += "¢er=" + newLat + "," + newLng; - } - } else { - url = url.replace(/center=[^&]*/i, "center=" + newLat + "," + newLng); - } - - if (!url.includes("zoom=")) { - if (!url.includes("?")) { - url += "?zoom=" + newZoom; - } else { - url += "&zoom=" + newZoom; - } - } else { - url = url.replace(/zoom=[^&]*/i, "zoom=" + newZoom); - } - - history.replaceState(null, "", url); - } - }, 1000); - }); -}); - -// Handle filter response -jQuery(document).ready(function ($) { - trackdirect.addListener("filter-changed", function (packets) { - if (packets.length == 0) { - // We are not filtering any more. - $("#right-container-filtered").hide(); - - // Time travel is stopped when filtering is stopped - $("#right-container-timetravel").hide(); - - // Reset tail length to default when filtering is stopped - $("#tdTopnavTimelength>a").removeClass("dropdown-content-checkbox-active"); - $("#tdTopnavTimelengthDefault").addClass("dropdown-content-checkbox-active"); - $(".dropdown-content-checkbox-only-filtering").addClass("dropdown-content-checkbox-hidden"); - } else { - var counts = {}; - for (var i = 0; i < packets.length; i++) { - // Note that if related is set to 1, it is included since it is related to the station we are filtering on - if (packets[i].related == 0) { - counts[packets[i]["station_name"]] = - 1 + (counts[packets[i]["station_name"]] || 0); - } - } - $("#right-container-filtered-content").html( - "Filtering on " + Object.keys(counts).length + " station(s)" - ); - $("#right-container-filtered").show(); - $(".dropdown-content-checkbox-only-filtering").removeClass("dropdown-content-checkbox-hidden"); - } - }); -}); diff --git a/htdocs/public/js/trackdirect.min.js b/htdocs/public/js/trackdirect.min.js deleted file mode 100755 index 8bcd1e4..0000000 --- a/htdocs/public/js/trackdirect.min.js +++ /dev/null @@ -1,889 +0,0 @@ -var trackdirect={services:{},models:{},_time:null,_timetravel:null,_center:null,_zoom:null,_maptype:null,_mid:null,_rulers:[],_filterTimeoutId:null,_waitForFilterResponse:false,_doNotChangeLocationOnFilterResponse:false,_doNotChangeLocationOnFilterResponseTmp:false,_filters:{},_defaultLatitude:null,_defaultLongitude:null,_eventListeners:{},_eventListenersOnce:{},_cordinatesContainerElementId:null,_statusContainerElementId:"td-status-text",_mapElementId:null,_wsServerUrl:null,_map:null,_websocket:null,_mapCreated:false,_trackdirectInitDone:false,isMobile:false,coverageDataUrl:null,coveragePercentile:95,settings:{},init:function(wsServerUrl,mapElementId,options){this._initSettings();this._wsServerUrl=wsServerUrl;this._mapElementId=mapElementId;if($("#"+mapElementId).length<=0){console.log("ERROR: Specified map element missing");return;} -if(typeof google==="object"&&typeof google.maps==="object"){this.settings.defaultMinZoomForMarkerLabel=12;this.settings.minZoomForMarkerLabel=12;} -this._parseOptions(options);var me=this;this.addListener("map-created",function(){me._initTime();me._websocket=new trackdirect.Websocket(me._wsServerUrl);me._initWebsocketListeners();me._handleWebsocketStateChange();me._initMapListeners();if(!me._initFilterUrlRequest()){trackdirect.services.callbackExecutor.add(me,me._sendPositionRequest,[]);} -me._setWebsocketStateIdle();if(inIframe()){var parentUrl="";try{parentUrl=window.location!=window.parent.location?document.referrer:document.location.href;}catch(e){parentUrl="Unknown";}} -me._emitEventListeners("trackdirect-init-done");});this._mapInit(options);},enableImperialUnits:function(){this._map.state.useImperialUnit=true;if(this._map.state.openInfoWindow!==null){this._map.state.openInfoWindow.hide();}},enableMetricUnits:function(){this._map.state.useImperialUnit=false;if(this._map.state.openInfoWindow!==null){this._map.state.openInfoWindow.hide();}},toggleImperialUnits:function(){if(this._map.state.useImperialUnit){this.enableMetricUnits();}else{this.enableImperialUnits();}},isImperialUnits:function(){return this._map.state.useImperialUnit;},addListener:function(event,handler,execOnce){execOnce=typeof execOnce!=="undefined"?execOnce:false;if((event=="map-created"&&this._mapCreated)||(event=="trackdirect-init-done"&&this._trackdirectInitDone)){handler();if(execOnce){return;}} -if(execOnce){if(!(event in this._eventListenersOnce)){this._eventListenersOnce[event]=[];} -this._eventListenersOnce[event].push(handler);}else{if(!(event in this._eventListeners)){this._eventListeners[event]=[];} -this._eventListeners[event].push(handler);}},setCenter:function(latitude,longitude,zoom){latitude=typeof latitude!=="undefined"?latitude:this._defaultLatitude;longitude=typeof longitude!=="undefined"?longitude:this._defaultLongitude;zoom=typeof zoom!=="undefined"?zoom:this._map.getZoom();if(this._map!==null){this._map.setCenter({lat:latitude,lng:longitude},zoom);}},setZoom:function(value){if(this._map!==null){this._map.setZoom(value);}},addRuler:function(){if(this._rulers.length>0){var ruler=this._rulers.pop();ruler.hide();}else{var ruler=new trackdirect.models.Ruler((this._map.getCurrentRadiusInKm()*1000)/2,this._map);this._rulers.push(ruler);}},isFilteredMode:function(){return this._map.state.isFilterMode;},stopFilterOnStationId:function(stationId){var currentFilterStationIds=this._map.state.getFilterStationIds();if(currentFilterStationIds.length==1&¤tFilterStationIds.indexOf(stationId)>=0){this.filterOnStationId([]);}else{if(this._map.state.getTrackStationId()==stationId){this.stopTrackStation();} -this._setWebsocketStateLoading(false);this._websocket.doSendStopFilterRequest(stationId);}},filterOnStationId:function(stationIdArray){if(!Array.isArray(stationIdArray)){stationIdArray=[stationIdArray];} -var currentFilterStationIds=this._map.state.getFilterStationIds();if(currentFilterStationIds.length==0){if(this._map.state.getTrackStationId()!==null&&stationIdArray.indexOf(this._map.state.getTrackStationId())==-1){this.stopTrackStation();}} -this._setWebsocketStateLoading(false);this._websocket.doSendFilterRequest(stationIdArray,this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp());},filterOnStationName:function(stationNameArray){if(!Array.isArray(stationNameArray)){stationNameArray=[stationNameArray];} -var currentFilterStationIds=this._map.state.getFilterStationIds();if(currentFilterStationIds.length==0){if(this._map.state.getTrackStationId()!==null&&stationIdArray.indexOf(this._map.state.getTrackStationId())==-1){this.stopTrackStation();}} -this._setWebsocketStateLoading(false);this._websocket.doSendFilterRequestByName(stationNameArray,this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp());},stopTrackStation:function(){this._map.state.onlyTrackRecentPackets=false;this._map.state.trackStationId=null;this._emitEventListeners("track-changed",[null,null]);},trackStation:function(stationId,stationName,alsoFilterOnStation,onlyTrackRecentPackets){onlyTrackRecentPackets=typeof onlyTrackRecentPackets!=="undefined"?onlyTrackRecentPackets:false;if(alsoFilterOnStation){var currentFilterStationIds=this._map.state.getFilterStationIds();if(currentFilterStationIds.length>0){if(currentFilterStationIds.indexOf(stationId)==-1){this.filterOnStationId(stationId);}}} -if(stationId!==null){var trackLinkElementClass="trackStationLink"+stationId;$("."+trackLinkElementClass).html("Untrack");} -if(this._map.state.trackStationId!==null){var trackLinkElementClass="trackStationLink"+this._map.state.trackStationId;$("."+trackLinkElementClass).html("Track");} -this._map.state.onlyTrackRecentPackets=onlyTrackRecentPackets;this._map.state.trackStationId=stationId;this._emitEventListeners("track-changed",[stationId,stationName]);},focusOnStation:function(stationId,openInfoWindow){var map=this._map;openInfoWindow=typeof openInfoWindow!=="undefined"?openInfoWindow:false;var marker=map.markerCollection.getStationLatestMarker(stationId);if(marker!==null){marker.show();marker.showLabel();if(openInfoWindow){map.openMarkerInfoWindow(marker,false);}else{this.setCenter(marker.packet.latitude,marker.packet.longitude);} -marker.hide(5000,true);return true;}else{return false;}},focusOnMarkerId:function(markerId,zoom){var map=this._map;var markerIdKey=map.markerCollection.getMarkerIdKey(markerId);if(map.markerCollection.isExistingMarker(markerIdKey)){var marker=map.markerCollection.getMarker(markerIdKey);if(map.markerCollection.hasRelatedDashedPolyline(marker)){newerMarker=map.markerCollection.getMarker(marker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey);if(newerMarker.packet.hasConfirmedMapId()){return this.focusOnMarkerId(newerMarker.packet.marker_id);}} -marker.show();marker.showLabel();this.setCenter(marker.packet.latitude,marker.packet.longitude,zoom);map.openMarkerInfoWindow(marker);marker.hide(5000,true);}},toggleStationCoverage:function(stationId,coverageLinkElementClass){coverageLinkElementClass=typeof coverageLinkElementClass!=="undefined"?coverageLinkElementClass:null;var coveragePolygon=this._map.markerCollection.getStationCoverage(stationId);if(coveragePolygon!==null&&coveragePolygon.isRequestedToBeVisible()){coveragePolygon.hide();if(coverageLinkElementClass!==null){$("."+coverageLinkElementClass).html("Coverage");}}else{if(coveragePolygon!==null){coveragePolygon.show();if(!coveragePolygon.hasContent()){alert("Currently we do not have enough data to create a max range coverage plot for this station. Try again later!");}else{if(coverageLinkElementClass!==null){$("."+coverageLinkElementClass).html("Hide coverage");}}}else{var packet=this._map.markerCollection.getStationLatestPacket(stationId);var center={lat:parseFloat(packet.latitude),lng:parseFloat(packet.longitude),};var coveragePolygon=new trackdirect.models.StationCoveragePolygon(center,this._map,true);this._map.markerCollection.addStationCoverage(stationId,coveragePolygon);coveragePolygon.showWhenDone();if(coverageLinkElementClass!==null){$("."+coverageLinkElementClass).html('Loading <i class="fa fa-spinner fa-spin" style="font-size:12px"></i>');coveragePolygon.addTdListener("visible",function(){if(!coveragePolygon.hasContent()){coveragePolygon.hide();alert("Currently we do not have enough data to create a max range coverage plot for this station. Try again later!");$("."+coverageLinkElementClass).html("Coverage");}else{$("."+coverageLinkElementClass).html("Hide coverage");}},true);} -var me=this;$.getJSON(this.coverageDataUrl+"?id="+stationId,function(data){if("station_id"in data&&"coverage"in data){coveragePolygon.setData(data["coverage"],me.coveragePercentile);var marker=me._map.markerCollection.getStationLatestMarker(stationId);if(marker.isVisible()){if(coveragePolygon.isRequestedToBeVisible()){coveragePolygon.show();}}}}).fail(function(){coveragePolygon.hide();alert("Failed to fetch coverage data. Try again later!");$("."+coverageLinkElementClass).html("Coverage");}).always(function(){});}}},setMapType:function(mapType){if(this._map!==null){this._map.setMapType(mapType);}},getMapType:function(){if(this._map!==null){return this._map.getMapType();}},setMapDefaultLocation:function(setDefaultZoom){this._map.setMapDefaultLocation(setDefaultZoom);},setMapLocationByGeoLocation:function(failCallBack,successCallBack,timeout){var me=this;if(navigator&&navigator.geolocation){navigator.geolocation.getCurrentPosition(function(position){var pos={lat:position.coords.latitude,lng:position.coords.longitude,};me._map.setCenter(pos,12);if(successCallBack!==null){successCallBack();}},function(error){if(failCallBack!==null){failCallBack(error.message);}},{enableHighAccuracy:false,timeout:timeout,maximumAge:5000,});}else{if(failCallBack!==null){failCallBack();}}},openStationInformationDialog:function(stationId){var packet=this._map.markerCollection.getStationLatestPacket(stationId);if(packet==null){packet={station_id:stationId,id:null};} -this._emitEventListeners("station-name-clicked",packet);},openMarkerInfoWindow:function(markerId){var markerIdKey=this._map.markerCollection.getMarkerIdKey(markerId);if(this._map.markerCollection.isExistingMarker(markerIdKey)){var marker=this._map.markerCollection.getMarker(markerIdKey);this._map.openMarkerInfoWindow(marker);}},closeAnyOpenInfoWindow:function(){if(this._map!==null){var state=this._map.state;if(state.isInfoWindowOpen()){state.openInfoWindow.hide();}}},setTimeTravelTimestamp:function(ts,sendRequestToServer){if(ts!=0||this._map.state.endTimeTravelTimestamp!=null){sendRequestToServer=typeof sendRequestToServer!=="undefined"?sendRequestToServer:true;if(this._map.state.endTimeTravelTimestamp!=ts){if(ts!=null&&ts!=0&&ts!=""){this._map.state.endTimeTravelTimestamp=ts;}else{this._map.state.endTimeTravelTimestamp=null;} -if(sendRequestToServer){trackdirect.services.callbackExecutor.add(this,this._handleTimeChange,[]);}} -this._emitEventListeners("time-travel-changed",ts);this._emitEventListeners("mode-changed");}},getTimeTravelTimestamp:function(){return this._map.state.endTimeTravelTimestamp;},setTimeLength:function(time,sendRequestToServer){sendRequestToServer=typeof sendRequestToServer!=="undefined"?sendRequestToServer:true;if(this._map.state.getTimeLength()/60!=time){this._map.state.setTimeLength(time*60);if(sendRequestToServer){trackdirect.services.callbackExecutor.add(this,this._handleTimeChange,[]);}} -this._emitEventListeners("time-length-changed",time);this._updateMinZoomLevels();},togglePHGCircles:function(){var state=this._map.state;if(state.showPHGCircles==0){state.showPHGCircles=1;}else if(state.showPHGCircles==1){state.showPHGCircles=2;}else{state.showPHGCircles=0;} -this._map.showHidePHGCircles();},toggleRNGCircles:function(){var state=this._map.state;if(state.showRNGCircles==0){state.showRNGCircles=1;}else if(state.showRNGCircles==1){state.showRNGCircles=2;}else{state.showRNGCircles=0;} -this._map.showHideRNGCircles();},toggleStationaryPositions:function(){if(this.isStationaryMarkersVisible()){this._map.state.isStationaryMarkersVisible=false;}else{this._map.state.isStationaryMarkersVisible=true;} -this._map.showHideMarkers();},toggleUnknownPositions:function(){if(this.isUnknownMarkersVisible()){this._map.state.isUnknownMarkersVisible=false;}else{this._map.state.isUnknownMarkersVisible=true;} -this._map.showHideMarkers();},toggleOgflymPositions:function(){if(this.isOgflymMarkersVisible()){this._map.state.isOgflymMarkersVisible=false;}else{this._map.state.isOgflymMarkersVisible=true;} -this._map.showHideMarkers();},toggleInternetPositions:function(){if(this.isInternetMarkersVisible()){this._map.state.isInternetMarkersVisible=false;}else{this._map.state.isInternetMarkersVisible=true;} -this._map.showHideMarkers();},toggleCwopPositions:function(){if(this.isCwopMarkersVisible()){this._map.state.isCwopMarkersVisible=false;}else{this._map.state.isCwopMarkersVisible=true;} -this._map.showHideMarkers();},toggleGhostPositions:function(){if(this.isGhostMarkersVisible()){this._map.state.isGhostMarkersVisible=false;}else{this._map.state.isGhostMarkersVisible=true;} -this._map.showHideMarkers();},isGhostMarkersVisible:function(){return this._map.state.isGhostMarkersVisible;},isCwopMarkersVisible:function(){return this._map.state.isCwopMarkersVisible;},isInternetMarkersVisible:function(){return this._map.state.isInternetMarkersVisible;},isStationaryMarkersVisible:function(){return this._map.state.isStationaryMarkersVisible;},setVisibleSymbols:function(symbols){this._map.state.visibleSymbols=symbols;this._map.showHideMarkers();},addVisibleSymbol:function(symbol){this._map.state.visibleSymbols.push(symbol);this._map.showHideMarkers();},removeVisibleSymbol:function(symbol){var indexToRemove=null;for(var i=0;i<this._map.state.visibleSymbols.length;i++){if(this._map.state.visibleSymbols[i][0]==symbol[0]&&this._map.state.visibleSymbols[i][1]==symbol[1]){indexToRemove=i;break;}} -if(indexToRemove!==null){this._map.state.visibleSymbols.splice(indexToRemove,1);} -this._map.showHideMarkers();},getVisibleSymbols:function(){return this._map.state.visibleSymbols;},isUnknownMarkersVisible:function(){return this._map.state.isUnknownMarkersVisible;},isOgflymMarkersVisible:function(){return this._map.state.isOgflymMarkersVisible;},handleFilterStationRequest:function(stationId,filterLinkElementClass){filterLinkElementClass=typeof filterLinkElementClass!=="undefined"?filterLinkElementClass:null;if(this._map.state.filterStationIds.length>0&&this._map.state.filterStationIds.indexOf(stationId)>-1){this.stopFilterOnStationId(stationId);if(filterLinkElementClass!==null){$("."+filterLinkElementClass).html("Filter");}}else{this.filterOnStationId(stationId);if(filterLinkElementClass!==null){$("."+filterLinkElementClass).html("Unfilter");}}},handleTrackStationRequest:function(stationId,trackLinkElementClass){stationId=typeof stationId!=="undefined"?stationId:0;trackLinkElementClass=typeof trackLinkElementClass!=="undefined"?trackLinkElementClass:null;if(this._map.state.getTrackStationId()!==null&&(stationId===0||this._map.state.getTrackStationId()==stationId)){if(trackLinkElementClass!==null){$("."+trackLinkElementClass).html("Track");}else if(this._map.state.openInfoWindow!==null){this._map.state.openInfoWindow.hide();} -this.stopTrackStation();}else if(stationId!==0){if(trackLinkElementClass!==null){$("."+trackLinkElementClass).html("Untrack");} -var packet=this._map.markerCollection.getStationLatestPacket(stationId);if(packet!==null){var stationName=packet.station_name;if(packet.sender_name!=packet.station_name){stationName=packet.station_name+" ("+packet.sender_name+")";} -this.trackStation(stationId,stationName,true);}}},_initSettings:function(){this.settings={animate:true,defaultMinZoomForMarkerLabel:11,defaultMinZoomForMarkerPrevPosition:11,defaultMinZoomForMarkerTail:9,defaultMinZoomForMarkers:8,minZoomForMarkerLabel:11,minZoomForMarkerPrevPosition:11,minZoomForMarkerTail:9,minZoomForMarkers:8,markerSymbolBaseDir:"/symbols/",imagesBaseDir:"/images/",defaultCurrentZoom:11,defaultCurrentZoomMobile:11,dateFormat:"L LTSZ",dateFormatNoTimeZone:"L LTS",host:"www.aprsdirect.com",baseUrl:"https://www.aprsdirect.com",defaultTimeLength:60,symbolsToScale:[],primarySymbolWithNoDirectionPolyline:[87,64,95],alternativeSymbolWithNoDirectionPolyline:[40,42,64,74,84,85,96,98,101,102,112,116,119,121,123,],};},_parseOptions:function(options){if(typeof options["cordinatesContainerElementId"]!==undefined){this._cordinatesContainerElementId=options["cordinatesContainerElementId"];} -if(typeof options["statusContainerElementId"]!==undefined){this._statusContainerElementId=options["statusContainerElementId"];} -if(typeof options["isMobile"]!==undefined){this.isMobile=options["isMobile"];} -if(typeof options["coverageDataUrl"]!==undefined){this.coverageDataUrl=options["coverageDataUrl"];} -if(typeof options["coveragePercentile"]!==undefined){this.coveragePercentile=options["coveragePercentile"];} -if(typeof options["time"]!==undefined){this._time=options["time"];} -if(typeof options["timetravel"]!==undefined){this._timetravel=options["timetravel"];} -if(typeof options["center"]!==undefined){this._center=options["center"];} -if(typeof options["zoom"]!==undefined){this._zoom=options["zoom"];} -if(typeof options["maptype"]!==undefined){this._maptype=options["maptype"];} -if(typeof options["mid"]!==undefined){this._mid=options["mid"];} -if(typeof options["filters"]!==undefined&&options["filters"]!==null){for(var i in options["filters"]){if(options["filters"][i]!==null&&options["filters"][i]!=""){this._filters[i]=options["filters"][i];}}} -if(typeof options["disableLocationChangeOnFilterResponse"]!==undefined&&options["disableLocationChangeOnFilterResponse"]){this._doNotChangeLocationOnFilterResponse=true;} -if(typeof options["defaultMinZoomForMarkerLabel"]!==undefined&&options["defaultMinZoomForMarkerLabel"]!=null){this.settings.defaultMinZoomForMarkerLabel=options["defaultMinZoomForMarkerLabel"];} -if(typeof options["defaultMinZoomForMarkerPrevPosition"]!==undefined&&options["defaultMinZoomForMarkerPrevPosition"]!=null){this.settings.defaultMinZoomForMarkerPrevPosition=options["defaultMinZoomForMarkerPrevPosition"];} -if(typeof options["defaultMinZoomForMarkerTail"]!==undefined&&options["defaultMinZoomForMarkerTail"]!=null){this.settings.defaultMinZoomForMarkerTail=options["defaultMinZoomForMarkerTail"];} -if(typeof options["defaultMinZoomForMarkers"]!==undefined&&options["defaultMinZoomForMarkers"]!=null){this.settings.defaultMinZoomForMarkers=options["defaultMinZoomForMarkers"];} -if(typeof options["animate"]!==undefined&&options["animate"]!=null){this.settings.animate=options["animate"];} -if(typeof options["host"]!==undefined&&options["host"]!=null){this.settings.host=options["host"];this.settings.baseUrl=this._getMapBaseUrl(options["host"]);}else{this.settings.baseUrl=this._getMapBaseUrl();} -if(typeof options["defaultTimeLength"]!==undefined&&options["defaultTimeLength"]!=null){this.settings.defaultTimeLength=options["defaultTimeLength"];} -if(typeof options["symbolsToScale"]!==undefined&&options["symbolsToScale"]!==null){this.settings.symbolsToScale=options["symbolsToScale"];} -this._initDefaultLocation(options);},_initDefaultLocation:function(options){if(typeof options["defaultLatitude"]!=="undefined"&&typeof options["defaultLongitude"]!=="undefined"){this._defaultLatitude=options["defaultLatitude"];this._defaultLongitude=options["defaultLongitude"];}else{this._defaultLatitude=0;this._defaultLongitude=0;}},_initTime:function(){var filterMode=false;if("sid"in this._filters||"sidlist"in this._filters||"sname"in this._filters||"snamelist"in this._filters){filterMode=true;} -if(this._time!=null&&this._isValidTime(this._time,filterMode)){this.setTimeLength(this._time,false);}else{this.setTimeLength(this.settings.defaultTimeLength,false);} -now=new Date();if(this._timetravel!=null&&this._timetravel>=0&&this._timetravel<=now.getTime()/1000){this.setTimeTravelTimestamp(this._timetravel,false);} -this._updateMinZoomLevels();},_mapInit:function(options){if("sid"in this._filters||"sidlist"in this._filters||"sname"in this._filters||"snamelist"in this._filters){this._waitForFilterResponse=true;if(window.location.href.indexOf("/center/")>=0){this._doNotChangeLocationOnFilterResponseTmp=true;}} -var tdMapOptions=this._getMapInitOptions(options);var me=this;$(document).ready(function(){me._map=new trackdirect.models.Map(me._mapElementId,tdMapOptions);me._markerCreator=new trackdirect.MarkerCreator(me._map);if(typeof options["useImperialUnit"]!=="undefined"&&options["useImperialUnit"]==true){me.enableImperialUnits();} -me._emitEventListeners("map-created");});},_getMapInitOptions:function(options){var center=this._getMapInitCenter();var tdMapOptions={zoom:this._getMapInitZoom(),maptype:this._getMapInitMapType(),cordinatesContainer:this._cordinatesContainerElementId,defaultLatitude:this._defaultLatitude,defaultLongitude:this._defaultLongitude,initCenter:center,mid:this._getMapInitMid(),};if("supportedMapTypes"in options){tdMapOptions["supportedMapTypes"]=options["supportedMapTypes"];} -if("mapboxGLStyle"in options){tdMapOptions["mapboxGLStyle"]=options["mapboxGLStyle"];} -if("mapboxGLAccessToken"in options){tdMapOptions["mapboxGLAccessToken"]=options["mapboxGLAccessToken"];} -if("mapboxGLAttribution"in options){tdMapOptions["mapboxGLAttribution"]=options["mapboxGLAttribution"];} -return tdMapOptions;},_getMapInitCenter:function(){if(this._center!=null){var centerParts=this._center.split(",");if(centerParts.length==2&&this._isValidLatitude(centerParts[0])&&this._isValidLongitude(centerParts[1])){return{lat:parseFloat(centerParts[0]),lng:parseFloat(centerParts[1]),};}} -return null;},_getMapInitZoom:function(){var zoom=null;if(this._zoom!=null&&this._isValidZoom(this._zoom)){zoom=this._zoom;} -return zoom;},_getMapInitMid:function(){var mid=null;if(this._mid!=null){mid=this._mid;} -return mid;},_getMapInitMapType:function(){var maptype=null;if(this._maptype!=null){maptype=this._maptype;} -return maptype;},_initFilterUrlRequest:function(){if("sid"in this._filters){stationId=this._filters["sid"];if(isNumeric(stationId)){this.filterOnStationId(stationId);}}else if("sname"in this._filters){stationName=this._filters["sname"];if(stationName!=""){this.filterOnStationName(stationName);}}else if("sidlist"in this._filters){stationIdArray=this._filters["sidlist"].split(",");var isValid=true;for(var i=0;i<stationIdArray.length;i++){if(!isNumeric(stationIdArray[i])){isValid=false;}} -if(isValid){this.filterOnStationId(stationIdArray);}}else if("snamelist"in this._filters){stationNameArray=this._filters["snamelist"].split(",");var isValid=true;for(var i=0;i<stationNameArray.length;i++){if(typeof stationNameArray[i]=="undefined"||stationNameArray[i]==""){isValid=false;}} -if(isValid){this.filterOnStationName(stationNameArray);}}else{return false;} -var me=this;this._filterTimeoutId=window.setTimeout(function(){if(me._waitForFilterResponse){me._waitForFilterResponse=false;trackdirect.services.callbackExecutor.add(me,me._sendPositionRequest,[]);}},5000);return true;},_isValidTime:function(time,filteredMode){if(isNumeric(time)){if(filteredMode&&time<=14400&&time>0){return true;}else if(filteredMode==false&&time<=1440&&time>0){return true;}} -return false;},_isValidZoom:function(zoom){if(isNumeric(zoom)){if(zoom<=21&&zoom>=0){return true;}} -return false;},_isValidLatitude:function(lat){if(isNumeric(lat)){if(lat<=90&&lat>=-90){return true;}} -return false;},_isValidLongitude:function(lng){if(isNumeric(lng)){if(lng<=180&&lng>=-180){return true;}} -return false;},_initMapListeners:function(){var me=this;this._map.addTdListener("change",function(){trackdirect.services.callbackExecutor.add(me,me._sendPositionRequest,[]);trackdirect.services.mapAttributionModifier.update(me._map);});this._map.addTdListener("moving",function(){trackdirect.services.callbackExecutor.addIfUnique(me,me._sendIdleRequest,[]);});this._map.addTdListener("station-tail-needed",function(stationId){me._websocket.doSendCompleteStationRequest(stationId,me._map.state.getTimeLength()/60,me.getTimeTravelTimestamp());});this._map.addTdListener("station-information",function(stationId){me.openStationInformationDialog(stationId);});},_initWebsocketListeners:function(){this._initWebsocketStateChangeListener();this._initWebsocketAprsPacketListener();this._initWebsocketPayloadDoneListener();this._initWebsocketFilterResponseListener();this._initWebsocketServerTimestampResponseListener();this._initWebsocketResetListener();},_initWebsocketStateChangeListener:function(){var me=this;this._websocket.addListener("state-change",function(){var callback=function(){me._handleWebsocketStateChange();};trackdirect.services.callbackExecutor.add(this,callback,[]);});},_initWebsocketAprsPacketListener:function(){var me=this;this._websocket.addListener("aprs-packet",function(packetData){var packet=new trackdirect.models.Packet(packetData);var queueTimestamp=Math.floor(Date.now()/1000);var callback=function(){var dequeueTimestamp=Math.floor(Date.now()/1000);if(dequeueTimestamp-queueTimestamp>5||!this.settings.animate){me._handleAprsPacket(packet,false);}else{me._handleAprsPacket(packet,true);}};trackdirect.services.callbackExecutor.add(me,callback,[]);});},_initWebsocketPayloadDoneListener:function(){var me=this;this._websocket.addListener("aprs-packet-payload-done",function(){var callback=function(){me._map.showNewMarkersInQueue(true);};trackdirect.services.callbackExecutor.add(this,callback,[]);});},_initWebsocketFilterResponseListener:function(){var me=this;this._websocket.addListener("filter-response",function(data){var callback=function(){me._handleFilterResponse(data);};trackdirect.services.callbackExecutor.add(this,callback,[]);});},_initWebsocketServerTimestampResponseListener:function(){var me=this;this._websocket.addListener("server-timestamp-response",function(data){var callback=function(){me._map.state.setServerCurrentTimestamp(data.timestamp);};trackdirect.services.callbackExecutor.add(this,callback,[]);if(me._map.getNumberOfNewMarkersToShow()>0){var callback2=function(){me._map.showNewMarkersInQueue(true);};trackdirect.services.callbackExecutor.addIfUnique(this,callback2,[]);}});},_initWebsocketResetListener:function(){var me=this;this._websocket.addListener("reset",function(){trackdirect.services.callbackExecutor.add(me._map,me._map.resetAllMarkers,[]);});},_updateMinZoomLevels:function(){if(this._map.state.getTimeLength()/60>720){trackdirect.settings.minZoomForMarkerPrevPosition=trackdirect.settings.defaultMinZoomForMarkerPrevPosition+1;trackdirect.settings.minZoomForMarkerTail=trackdirect.settings.defaultMinZoomForMarkerTail+1;trackdirect.settings.minZoomForMarkerLabel=trackdirect.settings.defaultMinZoomForMarkerLabel+1;trackdirect.settings.minZoomForMarkers=trackdirect.settings.defaultMinZoomForMarkers;}else{trackdirect.settings.minZoomForMarkerPrevPosition=trackdirect.settings.defaultMinZoomForMarkerPrevPosition;trackdirect.settings.minZoomForMarkerTail=trackdirect.settings.defaultMinZoomForMarkerTail;trackdirect.settings.minZoomForMarkerLabel=trackdirect.settings.defaultMinZoomForMarkerLabel;trackdirect.settings.minZoomForMarkers=trackdirect.settings.defaultMinZoomForMarkers;}},_handleTimeChange:function(){this._updateMinZoomLevels();this._map.resetAllMarkers();this._websocket.clearLastSentPositionRequest();trackdirect.services.callbackExecutor.add(this,this._sendPositionRequest,[]);this._emitEventListeners("mode-changed");},_handleFilterResponse:function(data){if(this._filterTimeoutId!==null){clearTimeout(this._filterTimeoutId);this._filterTimeoutId=null;} -if(data.length==0){this._handleEmptyFilterResponse();}else{this._handleNonEmptyFilterResponse(data);}},_unMarkMissingStationsAsFiltered:function(data){var filterStationIds=this._map.state.getFilterStationIds();for(var key in filterStationIds){var stationId=filterStationIds[key];var foundStation=false;for(var i=0;i<data.length;i++){var packetData=data[i];if(packetData.station_id==stationId&&packetData["related"]==0){foundStation=true;}} -if(!foundStation){this._unMarkStationAsFiltered(stationId);}}},_unMarkStationAsFiltered:function(stationId){var map=this._map;var index=map.state.filterStationIds.indexOf(stationId);if(index>-1){map.state.filterStationIds.splice(index,1);var filterLinkElementClass="filterStationLink"+stationId;$("."+filterLinkElementClass).html("Filter");for(var markerIdKey in map.markerCollection.getStationMarkerIdKeys(stationId)){var marker=this._map.markerCollection.getMarker(markerIdKey);if(marker!==null){marker.hideCompleteMarker();}}}},_getNumberOfUniqeStationsInArray:function(data){var numberOfStationPackets=0;for(var i=0;i<data.length;i++){var packetData=data[i];if(packetData["related"]==0){numberOfStationPackets++;}} -return numberOfStationPackets;},_trackStationInArray:function(data,onlyTrackRecentPackets){if(this._getNumberOfUniqeStationsInArray(data)==1){for(var i=0;i<data.length;i++){var packet=new trackdirect.models.Packet(data[i]);if(packet["related"]==0){this.trackStation(packet.station_id,escapeHtml(packet.getStationName()),false,onlyTrackRecentPackets);}}}},_addFilterResponsePacketsToMap:function(data){var tryToShowPacket=this._isAnyPacketInArrayOlderThanCurrentLimit(data);for(var i=0;i<data.length;i++){var packet=new trackdirect.models.Packet(data[i]);if(packet["related"]==0){this._markStationAsFiltered(packet.station_id);} -var markerIdKey=this._markerCreator.addPacket(packet,tryToShowPacket);var marker=this._map.markerCollection.getMarker(markerIdKey);if(marker!==null){marker.markToBeOverWritten();}}},_markStationAsFiltered:function(stationId){var map=this._map;if(map.state.filterStationIds.indexOf(stationId)==-1){map.state.filterStationIds.push(stationId);} -var filterLinkElementClass="filterStationLink"+stationId;$("."+filterLinkElementClass).html("Unfilter");for(var markerIdKey in map.markerCollection.getStationMarkerIdKeys(stationId)){var marker=this._map.markerCollection.getMarker(markerIdKey);if(marker!==null){marker.showCompleteMarker();}}},_handleNonEmptyFilterResponse:function(data){var isFilterModeNew=!this.isFilteredMode();this._map.activateFilteredMode();this._waitForFilterResponse=false;if(isFilterModeNew){this._map.resetAllMarkers();this._emitEventListeners("mode-changed");}else{this._unMarkMissingStationsAsFiltered(data);} -this._addFilterResponsePacketsToMap(data);var packets=[];for(var i=0;i<data.length;i++){packets.push(new trackdirect.models.Packet(data[i]));} -this._emitEventListeners("filter-changed",packets);if(isFilterModeNew){var onlyTrackRecentPackets=true;if(!this._doNotChangeLocationOnFilterResponse&&!this._doNotChangeLocationOnFilterResponseTmp){onlyTrackRecentPackets=false;this._setFilteredMapBounds(data);} -this._doNotChangeLocationOnFilterResponseTmp=false;this._trackStationInArray(data,onlyTrackRecentPackets);this._emitEventListeners("filter-new");} -trackdirect.services.callbackExecutor.add(this,this._requestFilteredUpdate,[]);},_requestFilteredUpdate:function(){this._websocket.clearLastSentPositionRequest();this._setWebsocketStateLoading(false);this._websocket.doSendNewPositionRequest(90,180,-90,-180,this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp(),false);},_handleEmptyFilterResponse:function(){this._deactivateFiltered(true);this._waitForFilterResponse=false;},_isAnyPacketInArrayOlderThanCurrentLimit:function(data){for(var i=0;i<data.length;i++){var packetData=data[i];if(packetData["related"]==0){if(packetData.timestamp<packetData.requested_timestamp+60){return true;} -if(packetData["source"]==0||packetData["source_id"]==0){return true;}}} -return false;},_setFilteredMapBounds:function(data){if(data.length==1){this._map.setCenter({lat:parseFloat(data[0].latitude),lng:parseFloat(data[0].longitude),},12);}else{var positions=[];for(var i=0;i<data.length;i++){var packetData=data[i];if(packetData["related"]==0){positions.push({lat:parseFloat(packetData.latitude),lng:parseFloat(packetData.longitude),});}} -this._map.fitBounds(positions);if(this._map.getZoom()>12){this._map.setZoom(12);}}},_handleAprsPacket:function(packet,animate){var markerIdKey=this._markerCreator.addPacket(packet,true);if(markerIdKey!==null){var highlight=false;var autoRender=false;var marker=this._map.markerCollection.getMarker(markerIdKey);if(animate&&packet.db==0&&packet.station_name==packet.sender_name&&marker.shouldMarkerBeVisible()&&(this.isFilteredMode()||this._isPacketOnMap(packet))){highlight=true;var tdTransmitAnimation=new trackdirect.models.TransmitAnimation(marker,this._map);tdTransmitAnimation.show();} -if(packet.realtime==1&&animate){autoRender=true;}}},_linkifyPacketRaw:function(packet){if(typeof packet.raw!=="undefined"&&typeof packet.raw=="string"){var raw=escapeHtml(packet.raw);var stationNameReplacement='<a href="#" onclick="trackdirect.focusOnMarkerId('+ -packet.marker_id+ -'); return false;">'+ -escapeHtml(packet.sender_name)+ -"</a>";raw=raw.replaceAll(escapeHtml(packet.sender_name)+">",stationNameReplacement+">");for(var i=0;i<packet.station_id_path.length;i++){var relatedStationId=packet.station_id_path[i];var relatedStationLatestPacket=this._map.markerCollection.getStationLatestPacket(relatedStationId);if(relatedStationLatestPacket!==null){var relatedStationNameReplacement='<a href="#" onclick="trackdirect.focusOnStation('+ -relatedStationId+ -', true); return false;">'+ -escapeHtml(relatedStationLatestPacket.sender_name)+ -"</a>";var relatedStationSenderName=escapeHtml(relatedStationLatestPacket.sender_name);raw=raw.replaceAll(">"+relatedStationSenderName+":",">"+relatedStationNameReplacement+":");raw=raw.replaceAll(">"+relatedStationSenderName+",",">"+relatedStationNameReplacement+",");raw=raw.replaceAll(">"+relatedStationSenderName+"*",">"+relatedStationNameReplacement+"*");raw=raw.replaceAll(","+relatedStationSenderName+":",","+relatedStationNameReplacement+":");raw=raw.replaceAll(","+relatedStationSenderName+",",","+relatedStationNameReplacement+",");raw=raw.replaceAll(","+relatedStationSenderName+"*",","+relatedStationNameReplacement+"*");}} -raw=Autolinker.link(raw,{newWindow:true});return raw;} -return"";},_isPacketOnMap:function(packet){if(packet.latitude<=this._map.getNorthEastLat()&&packet.latitude>=this._map.getSouthWestLat()){if(packet.longitude<=this._map.getNorthEastLng()&&packet.longitude>=this._map.getSouthWestLng()){return true;}} -return false;},_handleWebsocketStateChange:function(){switch(this._websocket.getState()){case this._websocket.State.CONNECTING:this._setWebsocketStateConnecting();break;case this._websocket.State.CONNECTED:this._setWebsocketStateConnected();trackdirect.services.callbackExecutor.add(this,this._sendPositionRequest,[]);break;case this._websocket.State.CLOSED:case this._websocket.State.ERROR:this._setWebsocketStateError();break;case this._websocket.State.LOADING:this._setWebsocketStateLoading(true,false);break;case this._websocket.State.LOADING_DONE:this._setWebsocketStateLoadingDone();break;case this._websocket.State.LISTENING_APRSIS:this._setWebsocketStateAprsISConnected();break;case this._websocket.State.CONNECTING_APRSIS:this._setWebsocketStateAprsISConnecting();break;case this._websocket.State.IDLE:this._setWebsocketStateIdle();break;case this._websocket.State.INACTIVE:this._setWebsocketStateInactive();break;}},_setWebsocketStateConnecting:function(){if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Connecting").css("color","blue");}},_setWebsocketStateConnected:function(){this._map.resetAllMarkers();if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Connected").css("color","green");}},_setWebsocketStateError:function(){if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Disconnected").css("color","red");} -this._map.resetAllMarkers();this._deactivateFiltered(false);var me=this;if(confirm("You have been disconnected, this can be caused by a network error, by the timeout limit or if maintenance occurs while you’re logged in. Do you want to reconnect?")){me._websocket=new trackdirect.Websocket(me._wsServerUrl);me._initWebsocketListeners();trackdirect.services.callbackExecutor.add(me,me._sendPositionRequest,[]);}},_setWebsocketStateLoading:function(isStateConfirmed,showOnMobile){isStateConfirmed=typeof isStateConfirmed!=="undefined"?isStateConfirmed:true;showOnMobile=typeof showOnMobile!=="undefined"?showOnMobile:true;if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html('Loading <i class="fa fa-spinner fa-spin" style="font-size:14px"></i>').css("color","green");}},_setWebsocketStateLoadingDone:function(){if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Complete").css("color","green");}},_setWebsocketStateAprsISConnected:function(){if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Connected to APRS feed").css("color","green");}},_setWebsocketStateAprsISConnecting:function(){if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Waiting for APRS feed").css("color","green");}},_setWebsocketStateIdle:function(){if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Idle").css("color","green");}},_setWebsocketStateInactive:function(){if(this._statusContainerElementId!==null){$("#"+this._statusContainerElementId).html("Inactive").css("color","orange");} -this._websocket.close();this._map.resetAllMarkers();var me=this;if(confirm("No activity for a long time, map updates has been stopped. Do you want to reconnect?")){me._websocket=new trackdirect.Websocket(me._wsServerUrl);me._initWebsocketListeners();trackdirect.services.callbackExecutor.add(me,me._sendPositionRequest,[]);}},_sendPositionRequest:function(){if(!this._waitForFilterResponse&&this._map.isMapReady()){if(!this.isFilteredMode()){if(this._map.getZoom()<trackdirect.settings.minZoomForMarkers){this._websocket.doSendNewPositionRequest(0,0,0,0,this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp(),false);}else if(this._map.getZoom()>=trackdirect.settings.minZoomForMarkerTail){this._websocket.doSendNewPositionRequest(this._map.getNorthEastLat(),this._map.getNorthEastLng(),this._map.getSouthWestLat(),this._map.getSouthWestLng(),this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp(),false);}else{this._websocket.doSendNewPositionRequest(this._map.getNorthEastLat(),this._map.getNorthEastLng(),this._map.getSouthWestLat(),this._map.getSouthWestLng(),this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp(),true);}}else{this._websocket.doSendNewPositionRequest(90,180,-90,-180,this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp(),false);} -var data={center:this._map.getCenterLiteral(),zoom:this._map.getZoom(),};this._emitEventListeners("position-request-sent",data);}},_sendIdleRequest:function(){if(this._websocket.isPositionRequestSent()){this._websocket.doSendNewPositionRequest(0,0,0,0,this._map.state.getTimeLength()/60,this.getTimeTravelTimestamp(),false);}},_deactivateFiltered:function(sendNewRequest){this.setTimeTravelTimestamp(null);this._map.resetAllMarkers();if(this._map.state.openInfoWindow!==null){this._map.state.openInfoWindow.hide();} -this._map.deactivateFilteredMode();this.stopTrackStation();this.setTimeLength(this.settings.defaultTimeLength,false);this._emitEventListeners("filter-changed",[]);this._emitEventListeners("filter-stopped");if(sendNewRequest){trackdirect.services.callbackExecutor.add(this,this._sendPositionRequest,[]);} -this._emitEventListeners("mode-changed");},_getMapBaseUrl:function(host){host=typeof host!=="undefined"?host:"";host=host.replace("http://","");host=host.replace("https://","");if(host==""){host=window.location.host;} -if(location.protocol==="https:"){return"https://"+host;}else{return"http://"+host;}},_emitEventListeners:function(event,arg){if(event in this._eventListeners){for(var i=0;i<this._eventListeners[event].length;i++){this._eventListeners[event][i](arg);}} -if(event in this._eventListenersOnce){for(var i=0;i<this._eventListenersOnce[event].length;i++){this._eventListenersOnce[event][i](arg);this._eventListenersOnce[event].splice(i,1);i--;}} -if(event=="trackdirect-init-done"){this._trackdirectInitDone=true;} -if(event=="map-created"){this._mapCreated=true;}},}; -trackdirect.services.symbolPathFinder={getFilePath:function(symbolTable,symbol,course,width,height,scaleWidth,scaleHeight){if(typeof symbol!=="undefined"&&typeof symbolTable!=="undefined"&&symbol!==null&&symbolTable!==null&&symbol.length>=1&&symbolTable.length>=1){var symbolAsciiValue=symbol.charCodeAt(0);var symbolTableAsciiValue=symbolTable.charCodeAt(0);}else{var symbolAsciiValue=125;var symbolTableAsciiValue=47;} -var sizeStrValue="";if(width!==null&&height!==null){sizeStrValue="-"+width+"x"+height;} -var scaleStrValue=this._getIconFilePathScalePart(scaleWidth,scaleHeight);var courseStrValue=this._getIconFilePathCoursePart(course);var url=trackdirect.settings.markerSymbolBaseDir+ -"symbol-"+ -symbolAsciiValue+ -"-"+ -symbolTableAsciiValue+ -courseStrValue+ -sizeStrValue+ -scaleStrValue+ -".png";return trackdirect.settings.baseUrl+url;},_getIconFilePathCoursePart:function(course){var courseStrValue="";if(course!==null){var courseValue=Math.round(parseInt(course)/10)*10;while(courseValue>360){courseValue=courseValue-360;} -while(courseValue<0){courseValue=courseValue+360;} -courseStrValue="-"+courseValue;} -return courseStrValue;},_getIconFilePathScalePart:function(scaleWidth,scaleHeight){var scaleStrValue="";if(scaleWidth!==null&&scaleHeight!==null){if(isHighDensity()){scaleStrValue="-scale"+scaleWidth*2+"x"+scaleHeight*2;}else{scaleStrValue="-scale"+scaleWidth+"x"+scaleHeight;}} -return scaleStrValue;},}; -trackdirect.services.stationColorCalculator={_colors:["#3333ff","#9900cc","#006600","#cc0000",],_stationColorId:{},getColor:function(packet){var colorId=this.getColorId(packet);return this._colors[colorId];},getKmlColor(packet){var hex=this.getColor(packet);var result=/^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);if(result){return"FF"+result[3]+result[2]+result[1];} -return null;},getColorId:function(packet){if(packet.station_name in this._stationColorId){colorId=this._stationColorId[packet.station_name];return colorId;}else{var hash=this._simplehashStr(packet.station_name);var colorId=hash%this._colors.length;this._stationColorId[packet.station_name]=colorId;} -return colorId;},_simplehashStr:function(str){var hash=0;for(var i=0;i<str.length;i++){var charCode=str.charCodeAt(i);hash+=charCode;} -return hash;},}; -trackdirect.services.MapSectorCalculator={getMapSectors:function(bounds){var result=[];if(typeof google==="object"&&typeof google.maps==="object"){var maxLat=Math.ceil(bounds.getNorthEast().lat())+1;var minLat=Math.floor(bounds.getSouthWest().lat())-1;var maxLng=Math.ceil(bounds.getNorthEast().lng())+1;var minLng=Math.floor(bounds.getSouthWest().lng())-1;}else if(typeof L==="object"){var maxLat=Math.ceil(bounds.getNorthEast().lat)+1;var minLat=Math.floor(bounds.getSouthWest().lat)-1;var maxLng=Math.ceil(bounds.getNorthEast().lng)+1;var minLng=Math.floor(bounds.getSouthWest().lng)-1;} -if(maxLng<minLng){result=result.concat(trackdirect.services.MapSectorCalculator.getMapSectorsByInterval(minLat,maxLat,minLng,180.0));minLng=-180.0;} -result=result.concat(trackdirect.services.MapSectorCalculator.getMapSectorsByInterval(minLat,maxLat,minLng,maxLng));return result;},getMapSectorsByInterval:function(minLat,maxLat,minLng,maxLng){var result=[];var minAreaCode=this.getMapSector(minLat,minLng);var maxAreaCode=this.getMapSector(maxLat,maxLng);lngDiff=parseInt(Math.ceil(maxLng))-parseInt(Math.ceil(minLng));var areaCode=minAreaCode;while(areaCode<=maxAreaCode){if(areaCode%10==5){result.push(areaCode);}else{result.push(areaCode);result.push(areaCode+5);} -for(var i=1;i<=lngDiff;i++){if(areaCode%10==5){result.push(areaCode+10*i-5);result.push(areaCode+10*i);}else{result.push(areaCode+10*i);result.push(areaCode+10*i+5);}} -areaCode=areaCode+20000;} -return result;},getMapSector:function(latitude,longitude){var lat=this._getMapSectorLatRepresentation(latitude);var lng=this._getMapSectorLngRepresentation(longitude);return lat+lng;},_getMapSectorLatRepresentation:function(latitude){var lat=parseInt(Math.floor(latitude))+90;var latDecimalPart=latitude-Math.floor(latitude);if(latDecimalPart<0.2){lat=lat*10+0;}else if(latDecimalPart<0.4){lat=lat*10+2;}else if(latDecimalPart<0.6){lat=lat*10+4;}else if(latDecimalPart<0.8){lat=lat*10+6;}else{lat=lat*10+8;} -lat=lat*10000;return lat;},_getMapSectorLngRepresentation:function(longitude){lng=parseInt(Math.floor(longitude))+180;lngDecimalPart=longitude-Math.floor(longitude);if(lngDecimalPart<0.5){lng=lng*10+0;}else{lng=lng*10+5;} -return lng;},}; -trackdirect.services.mapAttributionModifier={_hereBaseAttributionData:null,_hereAerialAttributionData:null,_latestAttribution:null,_isHereInitialized:false,_eventListeners:{},_eventListenersOnce:{},update:function(map){if(this._isHereTileProvider(map)){this.updateHereAttribution(map);}else if(this._latestAttribution!=null){this.setMapAttribution(map,"");}},updateHereAttribution:function(map){this._loadHereAttributionData(map);var me=this;var base=this._getMapTileBase(map);if(base=="base"){this.addListener("init-here-base",function(){var attribution=me._getHereAttributionString(map);me.setMapAttribution(map,attribution);},true);}else if(base=="aerial"){this.addListener("init-here-aerial",function(){var attribution=me._getHereAttributionString(map);me.setMapAttribution(map,attribution);},true);}},setMapAttribution:function(map,attribution){if(this._latestAttribution!=attribution){map.attributionControl.removeAttribution(this._latestAttribution);if(attribution!=""){map.attributionControl.addAttribution(attribution);}} -this._latestAttribution=attribution;},addListener:function(event,handler,execOnce){execOnce=typeof execOnce!=="undefined"?execOnce:false;if(execOnce){if(!(event in this._eventListenersOnce)){this._eventListenersOnce[event]=[];} -this._eventListenersOnce[event].push(handler);}else{if(!(event in this._eventListeners)){this._eventListeners[event]=[];} -this._eventListeners[event].push(handler);} -if(event=="init-here-base"&&this._isHereBaseInitialized){this._emitEventListeners("init-here-base");} -if(event=="init-here-aerial"&&this._isHereAerialInitialized){this._emitEventListeners("init-here-aerial");}},_isHereTileProvider:function(map){var tileLayer=map.getLeafletTileLayer();if(tileLayer!==null&&typeof tileLayer._url!=="undefined"&&tileLayer._url.indexOf("here.com")>=0){return true;} -return false;},_getMapTileOptions:function(map){var tileLayer=map.getLeafletTileLayer();if(tileLayer!==null&&typeof tileLayer.options!=="undefined"){return tileLayer.options;} -return null;},_getMapTileVariant:function(map){var options=this._getMapTileOptions(map);if(options.variant!=="undefined"){return options.variant;} -return null;},_getMapTileInitialVariant:function(map){var mapVariant=this._getMapTileVariant(map);var dotIndex=mapVariant.indexOf(".");if(dotIndex>=0){return mapVariant.substring(0,dotIndex);} -return mapVariant;},_getMapTileBase:function(map){var options=this._getMapTileOptions(map);if(options.base!=="undefined"){return options.base;} -return null;},_getHereAttributionString:function(map){var result=[];var mapBaseVariant=this._getMapTileInitialVariant(map);if(this._getMapTileBase(map)=="base"){var data=this._hereBaseAttributionData;}else if(this._getMapTileBase(map)=="aerial"){var data=this._hereAerialAttributionData;} -if(data!==null&&typeof data[mapBaseVariant]!=="undefined"){for(var i=0,len=data[mapBaseVariant].length;i<len;i++){var attributionArea=data[mapBaseVariant][i];if(parseInt(map.getZoom())>=parseInt(attributionArea.minLevel)&&parseInt(map.getZoom())<=parseInt(attributionArea.maxLevel)){if(typeof attributionArea.boxes==="undefined"||this._isAnyBoxVisible(attributionArea.boxes,map)){var attributionText='<span title="'+ -attributionArea.alt+ -'">'+ -attributionArea.label+ -"</span>";if(result.indexOf(attributionText)<0){result.push(attributionText);}}}}} -return result.join(", ");},_isAnyBoxVisible:function(boxes,map){if(typeof boxes!=="undefined"&&Array.isArray(boxes)){for(var i=0,len=boxes.length;i<len;i++){var box=boxes[i];if(Array.isArray(box)&&box.length>=4){var boxBounds=L.latLngBounds(L.latLng(parseFloat(box[0]),parseFloat(box[1])),L.latLng(parseFloat(box[2]),parseFloat(box[3])));if(boxBounds.isValid()&&boxBounds.intersects(map.getBounds())){return true;}}}} -return false;},_loadHereAttributionData:function(map){var options=this._getMapTileOptions(map);var base=this._getMapTileBase(map);if((this._hereBaseAttributionData===null&&base=="base")||(this._hereAerialAttributionData===null&&base=="aerial")){var me=this;jQuery.ajax({url:"https://1."+ -base+ -".maps.api.here.com/maptile/2.1/copyright/"+ -options.mapID+ -"?app_id="+ -options.app_id+ -"&app_code="+ -options.app_code,type:"GET",dataType:"json",timeout:5000,success:function(result){if(base=="base"){me._hereBaseAttributionData=result;me._isHereBaseInitialized=true;me._emitEventListeners("init-here-base");}else if(base=="aerial"){me._hereAerialAttributionData=result;me._isHereAerialInitialized=true;me._emitEventListeners("init-here-aerial");}},error:function(xhr){console.log("Failed to load map copyright data");},});}},_emitEventListeners:function(event,arg){if(event in this._eventListeners){for(var i=0;i<this._eventListeners[event].length;i++){this._eventListeners[event][i](arg);}} -if(event in this._eventListenersOnce){var eventListenersOnce=this._eventListenersOnce[event].splice(0);this._eventListenersOnce[event]=[];for(var i=0;i<eventListenersOnce.length;i++){eventListenersOnce[i](arg);}}},}; -trackdirect.services.imperialConverter={convertKilometerToMile:function(value){return value*0.621371192;},convertMpsToMph:function(value){return value*2.23693629;},convertMeterToFeet:function(value){return value*3.2808399;},convertMeterToYard:function(value){return value*1.0936133;},convertMmToInch:function(value){return value*0.0393700787;},convertCelciusToFahrenheit:function(value){return value*(9/5)+32;},convertMbarToMmhg:function(value){return value*0.75006375541921;},}; -trackdirect.services.distanceCalculator={getDistance:function(p1,p2){var R=6378137;var dLat=this._radians(p2.lat-p1.lat);var dLong=this._radians(p2.lng-p1.lng);var a=Math.sin(dLat/2)*Math.sin(dLat/2)+ -Math.cos(this._radians(p1.lat))*Math.cos(this._radians(p2.lat))*Math.sin(dLong/2)*Math.sin(dLong/2);var c=2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a));var d=R*c;if(isNaN(d)){return null;}else{return d;}},getCenter:function(coords){var x=coords.map(function(a){return a.lat;});var y=coords.map(function(a){return a.lng;});var minX=Math.min.apply(null,x);var maxX=Math.max.apply(null,x);var minY=Math.min.apply(null,y);var maxY=Math.max.apply(null,y);return{lat:(minX+maxX)/2,lng:(minY+maxY)/2};},getPositionByDistance:function(latLng,course,distanceInMeters){var dist=distanceInMeters/1000;dist=dist/6371;var brng=(course*Math.PI)/180;var lat1=(latLng.lat*Math.PI)/180,lon1=(latLng.lng*Math.PI)/180;var lat2=Math.asin(Math.sin(lat1)*Math.cos(dist)+ -Math.cos(lat1)*Math.sin(dist)*Math.cos(brng));var lon2=lon1+ -Math.atan2(Math.sin(brng)*Math.sin(dist)*Math.cos(lat1),Math.cos(dist)-Math.sin(lat1)*Math.sin(lat2));if(isNaN(lat2)||isNaN(lon2))return null;var latitude=(lat2*180)/Math.PI;var longitude=(lon2*180)/Math.PI;return{lat:Math.round(latitude*100000)/100000,lng:Math.round(longitude*100000)/100000,};},getBearing:function(p1,p2){startLat=this._radians(p1.lat);startLong=this._radians(p1.lng);endLat=this._radians(p2.lat);endLong=this._radians(p2.lng);var dLong=endLong-startLong;var dPhi=Math.log(Math.tan(endLat/2.0+Math.PI/4.0)/ -Math.tan(startLat/2.0+Math.PI/4.0));if(Math.abs(dLong)>Math.PI){if(dLong>0.0){dLong=-(2.0*Math.PI-dLong);}else{dLong=2.0*Math.PI+dLong;}} -return(this._degrees(Math.atan2(dLong,dPhi))+360.0)%360.0;},_radians:function(n){return n*(Math.PI/180);},_degrees:function(n){return n*(180/Math.PI);},}; -trackdirect.services.dateFormatter={getDateString:function(timestamp,includeTimeZone,includeTime,useLocalTimeZone){includeTimeZone=typeof includeTimeZone!=="undefined"?includeTimeZone:true;includeTime=typeof includeTime!=="undefined"?includeTime:true;useLocalTimeZone=typeof useLocalTimeZone!=="undefined"?useLocalTimeZone:true;var date=new Date(timestamp*1000);if(useLocalTimeZone){var theMoment=moment(date);}else{var theMoment=moment.utc(date);} -if(!theMoment.isValid()){return timestamp;} -if(includeTime){if(includeTimeZone){return theMoment.format("L LTSZ");}else{return theMoment.format("L LTS");}}else{return theMoment.format("L");}},getAgeString:function(timestamp){var delta=Math.abs(Math.floor(Date.now()/1000)-timestamp);var days=Math.floor(delta/86400);delta-=days*86400;var hours=Math.floor(delta/3600)%24;delta-=hours*3600;var minutes=Math.floor(delta/60)%60;delta-=minutes*60;var seconds=Math.floor(delta%60);var timeAgoList=[];if(days>1){timeAgoList.push(days+" days");}else if(days>0){timeAgoList.push(days+" day");} -if(hours>1){timeAgoList.push(hours+" hours");}else if(hours>0){timeAgoList.push(hours+" hour");} -if(minutes>1){timeAgoList.push(minutes+" minutes");}else if(minutes>0){timeAgoList.push(minutes+" minute");} -if(seconds==1){timeAgoList.push(seconds+" second");}else{timeAgoList.push(seconds+" seconds");} -if(timeAgoList.length>1){return(timeAgoList.slice(0,timeAgoList.length-1).join(", ")+ -" and "+ -timeAgoList[timeAgoList.length-1]);}else{return timeAgoList[timeAgoList.length-1];}},}; -if(!Date.now){Date.now=function(){return new Date().getTime();};} -function escapeRegExp(str){return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&");} -String.prototype.replaceAll=function(search,replacement){var target=this;return target.replace(new RegExp(escapeRegExp(search),"gi"),replacement);};function isNumeric(n){return!isNaN(parseFloat(n))&&isFinite(n);} -Number.prototype.mod=function(n){return((this%n)+n)%n;};function isDate(str){var d=new Date(str);var now=new Date();if(Object.prototype.toString.call(d)==="[object Date]"){if(isNaN(d.getTime())){return false;}else{if(d.getTime()>0){return true;}else{return false;}}}else{return false;}} -if(!Array.prototype.fill){Array.prototype.fill=function(value){if(this==null){throw new TypeError("this is null or not defined");} -var O=Object(this);var len=O.length>>>0;var start=arguments[1];var relativeStart=start>>0;var k=relativeStart<0?Math.max(len+relativeStart,0):Math.min(relativeStart,len);var end=arguments[2];var relativeEnd=end===undefined?len:end>>0;var final=relativeEnd<0?Math.max(len+relativeEnd,0):Math.min(relativeEnd,len);while(k<final){O[k]=value;k++;} -return O;};} -if(!Array.prototype.indexOf){Array.prototype.indexOf=function(elt ){var len=this.length;var from=Number(arguments[1])||0;from=from<0?Math.ceil(from):Math.floor(from);if(from<0)from+=len;for(;from<len;from++){if(from in this&&this[from]===elt)return from;} -return-1;};} -if(typeof String.prototype.endsWith!=="function"){String.prototype.endsWith=function(suffix){return this.indexOf(suffix,this.length-suffix.length)!==-1;};} -if(!String.prototype.trim){(function(){var rtrim=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;String.prototype.trim=function(){return this.replace(rtrim,"");};})();} -if(!Object.keys){Object.keys=function(obj){var keys=[],k;for(k in obj){if(Object.prototype.hasOwnProperty.call(obj,k)){keys.push(k);}} -return keys;};} -if(!Date.prototype.toISOString){(function(){function pad(number){var r=String(number);if(r.length===1){r="0"+r;} -return r;} -Date.prototype.toISOString=function(){return(this.getUTCFullYear()+ -"-"+ -pad(this.getUTCMonth()+1)+ -"-"+ -pad(this.getUTCDate())+ -"T"+ -pad(this.getUTCHours())+ -":"+ -pad(this.getUTCMinutes())+ -":"+ -pad(this.getUTCSeconds())+ -"."+ -String((this.getUTCMilliseconds()/1000).toFixed(3)).slice(2,5)+ -"Z");};})();} -function inIframe(){try{return window.self!==window.top;}catch(e){return true;}} -function isHighDensity(){return((window.matchMedia&&(window.matchMedia("only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)").matches||window.matchMedia("only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)").matches))||(window.devicePixelRatio&&window.devicePixelRatio>1.3));} -function escapeHtml(text){if(typeof text==="undefined"||text==null){return null;} -var map={"&":"&","<":"<",">":">",'"':""","'":"'",};return text.replace(/[&<>"']/g,function(m){return map[m];});} -trackdirect.services.callbackExecutor={settings:{minTimeBeforeSleep:30,},_running:false,_lastSleepTimestamp:0,_lastAddedUniqueCallback:null,_lowPriorityQueue:[],_normalPriorityQueue:[],_highPriorityQueue:[],add:function(thisObj,callback,argsArray){var callBackString=callback.toString()+":"+argsArray.toString();this._lastAddedUniqueCallback=callBackString;this._normalPriorityQueue.push(function(){callback.apply(thisObj,argsArray);trackdirect.services.callbackExecutor._next();});this.start();return this;},addIfUnique:function(thisObj,callback,argsArray){var callBackString=callback.toString()+":"+argsArray.toString();if(this._lastAddedUniqueCallback==callBackString){return this;} -this._lastAddedUniqueCallback=callBackString;this._normalPriorityQueue.push(function(){callback.apply(thisObj,argsArray);trackdirect.services.callbackExecutor._next();});this.start();return this;},addWithPriority:function(thisObj,callback,argsArray){this._highPriorityQueue.push(function(){callback.apply(thisObj,argsArray);trackdirect.services.callbackExecutor._next();});this.start();return this;},addWithLowPriority:function(thisObj,callback,argsArray){this._lowPriorityQueue.push(function(){callback.apply(thisObj,argsArray);trackdirect.services.callbackExecutor._next();});this.start();return this;},start:function(){if(!this._running){this._next();} -return this;},_next:function(){var secondsSinceLastSleep=Date.now()-this._lastSleepTimestamp;if(secondsSinceLastSleep>this.settings.minTimeBeforeSleep){this._lastSleepTimestamp=Date.now();var me=this;setTimeout(function(){me._dequeue();},1);}else{this._dequeue();}},_dequeue:function(){var shift=this._highPriorityQueue.shift();if(shift){this._running=true;shift();return;} -shift=this._normalPriorityQueue.shift();if(shift){this._running=true;shift();return;} -shift=this._lowPriorityQueue.shift();if(shift){this._running=true;shift();return;} -this._running=false;},}; -trackdirect.Websocket=function(wsServerUrl){this._wsServerUrl=wsServerUrl;this._init();this._state=this.State.CONNECTING;this._emitEventListeners("state-change");this._instance=new WebSocket(this._wsServerUrl);var me=this;this._instance.onopen=function(evt){me._onOpen(evt);};this._instance.onclose=function(evt){me._onClose(evt);};this._instance.onmessage=function(evt){me._onMessage(evt);};this._instance.onerror=function(evt){me._onError(evt);};};trackdirect.Websocket.prototype._init=function(){this._instance=null;this._eventListeners={};this._lastSentPositionRequest="";this._state=0;this._lastMessageTimestamp=null;this._queue=[];this._running=false;this._sendPositionRequestIntervalId=null;this.State={CONNECTING:0,CONNECTED:1,CLOSING:2,CLOSED:3,ERROR:4,LOADING:5,LOADING_DONE:6,LISTENING_APRSIS:7,CONNECTING_APRSIS:8,IDLE:9,INACTIVE:10,};};trackdirect.Websocket.prototype.send=function(data){this._instance.send(data);};trackdirect.Websocket.prototype.close=function(){this._instance.close();};trackdirect.Websocket.prototype.getState=function(){return this._state;};trackdirect.Websocket.prototype.clearLastSentPositionRequest=function(){this._lastSentPositionRequest="";};trackdirect.Websocket.prototype.isPositionRequestSent=function(){if(this._lastSentPositionRequest!=""){return true;}else{return false;}};trackdirect.Websocket.prototype.doSendFilterRequest=function(list,historyMinutes,referenceTime){var request={};request.payload_request_type=4;request.list=list;request.minutes=historyMinutes;if(referenceTime!=""){request.time=parseInt(referenceTime,10);}else{request.time=null;} -return this._addToSendQueue(request);};trackdirect.Websocket.prototype.doSendFilterRequestByName=function(namelist,historyMinutes,referenceTime){var request={};request.payload_request_type=8;request.namelist=namelist;request.minutes=historyMinutes;if(referenceTime!=""){request.time=parseInt(referenceTime,10);}else{request.time=null;} -return this._addToSendQueue(request);};trackdirect.Websocket.prototype.doSendCompleteStationRequest=function(stationId,historyMinutes,referenceTime){var request={};request.payload_request_type=7;request.station_id=stationId;request.minutes=historyMinutes;if(referenceTime!=""){request.time=parseInt(referenceTime,10);}else{request.time=null;} -return this._addToSendQueue(request);};trackdirect.Websocket.prototype.doSendStopFilterRequest=function(stationId){var request={};request.payload_request_type=6;request.station_id=stationId;return this._addToSendQueue(request);};trackdirect.Websocket.prototype.doSendNewPositionRequest=function(neLat,neLng,swLat,swLng,historyMinutes,referenceTime,onlyRequestLatestPacket){var request={};request.payload_request_type=1;request.neLat=neLat;request.neLng=neLng;request.swLat=swLat;request.swLng=swLng;request.minutes=historyMinutes;if(referenceTime!=""){request.time=parseInt(referenceTime,10);}else{request.time=null;} -if(onlyRequestLatestPacket){request.onlyLatestPacket=1;}else{request.onlyLatestPacket=0;} -var requestStr=JSON.stringify(request);if(requestStr!=this._lastSentPositionRequest){this._lastSentPositionRequest=requestStr;if(this._sendPositionRequestIntervalId!==null){clearInterval(this._sendPositionRequestIntervalId);} -if(this._addToSendQueue(request)){var me=this;this._sendPositionRequestIntervalId=window.setInterval(function(){request.payload_request_type=11;if(me._lastSentPositionRequest==requestStr){me._addToSendQueue(request);}},60*1000);return true;} -return false;}else{return true;}};trackdirect.Websocket.prototype.addListener=function(event,handler){if(!(event in this._eventListeners)){this._eventListeners[event]=[];} -this._eventListeners[event].push(handler);};trackdirect.Websocket.prototype._onOpen=function(evt){this._state=this.State.CONNECTING;this._emitEventListeners("state-change");};trackdirect.Websocket.prototype._onClose=function(evt){this._state=this.State.CLOSED;this._emitEventListeners("state-change");};trackdirect.Websocket.prototype._onError=function(evt){this._state=this.State.ERROR;this._emitEventListeners("state-change");};trackdirect.Websocket.prototype._onMessage=function(evt){this._lastMessageTimestamp=Math.floor(Date.now()/1000);var packet=JSON.parse(evt.data);trackdirect.services.callbackExecutor.add(this,this._handleMessage,[packet,]);};trackdirect.Websocket.prototype._handleMessage=function(packet){switch(packet.payload_response_type){case 1:this._emitEventListeners("aprs-packet",packet.data);this._emitEventListeners("aprs-packet-payload-done");break;case 2:for(i=0;typeof packet.data!=="undefined"&&i<packet.data.length;i++){this._emitEventListeners("aprs-packet",packet.data[i]);} -this._emitEventListeners("aprs-packet-payload-done");break;case 5:this._emitEventListeners("filter-response",packet.data);this._emitEventListeners("aprs-packet-payload-done");break;case 41:this._emitEventListeners("server-timestamp-response",packet.data);break;case 31:this._state=this.State.LISTENING_APRSIS;this._emitEventListeners("state-change");break;case 32:this._state=this.State.LOADING;this._emitEventListeners("state-change");break;case 33:this._state=this.State.IDLE;this._emitEventListeners("state-change");break;case 34:this._state=this.State.CONNECTING_APRSIS;this._emitEventListeners("state-change");break;case 35:this._state=this.State.LOADING_DONE;this._emitEventListeners("state-change");break;case 36:this._state=this.State.INACTIVE;this._emitEventListeners("state-change");this.clearLastSentPositionRequest();break;case 40:this._emitEventListeners("reset");break;case 42:this.clearLastSentPositionRequest();this._state=this.State.CONNECTED;this._emitEventListeners("state-change");break;} -return true;};trackdirect.Websocket.prototype._addToSendQueue=function(request){if(this.readyState>1){return false;} -var currentTs=Math.floor(Date.now()/1000);if(this._lastMessageTimestamp!==null&&this._lastMessageTimestamp<currentTs-60){this.close();return false;} -var me=this;this._queue.push(function(){var data=JSON.stringify(request);if(data!=null){me.send(data);} -me._dequeue();});this._start();return true;};trackdirect.Websocket.prototype._start=function(){if(!this._running){this._dequeue();}};trackdirect.Websocket.prototype._dequeue=function(){this._running=true;var me=this;setTimeout(function(){if(me._instance.readyState===1){var shift=me._queue.shift();if(shift){shift();}else{me._running=false;} -return;}else if(me._instance.readyState>1){me._running=false;return;}else{me._dequeue();}},5);};trackdirect.Websocket.prototype._emitEventListeners=function(event,arg){if(typeof this._eventListeners!=="undefined"&&event in this._eventListeners){for(var i=0;i<this._eventListeners[event].length;i++){this._eventListeners[event][i](arg);}}}; -trackdirect.models.TransmitPolyline=function(packet,map){this._packet=packet;this._defaultMap=map;this._relatedMarkerIdKeys=[];if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Polyline.call(this,this._getGoolgePolylineOptions());}else if(typeof L==="object"){L.Polyline.call(this,{},this._getLeafletPolylineOptions());this.setLatLngs(this.getCoordinates());}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.TransmitPolyline.prototype=Object.create(google.maps.Polyline.prototype);}else if(typeof L==="object"){trackdirect.models.TransmitPolyline.prototype=Object.create(L.Polyline.prototype);} -trackdirect.models.TransmitPolyline.prototype.constructor=trackdirect.models.TransmitPolyline;trackdirect.models.TransmitPolyline.prototype.getPathItem=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);return path.getAt(index);}else if(typeof L==="object"){var list=this.getLatLngs();if(typeof list[index]!=="undefined"){return list[index];}else{return null;}} -return null;};trackdirect.models.TransmitPolyline.prototype.pushPathItem=function(latLng){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);path.push(latLng);}else if(typeof L==="object"){this.addLatLng(latLng);}};trackdirect.models.TransmitPolyline.prototype.removePathItem=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);path.removeAt(index);}else if(typeof L==="object"){var list=this.getLatLngs();if(typeof list[index]!=="undefined"){list.splice(index,1);this.setLatLngs(list);}}};trackdirect.models.TransmitPolyline.prototype.getPathLength=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);return path.getLength();}else if(typeof L==="object"){var list=this.getLatLngs();return list.length;}};trackdirect.models.TransmitPolyline.prototype.getPath=function(){if(typeof google==="object"&&typeof google.maps==="object"){return google.maps.Polyline.prototype.getPath.call(this);}else if(typeof L==="object"){return this.getLatLngs();} -return[];};trackdirect.models.TransmitPolyline.prototype.getMap=function(){if(typeof google==="object"&&typeof google.maps==="object"){var map=google.maps.Polyline.prototype.getMap.call(this);if(typeof map!=="undefined"){return map;}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){return this._defaultMap;}} -return null;};trackdirect.models.TransmitPolyline.prototype.show=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}}else if(typeof L==="object"){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}} -for(var i=0;i<this._relatedMarkerIdKeys.length;i++){var relatedMarkerIdKey=this._relatedMarkerIdKeys[i];if(this._defaultMap.markerCollection.isExistingMarker(relatedMarkerIdKey)){var relatedMarker=this._defaultMap.markerCollection.getMarker(relatedMarkerIdKey);relatedMarker.show();relatedMarker.showLabel();}}};trackdirect.models.TransmitPolyline.prototype.hide=function(delayInMilliSeconds){if(typeof google==="object"&&typeof google.maps==="object"){if(this.getMap()!==null){this.setMap(null);}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}} -for(var i=0;i<this._relatedMarkerIdKeys.length;i++){var relatedMarkerIdKey=this._relatedMarkerIdKeys[i];if(this._defaultMap.markerCollection.isExistingMarker(relatedMarkerIdKey)){var relatedMarker=this._defaultMap.markerCollection.getMarker(relatedMarkerIdKey);if(relatedMarker!==null&&relatedMarker.getMap()!==null){relatedMarker.hide(delayInMilliSeconds,true);}}}};trackdirect.models.TransmitPolyline.prototype.isVisible=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()!=="undefined"&&this.getMap()!==null){return true;}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){return true;}} -return false;};trackdirect.models.TransmitPolyline.prototype._getGoolgePolylineOptions=function(){var lineCoordinates=this.getCoordinates();if(lineCoordinates.length<=1){lineCoordinates=[];} -var lineSymbol={path:"M 0,-0.1 0,0",strokeOpacity:0.7,scale:3,};return{path:lineCoordinates,strokeOpacity:0,strokeColor:"#0000ff",icons:[{icon:lineSymbol,offset:"0px",repeat:"5px",},],map:null,zIndex:100,};};trackdirect.models.TransmitPolyline.prototype._getLeafletPolylineOptions=function(){return{opacity:0.6,weight:3,color:"#0000ff",dashArray:"1,5",lineCap:"round",lineJoin:"round",};};(trackdirect.models.TransmitPolyline.prototype.getCoordinates=function(){var lineCoordinates=this.getCoordinatesByStationMarkers();if(lineCoordinates.length<this._packet.station_location_path.length+1){lineCoordinates=this.getCoordinatesByPositions();} -return lineCoordinates;}),(trackdirect.models.TransmitPolyline.prototype.getCoordinatesByStationMarkers=function(){var lineCoordinates=[];var startLatLng=this._packet.getLatLngLiteral();lineCoordinates.push(startLatLng);for(var i=0;i<this._packet.station_id_path.length;i++){var stationId=this._packet.station_id_path[i];var stationMarkerIdKey=null;var stationMarker=null;var stationDistance=null;var stationLatLng=null;for(var pointMarkerIdKey in this._defaultMap.markerCollection.getStationMarkerIdKeys(stationId)){var pointMarker=this._defaultMap.markerCollection.getMarker(pointMarkerIdKey);if(pointMarker!==null){var pointLatLng=pointMarker.packet.getLatLngLiteral();var distance=trackdirect.services.distanceCalculator.getDistance(startLatLng,pointLatLng);if(stationMarker===null||distance<stationDistance){stationMarkerIdKey=pointMarkerIdKey;stationMarker=pointMarker;stationDistance=distance;stationLatLng=pointLatLng;}}} -if(stationLatLng!==null){lineCoordinates.push(stationLatLng);this._relatedMarkerIdKeys.push(stationMarkerIdKey);}} -return lineCoordinates;}),(trackdirect.models.TransmitPolyline.prototype.getCoordinatesByPositions=function(){var lineCoordinates=[];var startLatLng=this._packet.getLatLngLiteral();lineCoordinates.push(startLatLng);if(lineCoordinates.length<this._packet.station_location_path.length+1){for(var i=0;i<this._packet.station_location_path.length;i++){if(this._packet.station_location_path[i][0]!==null&&this._packet.station_location_path[i][1]!==null){lineCoordinates.push({lat:parseFloat(this._packet.station_location_path[i][0]),lng:parseFloat(this._packet.station_location_path[i][1]),});}}} -return lineCoordinates;}); -trackdirect.models.TransmitAnimation=function(marker,map){this._map=map;this._marker=marker;this.init();};trackdirect.models.TransmitAnimation.prototype.show=function(){this._startAnimation();};trackdirect.models.TransmitAnimation.prototype.hide=function(){if(typeof google==="object"&&typeof google.maps==="object"){this.iconMarkers[1].setMap(null);this.iconMarkers[2].setMap(null);this.iconMarkers[3].setMap(null);}else if(typeof L==="object"){this._map.removeLayer(this.iconMarkers[1]);this._map.removeLayer(this.iconMarkers[2]);this._map.removeLayer(this.iconMarkers[3]);} -this.marker.transmitPolyLine.hide();};trackdirect.models.TransmitAnimation.prototype.init=function(){var newLatLng=this._marker.packet.getLatLngLiteral();this._marker.transmitPolyLine=new trackdirect.models.TransmitPolyline(this._marker.packet,this._map);this.iconMarkers=[];for(var i=1;i<=3;i++){var icon=this._getIcon(i);if(typeof google==="object"&&typeof google.maps==="object"){var iconMarker=new google.maps.Marker({position:newLatLng,zIndex:this._map.state.currentMarkerZindex,icon:icon,opacity:0.6,});}else if(typeof L==="object"){var iconMarker=new L.Marker(newLatLng,{zIndexOffset:this._map.state.currentMarkerZindex,icon:icon,opacity:0.6,});} -this.iconMarkers[i]=iconMarker;}};trackdirect.models.TransmitAnimation.prototype._getIcon=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var icon={url:trackdirect.settings.baseUrl+ -trackdirect.settings.imagesBaseDir+ -"transmit"+ -index+ -".png",size:new google.maps.Size(60,60),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(30,30),};}else if(typeof L==="object"){var icon=L.icon({iconUrl:trackdirect.settings.baseUrl+ -trackdirect.settings.imagesBaseDir+ -"transmit"+ -index+ -".png",iconSize:[60,60],iconAnchor:[30,30],});} -return icon;};trackdirect.models.TransmitAnimation.prototype._startAnimation=function(){var me=this;me._showIconMarker(1);window.setTimeout(function(){me._showIconMarker(2);},150);window.setTimeout(function(){me._showIconMarker(3);if(me._marker.transmitPolyLine!==null){me._marker.transmitPolyLine.show();}},300);window.setTimeout(function(){me._hideIconMarker(1);},800);window.setTimeout(function(){me._hideIconMarker(2);},900);window.setTimeout(function(){me._hideIconMarker(3);if(me._marker.transmitPolyLine!=null){me._marker.transmitPolyLine.hide(4000);}},1000);};trackdirect.models.TransmitAnimation.prototype._showIconMarker=function(index){if(typeof google==="object"&&typeof google.maps==="object"){this.iconMarkers[index].setMap(this._map);}else if(typeof L==="object"){this.iconMarkers[index].addTo(this._map);}};trackdirect.models.TransmitAnimation.prototype._hideIconMarker=function(index){if(typeof google==="object"&&typeof google.maps==="object"){this.iconMarkers[index].setMap(null);}else if(typeof L==="object"){this._map.removeLayer(this.iconMarkers[index]);}}; -trackdirect.models.TailPolyline=function(color,map){this._defaultMap=map;this.markerIdKey=null;this.ownerMarkerIdKey=null;this.relatedMarkerIdKey=null;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Polyline.call(this,this._getGooglePolylineOptions(color));}else if(typeof L==="object"){L.Polyline.call(this,{},this._getLeafletPolylineOptions(color));}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.TailPolyline.prototype=Object.create(google.maps.Polyline.prototype);}else if(typeof L==="object"){trackdirect.models.TailPolyline.prototype=Object.create(L.Polyline.prototype);} -trackdirect.models.TailPolyline.prototype.constructor=trackdirect.models.TailPolyline;trackdirect.models.TailPolyline.prototype.getPathItem=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);return path.getAt(index);}else if(typeof L==="object"){var list=this.getLatLngs();if(typeof list[index]!=="undefined"){return list[index];}else{return null;}} -return null;};trackdirect.models.TailPolyline.prototype.pushPathItem=function(latLng){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);path.push(latLng);}else if(typeof L==="object"){this.addLatLng(latLng);}};trackdirect.models.TailPolyline.prototype.removePathItem=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);path.removeAt(index);}else if(typeof L==="object"){var list=this.getLatLngs();if(typeof list[index]!=="undefined"){list.splice(index,1);this.setLatLngs(list);}}};trackdirect.models.TailPolyline.prototype.getPathLength=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);return path.getLength();}else if(typeof L==="object"){var list=this.getLatLngs();return list.length;}};trackdirect.models.TailPolyline.prototype.getPath=function(){if(typeof google==="object"&&typeof google.maps==="object"){return google.maps.Polyline.prototype.getPath.call(this);}else if(typeof L==="object"){return this.getLatLngs();} -return[];};trackdirect.models.TailPolyline.prototype.getMap=function(){if(typeof google==="object"&&typeof google.maps==="object"){var map=google.maps.Polyline.prototype.getMap.call(this);if(typeof map!=="undefined"){return map;}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){return this._defaultMap;}} -return null;};trackdirect.models.TailPolyline.prototype.setMarkerIdKey=function(markerIdKey){this.markerIdKey=markerIdKey;this.ownerMarkerIdKey=markerIdKey;this._addInfoWindowListener(markerIdKey);};trackdirect.models.TailPolyline.prototype.setRelatedMarkerIdKey=function(markerIdKey){this.relatedMarkerIdKey=markerIdKey;};trackdirect.models.TailPolyline.prototype.show=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}}else if(typeof L==="object"){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}}};trackdirect.models.TailPolyline.prototype.hide=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(this.getMap()!==null){this.setMap(null);}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}}};trackdirect.models.TailPolyline.prototype.addMarker=function(marker){if(typeof google==="object"&&typeof google.maps==="object"){var latLng=new google.maps.LatLng(parseFloat(marker.packet.latitude),parseFloat(marker.packet.longitude));latLng.marker=marker;this.pushPathItem(latLng);}else if(typeof L==="object"){var latLng=new L.latLng(parseFloat(marker.packet.latitude),parseFloat(marker.packet.longitude));latLng.marker=marker;this.addLatLng(latLng);}};trackdirect.models.TailPolyline.prototype._addInfoWindowListener=function(markerIdKey){var me=this;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.event.addListener(this,"click",function(event){var marker=me._defaultMap.markerCollection.getMarker(markerIdKey);me._defaultMap.openPolylineInfoWindow(marker,event.latLng);});}else if(typeof L==="object"){this.on("click",function(event){var marker=me._defaultMap.markerCollection.getMarker(markerIdKey);me._defaultMap.openPolylineInfoWindow(marker,event.latlng);});}};trackdirect.models.TailPolyline.prototype._getGooglePolylineOptions=function(color){return{geodesic:false,strokeOpacity:0.6,strokeWeight:4,strokeColor:color,map:null,zIndex:100,};};trackdirect.models.TailPolyline.prototype._getLeafletPolylineOptions=function(color){return{opacity:0.7,weight:4,color:color,};}; -trackdirect.models.StationCoveragePolygon=function(center,map,tryToShowCoveragePolygon){tryToShowCoveragePolygon=typeof tryToShowCoveragePolygon!=="undefined"?tryToShowCoveragePolygon:true;this._showPolygon=tryToShowCoveragePolygon;this._map=map;this._center=center;this._isRequestedToBeVisible=false;this._polygon=null;this._polygonCoordinates=null;this._heatmapCoordinates=null;this._heatmap=null;this._tdEventListeners={};this._tdEventListenersOnce={};this._upperMaxRangeInMeters=1000*1000;this._paddingInPercentOfMaxRange=10;this._paddingMinInMeters=1000;};trackdirect.models.StationCoveragePolygon.prototype.setData=function(data,percentile){this._addParametersToData(data);this._heatmapCoordinates=this._getCoordinates(data);if(this._showPolygon){var maxRange=this._getCoveragePolygonMaxRange(data,percentile);if(maxRange<=0){this._showPolygon=false;}else{this._polygonCoordinates=this._getConvexHullCoordinates(data,maxRange);}} -if(typeof google==="object"&&typeof google.maps==="object"){this._googleMapsInit();}else if(typeof L==="object"){this._leafletInit();}};trackdirect.models.StationCoveragePolygon.prototype.addTdListener=function(event,handler,execOnce){execOnce=typeof execOnce!=="undefined"?execOnce:false;if(execOnce){if(!(event in this._tdEventListenersOnce)){this._tdEventListenersOnce[event]=[];} -this._tdEventListenersOnce[event].push(handler);}else{if(!(event in this._tdEventListeners)){this._tdEventListeners[event]=[];} -this._tdEventListeners[event].push(handler);}};trackdirect.models.StationCoveragePolygon.prototype.hasContent=function(){if(this._heatmapCoordinates!==null&&this._heatmapCoordinates.length>0){return true;} -return false;};trackdirect.models.StationCoveragePolygon.prototype.isRequestedToBeVisible=function(){return this._isRequestedToBeVisible;};trackdirect.models.StationCoveragePolygon.prototype.showWhenDone=function(){this._isRequestedToBeVisible=true;};trackdirect.models.StationCoveragePolygon.prototype.show=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(this._polygon!==null){this._polygon.setMap(this._map);} -if(this._heatmap!==null){this._heatmap.setMap(this._map);}}else if(typeof L==="object"){if(this._polygon!==null){this._polygon.addTo(this._map);} -if(this._heatmap!==null){this._heatmap.addTo(this._map);}} -this._isRequestedToBeVisible=true;if(this._showPolygon&&this._polygonCoordinates!==null){this._emitTdEventListeners("visible");}else if(this._heatmapCoordinates!==null){this._emitTdEventListeners("visible");}};trackdirect.models.StationCoveragePolygon.prototype.hide=function(stillMarkAsVisible){stillMarkAsVisible=typeof stillMarkAsVisible!=="undefined"?stillMarkAsVisible:false;if(typeof google==="object"&&typeof google.maps==="object"){if(this._polygon!==null){this._polygon.setMap(null);} -if(this._heatmap!==null){this._heatmap.setMap(null);}}else if(typeof L==="object"){if(this._polygon!==null){this._map.removeLayer(this._polygon);} -if(this._heatmap!==null){this._map.removeLayer(this._heatmap);}} -if(!stillMarkAsVisible){this._isRequestedToBeVisible=false;} -this._emitTdEventListeners("hidden");};trackdirect.models.StationCoveragePolygon.prototype._googleMapsInit=function(){if(this._polygonCoordinates!==null&&this._polygonCoordinates.length>0){this._polygon=new google.maps.Polygon({paths:this._polygonCoordinates,strokeColor:"#0000FF",strokeOpacity:0,strokeWeight:0,fillColor:"#0000FF",fillOpacity:0.2,});} -if(this._heatmapCoordinates!==null&&this._heatmapCoordinates.length>0){var data=[];for(var i=0;i<this._heatmapCoordinates.length;i++){data.push({location:this._heatmapCoordinates[i],weight:1});} -this._heatmap=new google.maps.visualization.HeatmapLayer({data:data,radius:8,maxIntensity:5,gradient:["rgba(0, 255, 255, 0)","rgba(0, 255, 255, 1)","rgba(0, 191, 255, 1)","rgba(0, 127, 255, 1)","rgba(0, 63, 255, 1)","rgba(0, 0, 255, 1)","rgba(0, 0, 223, 1)","rgba(0, 0, 191, 1)","rgba(0, 0, 159, 1)","rgba(0, 0, 127, 1)","rgba(63, 0, 91, 1)","rgba(127, 0, 63, 1)","rgba(191, 0, 31, 1)","rgba(255, 0, 0, 1)",],map:null,});}};trackdirect.models.StationCoveragePolygon.prototype._leafletInit=function(){if(this._polygonCoordinates!==null&&this._polygonCoordinates.length>0){this._polygon=new L.polygon(this._polygonCoordinates,{color:"#0000FF",opacity:0,weight:0,fillColor:"#0000FF",fillOpacity:0.2,});} -if(this._heatmapCoordinates!==null&&this._heatmapCoordinates.length>0){var data=[];for(var i=0;i<this._heatmapCoordinates.length;i++){data.push([this._heatmapCoordinates[i].lat,this._heatmapCoordinates[i].lng,10,]);} -this._heatmap=L.heatLayer(this._heatmapCoordinates,{minOpacity:0.35,radius:6,blur:4,});}};trackdirect.models.StationCoveragePolygon.prototype._getConvexHullCoordinates=function(data,maxRange){var positions=this._getFilteredPositions(data,maxRange);positions.push(this._center);var xyPositions=this._convertToXYPos(positions);var convexHullXYPositions=convexhull.makeHull(xyPositions);var latLngPadding=this._paddingInPercentOfMaxRange*0.01*maxRange*0.000009;var latLngPaddingMin=this._paddingMinInMeters*0.000009;if(isNaN(latLngPadding)||latLngPadding<latLngPaddingMin){latLngPadding=latLngPaddingMin;} -var xyPositionsWithPadding=[];for(var i=0;i<convexHullXYPositions.length;i++){xyPositionsWithPadding.push(convexHullXYPositions[i]);for(var angle=0;angle<360;angle+=10){var x=convexHullXYPositions[i]["x"]+ -latLngPadding*Math.cos((angle*Math.PI)/180);var y=convexHullXYPositions[i]["y"]+ -latLngPadding*Math.sin((angle*Math.PI)/180)*2;if(!isNaN(x)&&!isNaN(y)){xyPositionsWithPadding.push({x:x,y:y});}}} -var convexHullXYPositionsWithPadding=convexhull.makeHull(xyPositionsWithPadding);return this._convertToLatLngPos(convexHullXYPositionsWithPadding);};trackdirect.models.StationCoveragePolygon.prototype._getFilteredPositions=function(data,maxRange){var result=[];for(var i=0;i<data.length;i++){if(typeof maxRange!=="undefined"&&data[i].distance>maxRange){continue;} -result.push(data[i].latLngLiteral);} -return result;};trackdirect.models.StationCoveragePolygon.prototype._getCoveragePolygonMaxRange=function(data,percentile){var maxRange=this._getDistancePercentile(data,percentile,this._upperMaxRangeInMeters);if(isNaN(maxRange)){maxRange=0;} -return maxRange;};trackdirect.models.StationCoveragePolygon.prototype._getDistancePercentile=function(data,percentile,upperMaxRange){var values=[];for(var i=0;i<data.length;i++){if(data[i].distance+0<upperMaxRange){values.push(data[i].distance);}} -values.sort(function(a,b){return a-b;});var index=(percentile/100)*values.length;var result;if(Math.floor(index)==index){result=(values[index-1]+values[index])/2;}else{result=values[Math.floor(index)];} -return result;};trackdirect.models.StationCoveragePolygon.prototype._getNumberOfValues=function(data,maxRange){var counter=0;for(var i=0;i<data.length;i++){if(data[i].distance>maxRange){continue;} -counter++;} -return counter;};trackdirect.models.StationCoveragePolygon.prototype._convertToXYPos=function(positions){var result=[];for(var i=0;i<positions.length;i++){result.push({x:positions[i].lat,y:positions[i].lng});} -return result;};trackdirect.models.StationCoveragePolygon.prototype._convertToLatLngPos=function(positions){var result=[];for(var i=0;i<positions.length;i++){result.push({lat:positions[i].x,lng:positions[i].y});} -return result;};trackdirect.models.StationCoveragePolygon.prototype._getCoordinates=function(data){var result=[];for(var j=0;j<data.length;j++){if(typeof google==="object"&&typeof google.maps==="object"){var position=new google.maps.LatLng(parseFloat(data[j]["latitude"]),parseFloat(data[j]["longitude"]));}else{var position={lat:parseFloat(data[j]["latitude"]),lng:parseFloat(data[j]["longitude"]),};} -result.push(position);} -return result;};trackdirect.models.StationCoveragePolygon.prototype._addParametersToData=function(data){for(var j=0;j<data.length;j++){var latLngLiteral={lat:parseFloat(data[j].latitude),lng:parseFloat(data[j].longitude),};data[j].latLngLiteral=latLngLiteral;data[j].angle=trackdirect.services.distanceCalculator.getBearing(this._center,latLngLiteral);}};trackdirect.models.StationCoveragePolygon.prototype._emitTdEventListeners=function(event,arg){if(event in this._tdEventListeners){for(var i=0;i<this._tdEventListeners[event].length;i++){this._tdEventListeners[event][i](arg);}} -if(event in this._tdEventListenersOnce){var eventListenersOnce=this._tdEventListenersOnce[event].splice(0);this._tdEventListenersOnce[event]=[];for(var i=0;i<eventListenersOnce.length;i++){eventListenersOnce[i](arg);}}}; -trackdirect.models.Ruler=function(defaultLength,map){this._map=map;if(typeof google==="object"&&typeof google.maps==="object"){this._googleMapsInit(defaultLength);this._addGoolgeMapsListeners();}else if(typeof L==="object"){this.leafletInit(defaultLength);this._addLeafletListeners();}};trackdirect.models.Ruler.prototype._googleMapsInit=function(defaultLength){this.marker1=new google.maps.Marker({position:trackdirect.services.distanceCalculator.getPositionByDistance(this._map.getCenterLiteral(),270,defaultLength/2),draggable:true,map:this._map,});this.marker2=new google.maps.Marker({position:trackdirect.services.distanceCalculator.getPositionByDistance(this._map.getCenterLiteral(),90,defaultLength/2),draggable:true,map:this._map,});this.marker1.markerLabel=new trackdirect.models.Label({position:this.marker1.getPosition(),text:this._getDistance(this.marker1,this.marker2),},this._map);this.marker1.markerLabel.show();this.marker2.markerLabel=new trackdirect.models.Label({position:this.marker2.getPosition(),text:this._getDistance(this.marker2,this.marker1),},this._map);this.marker2.markerLabel.show();this.line=new google.maps.Polyline({path:[this.marker1.getPosition(),this.marker2.getPosition()],strokeColor:"#ffff00",strokeOpacity:0.7,strokeWeight:6,});this.line.setMap(this._map);};trackdirect.models.Ruler.prototype.leafletInit=function(defaultLength){this.marker1=new L.Marker(trackdirect.services.distanceCalculator.getPositionByDistance(this._map.getCenterLiteral(),270,defaultLength/2),{draggable:true});this.marker1.addTo(this._map);this.marker2=new L.Marker(trackdirect.services.distanceCalculator.getPositionByDistance(this._map.getCenterLiteral(),90,defaultLength/2),{draggable:true});this.marker2.addTo(this._map);this.marker1.markerLabel=new trackdirect.models.Label({position:this.marker1.getLatLng(),text:this._getDistance(this.marker1,this.marker2),},this._map);this.marker1.markerLabel.show();this.marker2.markerLabel=new trackdirect.models.Label({position:this.marker2.getLatLng(),text:this._getDistance(this.marker2,this.marker1),},this._map);this.marker2.markerLabel.show();this.line=new L.Polyline([this.marker1.getLatLng(),this.marker2.getLatLng()],{color:"#ffff00",opacity:0.8,weight:6,});this.line.addTo(this._map);};trackdirect.models.Ruler.prototype.show=function(){this.marker1.markerLabel.show();this.marker2.markerLabel.show();if(typeof google==="object"&&typeof google.maps==="object"){this.marker1.setMap(this._map);this.marker2.setMap(this._map);this.line.setMap(this._map);}else if(typeof L==="object"){this.marker1.addTo(this._map);this.marker2.addTo(this._map);this.line.addTo(this._map);}};trackdirect.models.Ruler.prototype.hide=function(){this.marker1.markerLabel.hide();this.marker2.markerLabel.hide();if(typeof google==="object"&&typeof google.maps==="object"){this.marker1.setMap(null);this.marker2.setMap(null);this.line.setMap(null);}else if(typeof L==="object"){this._map.removeLayer(this.marker1);this._map.removeLayer(this.marker2);this._map.removeLayer(this.line);}};trackdirect.models.Ruler.prototype._addGoolgeMapsListeners=function(){var me=this;google.maps.event.addListener(this.marker1,"drag",function(){me.line.setPath([me.marker1.getPosition(),me.marker2.getPosition()]);me._updateLabels();});google.maps.event.addListener(this.marker2,"drag",function(){me.line.setPath([me.marker1.getPosition(),me.marker2.getPosition()]);me._updateLabels();});};trackdirect.models.Ruler.prototype._addLeafletListeners=function(){var me=this;this.marker1.on("drag",function(e){me.line.setLatLngs([me.marker1.getLatLng(),me.marker2.getLatLng()]);me._updateLabels();});this.marker2.on("drag",function(e){me.line.setLatLngs([me.marker1.getLatLng(),me.marker2.getLatLng()]);me._updateLabels();});};trackdirect.models.Ruler.prototype._updateLabels=function(){this.marker1.markerLabel.hide();this.marker2.markerLabel.hide();if(typeof google==="object"&&typeof google.maps==="object"){this.marker1.markerLabel=new trackdirect.models.Label({position:this.marker1.getPosition(),text:this._getDistance(this.marker1,this.marker2),},this._map);this.marker2.markerLabel=new trackdirect.models.Label({position:this.marker2.getPosition(),text:this._getDistance(this.marker2,this.marker1),},this._map);}else if(typeof L==="object"){this.marker1.markerLabel=new trackdirect.models.Label({position:this.marker1.getLatLng(),text:this._getDistance(this.marker1,this.marker2),},this._map);this.marker2.markerLabel=new trackdirect.models.Label({position:this.marker2.getLatLng(),text:this._getDistance(this.marker2,this.marker1),},this._map);} -this.marker1.markerLabel.show();this.marker2.markerLabel.show();};trackdirect.models.Ruler.prototype._getDistance=function(marker1,marker2){var p1=this._getPositionLiteral(marker1);var p2=this._getPositionLiteral(marker2);var distance=Math.round(trackdirect.services.distanceCalculator.getDistance(p1,p2),0);if(distance>99999){if(this._map.state.useImperialUnit){distance=Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(distance/1000)).toString()+" miles";}else{distance=Math.round(distance/1000).toString()+" km";}}else if(distance>999){if(this._map.state.useImperialUnit){distance=(Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(distance/1000)*10)/10).toString()+" miles";}else{distance=(Math.round(distance/100)/10).toString()+" km";}}else{distance=distance.toString()+" m";} -var bearing=Math.round(trackdirect.services.distanceCalculator.getBearing(p2,p1),0).toString();return bearing+"º "+distance;};trackdirect.models.Ruler.prototype._getPositionLiteral=function(marker){if(typeof google==="object"&&typeof google.maps==="object"){var latLng=marker.getPosition();if(typeof latLng!=="undefined"&&typeof latLng.lat==="function"){return{lat:latLng.lat(),lng:latLng.lng()};}else{return latLng;}}else if(typeof L==="object"){var latLng=marker.getLatLng();if(typeof latLng!=="undefined"){return{lat:latLng.lat,lng:latLng.lng};}else{return latLng;}} -return null;}; -trackdirect.models.RngCircle=function(packet,map,isHalf){this._defaultMap=map;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Circle.call(this,this._getGoogleCircleOptions(packet,isHalf));}else if(typeof L==="object"){var center=packet.getLatLngLiteral();if(L.version<="0.7.7"){var range=this._getCircleRadius(packet,isHalf);L.Circle.call(this,[center.lat,center.lng],range,this._getLeafletCircleOptions(packet,isHalf));}else{L.Circle.call(this,center,this._getLeafletCircleOptions(packet,isHalf));}}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.RngCircle.prototype=Object.create(google.maps.Circle.prototype);}else if(typeof L==="object"){trackdirect.models.RngCircle.prototype=Object.create(L.Circle.prototype);} -trackdirect.models.RngCircle.prototype.constructor=trackdirect.models.RngCircle;trackdirect.models.RngCircle.prototype.show=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}}else if(typeof L==="object"){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}}};trackdirect.models.RngCircle.prototype.hide=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(this.getMap()!==null){this.setMap(null);}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}}};trackdirect.models.RngCircle.prototype._getGoogleCircleOptions=function(packet,isHalf){var color=trackdirect.services.stationColorCalculator.getColor(packet);var range=this._getCircleRadius(packet,isHalf);var options={strokeColor:color,strokeOpacity:0.6,strokeWeight:1,fillColor:color,fillOpacity:0.3,map:null,center:packet.getLatLngLiteral(),radius:range*1000,};return options;};trackdirect.models.RngCircle.prototype._getLeafletCircleOptions=function(packet,isHalf){var color=trackdirect.services.stationColorCalculator.getColor(packet);var range=this._getCircleRadius(packet,isHalf);var options={color:color,opacity:0.6,weight:1,fillColor:color,fillOpacity:0.3,radius:range*1000,};return options;};trackdirect.models.RngCircle.prototype._getCircleRadius=function(packet,isHalf){var range=packet.getRNGRange();if(range===null){range=0;} -if(isHalf){range=range/2;} -return range;}; -trackdirect.models.PhgCircle=function(packet,map,isHalf){this._defaultMap=map;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Circle.call(this,this._getGoogleCircleOptions(packet,isHalf));}else if(typeof L==="object"){if(L.version<="0.7.7"){var range=this._getCircleRadius(packet,isHalf);var center=this._getCircleCenter(packet,isHalf);L.Circle.call(this,[center.lat,center.lng],range,this._getLeafletCircleOptions(packet,isHalf));}else{L.Circle.call(this,this._getCircleCenter(packet,isHalf),this._getLeafletCircleOptions(packet,isHalf));}}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.PhgCircle.prototype=Object.create(google.maps.Circle.prototype);}else if(typeof L==="object"){trackdirect.models.PhgCircle.prototype=Object.create(L.Circle.prototype);} -trackdirect.models.PhgCircle.prototype.constructor=trackdirect.models.PhgCircle;trackdirect.models.PhgCircle.prototype.show=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}}else if(typeof L==="object"){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}}};trackdirect.models.PhgCircle.prototype.hide=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(this.getMap()!==null){this.setMap(null);}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}}};trackdirect.models.PhgCircle.prototype._getGoogleCircleOptions=function(packet,isHalf){var color=trackdirect.services.stationColorCalculator.getColor(packet);var range=this._getCircleRadius(packet,isHalf);var center=this._getCircleCenter(packet,isHalf);var options={strokeColor:color,strokeOpacity:0.6,strokeWeight:1,fillColor:color,fillOpacity:0.3,map:null,center:center,radius:range,};return options;};trackdirect.models.PhgCircle.prototype._getLeafletCircleOptions=function(packet,isHalf){var color=trackdirect.services.stationColorCalculator.getColor(packet);var range=this._getCircleRadius(packet,isHalf);var options={color:color,opacity:0.6,weight:1,fillColor:color,fillOpacity:0.3,radius:range,};return options;};trackdirect.models.PhgCircle.prototype._getCircleRadius=function(packet,isHalf){var range=packet.getPHGRange();if(range===null){range=0;} -if(isHalf){range=range/2;} -return range;};trackdirect.models.PhgCircle.prototype._getCircleCenter=function(packet,isHalf){var direction=packet.getPhgDirectionDegree();var center=packet.getLatLngLiteral();if(direction!=null){var range=packet.getPHGRange();if(range===null){range=0;} -if(isHalf){range=range/2;} -var distance=(range*2)/3/2;center=trackdirect.services.distanceCalculator.getPositionByDistance(center,direction,distance);} -return center;}; -trackdirect.models.Packet=function(data){this.init();for(var key in data){this[key]=data[key];}};trackdirect.models.Packet.prototype.init=function(){this["altitude"]=null;this["comment"]="";this["course"]=null;this["db"]=null;this["id"]=null;this["latest_phg_timestamp"]=null;this["latest_rng_timestamp"]=null;this["latitude"]=null;this["longitude"]=null;this["map_id"]=null;this["map_sector"]=null;this["marker_counter"]=null;this["marker_id"]=null;this["ogn"]=null;this["overwrite"]=null;this["is_moving"]=1;this["packet_order_id"]=null;this["packet_tail_timestamp"]=null;this["packet_type_id"]=null;this["phg"]=null;this["posambiguity"]=0;this["position_timestamp"]=null;this["raw"]="";this["raw_path"]="";this["realtime"]=0;this["related_map_sectors"]=[];this["reported_timestamp"]=null;this["rng"]=null;this["sender_id"]=null;this["sender_name"]=null;this["source_id"]=null;this["speed"]=null;this["station_id"]=null;this["station_id_path"]=[];this["station_location_path"]=[];this["station_name"]=null;this["station_name_path"]=[];this["symbol"]=null;this["symbol_table"]=null;this["telemetry"]=null;this["timestamp"]=null;this["weather"]=null;};trackdirect.models.Packet.prototype.getStationName=function(){if(this.station_name==this.sender_name){return escapeHtml(this.station_name);}else{return escapeHtml(this.station_name+" ("+this.sender_name+")");}};trackdirect.models.Packet.prototype.getLatLngLiteral=function(){return{lat:parseFloat(this.latitude),lng:parseFloat(this.longitude)};};trackdirect.models.Packet.prototype.hasConfirmedMapId=function(){if([1,2,12].indexOf(this.map_id)>=0){return true;} -return false;};trackdirect.models.Packet.prototype.getOgnAircraftType=function(){if(typeof this.ogn!=="undefined"&&this.ogn!==null){if(typeof this.ogn.ogn_aircraft_type_id!=="undefined"&&this.ogn.ogn_aircraft_type_id!=""){if(this.ogn.ogn_aircraft_type_id==1){return"Glider";}else if(this.ogn.ogn_aircraft_type_id==2){return"Tow Plane";}else if(this.ogn.ogn_aircraft_type_id==3){return"Helicopter";}else if(this.ogn.ogn_aircraft_type_id==4){return"Parachute";}else if(this.ogn.ogn_aircraft_type_id==5){return"Drop Plane";}else if(this.ogn.ogn_aircraft_type_id==6){return"Hang Glider";}else if(this.ogn.ogn_aircraft_type_id==7){return"Para Glider";}else if(this.ogn.ogn_aircraft_type_id==8){return"Powered Aircraft";}else if(this.ogn.ogn_aircraft_type_id==9){return"Jet Aircraft";}else if(this.ogn.ogn_aircraft_type_id==10){return"UFO";}else if(this.ogn.ogn_aircraft_type_id==11){return"Balloon";}else if(this.ogn.ogn_aircraft_type_id==12){return"Airship";}else if(this.ogn.ogn_aircraft_type_id==13){return"UAV";}else if(this.ogn.ogn_aircraft_type_id==14){return"";}else if(this.ogn.ogn_aircraft_type_id==15){return"Static Object";}}} -return null;};trackdirect.models.Packet.prototype.getOgnDdbAircraftType=function(){if(typeof this.ogn_device!=="undefined"&&this.ogn_device!==null){if(typeof this.ogn_device.ddb_aircraft_type!=="undefined"&&this.ogn_device.ddb_aircraft_type!=""){if(this.ogn_device.ddb_aircraft_type==1){return"Glider/Motoglider";}else if(this.ogn_device.ddb_aircraft_type==2){return"Plane";}else if(this.ogn_device.ddb_aircraft_type==3){return"Ultralight";}else if(this.ogn_device.ddb_aircraft_type==4){return"Helicopter";}else if(this.ogn_device.ddb_aircraft_type==5){return"Drone/UAV";}else if(this.ogn_device.ddb_aircraft_type==6){return"Other";}}} -return null;};trackdirect.models.Packet.prototype.getOgnAddressType=function(){if(typeof this.ogn!=="undefined"&&this.ogn!==null){if(typeof this.ogn.ogn_address_type_id!=="undefined"&&this.ogn.ogn_address_type_id!=""){if(this.ogn.ogn_address_type_id==1){return"ICAO";}else if(this.ogn.ogn_address_type_id==2){return"FLARM";}else if(this.ogn.ogn_address_type_id==3){return"OGN";}}} -return null;};trackdirect.models.Packet.prototype.getOgnSenderAddress=function(){if(typeof this.ogn!=="undefined"&&this.ogn!==null){if(typeof this.ogn.ogn_sender_address!=="undefined"&&this.ogn.ogn_sender_address!=""){return this.ogn.ogn_sender_address;}} -return null;};trackdirect.models.Packet.prototype.getOgnRegistration=function(){if(typeof this.ogn_device!=="undefined"&&this.ogn_device!==null){if(typeof this.ogn_device.registration!=="undefined"&&this.ogn_device.registration!=""){return this.ogn_device.registration;}} -return null;};trackdirect.models.Packet.prototype.getOgnCN=function(){if(typeof this.ogn_device!=="undefined"&&this.ogn_device!==null){if(typeof this.ogn_device.cn!=="undefined"&&this.ogn_device.cn!=""){return this.ogn_device.cn;}} -return null;};trackdirect.models.Packet.prototype.getOgnSummary=function(){var senderAddress=this.getOgnSenderAddress();var aircraftType=this.getOgnAircraftType();var ddbAircraftType=this.getOgnDdbAircraftType();var addressType=this.getOgnAddressType();var summary="";if(ddbAircraftType!==null){summary+=ddbAircraftType;}else if(aircraftType!==null){summary+=aircraftType;} -if(senderAddress!==null){if(summary!=""){summary+=" ";} -summary+=senderAddress;if(addressType!==null){summary+=" ("+addressType+")";}} -return summary;};trackdirect.models.Packet.prototype.hasDirectionSupport=function(){if(this.course!==null&&this.speed!==null&&this.speed>0&&this.source_id==1&&this.packet_order_id==1&&this.is_moving==1&&this.hasConfirmedMapId()){var symbolCategory=1;if(this.symbol_table.charCodeAt(0)=="92"){symbolCategory=2;} -if(symbolCategory==1&&trackdirect.settings.primarySymbolWithNoDirectionPolyline.indexOf(parseInt(this.symbol.charCodeAt(0)))>-1){return false;} -if(symbolCategory==2&&trackdirect.settings.alternativeSymbolWithNoDirectionPolyline.indexOf(parseInt(this.symbol.charCodeAt(0)))>-1){return false;} -return true;} -return false;};trackdirect.models.Packet.prototype.getPhg=function(){if(this.phg!==null){if(this.phg==0){return null;}else if(this.phg<10){return"000"+String(this.phg);}else if(this.phg<100){return"00"+String(this.phg);}else if(this.phg<1000){return"0"+String(this.phg);}else{return String(this.phg);}} -return null;};trackdirect.models.Packet.prototype.getRNGRange=function(){if(this.rng!==null){return this.rng;} -return null;};trackdirect.models.Packet.prototype.getPHGRange=function(){if(this.getPhg()!==null){var p=this.getPhgPower();var h=this.getPhgHaat(false);var g=this.getPhgGain();var gain=Math.pow(10,g/10);var range=Math.sqrt(2*h*Math.sqrt((p/10)*(gain/2)));return range/0.000621371192;} -return null;};trackdirect.models.Packet.prototype.getPHGDescription=function(){if(this.getPhg()!==null){var power=this.getPhgPower();var haat=this.getPhgHaat();var gain=this.getPhgGain();var direction=this.getPhgDirection();var description="";if(power!==null){description+="Power "+power+"W";} -if(haat!==null){if(description.length>0){description+=", ";} -description+="Height "+haat+"m";} -if(gain!==null&&direction!==null){if(description.length>0){description+=", ";} -description+="Gain "+gain+"dB "+direction;} -return description;} -return null;};trackdirect.models.Packet.prototype.getPhgPower=function(){if(this.getPhg()!==null){return Math.pow(parseInt(this.getPhg().substring(0,1)),2);} -return null;};trackdirect.models.Packet.prototype.getPhgHaat=function(inMeters){inMeters=typeof inMeters!=="undefined"?inMeters:true;if(this.getPhg()!=null){value=parseInt(this.getPhg().substring(1,2));var haat=10;if(value==1){haat=20;}else if(value>1){haat=10*Math.pow(value,2);} -if(inMeters){return Math.round(haat*0.3048,0);}else{return haat;}} -return null;};trackdirect.models.Packet.prototype.getPhgGain=function(){if(this.getPhg()!=null){return parseInt(this.getPhg().substring(2,3));} -return null;};trackdirect.models.Packet.prototype.getPhgDirection=function(){if(this.getPhg()!=null){switch(parseInt(this.getPhg().substring(3,4))){case 0:return"omni";break;case 1:return"North East";break;case 2:return"East";break;case 3:return"South East";break;case 4:return"South";break;case 5:return"South West";break;case 6:return"West";break;case 7:return"North West";break;case 8:return"North";break;}} -return null;};trackdirect.models.Packet.prototype.getPhgDirectionDegree=function(){if(this.getPhg()!=null){switch(parseInt(this.getPhg().substring(3,4))){case 0:return null;break;case 1:return 45;break;case 2:return 90;break;case 3:return 135;break;case 4:return 180;break;case 5:return 225;break;case 6:return 270;break;case 7:return 315;break;case 8:return 360;break;}} -return null;};trackdirect.models.Packet.prototype.getMarkerDistance=function(marker){var packetLatLng={lat:parseFloat(this.latitude),lng:parseFloat(this.longitude),};var markerPacketLatLng={lat:parseFloat(marker.packet.latitude),lng:parseFloat(marker.packet.longitude),};return trackdirect.services.distanceCalculator.getDistance(packetLatLng,markerPacketLatLng);};trackdirect.models.Packet.prototype.hasSameSymbol=function(marker){if(marker.packet.symbol==this.symbol&&marker.packet.symbol_table==this.symbol_table){return true;} -return false;};trackdirect.models.Packet.prototype.getLinkifiedRawPath=function(){if(typeof this.raw_path!=="undefined"&&this.raw_path!==null&&this.raw_path!==""){var rawPath=escapeHtml(this.raw_path);rawPath="#"+rawPath+"#";for(var i=0;i<this.station_id_path.length;i++){var relatedStationId=this.station_id_path[i];if(typeof this.station_name_path!=="undefined"&&this.station_name_path!==null){var relatedStationName=escapeHtml(this.station_name_path[i]);var relatedStationNameReplacement='<a href="#" onclick="'+ -" var relatedStationLatestPacket = trackdirect._map.markerCollection.getStationLatestPacket("+ -relatedStationId+ -");"+ -" if (relatedStationLatestPacket !== null) {"+ -" trackdirect.focusOnStation("+ -relatedStationId+ -", true);"+ -" } else {"+ -" alert('Can not go to "+ -relatedStationName+ -", station has not been heard for a long time.');"+ -" }"+ -' return false;">'+ -relatedStationName+ -"</a>";rawPath=rawPath.replaceAll("#"+relatedStationName+",","#"+relatedStationNameReplacement+",");rawPath=rawPath.replaceAll("#"+relatedStationName+"*","#"+relatedStationNameReplacement+"*");rawPath=rawPath.replaceAll("#"+relatedStationName+":","#"+relatedStationNameReplacement+":");rawPath=rawPath.replaceAll("#"+relatedStationName+"#","#"+relatedStationNameReplacement+"#");rawPath=rawPath.replaceAll(","+relatedStationName+",",","+relatedStationNameReplacement+",");rawPath=rawPath.replaceAll(","+relatedStationName+"*",","+relatedStationNameReplacement+"*");rawPath=rawPath.replaceAll(","+relatedStationName+":",","+relatedStationNameReplacement+":");rawPath=rawPath.replaceAll(","+relatedStationName+"#",","+relatedStationNameReplacement+"#");}} -rawPath=rawPath.replace(/#+$/,"");rawPath=rawPath.replace(/^#+/,"");var rawPathArray=rawPath.split(",");if(rawPathArray.length>0){var rawPath=rawPathArray[0]+ -" via "+ -rawPathArray.join(",").replace(rawPathArray[0]+",","");} -return rawPath;} -return null;}; -trackdirect.MarkerCreator=function(map){this._map=map;this._currentPacketSequenceStationId=null;};trackdirect.MarkerCreator.prototype.addPacket=function(packet,tryToShowPacket){if(this.isBadPacket(packet)){return null;} -var markerIdKey=this._map.markerCollection.getMarkerIdKey(packet.marker_id);if(this._map.markerCollection.isExistingMarker(markerIdKey)){var marker=this._map.markerCollection.getMarker(markerIdKey);if(marker.packet.is_moving==1&&packet.is_moving!=1){packet.is_moving=1;}}else{if(packet.packet_order_id==2){packet.packet_order_id=3;}} -markerIdKeyToOverwrite=this._getMarkerIdKeyToOverwrite(packet);if(markerIdKeyToOverwrite!==null){this._overwriteMarker(markerIdKeyToOverwrite,markerIdKey);} -if(this._map.markerCollection.isPacketReplacingMarker(packet)){this._replaceMarker(markerIdKey);} -this._setCurrentPacketSequenceStationId(packet);this._convertLostMarkersToGhost(packet);this._connectToPreviousMarker(packet);marker=this._createMarker(packet);this._map.addMarkerToMapSectors(markerIdKey,packet,tryToShowPacket);if(packet.overwrite==1){marker.overwrite=true;} -return markerIdKey;};trackdirect.MarkerCreator.prototype._getMarkerIdKeyToOverwrite=function(packet){var markerIdKey=this._map.markerCollection.getMarkerIdKey(packet.marker_id);if(this._map.markerCollection.isExistingMarker(markerIdKey)){var marker=this._map.markerCollection.getMarker(markerIdKey);if(marker.overwrite==true&&packet.overwrite==0){return markerIdKey;}}else{var prevMarker=this._map.markerCollection.getStationLatestMarker(packet.station_id);if(prevMarker!==null){if(packet.is_moving==0&&packet.station_id==prevMarker.packet.station_id&&packet.timestamp-prevMarker.packet.timestamp>86400&&Math.round(prevMarker.packet.latitude*100000)==Math.round(packet.latitude*100000)&&Math.round(prevMarker.packet.longitude*100000)==Math.round(packet.longitude*100000)&&prevMarker.packet.symbol==packet.symbol&&prevMarker.packet.symbol_table==packet.symbol_table){return prevMarker.markerIdKey;}}} -return null;};trackdirect.MarkerCreator.prototype._replaceMarker=function(markerIdKey){if(this._map.markerCollection.isExistingMarker(markerIdKey)){var marker=this._map.markerCollection.getMarker(markerIdKey);if(this._map.state.isMarkerInfoWindowOpen(marker)){this._map.state.openInfoWindowForMarkerIdKey=markerIdKey;} -marker.hide(0,false,false);marker.stopDirectionPolyline();}};trackdirect.MarkerCreator.prototype._overwriteMarker=function(prevMarkerIdKey,newMarkerIdKey){var prevMarker=this._map.markerCollection.getMarker(prevMarkerIdKey);if(this._map.state.isMarkerInfoWindowOpen(prevMarker)){this._map.state.openInfoWindowForMarkerIdKey=newMarkerIdKey;} -var markerLabel=prevMarker.label;var markerPolyLine=this._map.markerCollection.getMarkerPolyline(prevMarkerIdKey);var markerDotMarkers=this._map.markerCollection.getDotMarkers(prevMarkerIdKey);var markerOriginDashedPolyline=this._map.markerCollection.getMarkerDashedPolyline(prevMarkerIdKey);clearTimeout(prevMarker.toOldTimerId);if(markerDotMarkers!=null){for(var i=0;i<markerDotMarkers.length;i++){clearTimeout(markerDotMarkers[i].toOldTimerId);}} -this._map.markerCollection.resetMarker(prevMarkerIdKey);if(this._map.oms){this._map.oms.removeMarker(prevMarker);} -if(prevMarker!=null&&typeof prevMarker.packet.latitude!="undefined"&&typeof prevMarker.packet.longitude!="undefined"){this._map.markerCollection.removePostionMarkerId(prevMarker.packet.latitude,prevMarker.packet.longitude,prevMarkerIdKey);this._map.showTopLabelOnPosition(prevMarker.packet.latitude,prevMarker.packet.longitude);} -prevMarker.hide(0,false,false);if(markerPolyLine!==null){markerPolyLine.hide();} -if(markerDotMarkers!=null){for(var i=0;i<markerDotMarkers.length;i++){markerDotMarkers[i].hide();}} -if(markerOriginDashedPolyline!==null){markerOriginDashedPolyline.hide();if(typeof markerOriginDashedPolyline.relatedMarkerIdKey!=="undefined"&&markerOriginDashedPolyline.relatedMarkerIdKey!==null){var prevMarker=this._map.markerCollection.getMarker(markerOriginDashedPolyline.relatedMarkerIdKey);if(prevMarker!==null&&typeof prevMarker._relatedMarkerOriginDashedPolyLine!=="undefined"){prevMarker._relatedMarkerOriginDashedPolyLine=null;}}} -prevMarker.hidePHGCircle();prevMarker.hideRNGCircle();if(prevMarker.directionPolyLine!==null){prevMarker.directionPolyLine.stop();}};trackdirect.MarkerCreator.prototype._setCurrentPacketSequenceStationId=function(packet){if(packet.packet_order_id==3){this._currentPacketSequenceStationId=packet.station_id;} -if(packet.packet_order_id==2&&this._currentPacketSequenceStationId===null){this._currentPacketSequenceStationId=packet.station_id;packet.packet_order_id=3;} -if(packet.packet_order_id==1){this._currentPacketSequenceStationId=null;}};trackdirect.MarkerCreator.prototype._createMarker=function(packet){var markerIdKey=this._map.markerCollection.getMarkerIdKey(packet.marker_id);var prevmarker=this._map.markerCollection.getMarker(markerIdKey);this._map.state.currentMarkerZindex+=1;if(packet.packet_order_id==1||packet.is_moving==0){if(prevmarker!==null){if(prevmarker.packet.latitude!=packet.latitude&&prevmarker.packet.longitude!=packet.longitude){this._map.markerCollection.removePostionMarkerId(prevmarker.latitude,prevmarker.longitude,markerIdKey);this._map.showTopLabelOnPosition(prevmarker.latitude,prevmarker.longitude);}} -var marker=new trackdirect.models.Marker(packet,false,this._map);this._addInfoWindowClickListener(marker,true);}else{var marker=new trackdirect.models.Marker(packet,true,this._map);this._map.markerCollection.addDotMarker(markerIdKey,marker);this._addInfoWindowClickListener(marker,false);} -marker.markerIdKey=markerIdKey;if(prevmarker!==null){if(!this._map.markerCollection.isPacketReplacingMarker(packet)){this._extendTail(prevmarker,marker);}else{this._replaceTailMarker(markerIdKey);}} -if(packet.packet_order_id==1){if(packet.hasDirectionSupport()&&packet.hasConfirmedMapId()){marker.directionPolyLine=new trackdirect.models.DirectionPolyline(marker,this._map);}} -this._map.markerCollection.setMarker(markerIdKey,marker);if(!marker.isDotMarker()){this._createMarkerLabel(marker);this._map.showTopLabelOnPosition(packet.latitude,packet.longitude);} -return marker;};trackdirect.MarkerCreator.prototype._addInfoWindowClickListener=function(marker,useOmsIfExists){var me=this;if(useOmsIfExists&&this._map.oms){me._map.oms.addMarker(marker);}else if(typeof google==="object"&&typeof google.maps==="object"){marker.addListener("click",function(){me._map.openMarkerInfoWindow(marker,false);});}else if(typeof L==="object"){marker.on("click",function(){me._map.openMarkerInfoWindow(marker,false);});}};trackdirect.MarkerCreator.prototype._convertToDotMarker=function(markerIdKey,packet){var dotMarker=this._map.markerCollection.getMarker(markerIdKey);if(dotMarker!=null&&dotMarker.showAsMarker){dotMarker.stopDirectionPolyline();if(this._map.state.isMarkerInfoWindowOpen(dotMarker)){this._map.state.openInfoWindowForMarkerIdKey=markerIdKey;} -if(!this._map.state.isFilterMode){if(this._map.getZoom()<trackdirect.settings.minZoomForMarkerPrevPosition){dotMarker.hide();}} -var icon=this._getDotMarkerIcon(packet);dotMarker.setOpacity(1.0);dotMarker.setIcon(icon);if(typeof google==="object"&&typeof google.maps==="object"){dotMarker.setOptions({anchorPoint:null});} -this._map.markerCollection.addDotMarker(markerIdKey,dotMarker);if(this._map.oms){this._map.oms.removeMarker(dotMarker);var me=this;if(typeof google==="object"&&typeof google.maps==="object"){dotMarker.addListener("click",function(){me._map.openMarkerInfoWindow(dotMarker,false);});}else if(typeof L==="object"){dotMarker.on("click",function(){me._map.openMarkerInfoWindow(dotMarker,false);});}} -if(this._map.markerCollection.hasMarkerLabel(markerIdKey)){var markerLabel=this._map.markerCollection.getMarkerLabel(markerIdKey);markerLabel.hide();} -dotMarker.hasLabel=false;dotMarker.showAsMarker=false;}};trackdirect.MarkerCreator.prototype._getDotMarkerIcon=function(packet){var colorId=trackdirect.services.stationColorCalculator.getColorId(packet);if(typeof google==="object"&&typeof google.maps==="object"){var icon={url:trackdirect.settings.baseUrl+ -trackdirect.settings.imagesBaseDir+ -"dotColor"+ -colorId+ -".png",size:new google.maps.Size(12,12),origin:new google.maps.Point(0,0),anchor:new google.maps.Point(6,6),};}else if(typeof L==="object"){var icon=L.icon({iconUrl:trackdirect.settings.baseUrl+ -trackdirect.settings.imagesBaseDir+ -"dotColor"+ -colorId+ -".png",iconSize:[12,12],iconAnchor:[6,6],popupAnchor:[-3,-12],});} -return icon;};trackdirect.MarkerCreator.prototype._removeExistingRelatedMarkerOriginDashedPolyLine=function(prevMarker,newMarkerIdKey){if(typeof prevMarker._relatedMarkerOriginDashedPolyLine!=="undefined"&&prevMarker._relatedMarkerOriginDashedPolyLine!==null){var ownerMarkerIdKey=prevMarker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey;var ownerMarker=this._map.markerCollection.getMarker(ownerMarkerIdKey);var isConfirmedMapId=true;if(ownerMarker!==null&&ownerMarker.packet.map_id!=1&&ownerMarker.packet.map_id!=2&&ownerMarker.packet.map_id!=12){isConfirmedMapId=false;} -if(ownerMarkerIdKey!=newMarkerIdKey&&(!isConfirmedMapId||!this._map.markerCollection.hasDotMarkers(ownerMarkerIdKey))&&ownerMarker.showAsMarker){this._map.markerCollection.resetMarkerDashedPolyline(prevMarker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey);prevMarker._relatedMarkerOriginDashedPolyLine.hide();prevMarker._relatedMarkerOriginDashedPolyLine=null;}}};trackdirect.MarkerCreator.prototype._createMarkerOriginDashedPolyLine=function(prevMarker,packet,newMarkerIdKey){if(this._map.state.getClientTimestamp(prevMarker.packet.timestamp)<=this._map.state.getOldestAllowedPacketTimestamp()){return;} -if(typeof prevMarker._relatedMarkerOriginDashedPolyLine==="undefined"||prevMarker._relatedMarkerOriginDashedPolyLine===null){var color=trackdirect.services.stationColorCalculator.getColor(packet);var newDashedPolyline=new trackdirect.models.DashedTailPolyline(color,this._map);newDashedPolyline.setMarkerIdKey(newMarkerIdKey);newDashedPolyline.setRelatedMarkerIdKey(prevMarker.markerIdKey);newDashedPolyline.addPacket(prevMarker.packet);newDashedPolyline.addPacket(packet);this._map.markerCollection.setMarkerDashedPolyline(newMarkerIdKey,newDashedPolyline);prevMarker._relatedMarkerOriginDashedPolyLine=newDashedPolyline;this._map.addMarkerToMapSectorInterval(newMarkerIdKey,prevMarker.packet.getLatLngLiteral(),packet.getLatLngLiteral());}};trackdirect.MarkerCreator.prototype._convertLostMarkersToGhost=function(newPacket){if(newPacket.packet_order_id!=2&&newPacket.hasConfirmedMapId()&&newPacket.is_moving==1&&this._map.markerCollection.isPacketReplacingMarker(newPacket)==false){if(this._map.markerCollection.hasNonRelatedMovingMarkerId(newPacket)){list=this._map.markerCollection.getStationMarkerIdKeys(newPacket.station_id);for(var markerIdKey in list){var newMarkerIdKey=this._map.markerCollection.getMarkerIdKey(newPacket.marker_id);var marker=this._map.markerCollection.getMarker(markerIdKey);if(marker!==null&&markerIdKey!==newMarkerIdKey&&marker.packet.is_moving==1&&marker.packet.timestamp<=newPacket.timestamp&&marker.packet.hasConfirmedMapId()&&marker.isSingleMovingMarker()){if(this._map.markerCollection.hasRelatedDashedPolyline(marker)){masterMarkerIdKey=this._map.markerCollection.getMarkerMasterMarkerKeyId(markerIdKey);if(masterMarkerIdKey!==markerIdKey&&this._map.markerCollection.isExistingMarker(masterMarkerIdKey)!==null){continue;}else{this._map.markerCollection.resetMarkerDashedPolyline(marker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey);marker._relatedMarkerOriginDashedPolyLine.hide();marker._relatedMarkerOriginDashedPolyLine=null;}} -marker.packet.map_id=9;marker.setOpacity(0.5);marker.hasLabel=false;marker.hideLabel();marker.stopDirectionPolyline();if(!this._map.state.isGhostMarkersVisible){marker.hide();}}}}}};trackdirect.MarkerCreator.prototype._getLatestStationMarkerToConnectTo=function(newPacket,newMarkerIdKey){if(this._map.markerCollection.getStationLatestMovingMarkerIdKey(newPacket.station_id)===newMarkerIdKey){return newMarkerIdKey;} -var latestPrevMarkerIdKey=null;var latestPrevMarkerIdKeyTimestamp=null;var list=this._map.markerCollection.getStationMarkerIdKeys(newPacket.station_id);for(var markerIdKey in list){var marker=this._map.markerCollection.getMarker(markerIdKey);if(marker!==null){if(markerIdKey===newMarkerIdKey){return markerIdKey;}else if(marker.packet.hasConfirmedMapId()&&marker.packet.is_moving==1&&marker.overwrite!==true&&marker.isSingleMovingMarker()==false&&(latestPrevMarkerIdKeyTimestamp===null||latestPrevMarkerIdKeyTimestamp<marker.packet.timestamp)){latestPrevMarkerIdKey=markerIdKey;latestPrevMarkerIdKeyTimestamp=marker.packet.timestamp;}}} -return latestPrevMarkerIdKey;};trackdirect.MarkerCreator.prototype._connectToPreviousMarker=function(newPacket){var newMarkerIdKey=this._map.markerCollection.getMarkerIdKey(newPacket.marker_id);if(newPacket.packet_order_id!=2&&newPacket.is_moving==1&&this._map.markerCollection.isPacketReplacingMarker(newPacket)==false){var latestPrevMarkerIdKey=this._getLatestStationMarkerToConnectTo(newPacket,newMarkerIdKey);var latestPrevMarker=this._map.markerCollection.getMarker(latestPrevMarkerIdKey);if(latestPrevMarker!==null){if(newPacket.hasConfirmedMapId()){latestPrevMarker.stopDirectionPolyline();} -if(latestPrevMarkerIdKey==newMarkerIdKey){if(this._map.markerCollection.hasDashedPolyline(latestPrevMarkerIdKey)&&newPacket.hasConfirmedMapId()){var dashedPolyline=this._map.markerCollection.getMarkerDashedPolyline(latestPrevMarkerIdKey);var latestPrevRelatedMarkerIdKey=dashedPolyline.relatedMarkerIdKey;this._convertToDotMarker(latestPrevRelatedMarkerIdKey,newPacket);} -this._convertToDotMarker(latestPrevMarkerIdKey,newPacket);}else{this._removeExistingRelatedMarkerOriginDashedPolyLine(latestPrevMarker,newMarkerIdKey);this._createMarkerOriginDashedPolyLine(latestPrevMarker,newPacket,newMarkerIdKey);if(newPacket.hasConfirmedMapId()){this._convertToDotMarker(latestPrevMarkerIdKey,newPacket);}}}}};trackdirect.MarkerCreator.prototype._createMarkerLabel=function(marker){var position=marker.packet.getLatLngLiteral();if(this._map.markerCollection.hasMarkerLabel(marker.markerIdKey)){this._map.markerCollection.setMarkerLabelPosition(marker.markerIdKey,position);}else if(marker.packet.packet_order_id==1){if(marker.packet.getOgnRegistration()!=null){labelText=marker.packet.getOgnRegistration();if(marker.packet.getOgnCN()!==null){labelText+=" ["+marker.packet.getOgnCN()+"]";}}else{if(marker.packet.station_name==marker.packet.sender_name){labelText=escapeHtml(marker.packet.station_name);}else{labelText=escapeHtml(marker.packet.station_name)+ -' <span style="font-weight: normal;">('+ -escapeHtml(marker.packet.sender_name)+ -")</span>";} -if(marker.packet.comment){var opIndex=marker.packet.comment.indexOf("OP:");if(opIndex>-1){opStr=marker.packet.comment.substring(opIndex+3).replace(/^\s+/,"")+" ";opStr=opStr.substring(0,opStr.indexOf(" "));if(opStr.length<=10&&opStr.length>0){labelText+=' <span style="font-weight: normal;">['+ -escapeHtml(opStr)+ -"]</span>";}}}} -var markerLabel=new trackdirect.models.Label({position:position,text:labelText,},this._map);this._map.markerCollection.setMarkerLabel(marker.markerIdKey,markerLabel);}};trackdirect.MarkerCreator.prototype._extendTail=function(prevmarker,newmarker){if(this._map.state.getClientTimestamp(newmarker.packet.timestamp)<=this._map.state.getOldestAllowedPacketTimestamp()){return;} -if(this._map.markerCollection.hasPolyline(newmarker.markerIdKey)){var polyline=this._map.markerCollection.getMarkerPolyline(newmarker.markerIdKey);polyline.addMarker(newmarker);}else{if(this._map.state.getClientTimestamp(this._map.markerCollection.getMarker(newmarker.markerIdKey).packet.timestamp)<=this._map.state.getOldestAllowedPacketTimestamp()){return;}else{var color=trackdirect.services.stationColorCalculator.getColor(newmarker.packet);var newTailPolyline=new trackdirect.models.TailPolyline(color,this._map);newTailPolyline.setMarkerIdKey(newmarker.markerIdKey);newTailPolyline.addMarker(prevmarker);newTailPolyline.addMarker(newmarker);this._map.markerCollection.setMarkerPolyline(newmarker.markerIdKey,newTailPolyline);}}};trackdirect.MarkerCreator.prototype._replaceTailMarker=function(markerIdKey){if(this._map.markerCollection.hasPolyline(markerIdKey)){var marker=this._map.markerCollection.getMarker(markerIdKey);var polylines=this._map.markerCollection.getMarkerPolyline(markerIdKey);var latestIndex=polylines.getPath().length-1;if(latestIndex>=0){polylines.getPathItem(latestIndex).marker=marker;}}};trackdirect.MarkerCreator.prototype.isBadPacket=function(packet){if(typeof packet.latitude==="undefined"||typeof packet.longitude==="undefined"||packet.marker_id==null){return true;} -var markerIdKey=this._map.markerCollection.getMarkerIdKey(packet.marker_id);if(this._map.markerCollection.isExistingMarker(markerIdKey)){var marker=this._map.markerCollection.getMarker(markerIdKey);if(packet.packet_order_id==1&&this._currentPacketSequenceStationId==packet.station_id){return false;} -if(packet.db==0){if(this._map.markerCollection.isDuplicate(packet)){return true;}} -if(packet.db==1&&marker.packet.db==1&&marker.packet.source===0&&packet.id===marker.packet.id){return true;} -if(marker.overwrite==true&&packet.overwrite==0){return false;}else{if(marker.packet.timestamp>=packet.timestamp){return true;} -if(marker.packet.reported_timestamp!==null&&packet.reported_timestamp!==null&&Math.abs(marker.packet.reported_timestamp-packet.reported_timestamp)<600){if(marker.packet.reported_timestamp>packet.reported_timestamp){return true;}}}} -if(packet.is_moving==1){var list=this._map.markerCollection.getStationMarkerIdKeys(packet.station_id);for(var relatedMarkerIdKey in list){var relatedMarker=this._map.markerCollection.getMarker(relatedMarkerIdKey);if(relatedMarker!==null&&relatedMarker.overwrite==false&&relatedMarker.packet.timestamp>packet.timestamp){return true;}}} -return false;}; -trackdirect.models.MarkerCollection=function(){this._markerKeys={};this._markers=[];this._stationMarkers={};this._stationLastMovingMarkerIdKey={};this._stationLastMarker={};this._senderLastMarker={};this._positionMarkersIdKeys={};this._dotMarkers=[];this._markerPolyLines=[];this._markerOriginDashedPolyLines=[];this._mapSectorMarkerIdKeys={};this._stationCoverage={};this.resetAllMarkers();};trackdirect.models.MarkerCollection.prototype.getMarkerIdKey=function(markerId){if(!(markerId in this._markerKeys)){this._markers.push(null);this._markerPolyLines.push(null);this._dotMarkers.push(null);this._markerOriginDashedPolyLines.push(null);var markerIdKey=this._markers.length-1;this._markerKeys[markerId]=markerIdKey;return markerIdKey;}else{return this._markerKeys[markerId];}};trackdirect.models.MarkerCollection.prototype.isExistingMarker=function(markerIdKey){if(markerIdKey in this._markers&&this._markers[markerIdKey]!==null){return true;} -return false;};trackdirect.models.MarkerCollection.prototype.setMarker=function(markerIdKey,marker){if(marker!==null&&typeof marker.packet!=="undefined"){var packet=marker.packet;this._markers[markerIdKey]=marker;this._addStationMarkerId(markerIdKey,packet);this._addStationLastMarker(packet,marker);this.addPostionMarkerId(markerIdKey,packet);}};trackdirect.models.MarkerCollection.prototype.getMarker=function(markerIdKey){if(markerIdKey!==null&&markerIdKey in this._markers){return this._markers[markerIdKey];} -return null;};trackdirect.models.MarkerCollection.prototype.getAllMarkers=function(){return this._markers;};trackdirect.models.MarkerCollection.prototype.removeMarker=function(markerIdKey){if(markerIdKey!==null&&markerIdKey in this._markers){this._markers.splice(markerIdKey,1);}};trackdirect.models.MarkerCollection.prototype.getNumberOfMarkers=function(){return this._markers.length;};trackdirect.models.MarkerCollection.prototype.setMarkerLabel=function(markerIdKey,label){if(markerIdKey in this._markers&&this._markers[markerIdKey]!==null){this._markers[markerIdKey].label=label;}};trackdirect.models.MarkerCollection.prototype.getMarkerLabel=function(markerIdKey){if(markerIdKey in this._markers&&this._markers[markerIdKey]!==null){return this._markers[markerIdKey].label;} -return null;};trackdirect.models.MarkerCollection.prototype.hasMarkerLabel=function(markerIdKey){if(markerIdKey in this._markers&&this._markers[markerIdKey]!==null&&this._markers[markerIdKey].label!==null){return true;} -return false;};trackdirect.models.MarkerCollection.prototype.setMarkerLabelPosition=function(markerIdKey,position){if(markerIdKey in this._markers&&this._markers[markerIdKey]!==null&&this._markers[markerIdKey].label!==null){this._markers[markerIdKey].label.position=position;}};trackdirect.models.MarkerCollection.prototype.isDuplicate=function(packet){if(packet.is_moving==0){return false;} -for(var markerIdKey in this.getPositionMarkerIdKeys(packet.latitude,packet.longitude)){var marker=this.getMarker(markerIdKey);if(marker!==null&&marker.packet.station_id==packet.station_id&&marker.packet.symbol==packet.symbol&&marker.packet.symbol_table==packet.symbol_table&&marker.packet.course==packet.course){return true;}} -return false;};trackdirect.models.MarkerCollection.prototype.addDotMarker=function(markerIdKey,dotMarker){if(markerIdKey in this._dotMarkers){if(this._dotMarkers[markerIdKey]===null){this._dotMarkers[markerIdKey]=[];} -this._dotMarkers[markerIdKey].push(dotMarker);}};trackdirect.models.MarkerCollection.prototype.getDotMarkers=function(markerIdKey){if(markerIdKey in this._dotMarkers&&this._dotMarkers[markerIdKey]!==null){return this._dotMarkers[markerIdKey];} -return[];};trackdirect.models.MarkerCollection.prototype.hasDotMarkers=function(markerIdKey){if(markerIdKey in this._dotMarkers&&this._dotMarkers[markerIdKey]!==null&&this._dotMarkers[markerIdKey].length>0){return true;} -return false;};trackdirect.models.MarkerCollection.prototype.addStationCoverage=function(stationId,stationCoveragePolygon){this._stationCoverage[stationId]=stationCoveragePolygon;};trackdirect.models.MarkerCollection.prototype.getStationCoverage=function(stationId){if(stationId in this._stationCoverage&&this._stationCoverage[stationId]!==null){return this._stationCoverage[stationId];} -return null;};trackdirect.models.MarkerCollection.prototype.getStationIdListWithVisibleCoverage=function(){var result=[];for(var stationId in this._stationCoverage){if(this._stationCoverage[stationId].isRequestedToBeVisible()){result.push(stationId);}} -return result;};trackdirect.models.MarkerCollection.prototype.hasCoveragePolygon=function(stationId){if(stationId in this._stationCoverage&&this._stationCoverage[stationId]!==null){return true;} -return false;};trackdirect.models.MarkerCollection.prototype.resetDotMarkers=function(markerIdKey){if(markerIdKey in this._dotMarkers&&this._dotMarkers[markerIdKey]!==null){this._dotMarkers[markerIdKey]=[];}};trackdirect.models.MarkerCollection.prototype.removeOldestDotMarker=function(markerIdKey){if(this.hasDotMarkers(markerIdKey)){latestMarker=this.getMarker(markerIdKey);var latestMarkerIndex=this.getDotMarkerIndex(markerIdKey,latestMarker);var dotMarkers=this.getDotMarkers(markerIdKey);var maxNumberOfPolyLinePoints=dotMarkers.length;if(latestMarkerIndex>-1){maxNumberOfPolyLinePoints=maxNumberOfPolyLinePoints-1;} -var removedItems=this._dotMarkers[markerIdKey].splice(0,1);if(removedItems.length==1){var removedMarker=removedItems[0];removedMarker.hide();if(this.hasPolyline(removedMarker.markerIdKey)){var polyline=this.getMarkerPolyline(removedMarker.markerIdKey);while(polyline.getPathLength()>maxNumberOfPolyLinePoints){polyline.removePathItem(0);}} -removedMarker=null;return true;}} -return false;};trackdirect.models.MarkerCollection.prototype.getDotMarkerIndex=function(markerIdKey,marker){if(!this.hasDotMarkers(markerIdKey)){return-1;} -for(var i=0,len=this._dotMarkers[markerIdKey].length;i<len;i++){var foundMarker=this._dotMarkers[markerIdKey][i];if(foundMarker===null){continue;} -if(typeof marker.packet.id!=="undefined"&&marker.packet.id!==null&&foundMarker.packet.id===marker.packet.id&&foundMarker.packet.map_id===marker.packet.map_id){return i;} -if(foundMarker.packet.station_id===marker.packet.station_id&&foundMarker.packet.timestamp===marker.packet.timestamp&&Math.round(foundMarker.packet.latitude*100000)===Math.round(marker.packet.latitude*100000)&&Math.round(foundMarker.packet.longitude*100000)===Math.round(marker.packet.longitude*100000)&&foundMarker.packet.map_id===marker.packet.map_id){return i;}} -return-1;};trackdirect.models.MarkerCollection.prototype.setMarkerPolyline=function(markerIdKey,polyline){if(markerIdKey in this._markerPolyLines){this._markerPolyLines[markerIdKey]=polyline;}};trackdirect.models.MarkerCollection.prototype.getMarkerPolyline=function(markerIdKey){if(this.hasPolyline(markerIdKey)){return this._markerPolyLines[markerIdKey];} -return null;};trackdirect.models.MarkerCollection.prototype.hasPolyline=function(markerIdKey){if(markerIdKey in this._markerPolyLines&&this._markerPolyLines[markerIdKey]!==null){if(this._markerPolyLines[markerIdKey].getPathLength()>1){return true;}else{this._markerPolyLines[markerIdKey].hide();this._markerPolyLines[markerIdKey]=null;return false;}} -return false;};trackdirect.models.MarkerCollection.prototype.resetMarkerPolyline=function(markerIdKey){if(markerIdKey in this._markerPolyLines){this._markerPolyLines[markerIdKey]=null;}};trackdirect.models.MarkerCollection.prototype.setMarkerDashedPolyline=function(markerIdKey,polyline){if(markerIdKey in this._markerOriginDashedPolyLines){this._markerOriginDashedPolyLines[markerIdKey]=polyline;}};trackdirect.models.MarkerCollection.prototype.getMarkerDashedPolyline=function(markerIdKey){if(this.hasDashedPolyline(markerIdKey)){return this._markerOriginDashedPolyLines[markerIdKey];} -return null;};trackdirect.models.MarkerCollection.prototype.hasDashedPolyline=function(markerIdKey){if(markerIdKey in this._markerOriginDashedPolyLines&&this._markerOriginDashedPolyLines[markerIdKey]!==null){if(this._markerOriginDashedPolyLines[markerIdKey].getPathLength()>1){return true;}else{this._markerOriginDashedPolyLines[markerIdKey].hide();this._markerOriginDashedPolyLines[markerIdKey]=null;return false;}} -return false;};trackdirect.models.MarkerCollection.prototype.resetMarkerDashedPolyline=function(markerIdKey){if(markerIdKey in this._markerOriginDashedPolyLines){this._markerOriginDashedPolyLines[markerIdKey]=null;}};trackdirect.models.MarkerCollection.prototype.getStationLatestPacket=function(stationId){if(typeof this._stationLastMarker[stationId]!=="undefined"&&this._stationLastMarker[stationId]!==null&&typeof this._stationLastMarker[stationId].packet!=="undefined"){return this._stationLastMarker[stationId].packet;}else{return null;}};trackdirect.models.MarkerCollection.prototype.getStationLatestMarker=function(stationId){if(typeof this._stationLastMarker[stationId]!=="undefined"&&this._stationLastMarker[stationId]!==null){return this._stationLastMarker[stationId];}else{return null;}};trackdirect.models.MarkerCollection.prototype.getSenderLatestPacket=function(senderId){if(typeof this._senderLastMarker[senderId]!=="undefined"&&this._senderLastMarker[senderId]!==null&&typeof this._senderLastMarker[senderId].packet!=="undefined"){return this._senderLastMarker[senderId].packet;}else{return null;}};trackdirect.models.MarkerCollection.prototype.getStationLatestMovingMarkerIdKey=function(stationId){if(this._stationLastMovingMarkerIdKey!==null&&typeof this._stationLastMovingMarkerIdKey[stationId]!=="undefined"&&this._stationLastMovingMarkerIdKey[stationId]!==null&&this.isExistingMarker(this._stationLastMovingMarkerIdKey[stationId])){return this._stationLastMovingMarkerIdKey[stationId];} -return null;};trackdirect.models.MarkerCollection.prototype.getMarkerMasterMarkerKeyId=function(markerIdKey){if(this.isExistingMarker(markerIdKey)){var marker=this._markers[markerIdKey];if(this.hasRelatedDashedPolyline(marker)){return this.getMarkerMasterMarkerKeyId(marker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey);}} -return markerIdKey;};trackdirect.models.MarkerCollection.prototype.getStationLatestVisibleMarker=function(stationId){var latestVisibleMarker=null;var latestVisibleMarkerTimestamp=null;for(var markerIdKey in this._stationMarkers[stationId]){var marker=this._markers[markerIdKey];if(typeof marker!=="undefined"&&marker!==null&&typeof marker.getMap()!=="undefined"&&marker.getMap()!==null){if(latestVisibleMarkerTimestamp===null||marker.packet.timestamp>latestVisibleMarkerTimestamp){latestVisibleMarker=marker;latestVisibleMarkerTimestamp=marker.packet.timestamp;}}} -return latestVisibleMarker;};trackdirect.models.MarkerCollection.prototype.getStationMarkerIdKeys=function(stationId){if(stationId in this._stationMarkers){return this._stationMarkers[stationId];} -return{};};trackdirect.models.MarkerCollection.prototype.getPositionMarkerIdKeys=function(latitude,longitude){var key=this._getCompareablePosition(latitude,longitude);if(key in this._positionMarkersIdKeys){return this._positionMarkersIdKeys[key];} -return{};};trackdirect.models.MarkerCollection.prototype.addPostionMarkerId=function(markerIdKey,packet){var key=this._getCompareablePosition(packet.latitude,packet.longitude);if(!(key in this._positionMarkersIdKeys)){this._positionMarkersIdKeys[key]={};} -this._positionMarkersIdKeys[key][markerIdKey]=true;};trackdirect.models.MarkerCollection.prototype.removePostionMarkerId=function(latitude,longitude,markerIdKey){var key=this._getCompareablePosition(latitude,longitude);if(key in this._positionMarkersIdKeys){if(markerIdKey in this._positionMarkersIdKeys[key]){this._positionMarkersIdKeys[key][markerIdKey]=false;}}};trackdirect.models.MarkerCollection.prototype.addMarkerToMapSector=function(markerIdKey,markerMapSector){if(!(markerMapSector in this._mapSectorMarkerIdKeys)){this._mapSectorMarkerIdKeys[markerMapSector]=[];} -if(this._mapSectorMarkerIdKeys[markerMapSector].indexOf(markerIdKey)<0){this._mapSectorMarkerIdKeys[markerMapSector].push(markerIdKey);}};trackdirect.models.MarkerCollection.prototype.getMapSectorMarkerKeys=function(mapSector){if(mapSector in this._mapSectorMarkerIdKeys){return this._mapSectorMarkerIdKeys[mapSector];} -return[];};trackdirect.models.MarkerCollection.prototype.resetAllMarkers=function(){this._markerKeys={};this._markers=[];this._markerPolyLines=[];this._dotMarkers=[];this._markerOriginDashedPolyLines=[];this._stationMarkers={};this._stationLastMovingMarkerIdKey={};this._stationLastMarker={};this._senderLastMarker={};this._positionMarkersIdKeys={};this._mapSectorMarkerIdKeys={};this._stationCoverage={};};trackdirect.models.MarkerCollection.prototype.resetMarker=function(markerIdKey){if(this.isExistingMarker(markerIdKey)){var marker=this._markers[markerIdKey];this._markers[markerIdKey]=null;this._markerPolyLines[markerIdKey]=null;this._dotMarkers[markerIdKey]=null;this._markerOriginDashedPolyLines[markerIdKey]=null;if(typeof marker.packet.latitude!="undefined"&&typeof marker.packet.longitude!="undefined"){this.removePostionMarkerId(marker.packet.latitude,marker.packet.longitude,markerIdKey);}}};trackdirect.models.MarkerCollection.prototype.hasRelatedDashedPolyline=function(marker){if(typeof marker._relatedMarkerOriginDashedPolyLine!=="undefined"&&marker._relatedMarkerOriginDashedPolyLine!==null){return true;} -return false;};trackdirect.models.MarkerCollection.prototype.hasNonRelatedMovingMarkerId=function(packet){var latestStationMovingMarkerIdKey=this.getStationLatestMovingMarkerIdKey(packet.station_id);var newMarkerIdKey=this.getMarkerIdKey(packet.marker_id);if(latestStationMovingMarkerIdKey!==null&&latestStationMovingMarkerIdKey!==newMarkerIdKey){var latestStationMovingMarker=this.getMarker(latestStationMovingMarkerIdKey);if(latestStationMovingMarker.packet.hasConfirmedMapId()){return true;}} -return false;};trackdirect.models.MarkerCollection.prototype.isPacketReplacingMarker=function(packet){var markerIdKey=this.getMarkerIdKey(packet.marker_id);if(this.isExistingMarker(markerIdKey)){var marker=this.getMarker(markerIdKey);if(marker!==null){if(packet.map_id==14){return true;} -if(packet.is_moving==0){return true;} -if([1,2,7,12].indexOf(packet.map_id)<0){return true;}}} -return false;};trackdirect.models.MarkerCollection.prototype._addStationMarkerId=function(markerIdKey,packet){if(!(packet.station_id in this._stationMarkers)){this._stationMarkers[packet.station_id]={};} -this._stationMarkers[packet.station_id][markerIdKey]=true;if(packet.is_moving==1&&packet.hasConfirmedMapId()){this._stationLastMovingMarkerIdKey[packet.station_id]=markerIdKey;}};trackdirect.models.MarkerCollection.prototype._addStationLastMarker=function(packet,marker){if(packet.hasConfirmedMapId()){if(typeof this._stationLastMarker[packet.station_id]==="undefined"||this._stationLastMarker[packet.station_id]===null){this._stationLastMarker[packet.station_id]=marker;if(packet.station_name==packet.sender_name){this._senderLastMarker[packet.sender_id]=marker;}}else if(this._stationLastMarker[packet.station_id].packet.timestamp<=packet.timestamp){this._stationLastMarker[packet.station_id]=marker;if(packet.station_name==packet.sender_name){this._senderLastMarker[packet.sender_id]=marker;}}}};trackdirect.models.MarkerCollection.prototype._getCompareablePosition=function(latitude,longitude){var latCmp=Math.round(latitude*100000);var lngCmp=Math.round(longitude*100000);return String(latCmp)+":"+String(lngCmp);}; -trackdirect.models.Marker=function(packet,isDotMarker,map){this.packet=packet;this._isDotMarker=isDotMarker;this._defaultMap=map;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Marker.call(this,this._getGoogleMarkerOptions());}else if(typeof L==="object"){L.Marker.call(this,this.packet.getLatLngLiteral(),this._getLeafletMarkerOptions());} -this._init();if(typeof google==="object"&&typeof google.maps==="object"){this.setMap(null);}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.Marker.prototype=Object.create(google.maps.Marker.prototype);}else if(typeof L==="object"){trackdirect.models.Marker.prototype=Object.create(L.Marker.prototype);} -trackdirect.models.Marker.prototype.constructor=trackdirect.models.Marker;trackdirect.models.Marker.prototype._init=function(){this._tdEventListeners={};this.hasLabel=false;this.showAsMarker=false;this.overwrite=false;this.markerIdKey=null;this.label=null;this.transmitPolyLine=null;this.directionPolyLine=null;this.phgCircle=null;this.rngCircle=null;this.hideTimerId=null;this.toOldTimerId=null;if(!this._isDotMarker){this.showAsMarker=true;if(this.packet.map_id!=1&&this.packet.map_id!=2&&this.packet.map_id!=12){this.setOpacity(0.5);}else{this.hasLabel=true;}} -if(this._defaultMap.state.endTimeTravelTimestamp===null){this._addMarkerToOldTimeout(0);} -this._addMarkerTooltip();};trackdirect.models.Marker.prototype.addTdListener=function(event,handler){if(!(event in this._tdEventListeners)){this._tdEventListeners[event]=[];} -this._tdEventListeners[event].push(handler);};trackdirect.models.Marker.prototype.isDotMarker=function(){return this._isDotMarker;};trackdirect.models.Marker.prototype.isVisible=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()!=="undefined"&&this.getMap()!==null){return true;}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){return true;}} -return false;};trackdirect.models.Marker.prototype.getPositionLiteral=function(){if(typeof google==="object"&&typeof google.maps==="object"){var latLng=this.getPosition();if(typeof latLng!=="undefined"&&typeof latLng.lat==="function"){return{lat:latLng.lat(),lng:latLng.lng()};}else{return latLng;}}else if(typeof L==="object"){var latLng=this.getLatLng();if(typeof latLng!=="undefined"){return{lat:latLng.lat,lng:latLng.lng};}else{return latLng;}} -return{};};trackdirect.models.Marker.prototype.show=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}}else if(typeof L==="object"){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}} -if(this.hideTimerId!==null){clearTimeout(this.hideTimerId);} -this._emitTdEventListeners("onshow");};trackdirect.models.Marker.prototype.hide=function(delayInMilliSeconds,onlyHideIfNeeded,hideOpenInfoWindow){delayInMilliSeconds=typeof delayInMilliSeconds!=="undefined"?delayInMilliSeconds:0;onlyHideIfNeeded=typeof onlyHideIfNeeded!=="undefined"?onlyHideIfNeeded:false;hideOpenInfoWindow=typeof hideOpenInfoWindow!=="undefined"?hideOpenInfoWindow:true;if(delayInMilliSeconds>0){this._hideLater(delayInMilliSeconds,onlyHideIfNeeded);return;} -if(onlyHideIfNeeded&&this.shouldMarkerBeVisible()){return;} -if(hideOpenInfoWindow&&this._defaultMap.state.isMarkerInfoWindowOpen(this)){this._defaultMap.state.openInfoWindow.hide();} -if(this.isVisible()){if(typeof google==="object"&&typeof google.maps==="object"){this.setMap(null);}else if(typeof L==="object"){this._defaultMap.removeLayer(this);}} -if(this.showAsMarker){this.hideLabel();} -this.hidePHGCircle();this.hideRNGCircle();if(this.hideTimerId!==null){clearTimeout(this.hideTimerId);} -this._emitTdEventListeners("onhide");};trackdirect.models.Marker.prototype.getDefaultMap=function(){return this._defaultMap;};trackdirect.models.Marker.prototype.getMap=function(){if(typeof google==="object"&&typeof google.maps==="object"){var map=google.maps.Marker.prototype.getMap.call(this);if(typeof map!=="undefined"){return map;}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){return this._defaultMap;}} -return null;};trackdirect.models.Marker.prototype.getState=function(){return this._defaultMap.state;};trackdirect.models.Marker.prototype.getZIndex=function(){if(typeof google==="object"&&typeof google.maps==="object"){return this.zIndex;}else if(typeof L==="object"){return this.options.zIndexOffset;} -return 0;};trackdirect.models.Marker.prototype.showCompleteMarker=function(){if(this._defaultMap.state.isFilterMode&&this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id)==-1){return;} -if(this.shouldMarkerBeVisible()){if(this.showAsMarker){this.show();} -if(this._defaultMap.state.isFilterMode){this.showMarkerPrevPosition();this.showMarkerTail();this.showLabel();}else{if(this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerPrevPosition){this.showMarkerPrevPosition();} -if(this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerTail){this.showMarkerTail();} -if(this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerLabel){this.showLabel();}} -if(this._defaultMap.state.showPHGCircles==1){this.showPHGCircle(true);}else if(this._defaultMap.state.showPHGCircles==2){this.showPHGCircle(false);} -if(this._defaultMap.state.showRNGCircles==1){this._showRNGCircle(true);}else if(this._defaultMap.state.showRNGCircles==2){this._showRNGCircle(false);}}};trackdirect.models.Marker.prototype.hideCompleteMarker=function(){this.hide();this.hideMarkerPrevPosition();this.hideMarkerTail();};trackdirect.models.Marker.prototype.showMarkerDetails=function(){if(this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerPrevPosition){this.showMarkerPrevPosition();} -if(this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerTail){this.showMarkerTail();} -if(this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerLabel){this.showLabel();}};trackdirect.models.Marker.prototype.hideMarkerDetails=function(){if(this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkerPrevPosition){this.hideMarkerPrevPosition();} -if(this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkerTail){this.hideMarkerTail();} -if(this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkerLabel){this.hideLabel();}};trackdirect.models.Marker.prototype.showLabel=function(){if(!this._defaultMap.state.isFilterMode||this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id)>-1){if(this.isVisible()&&this.label!==null&&(this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerLabel||this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id)>-1)&&this.hasLabel&&this.packet.hasConfirmedMapId()){this.label.show();}}};trackdirect.models.Marker.prototype.hideLabel=function(){if(this.label!==null&&this.hasLabel){this.label.hide();}};trackdirect.models.Marker.prototype.showMarkerPrevPosition=function(){if(this.shouldMarkerBeVisible()&&this.packet.hasConfirmedMapId()){var oldestAllowedPacketTimestamp=this._defaultMap.state.getOldestAllowedPacketTimestamp();var dotMarkers=this._defaultMap.markerCollection.getDotMarkers(this.markerIdKey);for(var i=0;i<dotMarkers.length;i++){var dotMarker=dotMarkers[i];if(this._defaultMap.state.getClientTimestamp(dotMarker.packet.timestamp)>oldestAllowedPacketTimestamp){dotMarker.show();}} -if(!this.showAsMarker){this.show();}}};trackdirect.models.Marker.prototype.hideMarkerPrevPosition=function(){if(this.packet.hasConfirmedMapId()){var dotMarkers=this._defaultMap.markerCollection.getDotMarkers(this.markerIdKey);for(var i=0;i<dotMarkers.length;i++){var dotMarker=dotMarkers[i];dotMarker.hide();} -if(!this.showAsMarker){this.hide();}}};trackdirect.models.Marker.prototype.showMarkerTail=function(){if(this.shouldMarkerBeVisible()){if(this.packet.hasConfirmedMapId()===false&&this._defaultMap.state.showGhostPosition){this.show();} -if(this._defaultMap.markerCollection.hasPolyline(this.markerIdKey)&&this.packet.hasConfirmedMapId()){var polyline=this._defaultMap.markerCollection.getMarkerPolyline(this.markerIdKey);while(this._defaultMap.state.getClientTimestamp(polyline.getPathItem(0).marker.packet.timestamp)<this._defaultMap.state.getOldestAllowedPacketTimestamp()){var relatedMarker=polyline.getPathItem(0).marker;if(relatedMarker.getMap()===null){polyline.removePathItem(0);}else{break;}} -polyline.show();} -var dashedPolyline=this._defaultMap.markerCollection.getMarkerDashedPolyline(this.markerIdKey);if(dashedPolyline!==null&&this.packet.hasConfirmedMapId()){var dashedPolyLineRelatedMarker=this._defaultMap.markerCollection.getMarker(dashedPolyline.relatedMarkerIdKey);if(this._defaultMap.state.getClientTimestamp(dashedPolyLineRelatedMarker.packet.timestamp)>this._defaultMap.state.getOldestAllowedPacketTimestamp()){dashedPolyline.show();if(typeof dashedPolyline.relatedMarkerIdKey!=="undefined"){var relatedMarker=this._defaultMap.markerCollection.getMarker(dashedPolyline.relatedMarkerIdKey);if(relatedMarker!==null&&relatedMarker.markerIdKey!==this.markerIdKey){relatedMarker.showMarkerTail();}}}} -if(this.directionPolyLine!==null){this.directionPolyLine.show();}}};trackdirect.models.Marker.prototype.hideMarkerTail=function(markerIdKey){var latestMarker=this._defaultMap.markerCollection.getStationLatestMarker(this.packet.station_id);if(this._defaultMap.state.isMarkerInfoWindowOpen(this)||this._defaultMap.state.isMarkerInfoWindowOpen(latestMarker)){return;} -if(this.packet.map_id!=1&&this.packet.map_id!=2&&this.packet.map_id!=12){this.hide();if(this.showAsMarker){this.hideLabel();}} -var polyline=this._defaultMap.markerCollection.getMarkerPolyline(this.markerIdKey);if(polyline!==null){if(this._defaultMap.state.isPolylineInfoWindowOpen(polyline)){this._defaultMap.state.openInfoWindow.hide();} -polyline.hide();} -var dashedPolyline=this._defaultMap.markerCollection.getMarkerDashedPolyline(this.markerIdKey);if(dashedPolyline!==null){dashedPolyline.hide();if(typeof dashedPolyline.relatedMarkerIdKey!=="undefined"){var relatedMarker=this._defaultMap.markerCollection.getMarker(dashedPolyline.relatedMarkerIdKey);if(relatedMarker!==null&&relatedMarker.markerIdKey!==this.markerIdKey){relatedMarker.hideMarkerTail();}}} -if(this.directionPolyLine!==null){this.directionPolyLine.hide();}};trackdirect.models.Marker.prototype.hideRNGCircle=function(){if(this.rngCircle!==null){this.rngCircle.hide();}};trackdirect.models.Marker.prototype.showRNGCircle=function(isHalf){this.hideRNGCircle();this.rngCircle=new trackdirect.models.RngCircle(this.packet,this._defaultMap,isHalf);this.rngCircle.show();};trackdirect.models.Marker.prototype.hidePHGCircle=function(){if(this.phgCircle!==null){this.phgCircle.hide();}};trackdirect.models.Marker.prototype.showPHGCircle=function(isHalf){this.hidePHGCircle();this.phgCircle=new trackdirect.models.PhgCircle(this.packet,this._defaultMap,isHalf);this.phgCircle.show();};trackdirect.models.Marker.prototype.markToBeOverWritten=function(){this.overwrite=true;};trackdirect.models.Marker.prototype.isSingleMovingMarker=function(){var markerCounter=0;if(typeof this.packet.marker_counter!=="undefined"&&this.packet.marker_counter!==null){markerCounter=this.packet.marker_counter;} -if(this.packet.position_timestamp==this.packet.timestamp&&this.packet.is_moving==1&&[1,2,7,12].indexOf(this.packet.map_id)>=0&&markerCounter<=1&&!this._defaultMap.markerCollection.hasDotMarkers(this.markerIdKey)){return true;} -return false;};trackdirect.models.Marker.prototype.shouldMarkerBeVisible=function(){if(this.packet.map_id==14){return false;} -if(this.packet.source_id==2&&!this._defaultMap.state.isCwopMarkersVisible){return false;} -if(!this._defaultMap.state.isStationaryMarkersVisible){if(!this.isMovingStation()){return false;}} -if(!this._defaultMap.state.isUnknownMarkersVisible){if(this.packet.station_name.substring(0,7)=="UNKNOWN"){return false;}} -if(!this._defaultMap.state.isOgflymMarkersVisible){if(this.packet.raw_path.indexOf("OGFLYM")>=0){return false;}} -if(!this._defaultMap.state.isInternetMarkersVisible){if(this.packet.raw_path.indexOf("TCPIP")>=0||this.packet.raw_path.indexOf("qAC")>=0||this.packet.raw_path.indexOf("qAX")>=0||this.packet.raw_path.indexOf("qAU")>=0||this.packet.raw_path.indexOf("qAS")>=0){if(this.packet.station_id_path.length==0){return false;}}} -if(this._defaultMap.state.visibleSymbols.length>0){var symbolFound=false;for(var key in this._defaultMap.state.visibleSymbols){var visibleSymbol=this._defaultMap.state.visibleSymbols[key];if(this.packet.symbol.charCodeAt(0)==visibleSymbol[0]&&this.packet.symbol_table.charCodeAt(0)==visibleSymbol[1]){symbolFound=true;}} -if(!symbolFound){return false;}} -if(this.packet.map_id!=1&&this.packet.map_id!=2&&this.packet.map_id!=12&&!this._defaultMap.state.isGhostMarkersVisible){return false;} -if(this._defaultMap.state.isFilterMode&&this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id)>-1){var latestStationMarker=this._defaultMap.markerCollection.getStationLatestMarker(this.packet.station_id);if(this._defaultMap.state.getClientTimestamp(this.packet.timestamp)<=this._defaultMap.state.getOldestAllowedPacketTimestamp()&&typeof latestStationMarker!=="undefined"&&latestStationMarker!==null&&!this._isMarkersEqual(latestStationMarker)){return false;} -return true;}else{if(this._defaultMap.state.isFilterMode&&this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id)===-1){return false;} -if(this.packet.map_id!=1&&this.packet.map_id!=2&&this.packet.map_id!=12&&this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkerTail){return false;} -if(this._defaultMap.state.getClientTimestamp(this.packet.timestamp)<=this._defaultMap.state.getOldestAllowedPacketTimestamp()){return false;} -if(this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkers){return false;} -return true;}};trackdirect.models.Marker.prototype.isMovingStation=function(){if(this.packet.is_moving==0){return false;} -if(this._defaultMap.state.getClientTimestamp(this.packet.position_timestamp)<this._defaultMap.state.getOldestAllowedPacketTimestamp()){var stationLatestMovingMarkerIdKey=this._defaultMap.markerCollection.getStationLatestMovingMarkerIdKey(this.packet.station_id);if(stationLatestMovingMarkerIdKey==this.markerIdKey){return false;}} -return true;};trackdirect.models.Marker.prototype.stopDirectionPolyline=function(){if(this.directionPolyLine!==null){this.directionPolyLine.stop();}};trackdirect.models.Marker.prototype.stopToOldTimeout=function(){clearTimeout(this.toOldTimerId);var dotMarkers=this._defaultMap.markerCollection.getDotMarkers(this.markerIdKey);for(var j=0;j<dotMarkers.length;j++){clearTimeout(dotMarkers[j].toOldTimerId);}};trackdirect.models.Marker.prototype.getToolTipContent=function(){var iconUrl=trackdirect.services.symbolPathFinder.getFilePath(this.packet.symbol_table,this.packet.symbol,null,null,null,20,20);var date=new Date(this.packet.timestamp*1000);var positionDate=new Date(this.packet.position_timestamp*1000);var dateString=moment(date).format(trackdirect.settings.dateFormatNoTimeZone);if(this.packet.timestamp>this.packet.position_timestamp){dateString=moment(positionDate).format(trackdirect.settings.dateFormatNoTimeZone)+ -" - "+ -moment(date).format(trackdirect.settings.dateFormatNoTimeZone);} -if(this.packet.getOgnRegistration()!=null){var name=escapeHtml(this.packet.station_name);name+=", ";name+=escapeHtml(this.packet.getOgnRegistration());if(this.packet.getOgnCN()!==null){name+=" ["+escapeHtml(this.packet.getOgnCN())+"]";} -return('<div><img style="float: left; width:20px; height:20px;" src="'+ -iconUrl+ -'" />'+ -'<span style="font-weight: bold; font-family: Helvetica; font-size: 10px; line-height: 22px; margin-left: 5px; margin-right: 25px">'+ -name+ -"</span></div>"+ -'<div style="clear:both; font-family: Helvetica; font-size: 9px;">'+ -dateString+ -"</div>");}else if(this.packet.station_name==this.packet.sender_name){return('<div><img style="float: left; width:20px; height:20px;" src="'+ -iconUrl+ -'" />'+ -'<span style="font-weight: bold; font-family: Helvetica; font-size: 10px; line-height: 22px; margin-left: 5px; margin-right: 25px">'+ -escapeHtml(this.packet.station_name)+ -"</span></div>"+ -'<div style="clear:both; font-family: Helvetica; font-size: 9px;">'+ -dateString+ -"</div>");}else{return('<div><img style="float: left; width:20px; height:20px;" src="'+ -iconUrl+ -'" />'+ -'<span style="font-weight: bold; font-family: Helvetica; font-size: 10px; line-height: 22px; margin-left: 5px; margin-right: 25px">'+ -escapeHtml(this.packet.station_name)+ -"</span></div>"+ -'<div style="clear:both; font-family: Helvetica; font-size: 9px;">Sent by '+ -escapeHtml(this.packet.sender_name)+ -"</div>"+ -'<div style="clear:both; font-family: Helvetica; font-size: 9px;">'+ -dateString+ -"</div>");}};trackdirect.models.Marker.prototype._getGoogleMarkerOptions=function(){var anchorPoint=null;if(this._isDotMarker){var colorId=trackdirect.services.stationColorCalculator.getColorId(this.packet);var iconUrl=trackdirect.settings.baseUrl+ -trackdirect.settings.imagesBaseDir+ -"dotColor"+ -colorId+ -".png";var scaledImageSize=new google.maps.Size(12,12);var imageSize=new google.maps.Size(12,12);var imageAnchor=new google.maps.Point(6,6);var opacity=1.0;}else{var scalePx=24;var sizePx=24;if(this._shouldMarkerSymbolBeScaled()){scalePx=48;} -if(this.packet.course!==null){sizePx=sizePx+7;if(scalePx<sizePx){scalePx=sizePx;}} -var imageSize=new google.maps.Size(scalePx,scalePx);var imageAnchor=new google.maps.Point(Math.floor(scalePx/2),Math.floor(scalePx/2));var scaledImageSize=new google.maps.Size(scalePx,scalePx);var iconUrl=trackdirect.services.symbolPathFinder.getFilePath(this.packet.symbol_table,this.packet.symbol,this.packet.course,sizePx,sizePx,scalePx,scalePx);if(isHighDensity()){imageSize=new google.maps.Size(scalePx*2,scalePx*2);anchorPoint=new google.maps.Point(0,-Math.floor(scalePx/2));iconUrl=trackdirect.services.symbolPathFinder.getFilePath(this.packet.symbol_table,this.packet.symbol,this.packet.course,sizePx,sizePx,scalePx*2,scalePx*2);} -var opacity=1.0;} -return{position:this.packet.getLatLngLiteral(),zIndex:this._defaultMap.state.currentMarkerZindex,icon:{url:iconUrl,size:imageSize,scaledSize:scaledImageSize,origin:new google.maps.Point(0,0),anchor:imageAnchor,},opacity:opacity,anchorPoint:anchorPoint,};};trackdirect.models.Marker.prototype._getLeafletMarkerOptions=function(){if(this._isDotMarker){var colorId=trackdirect.services.stationColorCalculator.getColorId(this.packet);var iconUrl=trackdirect.settings.baseUrl+ -trackdirect.settings.imagesBaseDir+ -"dotColor"+ -colorId+ -".png";var icon=L.icon({iconUrl:iconUrl,iconSize:[12,12],iconAnchor:[6,6],});var opacity=0.8;}else{var scalePx=24;var sizePx=24;if(this._shouldMarkerSymbolBeScaled()){scalePx=48;} -if(this.packet.course!==null){sizePx=sizePx+7;if(scalePx<sizePx){scalePx=sizePx;}} -var iconUrl=trackdirect.services.symbolPathFinder.getFilePath(this.packet.symbol_table,this.packet.symbol,this.packet.course,sizePx,sizePx,scalePx,scalePx);var iconRetinaUrl=trackdirect.services.symbolPathFinder.getFilePath(this.packet.symbol_table,this.packet.symbol,this.packet.course,sizePx,sizePx,scalePx*2,scalePx*2);var icon=L.icon({iconUrl:iconUrl,iconRetinaUrl:iconRetinaUrl,iconSize:[scalePx,scalePx],iconAnchor:[Math.floor(scalePx/2),Math.floor(scalePx/2)],});var opacity=1.0;} -var tooltipTitle="";if(typeof L.tooltip=="undefined"){tooltipTitle=this.packet.station_name;} -return{zIndexOffset:this._defaultMap.state.currentMarkerZindex,icon:icon,opacity:opacity,title:tooltipTitle,};};trackdirect.models.Marker.prototype._shouldMarkerSymbolBeScaled=function(){if(typeof trackdirect.settings.symbolsToScale==="undefined"){return false;} -for(var i=0;i<trackdirect.settings.symbolsToScale.length;i++){var symbol=trackdirect.settings.symbolsToScale[i][0];var symbolTable=trackdirect.settings.symbolsToScale[i][1];if(symbolTable==null&&this.packet.symbol.charCodeAt()==symbol){return true;}else if(this.packet.symbol.charCodeAt()==symbol&&this.packet.symbol_table.charCodeAt()==symbolTable){return true;}} -return false;};trackdirect.models.Marker.prototype._hideLater=function(delayInMilliSeconds,onlyHideIfNeeded){var me=this;this.hideTimerId=window.setTimeout(function(){if(me._defaultMap.state.isMarkerInfoWindowOpen(me)){me.hide(500);}else{if(!me.shouldMarkerBeVisible()){me.hide(0,onlyHideIfNeeded);}}},delayInMilliSeconds);};trackdirect.models.Marker.prototype._addMarkerTooltip=function(){if(typeof google==="object"&&typeof google.maps==="object"){this._addMarkerGoogleMapTooltip();}else if(typeof L==="object"){this._addMarkerLeafletMapTooltip();}};trackdirect.models.Marker.prototype._addMarkerLeafletMapTooltip=function(){if(!trackdirect.isMobile){if(typeof L.tooltip!="undefined"){var tooltip=L.tooltip({direction:"right",noWrap:true,offset:[6,30],className:"leaflet-marker-tooltiptext",});} -var me=this;var isMyTooltipVisible=false;this.on("mouseover",function(e){if(typeof tooltip!=="undefined"){tooltip.setContent(me.getToolTipContent());tooltip.setLatLng(new L.LatLng(me.packet.latitude,me.packet.longitude));tooltip.addTo(me._defaultMap);isMyTooltipVisible=true;} -if(me.transmitPolyLine==null){me.transmitPolyLine=new trackdirect.models.TransmitPolyline(me.packet,me._defaultMap);} -me.transmitPolyLine.show();});this.on("mouseout",function(e){if(me.transmitPolyLine!=null&&me.transmitPolyLine.isVisible()){me.transmitPolyLine.hide(2000);} -if(typeof tooltip!=="undefined"&&isMyTooltipVisible&&me._defaultMap.hasLayer(tooltip)){tooltip.remove();isMyTooltipVisible=false;}});this.on("remove",function(e){if(me.transmitPolyLine!=null&&me.transmitPolyLine.isVisible()){me.transmitPolyLine.hide(0);} -if(typeof tooltip!=="undefined"&&isMyTooltipVisible&&me._defaultMap.hasLayer(tooltip)){tooltip.remove();isMyTooltipVisible=false;}});}};trackdirect.models.Marker.prototype._addMarkerGoogleMapTooltip=function(){if(!trackdirect.isMobile){if(!$("#marker-tooltip").length){var tooltip=$(document.createElement("div"));tooltip.attr("id","marker-tooltip");tooltip.css("display","none");tooltip.css("position","absolute");tooltip.css("margin","15px");tooltip.css("z-index","90");tooltip.css("padding","3px");tooltip.css("opacity","0.95");tooltip.css("filter","alpha(opacity=95)");tooltip.css("-webkit-border-radius","1px");tooltip.css("-moz-border-radius","1px");tooltip.css("border-radius","1px");tooltip.css("-webkit-box-shadow","0px 0px 3px 0px rgba(0,0,0,0.3)");tooltip.css("-moz-box-shadow","0px 0px 3px 0px rgba(0,0,0,0.3)");tooltip.css("box-shadow","0px 0px 3px 0px rgba(0,0,0,0.3)");tooltip.css("background-color","#fff");tooltip.css("background","#ffffff");$("body").append(tooltip);} -var me=this;var isMyTooltipVisible=false;google.maps.event.addListener(this,"mouseover",function(){var point=this._fromGoogleLatLngToPoint(me.getPosition());var mapElementId=this._defaultMap.getMapElementId();$("#marker-tooltip").html(me.getToolTipContent()).css({left:point.x+$("#"+mapElementId).offset().left,top:point.y+$("#"+mapElementId).offset().top,}).show();isMyTooltipVisible=true;if(me.transmitPolyLine==null){me.transmitPolyLine=new trackdirect.models.TransmitPolyline(me.packet,me._defaultMap);} -me.transmitPolyLine.show();});google.maps.event.addListener(this,"mouseout",function(){if(me.transmitPolyLine!=null&&me.transmitPolyLine.isVisible()){me.transmitPolyLine.hide(2000);} -if(isMyTooltipVisible){$("#marker-tooltip").hide();isMyTooltipVisible=false;}});this.addTdListener("onhide",function(){if(me.transmitPolyLine!=null&&me.transmitPolyLine.isVisible()){me.transmitPolyLine.hide(0);} -if(isMyTooltipVisible){$("#marker-tooltip").hide();isMyTooltipVisible=false;}});}};trackdirect.models.Marker.prototype._fromGoogleLatLngToPoint=function(latLng){var topRight=this._defaultMap.getProjection().fromLatLngToPoint(this._defaultMap.getBounds().getNorthEast());var bottomLeft=this._defaultMap.getProjection().fromLatLngToPoint(this._defaultMap.getBounds().getSouthWest());var scale=Math.pow(2,this._defaultMap.getZoom());var worldPoint=this._defaultMap.getProjection().fromLatLngToPoint(latLng);return new google.maps.Point((worldPoint.x-bottomLeft.x)*scale,(worldPoint.y-topRight.y)*scale);};trackdirect.models.Marker.prototype._isMarkersEqual=function(marker2){var marker1=this;if(typeof marker2!=="undefined"&&marker2!==null&&typeof marker1.packet!=="undefined"&&typeof marker2.packet!=="undefined"&&marker1.packet.station_id===marker2.packet.station_id&&marker1.packet.timestamp===marker2.packet.timestamp&&Math.round(marker1.packet.latitude*100000)===Math.round(marker2.packet.latitude*100000)&&Math.round(marker1.packet.longitude*100000)===Math.round(marker2.packet.longitude*100000)&&marker1.packet.map_id===marker2.packet.map_id){return true;}else{return false;}};(trackdirect.models.Marker.prototype._addMarkerToOldTimeout=function(altDelayMilliSeconds){var markerCollection=this._defaultMap.markerCollection;var state=this._defaultMap.state;var delay=(this._defaultMap.state.getClientTimestamp(this.packet.timestamp)- -state.getOldestAllowedPacketTimestamp())*1000;if(altDelayMilliSeconds!==0){delay=altDelayMilliSeconds;} -if(delay<0){delay=10;} -if(typeof this.toOldTimerId!=="undefined"&&this.toOldTimerId!==null){clearTimeout(this.toOldTimerId);} -var me=this;this.toOldTimerId=window.setTimeout(function(){if(me._defaultMap.state.isMarkerInfoWindowOpen(me)){me._addMarkerToOldTimeout(500);}else{var latestStationMarker=markerCollection.getStationLatestMarker(me.packet.station_id);var latestMarker=markerCollection.getMarker(me.markerIdKey);if(!me._isMarkersEqual(latestStationMarker)||state.filterStationIds.indexOf(me.packet.station_id)==-1){if(latestMarker===me){var callback=function(){me.hideCompleteMarker();markerCollection.resetMarkerPolyline(me.markerIdKey);markerCollection.resetDotMarkers(me.markerIdKey);};trackdirect.services.callbackExecutor.add(me,callback,[]);}else if(markerCollection.hasDotMarkers(me.markerIdKey)){var index=markerCollection.getDotMarkerIndex(me.markerIdKey,me);if(index==0){var callback=function(){if(markerCollection.hasDotMarkers(me.markerIdKey)){var success=markerCollection.removeOldestDotMarker(me.markerIdKey);if(!success){me._addMarkerToOldTimeout(500);}}};trackdirect.services.callbackExecutor.add(me,callback,[]);}else if(index>0){var dotMarkers=markerCollection.getDotMarkers(me.markerIdKey);dotMarkers[0]._addMarkerToOldTimeout(0);me._addMarkerToOldTimeout(100);}}}else{me._addMarkerToOldTimeout(1000);}}},delay);}),(trackdirect.models.Marker.prototype._emitTdEventListeners=function(event,arg){if(event in this._tdEventListeners){for(var i=0;i<this._tdEventListeners[event].length;i++){this._tdEventListeners[event][i](arg);}}}); -trackdirect.models.MapState=function(){this._init();};trackdirect.models.MapState.prototype._init=function(){this.isFilterMode=false;this.filterStationIds=[];this.isGhostMarkersVisible=false;this.isCwopMarkersVisible=true;this.isStationaryMarkersVisible=true;this.isInternetMarkersVisible=true;this.isUnknownMarkersVisible=true;this.isOgflymMarkersVisible=true;this.visibleSymbols=[];this.useImperialUnit=false;this.showPHGCircles=0;this.showRNGCircles=0;this.trackStationId=null;this.onlyTrackRecentPackets=false;this.timeLengthInSeconds=3600;this.endTimeTravelTimestamp=null;this.currentMarkerZindex=200;this.serverClientTimestampDiff=0;this.openInfoWindow=null;this.openInfoWindowForMarkerIdKey=null;};trackdirect.models.MapState.prototype.getOldestAllowedPacketTimestamp=function(){var oldestAllowedTimestamp=Math.floor(Date.now()/1000)-this.timeLengthInSeconds;if(this.endTimeTravelTimestamp!==null){oldestAllowedTimestamp=this.endTimeTravelTimestamp-this.timeLengthInSeconds;} -return oldestAllowedTimestamp;};trackdirect.models.MapState.prototype.setTimeLength=function(seconds){this.timeLengthInSeconds=seconds;};trackdirect.models.MapState.prototype.getTimeLength=function(){return this.timeLengthInSeconds;};trackdirect.models.MapState.prototype.getClientTimestamp=function(serverTimestamp){return serverTimestamp-this.serverClientTimestampDiff;};trackdirect.models.MapState.prototype.setServerCurrentTimestamp=function(serverTimestamp){this.serverClientTimestampDiff=serverTimestamp-Math.floor(Date.now()/1000);};trackdirect.models.MapState.prototype.isInfoWindowOpen=function(){if(this.openInfoWindow===null){return false;} -return this.openInfoWindow.isInfoWindowOpen();};trackdirect.models.MapState.prototype.isMarkerInfoWindowOpen=function(marker){if(!this.isInfoWindowOpen()){return false;} -if(this.openInfoWindow.getPolyline()!==null){return false;} -if(this.openInfoWindow.getMarker()===marker){return true;} -return false;};trackdirect.models.MapState.prototype.isPolylineInfoWindowOpen=function(polyline){if(!this.isInfoWindowOpen()){return false;} -if(this.openInfoWindow.getPolyline()===null){return false;} -if(this.openInfoWindow.getPolyline()===polyline){return true;} -return false;};trackdirect.models.MapState.prototype.getFilterStationIds=function(){return this.filterStationIds;};trackdirect.models.MapState.prototype.getTrackStationId=function(){return this.trackStationId;}; -trackdirect.models.Map=function(mapElementId,options){this._init(mapElementId,options);if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Map.call(this,document.getElementById(mapElementId),this._getGoolgeMapOptions());}else if(typeof L==="object"){L.Map.call(this,document.getElementById(mapElementId),this._getLeafletMapOptions());this._updateLeafletTileLayer();L.control.zoom({position:"bottomright",}).addTo(this);} -this._initMap();};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.Map.prototype=Object.create(google.maps.Map.prototype);}else if(typeof L==="object"){trackdirect.models.Map.prototype=Object.create(L.Map.prototype);} -trackdirect.models.Map.prototype.constructor=trackdirect.models.Map;trackdirect.models.Map.prototype._init=function(mapElementId,options){this._mapElementId=mapElementId;this._tdMapOptions=options;this._initBasic();this._initMapTypes();};trackdirect.models.Map.prototype._initBasic=function(){this._tdEventListeners={};this._tdEventTimeout=null;this._currentContentZoom=null;this._visibleMapSectors=[];this._newMarkersToShow=[];this._leafletTileLayer=null;this._heatMap=null;this.markerCollection=new trackdirect.models.MarkerCollection();this.state=new trackdirect.models.MapState();};trackdirect.models.Map.prototype._initMapTypes=function(){this._supportedMapTypes={};if(typeof this._tdMapOptions.supportedMapTypes!=="undefined"&&this._tdMapOptions.supportedMapTypes!==null&&Object.keys(this._tdMapOptions.supportedMapTypes).length>0){this._supportedMapTypes=this._tdMapOptions.supportedMapTypes;}else if(typeof google==="object"&&typeof google.maps==="object"){this._supportedMapTypes["roadmap"]=google.maps.MapTypeId.ROADMAP;this._supportedMapTypes["terrain"]=google.maps.MapTypeId.TERRAIN;this._supportedMapTypes["satellite"]=google.maps.MapTypeId.SATELLITE;this._supportedMapTypes["hybrid"]=google.maps.MapTypeId.HYBRID;}else if(typeof L==="object"){this._supportedMapTypes["roadmap"]="OpenStreetMap.Mapnik";this._supportedMapTypes["terrain"]="OpenTopoMap";} -if(typeof this._tdMapOptions.maptype!=="undefined"&&this._tdMapOptions.maptype!==null&&this._tdMapOptions.maptype in this._supportedMapTypes){this._mapType=this._tdMapOptions.maptype;}else{this._mapType=Object.keys(this._supportedMapTypes)[0];}};trackdirect.models.Map.prototype._initMap=function(){this._heatMap=new trackdirect.models.HeatMap(this);this._setMapInitialLocation();this._initOms();this._initInfoWindowEvent();this._updateMapContent();this._initMapEvents();if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this._tdMapOptions.mid!=="undefined"){var kmlUrl="https://www.google.com/maps/d/u/0/kml?mid="+this._tdMapOptions.mid;var kmlLayer=new google.maps.KmlLayer(kmlUrl,{map:this});}}};trackdirect.models.Map.prototype.triggerResize=function(){if(typeof google==="object"&&typeof google.maps==="object"){google.maps.event.trigger(this,"resize");}else if(typeof L==="object"){L.Map.prototype._onResize.call(this);}};trackdirect.models.Map.prototype.setCenter=function(pos,zoom){if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Map.prototype.setCenter.call(this,pos);if(typeof zoom!=="undefined"){google.maps.Map.prototype.setZoom.call(this,zoom);}}else if(typeof L==="object"){zoom=typeof zoom!=="undefined"?zoom:this.getZoom();L.Map.prototype.setView.call(this,pos,zoom);} -this._renderCordinatesContainer(pos);};trackdirect.models.Map.prototype.getCenterLiteral=function(){if(typeof google==="object"&&typeof google.maps==="object"){var latLng=google.maps.Map.prototype.getCenter.call(this);if(typeof latLng!=="undefined"&&typeof latLng.lat==="function"){return{lat:latLng.lat(),lng:latLng.lng()};}else{return latLng;}}else if(typeof L==="object"){var latLng=L.Map.prototype.getCenter.call(this);if(typeof latLng!=="undefined"){return{lat:latLng.lat,lng:latLng.lng};}else{return latLng;}} -return null;};trackdirect.models.Map.prototype.fitBounds=function(bounds){if(typeof google==="object"&&typeof google.maps==="object"){var latLngBounds=new google.maps.LatLngBounds();for(var i=0;i<bounds.length;i++){latLngBounds.extend(bounds[i]);} -google.maps.Map.prototype.fitBounds.call(this,latLngBounds);}else if(typeof L==="object"){L.Map.prototype.fitBounds.call(this,bounds);}};trackdirect.models.Map.prototype.setCenterByStationId=function(stationId){var latestVisibleMarker=this.markerCollection.getStationLatestVisibleMarker(stationId);if(latestVisibleMarker!==null){this.setCenter(latestVisibleMarker.packet.getLatLngLiteral());}};trackdirect.models.Map.prototype.getMapElementId=function(){return this._mapElementId;};trackdirect.models.Map.prototype.getTdMapOptions=function(){return this._tdMapOptions;};trackdirect.models.Map.prototype.isMapSectorVisible=function(mapSector){if(this._visibleMapSectors.indexOf(mapSector)>=0||this.state.isFilterMode){return true;} -return false;};trackdirect.models.Map.prototype.getNumberOfNewMarkersToShow=function(){return this._newMarkersToShow;};trackdirect.models.Map.prototype.showNewMarkersInQueue=function(track){track=typeof track!=="undefined"?track:true;var oldestAllowedTrackingTimestamp=0;if(this.state.onlyTrackRecentPackets){oldestAllowedTrackingTimestamp=Math.floor(Date.now()/1000)-60;} -while((markerIdKey=this._newMarkersToShow.pop())!=null){if(!this.markerCollection.isExistingMarker(markerIdKey)){continue;} -var marker=this.markerCollection.getMarker(markerIdKey);trackdirect.services.callbackExecutor.addWithPriority(marker,marker.showCompleteMarker,[]);if(track&&marker.packet.packet_order_id==1){if(marker.shouldMarkerBeVisible()&&marker.showAsMarker&&this.state.trackStationId!==null&&this.state.trackStationId==marker.packet.station_id&&this.state.getClientTimestamp(marker.packet.timestamp)>oldestAllowedTrackingTimestamp){trackdirect.services.callbackExecutor.addWithPriority(this,this.setCenterByStationId,[marker.packet.station_id]);}} -if(this.state.openInfoWindowForMarkerIdKey!==null&&this.state.openInfoWindowForMarkerIdKey==markerIdKey&&marker.packet.packet_order_id==1&&marker.shouldMarkerBeVisible()&&marker.showAsMarker){trackdirect.services.callbackExecutor.addWithPriority(this,this.openLatestStationInfoWindow,[marker.packet.station_id]);}} -this.state.openInfoWindowForMarkerIdKey=null;};trackdirect.models.Map.prototype.activateFilteredMode=function(){this.state.isFilterMode=true;this._deactivateHeatMap();this._updateMapContent();};trackdirect.models.Map.prototype.deactivateFilteredMode=function(){if(this.state.isFilterMode){this._activateHeatMap();this.state.isFilterMode=false;this.state.filterStationIds=[];this._updateMapContent();}};trackdirect.models.Map.prototype.getNorthEastLat=function(){if(this.getBounds()!=null){if(typeof google==="object"&&typeof google.maps==="object"){return this.getBounds().getNorthEast().lat();}else if(typeof L==="object"){return this.getBounds().getNorthEast().lat;}} -return 0;};trackdirect.models.Map.prototype.getNorthEastLng=function(){if(this.getBounds()!=null){if(typeof google==="object"&&typeof google.maps==="object"){return this.getBounds().getNorthEast().lng();}else if(typeof L==="object"){return this.getBounds().getNorthEast().lng;}} -return 0;};trackdirect.models.Map.prototype.getSouthWestLat=function(){if(this.getBounds()!=null){if(typeof google==="object"&&typeof google.maps==="object"){return this.getBounds().getSouthWest().lat();}else if(typeof L==="object"){return this.getBounds().getSouthWest().lat;}} -return 0;};trackdirect.models.Map.prototype.getSouthWestLng=function(){if(this.getBounds()!=null){if(typeof google==="object"&&typeof google.maps==="object"){return this.getBounds().getSouthWest().lng();}else if(typeof L==="object"){return this.getBounds().getSouthWest().lng;}} -return 0;};trackdirect.models.Map.prototype.isMapReady=function(){if(this.getBounds()!=null){return true;} -return false;};trackdirect.models.Map.prototype.setMapType=function(mapType){if(mapType in this._supportedMapTypes){this._mapType=mapType;if(typeof google==="object"&&typeof google.maps==="object"){this._updateGoogleMapTileLayer();}else if(typeof L==="object"){this._updateLeafletTileLayer();} -this._emitTdEventListeners("change");}};trackdirect.models.Map.prototype.getMapType=function(){return this._mapType;};trackdirect.models.Map.prototype.getLeafletTileLayer=function(){return this._leafletTileLayer;};trackdirect.models.Map.prototype.getMid=function(){if(typeof this._tdMapOptions.mid!=="undefined"){return this._tdMapOptions.mid;} -return null;};trackdirect.models.Map.prototype.resetAllMarkers=function(){while(this.markerCollection.getNumberOfMarkers()>0){var i=this.markerCollection.getNumberOfMarkers();while(i--){var marker=this.markerCollection.getMarker(i);if(marker!==null){marker.stopToOldTimeout();marker.stopDirectionPolyline();marker.hide();marker.hideMarkerPrevPosition();marker.hideMarkerTail();var stationCoverage=this.markerCollection.getStationCoverage(marker.packet.station_id);if(stationCoverage){stationCoverage.hide();}} -this.markerCollection.removeMarker(i);}} -if(this.state.openInfoWindow!==null){this.state.openInfoWindow.hide();} -if(this.oms){this.oms.clearMarkers();} -this.markerCollection.resetAllMarkers();};trackdirect.models.Map.prototype.openMarkerInfoWindow=function(marker,disableAutoPan){disableAutoPan=typeof disableAutoPan!=="undefined"?disableAutoPan:true;if(marker.getMap()!==null){if(this.state.openInfoWindow!==null&&this.state.openInfoWindow.getMarker().packet.id!=marker.packet.id){this.state.openInfoWindow.hide();} -if(this.state.openInfoWindow!==null&&this.state.openInfoWindow.getMarker().packet.id==marker.packet.id){this.state.openInfoWindow.setMarker(marker);}else{this.state.openInfoWindow=new trackdirect.models.InfoWindow(marker,this,disableAutoPan);} -this._addInfoWindowListeners(this.state.openInfoWindow);this.state.openInfoWindow.show();}};trackdirect.models.Map.prototype.openLatestStationInfoWindow=function(stationId){var latestVisibleMarker=this.markerCollection.getStationLatestVisibleMarker(stationId);if(latestVisibleMarker!==null){this.openMarkerInfoWindow(latestVisibleMarker);}};trackdirect.models.Map.prototype.openPolylineInfoWindow=function(marker,position){if(this.state.openInfoWindow!==null){this.state.openInfoWindow.hide();} -this.state.openInfoWindow=new trackdirect.models.InfoWindow(marker,this);this._addInfoWindowListeners(this.state.openInfoWindow);this.state.openInfoWindow.show(true,position);};trackdirect.models.Map.prototype._addInfoWindowListeners=function(infoWindow){var me=this;infoWindow.addTdListener("station-tail-needed",function(stationId){me._emitTdEventListeners("station-tail-needed",stationId);});};(trackdirect.models.Map.prototype.addTdListener=function(event,handler){if(!(event in this._tdEventListeners)){this._tdEventListeners[event]=[];} -this._tdEventListeners[event].push(handler);}),(trackdirect.models.Map.prototype._emitTdEventListeners=function(event,arg){if(event in this._tdEventListeners){for(var i=0;i<this._tdEventListeners[event].length;i++){this._tdEventListeners[event][i](arg);}}});(trackdirect.models.Map.prototype._triggerMapChangeEvent=function(){if(this._tdEventTimeout!=null){clearTimeout(this._tdEventTimeout);} -var me=this;this._tdEventTimeout=window.setTimeout(function(){me._emitTdEventListeners("change");me._tdEventTimeout=null;},5);}),(trackdirect.models.Map.prototype._deactivateHeatMap=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.overlayMapTypes!=="undefined"&&this.overlayMapTypes.length>0){this.overlayMapTypes.clear();}}else if(typeof L==="object"){if(this._heatMap!==null){this.removeLayer(this._heatMap);}}});trackdirect.models.Map.prototype._activateHeatMap=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.overlayMapTypes!=="undefined"&&this.overlayMapTypes.length==0){this.overlayMapTypes.setAt(0,this._heatMap);}}else if(typeof L==="object"){if(this._heatMap!==null){this._heatMap.addTo(this);this._heatMap.bringToFront();this._heatMap.setZIndex(1000);}}};trackdirect.models.Map.prototype._updateGoogleMapTileLayer=function(){this.setMapTypeId(this._supportedMapTypes[this._mapType]);};trackdirect.models.Map.prototype._updateLeafletTileLayer=function(){if(typeof windyInit!=="function"){if(this._leafletTileLayer!==null){this._leafletTileLayer.remove();} -if(typeof L.mapboxGL==="function"){var attribution="";var accessToken="no-token";var style="";if("mapboxGLStyle"in this._tdMapOptions){style=this._tdMapOptions["mapboxGLStyle"];} -if("mapboxGLAccessToken"in this._tdMapOptions){accessToken=this._tdMapOptions["mapboxGLAccessToken"];} -if("mapboxGLAttribution"in this._tdMapOptions){attribution=this._tdMapOptions["mapboxGLAttribution"];} -this._leafletTileLayer=L.mapboxGL({accessToken:accessToken,style:style,});this.addLayer(this._leafletTileLayer);this.attributionControl.addAttribution(attribution);}else{var options={};if(isHighDensity()){options["ppi"]="320";options["size"]="512";}else if(trackdirect.isMobile){options["ppi"]="250";} -this._leafletTileLayer=L.tileLayer.provider(this._supportedMapTypes[this._mapType],options);this.addLayer(this._leafletTileLayer);this._leafletTileLayer.bringToBack();}}};trackdirect.models.Map.prototype._updateMapContent=function(){if(this.getBounds()!=null){var previousVisibleMapSectors=[];for(var i=0;i<this._visibleMapSectors.length;i++){previousVisibleMapSectors.push(this._visibleMapSectors[i]);} -this._visibleMapSectors=trackdirect.services.MapSectorCalculator.getMapSectors(this.getBounds());this._triggerMapChangeEvent();if(!this.state.isFilterMode){if(this.getZoom()<trackdirect.settings.minZoomForMarkers){this.hideAllMarkers();this._activateHeatMap();}else{this._deactivateHeatMap();this._hideMarkersInPreviousVisibleMapSectors(previousVisibleMapSectors);this._showMarkersInNewVisibleMapSectors(previousVisibleMapSectors);if(this._isAnyMarkerDetailsVisible()){this._showVisibleMarkerDetails();} -if(this._isAnyMarkerDetailsHidden()){this._hideVisibleMarkerDetails();}}}} -this._currentContentZoom=this.getZoom();};trackdirect.models.Map.prototype._isAnyMarkerDetailsVisible=function(){var showPrevPosition=this.getZoom()>=trackdirect.settings.minZoomForMarkerPrevPosition&&this._currentContentZoom<trackdirect.settings.minZoomForMarkerPrevPosition;var showMarkerTail=this.getZoom()>=trackdirect.settings.minZoomForMarkerTail&&this._currentContentZoom<trackdirect.settings.minZoomForMarkerTail;var showMarkerLabel=this.getZoom()>=trackdirect.settings.minZoomForMarkerLabel&&this._currentContentZoom<trackdirect.settings.minZoomForMarkerLabel;if(showPrevPosition||showMarkerTail||showMarkerLabel){return true;} -return false;};trackdirect.models.Map.prototype._isAnyMarkerDetailsHidden=function(){var hidePrevPosition=this.getZoom()<trackdirect.settings.minZoomForMarkerPrevPosition&&this._currentContentZoom>=trackdirect.settings.minZoomForMarkerPrevPosition;var hideMarkerTail=this.getZoom()<trackdirect.settings.minZoomForMarkerTail&&this._currentContentZoom>=trackdirect.settings.minZoomForMarkerTail;var hideMarkerLabel=this.getZoom()<trackdirect.settings.minZoomForMarkerLabel&&this._currentContentZoom>=trackdirect.settings.minZoomForMarkerLabel;if(hidePrevPosition||hideMarkerTail||hideMarkerLabel){return true;} -return false;};trackdirect.models.Map.prototype._showVisibleMarkerDetails=function(){for(var i=0;i<this._visibleMapSectors.length;i++){var mapSector=this._visibleMapSectors[i];var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];var marker=this.markerCollection.getMarker(markerIdKey);if(marker===null){continue;} -trackdirect.services.callbackExecutor.addWithPriority(marker,marker.showMarkerDetails,[]);}}};trackdirect.models.Map.prototype._hideVisibleMarkerDetails=function(){for(var i=0;i<this._visibleMapSectors.length;i++){var mapSector=this._visibleMapSectors[i];var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];var marker=this.markerCollection.getMarker(markerIdKey);if(marker===null){continue;} -trackdirect.services.callbackExecutor.addWithPriority(marker,marker.hideMarkerDetails,[]);}}};trackdirect.models.Map.prototype.showHideMarkers=function(){if(this.oms){this.oms.unspiderfy();} -if(this.state.isFilterMode){for(var markerIdKey in this.markerCollection.getAllMarkers()){if(this.markerCollection.isExistingMarker(markerIdKey)){var marker=this.markerCollection.getMarker(markerIdKey);if(marker){if(marker.shouldMarkerBeVisible()){marker.showCompleteMarker();}else{marker.hideCompleteMarker();}} -if(marker.packet){this.showTopLabelOnPosition(marker.packet.latitude,marker.packet.longitude);}}}}else{for(var i=0;i<this._visibleMapSectors.length;i++){var mapSector=this._visibleMapSectors[i];var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];if(this.markerCollection.isExistingMarker(markerIdKey)){var marker=this.markerCollection.getMarker(markerIdKey);if(marker.shouldMarkerBeVisible()){marker.showCompleteMarker();}else{marker.hideCompleteMarker();} -this.showTopLabelOnPosition(marker.packet.latitude,marker.packet.longitude);}}}}};trackdirect.models.Map.prototype.showHidePHGCircles=function(){if(this.getZoom()>=trackdirect.settings.minZoomForMarkers){if(this.state.isFilterMode){for(var markerIdKey in this.markerCollection.getAllMarkers()){if(this.markerCollection.isExistingMarker(markerIdKey)){var marker=this.markerCollection.getMarker(markerIdKey);if(marker.showAsMarker&&marker.packet.phg!=null&&marker.getMap()!==null&&marker.shouldMarkerBeVisible()){if(this.state.showPHGCircles==0){marker.hidePHGCircle();}else if(this.state.showPHGCircles==1){marker.showPHGCircle(true);}else if(this.state.showPHGCircles==2){marker.showPHGCircle(false);}}}}}else{for(var i=0;i<this._visibleMapSectors.length;i++){var mapSector=this._visibleMapSectors[i];var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];if(this.markerCollection.isExistingMarker(markerIdKey)){var marker=this.markerCollection.getMarker(markerIdKey);if(marker.showAsMarker&&marker.packet.phg!=null&&marker.getMap()!==null&&marker.shouldMarkerBeVisible()){if(this.state.showPHGCircles==0){marker.hidePHGCircle();}else if(this.state.showPHGCircles==1){marker.showPHGCircle(true);}else if(this.state.showPHGCircles==2){marker.showPHGCircle(false);}}}}}}}};trackdirect.models.Map.prototype.showHideRNGCircles=function(){if(this.getZoom()>=trackdirect.settings.minZoomForMarkers){if(this.state.isFilterMode){for(var markerIdKey in this.markerCollection.getAllMarkers()){if(this.markerCollection.isExistingMarker(markerIdKey)){var marker=this.markerCollection.getMarker(markerIdKey);if(marker.showAsMarker&&marker.packet.rng!=null&&marker.getMap()!==null&&marker.shouldMarkerBeVisible()){if(this.state.showRNGCircles==0){marker.hideRNGCircle();}else if(this.state.showRNGCircles==1){marker.showRNGCircle(true);}else if(this.state.showRNGCircles==2){marker.showRNGCircle(false);}}}}}else{for(var i=0;i<this._visibleMapSectors.length;i++){var mapSector=this._visibleMapSectors[i];var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];if(this.markerCollection.isExistingMarker(markerIdKey)){var marker=this.markerCollection.getMarker(markerIdKey);if(marker.showAsMarker&&marker.packet.rng!=null&&marker.getMap()!==null&&marker.shouldMarkerBeVisible()){if(this.state.showRNGCircles==0){marker.hideRNGCircle();}else if(this.state.showRNGCircles==1){marker.showRNGCircle(true);}else if(this.state.showRNGCircles==2){marker.showRNGCircle(false);}}}}}}}};trackdirect.models.Map.prototype.hideAllMarkers=function(){for(var markerIdKey in this.markerCollection.getAllMarkers()){var marker=this.markerCollection.getMarker(markerIdKey);if(marker!==null){marker.hideCompleteMarker();}}};trackdirect.models.Map.prototype.showTopLabelOnPosition=function(latitude,longitude){var topMarkerIdKey=-1;var topMarkerZindex=0;if(Object.keys(this.markerCollection.getPositionMarkerIdKeys(latitude,longitude)).length>1){for(var markerIdKey in this.markerCollection.getPositionMarkerIdKeys(latitude,longitude)){var marker=this.markerCollection.getMarker(markerIdKey);if(marker!==null&&marker.shouldMarkerBeVisible()){if(marker.getZIndex()>topMarkerZindex){topMarkerZindex=marker.getZIndex();topMarkerIdKey=markerIdKey;} -marker.hideLabel();marker.hasLabel=false;}} -if(topMarkerIdKey!=-1){var topMarker=this.markerCollection.getMarker(topMarkerIdKey);topMarker.hasLabel=true;var topMarkerMapSector=trackdirect.services.MapSectorCalculator.getMapSector(topMarker.getPositionLiteral().lat,topMarker.getPositionLiteral().lng);if(this.state.isFilterMode){topMarker.showLabel();}else if(this.isMapSectorVisible(topMarkerMapSector)&&this.getZoom()>=trackdirect.settings.minZoomForMarkerLabel){topMarker.showLabel();}}}};trackdirect.models.Map.prototype._hideMarkersInPreviousVisibleMapSectors=function(previousVisibleMapSectors){if(this._currentContentZoom>=trackdirect.settings.minZoomForMarkers){var markerIdKeyListToMaybeHide={};var markerIdKeyListNotToHide={};for(var i=0;i<previousVisibleMapSectors.length;i++){var mapSector=previousVisibleMapSectors[i];if(!this.isMapSectorVisible(mapSector)||this.getZoom()<trackdirect.settings.minZoomForMarkers){var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];markerIdKeyListToMaybeHide[markerIdKey]=markerIdKey;}}else if(this.getZoom()>=trackdirect.settings.minZoomForMarkers){var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];markerIdKeyListNotToHide[markerIdKey]=markerIdKey;}}} -for(var markerIdKey in markerIdKeyListToMaybeHide){if(markerIdKey in markerIdKeyListNotToHide){continue;} -var marker=this.markerCollection.getMarker(markerIdKey);if(marker!==null){trackdirect.services.callbackExecutor.addWithPriority(marker,marker.hideCompleteMarker,[]);}}}};trackdirect.models.Map.prototype._showMarkersInNewVisibleMapSectors=function(previousVisibleMapSectors){if(this.getZoom()>=trackdirect.settings.minZoomForMarkers){for(var i=0;i<this._visibleMapSectors.length;i++){var mapSector=this._visibleMapSectors[i];if(previousVisibleMapSectors.indexOf(mapSector)==-1||this._currentContentZoom<trackdirect.settings.minZoomForMarkers){var mapSectorMarkerKeys=this.markerCollection.getMapSectorMarkerKeys(mapSector);for(var j=0;j<mapSectorMarkerKeys.length;j++){var markerIdKey=mapSectorMarkerKeys[j];var marker=this.markerCollection.getMarker(markerIdKey);if(marker!==null){trackdirect.services.callbackExecutor.addWithPriority(marker,marker.showCompleteMarker,[]);}}}} -var stationIdList=this.markerCollection.getStationIdListWithVisibleCoverage();for(var i=0;i<stationIdList.length;i++){var latestMarker=this.markerCollection.getStationLatestMarker(stationIdList[i]);if(latestMarker!==null){if(latestMarker.shouldMarkerBeVisible()&&latestMarker.showAsMarker){latestMarker.show();}}}}};trackdirect.models.Map.prototype._setMapInitialLocation=function(){var zoom=this._getInitialZoom();if(typeof this._tdMapOptions.initCenter!=="undefined"&&this._tdMapOptions.initCenter!==null){var pos=this._tdMapOptions.initCenter;this.setCenter(pos,zoom);}else{this.setMapDefaultLocation();this.setZoom(zoom);} -this._emitTdEventListeners("change");};trackdirect.models.Map.prototype.setMapDefaultLocation=function(setDefaultZoom){setDefaultZoom=typeof setDefaultZoom!=="undefined"?setDefaultZoom:false;var defaultLatitude=typeof this._tdMapOptions.defaultLatitude!=="undefined"?this._tdMapOptions.defaultLatitude:59.35;var defaultLongitude=typeof this._tdMapOptions.defaultLongitude!=="undefined"?this._tdMapOptions.defaultLongitude:18.05;var pos={lat:parseFloat(defaultLatitude),lng:parseFloat(defaultLongitude),};if(setDefaultZoom){if(trackdirect.isMobile){this.setCenter(pos,trackdirect.settings.defaultCurrentZoomMobile);}else{this.setCenter(pos,trackdirect.settings.defaultCurrentZoom);}}else{this.setCenter(pos);}};trackdirect.models.Map.prototype.addMarkerToMapSectorInterval=function(markerIdKey,startLatLng,endLatLng){var minLat=startLatLng.lat;var maxLat=endLatLng.lat;var minLng=startLatLng.lng;var maxLng=endLatLng.lng;if(endLatLng.lat<minLat){minLat=endLatLng.lat;maxLat=startLatLng.lat;} -if(endLatLng.lng<minLng){minLng=endLatLng.lng;maxLng=startLatLng.lng;} -for(var lat=Math.floor(minLat);lat<=Math.ceil(maxLat);lat++){for(var lng=Math.floor(minLng);lng<=Math.ceil(maxLng);lng++){var markerMapSector=trackdirect.services.MapSectorCalculator.getMapSector(lat,lng);this.markerCollection.addMarkerToMapSector(markerIdKey,markerMapSector);if(this.isMapSectorVisible(markerMapSector)){if(this._newMarkersToShow.indexOf(markerIdKey)<0){this._newMarkersToShow.push(markerIdKey);}}}}};trackdirect.models.Map.prototype.addMarkerToMapSectors=function(markerIdKey,packet,tryToShowPacket){var markerMapSectors=[];markerMapSectors.push(packet.map_sector);if(typeof packet.related_map_sectors!=="undefined"&&packet.related_map_sectors!==null){for(var i=0;i<packet.related_map_sectors.length;i++){markerMapSectors.push(packet.related_map_sectors[i]);}} -for(var i=0;i<markerMapSectors.length;i++){var markerMapSector=markerMapSectors[i];this.markerCollection.addMarkerToMapSector(markerIdKey,markerMapSector);if(tryToShowPacket){if(this.isMapSectorVisible(markerMapSector)){if(this._newMarkersToShow.indexOf(markerIdKey)<0){this._newMarkersToShow.push(markerIdKey);}}}}};trackdirect.models.Map.prototype._initMapEvents=function(){if(typeof google==="object"&&typeof google.maps==="object"){this._initGoogleMapEvents();}else if(typeof L==="object"){this._initLeafletMapEvents();}};trackdirect.models.Map.prototype._initGoogleMapEvents=function(){var me=this;google.maps.event.addListener(this,"mousemove",function(event){me._renderCordinatesContainer(event.latLng);});google.maps.event.addListener(this,"idle",function(){me._updateMapContent();});google.maps.event.addListener(this,"maptypeid_changed",function(){me._updateMapContent();});google.maps.event.addListener(this,"bounds_changed",function(){if(me.isMapReady()){me._emitTdEventListeners("moving");}});};trackdirect.models.Map.prototype._initLeafletMapEvents=function(){var me=this;this.on("mousemove",function(event){me._renderCordinatesContainer(event.latlng);});this.on("moveend",function(){me._updateMapContent();});this.on("move",function(){if(me.isMapReady()){me._emitTdEventListeners("moving");}});};trackdirect.models.Map.prototype._initOms=function(){var options={};options["nearbyDistance"]=12;if(typeof google==="object"&&typeof google.maps==="object"){var mti=google.maps.MapTypeId;this.oms=new OverlappingMarkerSpiderfier(this,options);this.oms.legColors.usual[mti.HYBRID]=this.oms.legColors.usual[mti.SATELLITE]="#fff";this.oms.legColors.usual[mti.TERRAIN]=this.oms.legColors.usual[mti.ROADMAP]="#222";this.oms.legColors.highlighted[mti.HYBRID]=this.oms.legColors.highlighted[mti.SATELLITE]="#f00";this.oms.legColors.highlighted[mti.TERRAIN]=this.oms.legColors.highlighted[mti.ROADMAP]="#f00";}else if(typeof L==="object"){this.oms=new OverlappingMarkerSpiderfier(this,options);}};trackdirect.models.Map.prototype._initInfoWindowEvent=function(){var me=this;if(this.oms){this.oms.addListener("click",function(marker,event){me.openMarkerInfoWindow(marker,false);});}else{}};trackdirect.models.Map.prototype._getGoolgeMapOptions=function(){var zoom=this._getInitialZoom();var mapOptions={zoom:zoom,panControl:false,zoomControl:true,zoomControlOptions:{position:google.maps.ControlPosition.RIGHT_BOTTOM,},mapTypeControl:false,scaleControl:false,streetViewControl:false,overviewMapControl:false,fullscreenControl:false,mapTypeId:google.maps.MapTypeId.ROADMAP,gestureHandling:"greedy",};mapOptions.mapTypeId=this._supportedMapTypes[this._mapType];return mapOptions;};trackdirect.models.Map.prototype._getLeafletMapOptions=function(){var zoom=this._getInitialZoom();var mapOptions={zoom:zoom,zoomControl:true,attributionControl:true,zoomControl:false,minZoom:3,maxZoom:16,closePopupOnClick:false,};return mapOptions;};trackdirect.models.Map.prototype._getInitialZoom=function(){var zoom=trackdirect.settings.defaultCurrentZoom;if(typeof this._tdMapOptions.zoom!=="undefined"&&this._tdMapOptions.zoom!==null){zoom=parseInt(this._tdMapOptions.zoom);}else if(trackdirect.isMobile){zoom=trackdirect.settings.defaultCurrentZoomMobile;} -return zoom;};trackdirect.models.Map.prototype.getCurrentRadiusInKm=function(){if(this.getBounds()!=null){if(typeof google==="object"&&typeof google.maps==="object"){var latLng=this.getBounds().getNorthEast();var latLngLiteral={lat:latLng.lat(),lng:latLng.lng()};}else if(typeof L==="object"){var latLng=this.getBounds().getNorthEast();var latLngLiteral={lat:latLng.lat,lng:latLng.lng};} -return(trackdirect.services.distanceCalculator.getDistance(this.getCenterLiteral(),latLngLiteral)/1000);} -return 0;};trackdirect.models.Map.prototype._renderCordinatesContainer=function(mouseLatLng){var options=this.getTdMapOptions();if(typeof options.cordinatesContainer==="undefined"){return;} -if(options.cordinatesContainer==null){return;} -var lat=null;var lng=null;if(typeof mouseLatLng.lat=="function"){lat=mouseLatLng.lat();lng=mouseLatLng.lng();}else{lat=mouseLatLng.lat;lng=mouseLatLng.lng;} -if(lat<=90&&lat>=-90&&lng<=180&&lng>=-180){var content="";content+=this._getGpsDegreeFromGpsDecimal(lat.toFixed(5),"lat");content+=" "+this._getGpsDegreeFromGpsDecimal(lng.toFixed(5),"lon");content+="<br>"+lat.toFixed(5)+", "+lng.toFixed(5);content+="<br>"+this._getMaidenheadLocatorFromGpsDecimal(lat,lng);$("#"+options.cordinatesContainer).html(content);}};trackdirect.models.Map.prototype._getGpsDegreeFromGpsDecimal=function(dms,type){var sign=1,Abs=0;var days,minutes,secounds,direction;if(dms<0){sign=-1;} -Abs=Math.abs(Math.round(dms*1000000));if(type=="lat"&&Abs>90*1000000){return false;}else if(type=="lon"&&Abs>180*1000000){return false;} -days=Math.floor(Abs/1000000);minutes=Math.floor((Abs/1000000-days)*60);secounds=((Math.floor(((Abs/1000000-days)*60-minutes)*100000)*60)/ -100000).toFixed();days=days*sign;if(type=="lat")direction=days<0?"S":"N";if(type=="lon")direction=days<0?"W":"E";return days*sign+"º "+minutes+"' "+secounds+"'' "+direction;};trackdirect.models.Map.prototype._getMaidenheadLocatorFromGpsDecimal=function(lat,lng,){const chars='ABCDEFGHIJKLMNOPQRSTUVX';var result='';lng=lng+180;lat=lat+90;result=chars.charAt(parseInt(lng/20));result+=chars.charAt(parseInt(lat/10));result+=parseInt(lng/2%10);result+=parseInt(lat%10);lng_r=(lng-parseInt(lng/2)*2)*60;lat_r=(lat-parseInt(lat))*60;result+=chars.charAt(parseInt(lng_r/5));result+=chars.charAt(parseInt(lat_r/2.5));return result;}; -if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.Label=function(options,map){this._defaultMap=map;options.map=null;this.setValues(options);this.div_=null;};trackdirect.models.Label.prototype=new google.maps.OverlayView();trackdirect.models.Label.prototype.show=function(){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}};trackdirect.models.Label.prototype.hide=function(){if(this.getMap()!==null){this.setMap(null);}};trackdirect.models.Label.prototype.onAdd=function(){if(this.div_===null){var jqSpan=$(document.createElement("span"));jqSpan.css("color","#101010");jqSpan.css("text-shadow","1px 1px 1px #FFF, -1px -1px 1px #FFF, 1px -1px 1px #FFF, -1px 1px 1px #FFF, 1px 1px 1px #FFF");jqSpan.css("position","relative");jqSpan.css("top","10px");jqSpan.css("white-space","nowrap");jqSpan.css("font-family","Helvetica");jqSpan.css("font-weight","bold");jqSpan.css("font-size","10px");jqSpan.css("padding","0px");jqSpan.css("z-index","1000");jqSpan.css("margin","0");jqSpan.css("line-height","10px");var span=(this.span_=jqSpan[0]);span.innerHTML=this.get("text").toString();var div=(this.div_=document.createElement("div"));div.appendChild(span);div.style.cssText="position: absolute; display: none";} -var pane=this.getPanes().overlayLayer;pane.appendChild(this.div_);var me=this;this.listeners_=[google.maps.event.addListener(this,"position_changed",function(){me.draw();}),google.maps.event.addListener(this,"text_changed",function(){me.draw();}),];};trackdirect.models.Label.prototype.onRemove=function(){if(this.div_!==null&&this.div_.parentNode!==null){this.div_.parentNode.removeChild(this.div_);for(var i=0,I=this.listeners_.length;i<I;++i){google.maps.event.removeListener(this.listeners_[i]);}}};trackdirect.models.Label.prototype.draw=function(){var projection=this.getProjection();if(typeof this.get("position").lat==="function"){var latLng=new google.maps.LatLng({lat:this.get("position").lat(),lng:this.get("position").lng(),});}else{var latLng=new google.maps.LatLng({lat:this.get("position").lat,lng:this.get("position").lng,});} -var position=projection.fromLatLngToDivPixel(latLng);var div=this.div_;var span=this.span_;span.innerHTML=this.get("text").toString();div.style.left=position.x+"px";div.style.top=position.y+"px";div.style.display="block";};}else if(typeof L==="object"&&typeof L.Tooltip!=="undefined"){trackdirect.models.Label=function(options,map){this._defaultMap=map;L.Tooltip.call(this,this._getBasicOptions(options));this.setContent(options.text);if(typeof options.position!=="undefined"&&typeof options.position.lat!=="undefined"&&typeof options.position.lng!=="undefined"){this.setLatLng(new L.LatLng(options.position.lat,options.position.lng));}};trackdirect.models.Label.prototype=new L.Tooltip();trackdirect.models.Label.prototype.show=function(){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}};trackdirect.models.Label.prototype.hide=function(){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}};trackdirect.models.Label.prototype._getBasicOptions=function(options){return{direction:"right",noWrap:true,offset:L.point(2,10),className:"leaflet-marker-labeltext",permanent:true,};};}else if(typeof L==="object"){trackdirect.models.Label=function(options,map){this._defaultMap=map;var position=null;if(typeof options.position!=="undefined"&&typeof options.position.lat!=="undefined"&&typeof options.position.lng!=="undefined"){position=[options.position.lat,options.position.lng];} -L.Marker.call(this,position,this._getBasicOptions(options));};trackdirect.models.Label.prototype=Object.create(L.Marker.prototype);trackdirect.models.Label.prototype.constructor=trackdirect.models.Label;trackdirect.models.Label.prototype.show=function(){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}};trackdirect.models.Label.prototype.hide=function(){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}};trackdirect.models.Label.prototype._getBasicOptions=function(options){var strlen=options.text.length;var myIcon=L.divIcon({iconSize:new L.Point(strlen*10,20),className:"leaflet-marker-labeltext",html:options.text,iconAnchor:new L.Point(-2,-10),});return{icon:myIcon,clickable:false,keyboard:false,};};}else{trackdirect.models.Label=function(options,map){};trackdirect.models.Label.prototype.show=function(){};trackdirect.models.Label.prototype.hide=function(){};} -trackdirect.models.InfoWindow=function(marker,map,disableAutoPan){disableAutoPan=typeof disableAutoPan!=="undefined"?disableAutoPan:true;this._marker=marker;this._defaultMap=map;this._polyline=null;this._tdEventListeners={};if(typeof google==="object"&&typeof google.maps==="object"){google.maps.InfoWindow.call(this,{disableAutoPan:disableAutoPan,});}else if(typeof L==="object"){var yOffset=2;if(!marker.isDotMarker()){yOffset=-5;} -L.Popup.call(this,{autoPan:!disableAutoPan,offset:[0,yOffset],maxWidth:440,className:"leaflet-infowindow-content",});} -var me=this;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.event.addListener(this,"closeclick",function(){me._hideRelatedMarkerTail();});}else if(typeof L==="object"){this.on("popupclose",function(){me._hideRelatedMarkerTail();});}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.InfoWindow.prototype=Object.create(google.maps.InfoWindow.prototype);}else if(typeof L==="object"){trackdirect.models.InfoWindow.prototype=Object.create(L.Popup.prototype);} -trackdirect.models.InfoWindow.prototype.constructor=trackdirect.models.InfoWindow;trackdirect.models.InfoWindow.prototype.setMarker=function(marker){this._marker=marker;};trackdirect.models.InfoWindow.prototype.getMarker=function(){return this._marker;};trackdirect.models.InfoWindow.prototype.getPolyline=function(){return this._polyline;};trackdirect.models.InfoWindow.prototype.isInfoWindowOpen=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(this.getMap()!==null){return true;}}else if(typeof L==="object"&&typeof windyInit==="function"){return this._defaultMap.hasLayer(this);}else if(typeof L==="object"){return this.isOpen();} -return false;};trackdirect.models.InfoWindow.prototype.show=function(compactVersion,position){compactVersion=typeof compactVersion!=="undefined"?compactVersion:false;position=typeof position!=="undefined"?position:null;this._create(compactVersion);if(typeof google==="object"&&typeof google.maps==="object"){if(position!==null){this.setPosition(position);this.open(this._defaultMap);}else{this.open(this._defaultMap,this._marker);} -this.addListener("domready",function(){this._addPhgLinkListeners();this._addRngLinkListeners();});}else if(typeof L==="object"){if(this.isOpen()){this._addPhgLinkListeners();this._addRngLinkListeners();}else{this.on("add",function(){this._addPhgLinkListeners();this._addRngLinkListeners();});} -if(position!==null){this.setLatLng(position);this.openOn(this._defaultMap);}else{this.setLatLng(this._marker.packet.getLatLngLiteral());this.openOn(this._defaultMap);}} -if(this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkerTail){if(this._marker.overwrite){this._emitTdEventListeners("station-tail-needed",this._marker.packet.station_id);} -this._marker.showMarkerTail(true);}};trackdirect.models.InfoWindow.prototype.hide=function(){if(typeof google==="object"&&typeof google.maps==="object"){this.close();if(this.getMap()!==null){this.setMap(null);}}else if(typeof L==="object"){this._defaultMap.removeLayer(this);} -this._hideRelatedMarkerTail();if(this._defaultMap.state.openInfoWindow!==null&&this._defaultMap.state.openInfoWindow===this){this._defaultMap.state.openInfoWindow=null;}};(trackdirect.models.InfoWindow.prototype.addTdListener=function(event,handler){if(!(event in this._tdEventListeners)){this._tdEventListeners[event]=[];} -this._tdEventListeners[event].push(handler);}),(trackdirect.models.InfoWindow.prototype._emitTdEventListeners=function(event,arg){if(event in this._tdEventListeners){for(var i=0;i<this._tdEventListeners[event].length;i++){this._tdEventListeners[event][i](arg);}}});trackdirect.models.InfoWindow.prototype._create=function(compactVersion){if(compactVersion){var mainDiv=this._getCompactMainDiv();var menuwrapper=this._getMenuDiv(false);this._polyline=this._defaultMap.markerCollection.getMarkerPolyline(this._marker.markerIdKey);}else{var mainDiv=this._getMainDiv();if(!trackdirect.isMobile){mainDiv.append(this._getIconDiv());} -mainDiv.append(this._getCompletePacketDiv());var menuwrapper=this._getMenuDiv(true);} -mainDiv.append(menuwrapper);var wrapperDiv=$(document.createElement("div"));wrapperDiv.append(mainDiv);if(typeof google==="object"&&typeof google.maps==="object"){this.setContent(wrapperDiv.html());}else if(typeof L==="object"){this.setContent(wrapperDiv.html());}};trackdirect.models.InfoWindow.prototype._hideRelatedMarkerTail=function(){if(this._polyline!==null){if(!this._defaultMap.state.isFilterMode&&this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkerTail){var markerIdKey=this._polyline.markerIdKey;if(this._defaultMap.markerCollection.isExistingMarker(markerIdKey)){var stationId=this._defaultMap.markerCollection.getMarker(markerIdKey).packet.station_id;var stationLatestMarker=this._defaultMap.markerCollection.getStationLatestMarker(stationId);if(stationLatestMarker!==null){stationLatestMarker.hideMarkerTail();}}}}else if(this._marker!==null){if(!this._defaultMap.state.isFilterMode&&this._defaultMap.getZoom()<trackdirect.settings.minZoomForMarkerTail){this._marker.hideMarkerTail();}}};trackdirect.models.InfoWindow.prototype._getMainDiv=function(){var mainDiv=$(document.createElement("div"));mainDiv.css("font-family","Verdana,Arial,sans-serif");if(!trackdirect.isMobile){mainDiv.css("font-size","11px");}else{mainDiv.css("font-size","10px");} -mainDiv.css("line-height","1.42857143");mainDiv.css("color","#333");mainDiv.css("text-align","left");return mainDiv;};trackdirect.models.InfoWindow.prototype._getIconDiv=function(){var iconUrl64=trackdirect.services.symbolPathFinder.getFilePath(this._marker.packet.symbol_table,this._marker.packet.symbol,null,null,null,64,64);var iconImg=$(document.createElement("img"));iconImg.css("width","64px");iconImg.css("height","64px");iconImg.attr("src",iconUrl64);iconImg.attr("alt","");iconImg.attr("title","");var leftIconDiv=$(document.createElement("div"));leftIconDiv.css("display","inline-block");leftIconDiv.css("vertical-align","top");leftIconDiv.css("padding-right","15px");leftIconDiv.css("padding-bottom","5px");leftIconDiv.append(iconImg);return leftIconDiv;};trackdirect.models.InfoWindow.prototype._getPacketDiv=function(){var packetDiv=$(document.createElement("div"));packetDiv.css("display","inline-block");packetDiv.css("vertical-align","top");packetDiv.css("max-width","350px");return packetDiv;};trackdirect.models.InfoWindow.prototype._getNameIconDiv=function(){var iconUrl24=trackdirect.services.symbolPathFinder.getFilePath(this._marker.packet.symbol_table,this._marker.packet.symbol,null,null,null,24,24);var iconImg=$(document.createElement("img"));iconImg.css("width","24px");iconImg.css("height","24px");iconImg.css("vertical-align","middle");iconImg.attr("src",iconUrl24);iconImg.attr("alt","symbol");iconImg.attr("title","");return iconImg;};trackdirect.models.InfoWindow.prototype._getNameLink=function(){var nameLink=$(document.createElement("a"));nameLink.css("color","#337ab7");if(trackdirect.isMobile){nameLink.css("vertical-align","-2px");} -nameLink.attr("href","");nameLink.attr("onclick","trackdirect.openStationInformationDialog("+ -this._marker.packet.station_id+ -"); return false;");nameLink.html(escapeHtml(this._marker.packet.station_name));return nameLink;};trackdirect.models.InfoWindow.prototype._getSenderNameLink=function(){var nameLink=$(document.createElement("span"));if(trackdirect.isMobile){nameLink.css("vertical-align","-2px");} -nameLink.html(escapeHtml(this._marker.packet.sender_name));return nameLink;};trackdirect.models.InfoWindow.prototype._getNameDiv=function(){var nameDiv=$(document.createElement("div"));nameDiv.css("clear","both");nameDiv.css("font-size","12px");nameDiv.css("font-weight","bold");if(trackdirect.isMobile){nameDiv.append(this._getNameIconDiv());nameDiv.append(" ");nameDiv.append(" ");} -nameDiv.append(this._getNameLink());if(this._marker.packet.getOgnRegistration()!=null){var name=escapeHtml(this._marker.packet.getOgnRegistration());if(this._marker.packet.getOgnCN()!==null){name+=" ["+escapeHtml(this._marker.packet.getOgnCN())+"]";} -nameDiv.append(", ");nameDiv.append(name);} -if(this._marker.packet.sender_name!=this._marker.packet.station_name){nameDiv.append(" (");nameDiv.append(this._getSenderNameLink());nameDiv.append(")");} -return nameDiv;};trackdirect.models.InfoWindow.prototype._getCompletePacketDiv=function(){var packetDiv=this._getPacketDiv();packetDiv.append(this._getNameDiv());packetDiv.append(this._getPacketTimeDiv());if(this._marker.packet.timestamp>0){if($(window).height()>=300){packetDiv.append(this._getPacketPathDiv());} -var phgRange=this._marker.packet.getPHGRange();var rngRange=this._marker.packet.getRNGRange();if(phgRange!==null||rngRange!==null){packetDiv.append(this._getSpaceDiv());packetDiv.append(this._getPhgDiv(phgRange));packetDiv.append(this._getRngDiv(rngRange));} -if($(window).height()>=300){var transmitDistance=this._getTransmitDistance(this._marker.packet);var tailDistance=this._getTailDistance(this._defaultMap.markerCollection.getMarkerMasterMarkerKeyId(this._marker.markerIdKey));if((transmitDistance!==null&&Math.round(transmitDistance/100)!=0)||(tailDistance!==null&&Math.round(tailDistance)>0)){packetDiv.append(this._getSpaceDiv());packetDiv.append(this._getTransmitDistanceDiv(transmitDistance));packetDiv.append(this._getTailDistanceDiv(tailDistance));}} -if(this._marker.packet.speed!==null||this._marker.packet.course!==null||this._marker.packet.altitude!==null){packetDiv.append(this._getSpaceDiv());packetDiv.append(this._getPacketSpeedAltitudeCourseDiv());} -if(typeof this._marker.packet.weather!=="undefined"&&this._marker.packet.weather!==null){packetDiv.append(this._getSpaceDiv());packetDiv.append(this._getWeatherDiv());} -if(typeof this._marker.packet.latest_telemetry_packet_timestamp!=="undefined"&&this._marker.packet.latest_telemetry_packet_timestamp!==null){packetDiv.append(this._getSpaceDiv());packetDiv.append(this._getTelemetryDiv());} -var commentDiv=this._getPacketCommentDiv();if(commentDiv!=null){packetDiv.append(this._getSpaceDiv());packetDiv.append(commentDiv);}} -return packetDiv;};trackdirect.models.InfoWindow.prototype._getPacketTimeDiv=function(){if(this._marker.packet.timestamp==0){dateString='<span style="color: grey;">No known packet for specified limits.</span>';}else{var date=new Date(this._marker.packet.timestamp*1000);var dateString=moment(date).format(trackdirect.settings.dateFormatNoTimeZone);if(this._marker.packet.timestamp>this._marker.packet.position_timestamp&&!trackdirect.isMobile){var positionDate=new Date(this._marker.packet.position_timestamp*1000);dateString=moment(positionDate).format(trackdirect.settings.dateFormatNoTimeZone)+ -" - "+ -moment(date).format(trackdirect.settings.dateFormatNoTimeZone);} -if(this._defaultMap.state.endTimeTravelTimestamp!==null&&this._marker.packet.map_id==12){dateString+='<br/><span style="color: grey;">(exact time for this is not known)</span>';}} -var timeDiv=$(document.createElement("div"));timeDiv.css("clear","both");timeDiv.html(dateString);return timeDiv;};trackdirect.models.InfoWindow.prototype._getPacketPathDiv=function(){var rawPath=this._marker.packet.getLinkifiedRawPath();if(rawPath!==null){var rawPathDiv=$(document.createElement("div"));rawPathDiv.css("clear","both");rawPathDiv.html("["+rawPath+"]");return rawPathDiv;} -return null;};trackdirect.models.InfoWindow.prototype._getSpaceDiv=function(){var spaceDiv=$(document.createElement("div"));spaceDiv.css("clear","both");spaceDiv.css("line-height","4px");spaceDiv.html(" ");return spaceDiv;};trackdirect.models.InfoWindow.prototype._getPhgDiv=function(phgRange){if(phgRange!==null){if(this._defaultMap.state.useImperialUnit){var phgRange=Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(phgRange/1000)*10)/10;var phgRangeUnit="miles";}else{var phgRange=Math.round(phgRange/10)/100;var phgRangeUnit="km";} -var phgDiv=$(document.createElement("div"));phgDiv.attr("id","phglinks-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id);var halfPhgLink=$("<a style='color: #337ab7;' id='half-phg-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id+ -"' href='#'>Half</a>");var fullPhgLink=$("<a style='color: #337ab7;' id='full-phg-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id+ -"' href='#'>Full</a>");var nonePhgLink=$("<a style='color: #337ab7;' id='none-phg-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id+ -"' href='#'>None</a>");phgDiv.css("clear","both");phgDiv.css("display","none");phgDiv.css("color","#440B2A");phgDiv.append("PHG calculated range: "+phgRange+" "+phgRangeUnit);if(typeof L==="object"&&L.version<="0.7.7"){return phgDiv;} -if(phgRange>0){phgDiv.append("<br/>");phgDiv.append("PHG circle: ");phgDiv.append(fullPhgLink);phgDiv.append('<span style="color:#000"> - </span>');phgDiv.append(halfPhgLink);phgDiv.append('<span style="color:#000"> - </span>');phgDiv.append(nonePhgLink);} -return phgDiv;} -return null;};trackdirect.models.InfoWindow.prototype._getRngDiv=function(rngRange){if(rngRange!==null){if(this._defaultMap.state.useImperialUnit){var rngRange=Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(rngRange/1000)*10)/10;var rngRangeUnit="miles";}else{var rngRange=Math.round(rngRange*100)/100;var rngRangeUnit="km";} -var rngDiv=$(document.createElement("div"));rngDiv.attr("id","rnglinks-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id);var halfRngLink=$("<a style='color: #337ab7;' id='half-rng-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id+ -"' href='#'>Half</a>");var fullRngLink=$("<a style='color: #337ab7;' id='full-rng-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id+ -"' href='#'>Full</a>");var noneRngLink=$("<a style='color: #337ab7;' id='none-rng-"+ -this._marker.packet.station_id+ -"-"+ -this._marker.packet.id+ -"' href='#'>None</a>");rngDiv.css("clear","both");rngDiv.css("display","none");rngDiv.css("color","#440B2A");rngDiv.append("RNG precalculated range: "+rngRange+" "+rngRangeUnit);if(typeof L==="object"&&L.version<="0.7.7"){return rngDiv;} -if(rngRange>0){rngDiv.append("<br/>");rngDiv.append("RNG circle: ");rngDiv.append(fullRngLink);rngDiv.append('<span style="color:#000"> - </span>');rngDiv.append(halfRngLink);rngDiv.append('<span style="color:#000"> - </span>');rngDiv.append(noneRngLink);} -return rngDiv;} -return null;};trackdirect.models.InfoWindow.prototype._getTransmitDistanceDiv=function(transmitDistance){if(transmitDistance!==null&&Math.round(transmitDistance/100)!=0){var transmitDistanceDiv=$(document.createElement("div"));transmitDistanceDiv.css("clear","both");transmitDistanceDiv.css("color","#273c20");if(this._defaultMap.state.useImperialUnit){transmitDistance=Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(transmitDistance/1000)*10)/10;transmitDistanceUnit="miles";}else{transmitDistance=Math.round(transmitDistance/100)/10;transmitDistanceUnit="km";} -transmitDistanceDiv.append('<span title="Transmit distance to receiving digipeater/igate">Transmit distance: '+ -transmitDistance+ -" "+ -transmitDistanceUnit+ -"</span>");return transmitDistanceDiv;} -return null;};trackdirect.models.InfoWindow.prototype._getTailDistanceDiv=function(tailDistance){if(tailDistance!==null&&Math.round(tailDistance)>0){var distanceDiv=$(document.createElement("div"));distanceDiv.css("clear","both");distanceDiv.css("color","#273c20");if(tailDistance<1000){if(this._defaultMap.state.useImperialUnit){tailDistance=Math.round(trackdirect.services.imperialConverter.convertMeterToYard(tailDistance));tailDistanceUnit="yd";}else{tailDistance=Math.round(tailDistance);tailDistanceUnit="m";}}else{if(this._defaultMap.state.useImperialUnit){tailDistance=Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(tailDistance/1000)*10)/10;tailDistanceUnit="miles";}else{tailDistance=Math.round(tailDistance/100)/10;tailDistanceUnit="km";}} -distanceDiv.append('<span title="Current shown tail distance (depends on the time settings)">Current tail distance: '+ -tailDistance+ -" "+ -tailDistanceUnit+ -"</span>");return distanceDiv;} -return null;};trackdirect.models.InfoWindow.prototype._getPacketSpeedAltitudeCourseDiv=function(){if(Math.round(this._marker.packet.speed)!=0||Math.round(this._marker.packet.course)!=0||Math.round(this._marker.packet.altitude)!=0){var speedDiv=$(document.createElement("div"));speedDiv.css("clear","both");speedDiv.css("font-weight","bold");if(this._marker.packet.speed!==null){if(this._defaultMap.state.useImperialUnit){speedDiv.append(Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(this._marker.packet.speed))+" mph ");}else{speedDiv.append(Math.round(this._marker.packet.speed)+" km/h ");}} -if(this._marker.packet.course!==null){speedDiv.append(Math.round(this._marker.packet.course)+"° ");} -if(this._marker.packet.altitude!==null){if(this._defaultMap.state.useImperialUnit){speedDiv.append(" alt "+ -Math.round(trackdirect.services.imperialConverter.convertMeterToFeet(this._marker.packet.altitude))+ -" ft ");}else{speedDiv.append(" alt "+Math.round(this._marker.packet.altitude)+" m ");}} -return speedDiv;} -return null;};trackdirect.models.InfoWindow.prototype._getWeatherDivRainString=function(){if(isNumeric(this._marker.packet.weather.rain_1h)){if(this._defaultMap.state.useImperialUnit){var rain1h="-";if(isNumeric(this._marker.packet.weather.rain_1h)){rain1h=Math.round(trackdirect.services.imperialConverter.convertMmToInch(this._marker.packet.weather.rain_1h))+"in";} -var rain24h="-";if(isNumeric(this._marker.packet.weather.rain_24h)){rain24h=Math.round(trackdirect.services.imperialConverter.convertMmToInch(this._marker.packet.weather.rain_24h))+"in";} -var rainSinceMidnight="-";if(isNumeric(this._marker.packet.weather.rain_since_midnight)){rainSinceMidnight=Math.round(trackdirect.services.imperialConverter.convertMmToInch(this._marker.packet.weather.rain_since_midnight))+"in";}}else{var rain1h="-";if(isNumeric(this._marker.packet.weather.rain_1h)){rain1h=Math.round(this._marker.packet.weather.rain_1h)+"mm";} -var rain24h="-";if(isNumeric(this._marker.packet.weather.rain_24h)){rain24h=Math.round(this._marker.packet.weather.rain_24h)+"mm";} -var rainSinceMidnight="-";if(isNumeric(this._marker.packet.weather.rain_since_midnight)){rainSinceMidnight=Math.round(this._marker.packet.weather.rain_since_midnight)+"mm";}} -return("<b>Rain</b> "+ -rain1h+ -"/"+ -rain24h+ -"/"+ -rainSinceMidnight+ -" (1h/24h/midnight)<br/>");} -return null;};trackdirect.models.InfoWindow.prototype._getWeatherDivTemperatureString=function(){if(isNumeric(this._marker.packet.weather.temperature)){if(this._defaultMap.state.useImperialUnit){return("<b>Temperature</b> "+ -Math.round(trackdirect.services.imperialConverter.convertCelciusToFahrenheit(this._marker.packet.weather.temperature))+ -"°F"+ -"<br/>");}else{return("<b>Temperature</b> "+ -Math.round(this._marker.packet.weather.temperature)+ -"°C"+ -"<br/>");}} -return null;};trackdirect.models.InfoWindow.prototype._getWeatherDivHumidityString=function(){if(isNumeric(this._marker.packet.weather.humidity)){return("<b>Humidity</b> "+ -Math.round(this._marker.packet.weather.humidity)+ -"%<br/>");} -return null;};trackdirect.models.InfoWindow.prototype._getWeatherDivPressureString=function(){if(isNumeric(this._marker.packet.weather.pressure)){if(this._defaultMap.state.useImperialUnit){return("<b>Pressure</b> "+ -Math.round(trackdirect.services.imperialConverter.convertMbarToMmhg(this._marker.packet.weather.pressure))+ -" mmHg<br/>");}else{return("<b>Pressure</b> "+ -Math.round(this._marker.packet.weather.pressure)+ -" hPa<br/>");}} -return null;};trackdirect.models.InfoWindow.prototype._getWeatherDivWindString=function(){if(isNumeric(this._marker.packet.weather.wind_speed)){var windDir="";if(typeof this._marker.packet.weather.wind_direction!=="undefined"&&isNumeric(this._marker.packet.weather.wind_direction)){windDir=this._marker.packet.weather.wind_direction.toString()+"° ";} -if(this._defaultMap.state.useImperialUnit){if(isNumeric(this._marker.packet.weather.wind_gust)){return("<b>Wind</b> "+ -windDir+ -Math.round(trackdirect.services.imperialConverter.convertMpsToMph(this._marker.packet.weather.wind_speed)*10)/ -10+ -" mph"+ -" ("+ -Math.round(trackdirect.services.imperialConverter.convertMpsToMph(this._marker.packet.weather.wind_gust)*10)/ -10+ -" mph)<br/>");}else{return("<b>Wind</b> "+ -windDir+ -Math.round(trackdirect.services.imperialConverter.convertMpsToMph(this._marker.packet.weather.wind_speed)*10)/ -10+ -" mph<br/>");}}else{if(isNumeric(this._marker.packet.weather.wind_gust)){return("<b>Wind</b> "+ -windDir+ -Math.round(this._marker.packet.weather.wind_speed*10)/10+ -" m/s"+ -" ("+ -Math.round(this._marker.packet.weather.wind_gust*10)/10+ -" m/s)<br/>");}else{return("<b>Wind</b> "+ -windDir+ -Math.round(this._marker.packet.weather.wind_speed*10)/10+ -" m/s <br/>");}}} -return null;};trackdirect.models.InfoWindow.prototype._getWeatherDiv=function(){var weatherDiv=$(document.createElement("div"));weatherDiv.css("clear","both");weatherDiv.css("color","#227152");var weatherDate=new Date(this._marker.packet.timestamp*1000);if(typeof this._marker.packet.weather.timestamp!=="undefined"&&this._marker.packet.weather.timestamp!==null){weatherDate=new Date(this._marker.packet.weather.timestamp*1000);} -weatherDateString=moment(weatherDate).format(trackdirect.settings.dateFormatNoTimeZone);weatherDiv.append("<b>Latest Weather</b> "+weatherDateString+"<br/>");if(!trackdirect.isMobile&&$(window).height()>=300){weatherDiv.append(this._getWeatherDivTemperatureString());weatherDiv.append(this._getWeatherDivHumidityString());weatherDiv.append(this._getWeatherDivPressureString());weatherDiv.append(this._getWeatherDivRainString());weatherDiv.append(this._getWeatherDivWindString());} -return weatherDiv;};trackdirect.models.InfoWindow.prototype._getTelemetryDiv=function(){var telemetryDiv=$(document.createElement("div"));telemetryDiv.css("clear","both");telemetryDiv.css("color","#823030");var telemetryDate=new Date(this._marker.packet.latest_telemetry_packet_timestamp*1000);telemetryDateString=moment(telemetryDate).format(trackdirect.settings.dateFormatNoTimeZone);telemetryDiv.append("Latest Telemetry "+telemetryDateString+"<br/>");return telemetryDiv;};trackdirect.models.InfoWindow.prototype._getPacketCommentDiv=function(){var comment="";var ognSummary=escapeHtml(this._marker.packet.getOgnSummary());if(ognSummary!=""){comment=ognSummary;}else if(typeof this._marker.packet.comment!=="undefined"&&this._marker.packet.comment!==null){comment=Autolinker.link(escapeHtml(this._marker.packet.comment),{newWindow:true,});} -if(comment==""){return null;} -var commentDiv=$(document.createElement("div"));commentDiv.css("clear","both");commentDiv.css("font-weight","bold");if(!trackdirect.isMobile){commentDiv.css("font-size","11px");}else{commentDiv.css("font-size","10px");} -commentDiv.html(comment);return commentDiv;};trackdirect.models.InfoWindow.prototype._addPhgLinkListeners=function(){var marker=this._marker;$("#half-phg-"+marker.packet.station_id+"-"+marker.packet.id).click(function(e){marker.showPHGCircle(true);return false;});$("#full-phg-"+marker.packet.station_id+"-"+marker.packet.id).click(function(e){marker.showPHGCircle(false);return false;});$("#none-phg-"+this._marker.packet.station_id+"-"+marker.packet.id).click(function(e){marker.hidePHGCircle();return false;});if($("#phglinks-"+marker.packet.station_id+"-"+marker.packet.id).length){$("#phglinks-"+marker.packet.station_id+"-"+marker.packet.id).show();}};trackdirect.models.InfoWindow.prototype._addRngLinkListeners=function(){var marker=this._marker;$("#half-rng-"+marker.packet.station_id+"-"+marker.packet.id).click(function(e){marker.showRNGCircle(true);return false;});$("#full-rng-"+marker.packet.station_id+"-"+marker.packet.id).click(function(e){marker.showRNGCircle(false);return false;});$("#none-rng-"+marker.packet.station_id+"-"+marker.packet.id).click(function(e){marker.hideRNGCircle();return false;});if($("#rnglinks-"+marker.packet.station_id+"-"+marker.packet.id).length){$("#rnglinks-"+marker.packet.station_id+"-"+marker.packet.id).show();}};trackdirect.models.InfoWindow.prototype._getMenuDiv=function(isInfoWindowOpen){var menuWrapperDiv=this._getMenuDivWrapperDiv();var menuDiv=this._getMenuDivMainDiv();menuWrapperDiv.append(menuDiv);var menuUl=this._getMenuDivUlDiv();menuDiv.append(menuUl);menuUl.append(this._getMenuDivTrackLink());menuUl.append(this._getMenuDivFilterLink());if(!trackdirect.isMobile){menuUl.append(this._getMenuDivCenterLink(isInfoWindowOpen));} -menuUl.append(this._getMenuDivZoomLink(isInfoWindowOpen));if(!trackdirect.isEmbedded&&!inIframe()&&!this._marker.isMovingStation()&&this._marker.packet.source_id!=2){menuUl.append(this._getMenuDivCoverageLink());} -return menuWrapperDiv;};trackdirect.models.InfoWindow.prototype._getMenuDivWrapperDiv=function(){var menuWrapperDiv=$(document.createElement("div"));menuWrapperDiv.addClass("infowindow-menu-wrapper");menuWrapperDiv.css("clear","both");menuWrapperDiv.css("width","100%");menuWrapperDiv.css("padding-top","8px");return menuWrapperDiv;};trackdirect.models.InfoWindow.prototype._getMenuDivMainDiv=function(){var menuDiv=$(document.createElement("div"));menuDiv.addClass("infowindow-menu");menuDiv.css("width","100%");menuDiv.css("border-top","1px solid #cecece");return menuDiv;};trackdirect.models.InfoWindow.prototype._getMenuDivUlDiv=function(){var menuUl=$(document.createElement("ul"));menuUl.css("list-style-type","none");menuUl.css("list-style","none");menuUl.css("text-align","center");menuUl.css("margin","0");menuUl.css("padding","0");menuUl.css("display","table");return menuUl;};trackdirect.models.InfoWindow.prototype._getMenuDivLinkCss=function(){var liLinkCss={"list-style":"none",display:"table-cell","text-align":"center","padding-right":"10px",width:"auto",};return liLinkCss;};trackdirect.models.InfoWindow.prototype._getMenuDivTrackLink=function(){var trackLinkElementClass="trackStationLink"+this._marker.packet.station_id;var menuLi=$(document.createElement("li"));menuLi.css(this._getMenuDivLinkCss());var menuLink=$(document.createElement("a"));menuLink.css("color","#337ab7");menuLink.attr("href","#");menuLink.addClass(trackLinkElementClass);menuLink.attr("onclick","trackdirect.handleTrackStationRequest("+ -this._marker.packet.station_id+ -', "'+ -trackLinkElementClass+ -'"); return false;');if(this._defaultMap.state.getTrackStationId()!==null&&this._defaultMap.state.getTrackStationId()==this._marker.packet.station_id){menuLink.html("Untrack");}else{menuLink.html("Track");} -menuLi.append(menuLink);return menuLi;};trackdirect.models.InfoWindow.prototype._getMenuDivFilterLink=function(){var filterLinkElementClass="filterStationLink"+this._marker.packet.station_id;var menuLi=$(document.createElement("li"));menuLi.css(this._getMenuDivLinkCss());var menuLink=$(document.createElement("a"));menuLink.css("color","#337ab7");menuLink.addClass(filterLinkElementClass);menuLink.attr("onclick","trackdirect.handleFilterStationRequest("+ -this._marker.packet.station_id+ -', "'+ -filterLinkElementClass+ -'"); return false;');if(this._defaultMap.state.filterStationIds.length>0&&this._defaultMap.state.filterStationIds.indexOf(this._marker.packet.station_id)>-1){menuLink.html("Unfilter");var center=this._defaultMap.getCenterLiteral();menuLink.attr("href","/center/"+ -Number.parseFloat(center.lat).toFixed(5)+ -","+ -Number.parseFloat(center.lng).toFixed(5)+ -"/zoom/"+ -this._defaultMap.getZoom());}else{menuLink.html("Filter");menuLink.attr("href","/sid/"+this._marker.packet.station_id);} -menuLi.append(menuLink);return menuLi;};trackdirect.models.InfoWindow.prototype._getMenuDivCoverageLink=function(){var coverageLinkElementClass="stationCoverageLink"+this._marker.packet.station_id;var menuLi=$(document.createElement("li"));menuLi.css(this._getMenuDivLinkCss());var menuLink=$(document.createElement("a"));menuLink.css("color","#337ab7");menuLink.css("white-space","nowrap");menuLink.attr("href","#");menuLink.addClass(coverageLinkElementClass);menuLink.attr("onclick","trackdirect.toggleStationCoverage("+ -this._marker.packet.station_id+ -', "'+ -coverageLinkElementClass+ -'"); return false;');var coveragePolygon=this._defaultMap.markerCollection.getStationCoverage(this._marker.packet.station_id);if(coveragePolygon!==null&&coveragePolygon.isRequestedToBeVisible()){menuLink.html("Hide Coverage");}else{menuLink.html("Coverage");} -menuLi.append(menuLink);return menuLi;};trackdirect.models.InfoWindow.prototype._getMenuDivCenterLink=function(isInfoWindowOpen){var menuLi=$(document.createElement("li"));menuLi.css(this._getMenuDivLinkCss());var menuLink=$(document.createElement("a"));menuLink.css("color","#337ab7");if(isInfoWindowOpen){menuLink.attr("href","/center/"+ -this._marker.packet.latitude.toFixed(5)+ -","+ -this._marker.packet.longitude.toFixed(5)+ -"/zoom/"+ -this._defaultMap.getZoom());menuLink.attr("onclick","trackdirect.setCenter("+ -this._marker.packet.latitude+ -","+ -this._marker.packet.longitude+ -"); return false;");menuLink.html("Center");}else{menuLink.attr("href","/center/"+ -this._marker.packet.latitude.toFixed(5)+ -","+ -this._marker.packet.longitude.toFixed(5)+ -"/zoom/"+ -this._defaultMap.getZoom());menuLink.attr("onclick","trackdirect.focusOnMarkerId("+ -this._marker.packet.marker_id+ -"); return false;");menuLink.html("Focus");} -menuLi.append(menuLink);return menuLi;};trackdirect.models.InfoWindow.prototype._getMenuDivZoomLink=function(isInfoWindowOpen){var menuLi=$(document.createElement("li"));menuLi.css(this._getMenuDivLinkCss());var menuLink=$(document.createElement("a"));menuLink.css("color","#337ab7");if(isInfoWindowOpen){menuLink.attr("href","/center/"+ -this._marker.packet.latitude.toFixed(5)+ -","+ -this._marker.packet.longitude.toFixed(5)+ -"/zoom/14");menuLink.attr("onclick","trackdirect.setCenter("+ -this._marker.packet.latitude+ -","+ -this._marker.packet.longitude+ -", 14); return false;");menuLink.html("Zoom");}else{menuLink.attr("href","/center/"+ -this._marker.packet.latitude.toFixed(5)+ -","+ -this._marker.packet.longitude.toFixed(5)+ -"/zoom/14");menuLink.attr("onclick","trackdirect.focusOnMarkerId("+ -this._marker.packet.marker_id+ -", 14); return false;");menuLink.html("Zoom");} -menuLi.append(menuLink);return menuLi;};trackdirect.models.InfoWindow.prototype._getCompactMainDiv=function(){var packet=this._marker.packet;var mainDiv=$(document.createElement("div"));mainDiv.css("font-family","Verdana,Arial,sans-serif");if(!trackdirect.isMobile){mainDiv.css("font-size","11px");}else{mainDiv.css("font-size","10px");} -mainDiv.css("line-height","1.42857143");mainDiv.css("color","#333");mainDiv.css("text-align","left");var polylineDiv=$(document.createElement("div"));polylineDiv.css("float","left");var nameDiv=$(document.createElement("div"));nameDiv.css("clear","both");nameDiv.css("font-size","12px");nameDiv.css("font-weight","bold");var iconUrl24=trackdirect.services.symbolPathFinder.getFilePath(packet.symbol_table,packet.symbol,null,null,null,24,24);var iconImg=$(document.createElement("img"));iconImg.css("vertical-align","middle");iconImg.css("width","24px");iconImg.css("height","24px");iconImg.attr("src",iconUrl24);iconImg.attr("alt","");iconImg.attr("title","");nameDiv.append(iconImg);nameDiv.append(" ");nameDiv.append(" ");var nameLink=$(document.createElement("a"));nameLink.css("color","#337ab7");if(trackdirect.isMobile){nameLink.css("vertical-align","-2px");} -nameLink.attr("href","");nameLink.attr("onclick","trackdirect.openStationInformationDialog("+ -packet.station_id+ -"); return false;");nameLink.html(escapeHtml(packet.station_name));nameDiv.append(nameLink);if(packet.sender_name!=packet.station_name){nameDiv.append(" (");var nameLink2=$(document.createElement("span"));if(trackdirect.isMobile){nameLink2.css("vertical-align","-2px");} -nameLink2.html(escapeHtml(packet.sender_name));nameDiv.append(nameLink2);nameDiv.append(")");} -polylineDiv.append(nameDiv);var tailDistance=this._getTailDistance(this._defaultMap.markerCollection.getMarkerMasterMarkerKeyId(this._marker.markerIdKey));if(tailDistance!==null&&Math.round(tailDistance)>0){var distanceDiv=$(document.createElement("div"));distanceDiv.css("clear","both");distanceDiv.css("padding-top","4px");distanceDiv.append("Tail distance: ");if(tailDistance<1000){if(this._defaultMap.state.useImperialUnit){distanceDiv.append(Math.round(trackdirect.services.imperialConverter.convertMeterToYard(tailDistance))+" yd ");}else{distanceDiv.append(Math.round(tailDistance)+" m ");}}else{if(this._defaultMap.state.useImperialUnit){distanceDiv.append(Math.round(trackdirect.services.imperialConverter.convertKilometerToMile(tailDistance/1000)*10)/ -10+ -" miles ");}else{distanceDiv.append(Math.round(tailDistance/100)/10+" km ");}} -polylineDiv.append(distanceDiv);} -mainDiv.append(polylineDiv);return mainDiv;};trackdirect.models.InfoWindow.prototype._getTailDistance=function(markerIdKey){if(this._defaultMap.markerCollection.isExistingMarker(markerIdKey)){var marker=this._defaultMap.markerCollection.getMarker(markerIdKey);if(marker.packet.hasConfirmedMapId()&&marker.packet.is_moving==1&&marker.overwrite!==true){var distance=0;if(this._defaultMap.markerCollection.hasDotMarkers(markerIdKey)){var prevLatLng=null;var dotMarkers=this._defaultMap.markerCollection.getDotMarkers(markerIdKey);for(var i=0;i<dotMarkers.length;i++){var dotMarker=dotMarkers[i];var latLng=dotMarker.packet.getLatLngLiteral();if(prevLatLng!==null){distance+=trackdirect.services.distanceCalculator.getDistance(prevLatLng,latLng);} -prevLatLng=latLng;} -if(prevLatLng!==null){var latLng=marker.packet.getLatLngLiteral();if(prevLatLng!==latLng){distance+=trackdirect.services.distanceCalculator.getDistance(prevLatLng,latLng);}}} -var dashedPolyline=this._defaultMap.markerCollection.getMarkerDashedPolyline(markerIdKey);if(dashedPolyline!==null){if(dashedPolyline.getPathLength()==2){distance+=trackdirect.services.distanceCalculator.getDistance(dashedPolyline.getPathItem(0),dashedPolyline.getPathItem(1));distance+=this._getTailDistance(dashedPolyline.relatedMarkerIdKey);}} -return distance;}} -return null;};trackdirect.models.InfoWindow.prototype._getTransmitDistance=function(packet){if(typeof packet.station_location_path!=="undefined"&&packet.station_location_path!==null&&packet.station_location_path.length>=1){var relatedStationLatLng={lat:parseFloat(packet.station_location_path[0][0]),lng:parseFloat(packet.station_location_path[0][1]),};var distance=trackdirect.services.distanceCalculator.getDistance(packet.getLatLngLiteral(),relatedStationLatLng);if(distance!==null){return distance;}} -if(typeof packet.station_id_path!=="undefined"&&packet.station_id_path!==null&&packet.station_id_path.length>=1){for(var i=0;i<packet.station_id_path.length;i++){var relatedStationId=packet.station_id_path[i];var relatedStationPacket=this._defaultMap.markerCollection.getStationLatestPacket(relatedStationId);if(relatedStationPacket!==null){break;}} -if(relatedStationPacket!==null){var relatedStationLatLng={lat:parseFloat(relatedStationPacket.latitude),lng:parseFloat(relatedStationPacket.longitude),};var distance=trackdirect.services.distanceCalculator.getDistance(packet.getLatLngLiteral(),relatedStationLatLng);if(distance!==null){return distance;}}} -return null;}; -trackdirect.models.HeatMap=function(map){this._defaultMap=map;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.ImageMapType.call(this,this._getGoogleMapOptions());}else if(typeof L==="object"){L.TileLayer.call(this,this._getUrlTemplate(),this._getLeafletOptions());}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.HeatMap.prototype=Object.create(google.maps.ImageMapType.prototype);}else if(typeof L==="object"){trackdirect.models.HeatMap.prototype=Object.create(L.TileLayer.prototype);} -trackdirect.models.HeatMap.prototype.constructor=trackdirect.models.HeatMap;trackdirect.models.HeatMap.prototype._getLeafletOptions=function(){var options={errorTileUrl:trackdirect.settings.baseUrl+"/heatmaps/transparent.png",tileSize:256,maxZoom:9,minZoom:0,};return options;};trackdirect.models.HeatMap.prototype._getGoogleMapOptions=function(){var me=this;var options={getTileUrl:function(coord,zoom){if(zoom>trackdirect.settings.minZoomForMarkers-1){return trackdirect.settings.baseUrl+"/heatmaps/transparent.png";} -var normalizedCoord=me._getNormalizedCoord(coord,zoom);if(!normalizedCoord){return trackdirect.settings.baseUrl+"/heatmaps/transparent.png";} -var xString=String(normalizedCoord.x);var yString=String(normalizedCoord.y);return me._getUrlTemplate().replace("{z}",zoom).replace("{y}",yString).replace("{x}",xString);},tileSize:new google.maps.Size(256,256),maxZoom:9,minZoom:0,radius:1738000,name:"APRSHEAT",};return options;};trackdirect.models.HeatMap.prototype._getUrlTemplate=function(){return(trackdirect.settings.baseUrl+ -"/heatmaps/latest-heatmap.{z}.{y}.{x}.png?version="+ -this._getHeatMapVersion());};trackdirect.models.HeatMap.prototype._getHeatMapVersion=function(){var today=new Date();var dd=today.getDate();var mm=today.getMonth()+1;var yyyy=today.getFullYear();var hh=today.getHours();if(dd<10){dd="0"+dd;} -if(mm<10){mm="0"+mm;} -return yyyy+"-"+mm+"-"+dd+"-"+hh;};trackdirect.models.HeatMap.prototype._getNormalizedCoord=function(coord,zoom){var y=coord.y;var x=coord.x;var tileRange=1<<zoom;if(y<0||y>=tileRange){return null;} -if(x<0||x>=tileRange){x=((x%tileRange)+tileRange)%tileRange;} -return{x:x,y:y};}; -trackdirect.models.DirectionPolyline=function(marker,map){this._marker=marker;this._defaultMap=map;this.startTimestamp=this._marker.packet.timestamp;this.speed=this._marker.packet.speed;this.course=this._marker.packet.course;this.stopped=false;this.timerId=null;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Polyline.call(this,this._getGooglePolylineOptions());}else if(typeof L==="object"){L.Polyline.call(this,{},this._getLeafletPolylineOptions());this.setLatLngs([this._getFirstCoordinate(),this._getExpectedCoordinate(),]);}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.DirectionPolyline.prototype=Object.create(google.maps.Polyline.prototype);}else if(typeof L==="object"){trackdirect.models.DirectionPolyline.prototype=Object.create(L.Polyline.prototype);} -trackdirect.models.DirectionPolyline.prototype.constructor=trackdirect.models.DirectionPolyline;trackdirect.models.DirectionPolyline.prototype.setPathItems=function(pathItems){if(typeof google==="object"&&typeof google.maps==="object"){this.setPath(pathItems);}else if(typeof L==="object"){this.setLatLngs(pathItems);}};trackdirect.models.DirectionPolyline.prototype.getMap=function(){if(typeof google==="object"&&typeof google.maps==="object"){var map=google.maps.Polyline.prototype.getMap.call(this);if(typeof map!=="undefined"){return map;}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){return this._defaultMap;}} -return null;};trackdirect.models.DirectionPolyline.prototype.show=function(){var timeInSeconds=this._getAgeInSeconds();if(this.stopped===false&&timeInSeconds<=900&&this._marker.packet.hasConfirmedMapId()&&(this._defaultMap.state.isFilterMode||this._defaultMap.getZoom()>=trackdirect.settings.minZoomForMarkerTail)){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}}else if(typeof L==="object"){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}} -this.recalculate();}};trackdirect.models.DirectionPolyline.prototype.hide=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(this.getMap()!==null){this.setMap(null);}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}}};trackdirect.models.DirectionPolyline.prototype.stop=function(){this.stopped=true;this.hide();};trackdirect.models.DirectionPolyline.prototype._getGooglePolylineOptions=function(){var lineCoordinates=[this._getFirstCoordinate(),this._getExpectedCoordinate(),];var lineSymbol={path:google.maps.SymbolPath.FORWARD_OPEN_ARROW,strokeOpacity:1,scale:0.65,};var options={path:lineCoordinates,strokeOpacity:0,strokeColor:trackdirect.services.stationColorCalculator.getColor(this._marker.packet),map:null,icons:[{icon:lineSymbol,offset:"0px",repeat:"8px",},],};return options;};trackdirect.models.DirectionPolyline.prototype._getLeafletPolylineOptions=function(){return{color:trackdirect.services.stationColorCalculator.getColor(this._marker.packet),weight:4,opacity:0.7,dashArray:"2,8",lineJoin:"round",};};trackdirect.models.DirectionPolyline.prototype._getFirstCoordinate=function(){return this._marker.packet.getLatLngLiteral();};trackdirect.models.DirectionPolyline.prototype._getExpectedCoordinate=function(){var timeInSeconds=this._getAgeInSeconds();var distance=(this.speed/3.6)*timeInSeconds;var startPosition=this._getFirstCoordinate();if(startPosition!=null){return trackdirect.services.distanceCalculator.getPositionByDistance(startPosition,this.course,distance);} -return null;};trackdirect.models.DirectionPolyline.prototype.recalculate=function(){var interval=1000;var me=this;this.timerId=window.setInterval(function(){if(!me._marker.isVisible()||me.stopped||!me._marker.showAsMarker){me.hide();clearInterval(me.timerId);return;} -var timeInSeconds=me._getAgeInSeconds();if(timeInSeconds>900){me.stop();if(me.timerId!==null){clearInterval(me.timerId);}}else{var firstPosition=me._getFirstCoordinate();var newPosition=me._getExpectedCoordinate();if(firstPosition!=null&&newPosition!=null){me.setPathItems([firstPosition,newPosition]);}}},interval);};trackdirect.models.DirectionPolyline.prototype._getAgeInSeconds=function(){var timeInSeconds=0;var startTimestamp=this._defaultMap.state.getClientTimestamp(this.startTimestamp);if(startTimestamp<Date.now()/1000){timeInSeconds=Date.now()/1000-startTimestamp;} -return timeInSeconds;}; -trackdirect.models.DashedTailPolyline=function(color,map){this._defaultMap=map;this.markerIdKey=null;this.ownerMarkerIdKey=null;this.relatedMarkerIdKey=null;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.Polyline.call(this,this._getGooglePolylineOptions(color));}else if(typeof L==="object"){L.Polyline.call(this,{},this._getLeafletPolylineOptions(color));}};if(typeof google==="object"&&typeof google.maps==="object"){trackdirect.models.DashedTailPolyline.prototype=Object.create(google.maps.Polyline.prototype);}else if(typeof L==="object"){trackdirect.models.DashedTailPolyline.prototype=Object.create(L.Polyline.prototype);} -trackdirect.models.DashedTailPolyline.prototype.constructor=trackdirect.models.DashedTailPolyline;trackdirect.models.DashedTailPolyline.prototype.getPathItem=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);return path.getAt(index);}else if(typeof L==="object"){var list=this.getLatLngs();if(typeof list[index]!=="undefined"){return list[index];}else{return null;}} -return null;};trackdirect.models.DashedTailPolyline.prototype.pushPathItem=function(latLng){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);path.push(latLng);}else if(typeof L==="object"){this.addLatLng(latLng);}};trackdirect.models.DashedTailPolyline.prototype.removePathItem=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);path.removeAt(index);}else if(typeof L==="object"){var list=this.getLatLngs();if(typeof list[index]!=="undefined"){list.splice(index,1);this.setLatLngs(list);}}};trackdirect.models.DashedTailPolyline.prototype.getPathLength=function(index){if(typeof google==="object"&&typeof google.maps==="object"){var path=google.maps.Polyline.prototype.getPath.call(this);return path.getLength();}else if(typeof L==="object"){var list=this.getLatLngs();return list.length;}};trackdirect.models.DashedTailPolyline.prototype.getPath=function(){if(typeof google==="object"&&typeof google.maps==="object"){return google.maps.Polyline.prototype.getPath.call(this).getArray();}else if(typeof L==="object"){return this.getLatLngs();} -return[];};trackdirect.models.DashedTailPolyline.prototype.getMap=function(){if(typeof google==="object"&&typeof google.maps==="object"){var map=google.maps.Polyline.prototype.getMap.call(this);if(typeof map!=="undefined"){return map;}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){return this._defaultMap;}} -return null;};trackdirect.models.DashedTailPolyline.prototype.setMarkerIdKey=function(markerIdKey){this.markerIdKey=markerIdKey;this.ownerMarkerIdKey=markerIdKey;this._addInfoWindowListener(markerIdKey);};trackdirect.models.DashedTailPolyline.prototype.setRelatedMarkerIdKey=function(markerIdKey){this.relatedMarkerIdKey=markerIdKey;};trackdirect.models.DashedTailPolyline.prototype.show=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(typeof this.getMap()==="undefined"||this.getMap()===null){this.setMap(this._defaultMap);}}else if(typeof L==="object"){if(!this._defaultMap.hasLayer(this)){this.addTo(this._defaultMap);}}};trackdirect.models.DashedTailPolyline.prototype.hide=function(){if(typeof google==="object"&&typeof google.maps==="object"){if(this.getMap()!==null){this.setMap(null);}}else if(typeof L==="object"){if(this._defaultMap.hasLayer(this)){this._defaultMap.removeLayer(this);}}};trackdirect.models.DashedTailPolyline.prototype.addPacket=function(packet){if(typeof google==="object"&&typeof google.maps==="object"){var latLng=new google.maps.LatLng(parseFloat(packet.latitude),parseFloat(packet.longitude));this.pushPathItem(latLng);}else if(typeof L==="object"){var latLng=new L.latLng(parseFloat(packet.latitude),parseFloat(packet.longitude));this.addLatLng(latLng);}};trackdirect.models.DashedTailPolyline.prototype._addInfoWindowListener=function(markerIdKey){var me=this;if(typeof google==="object"&&typeof google.maps==="object"){google.maps.event.addListener(this,"click",function(event){var marker=me._defaultMap.markerCollection.getMarker(markerIdKey);me._defaultMap.openPolylineInfoWindow(marker,event.latLng);});}else if(typeof L==="object"){this.on("click",function(event){var marker=me._defaultMap.markerCollection.getMarker(markerIdKey);me._defaultMap.openPolylineInfoWindow(marker,event.latlng);});}};trackdirect.models.DashedTailPolyline.prototype._getGooglePolylineOptions=function(color){var lineSymbol={path:"M 0,-1 0,1",strokeOpacity:0.4,scale:3,};var options={geodesic:false,strokeOpacity:0,strokeColor:color,icons:[{icon:lineSymbol,offset:"20px",repeat:"15px",},],map:null,zIndex:100,};return options;};trackdirect.models.DashedTailPolyline.prototype._getLeafletPolylineOptions=function(color){return{opacity:0.6,weight:3,dashArray:"6,8",lineJoin:"round",color:color,};}; diff --git a/htdocs/public/robots.txt b/htdocs/public/robots.txt deleted file mode 100644 index 07b2759..0000000 --- a/htdocs/public/robots.txt +++ /dev/null @@ -1,4 +0,0 @@ -User-agent: * -Disallow: /heatmaps/ -Disallow: /data/ - diff --git a/htdocs/public/symbols/.htaccess b/htdocs/public/symbols/.htaccess deleted file mode 100755 index 89d0b19..0000000 --- a/htdocs/public/symbols/.htaccess +++ /dev/null @@ -1,66 +0,0 @@ -<IfModule mod_expires.c> - ExpiresActive On - ExpiresByType image/jpg "access 1 month" - ExpiresByType image/jpeg "access 1 month" - ExpiresByType image/gif "access 1 month" - ExpiresByType image/png "access 1 month" - ExpiresDefault "access 1 week" -</IfModule> - - -Options +FollowSymLinks -RewriteEngine On - -# Do not do anything for already existing files and folders -RewriteCond %{REQUEST_FILENAME} -f [OR] -RewriteCond %{REQUEST_FILENAME} -d -RewriteRule .+ - [L] - -RewriteCond %{SCRIPT_FILENAME} !-d -RewriteCond %{SCRIPT_FILENAME} !-f -RewriteCond %{REQUEST_URI} \.(svg|png)$ - - -# -# Simple svg images -# - -# Regular primary table symbol (no point in using symbol.php) -RewriteRule ^/?symbol-(\d+)-47\.svg$ ./svgicons/$1-1.svg - -# Regular alternative table symbol (no point in using symbol.php) -RewriteRule ^/?symbol-(\d+)-92\.svg$ ./svgicons/$1-2.svg - - -# -# Images that needs to be handled by symbols.php -# - -# Symbol with overlay (or other file extension) -RewriteRule ^/?n?symbol-(\d+)-(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&format=$3 - -# Symbol with overlay and course (raly used since width and height should be specified when rotating) -RewriteRule ^/?n?symbol-(\d+)-(\d+)-(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&course=$3&format=$4 - -# Symbol with overlay and specified width and height -RewriteRule ^/?n?symbol-(\d+)-(\d+)-(\d+)x(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&width=$3&height=$4&format=$5 - -# Symbol with overlay and course and specified width and height -RewriteRule ^/?n?symbol-(\d+)-(\d+)-(\d+)-(\d+)x(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&course=$3&width=$4&height=$5&format=$6 - - -# -# Images that needs to be handled by symbols.php AND also nees to be scaled -# - -# Symbol with overlay (or other file extension) -RewriteRule ^/?n?symbol-(\d+)-(\d+)-scale(\d+)x(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&scale_width=$3&scale_height=$4&format=$5 - -# Symbol with overlay and course (raly used since width and height should be specified when rotating) -RewriteRule ^/?n?symbol-(\d+)-(\d+)-(\d+)-scale(\d+)x(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&course=$3&scale_width=$4&scale_height=$5&format=$6 - -# Symbol with overlay and specified width and height -RewriteRule ^/?n?symbol-(\d+)-(\d+)-(\d+)x(\d+)-scale(\d+)x(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&width=$3&height=$4&scale_width=$5&scale_height=$6&format=$7 - -# Symbol with overlay and course and specified width and height -RewriteRule ^/?n?symbol-(\d+)-(\d+)-(\d+)-(\d+)x(\d+)-scale(\d+)x(\d+)\.(svg|png)$ ./symbol.php?symbol=$1&symbol_table=$2&course=$3&width=$4&height=$5&scale_width=$6&scale_height=$7&format=$8 diff --git a/htdocs/public/symbols/icons/100-1.png b/htdocs/public/symbols/icons/100-1.png deleted file mode 100755 index c35faefeef77a2e27592800812440ac4cd8e54f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=sRHqb|7*I&E#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H^+()5S5w;`Gu<jzTR8JS^6l^^XgG{^$PkqWaijvFHZ2l9}8p z2EHqfs0f}s!=i9<k+t{vJ)*xk9w{3i2n#W0+44;A$ov`A0`*ya3jdDPup2t~WSl%w zKV_Ar1=pEb`wHW3*W8Q0wPV@+gR1gJOdoLAU4GVmW4Auz{BY4b8S)`14Qaa!Y}wUs X&NdTSKPxXA=pY79S3j3^P6<r_30z^6 diff --git a/htdocs/public/symbols/icons/100-2.png b/htdocs/public/symbols/icons/100-2.png deleted file mode 100755 index 9db76b0d4986d9eba15ba05932682e35bf541911..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yM8q?ND5ulJ{iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0FPZ!4!i_=FZU*tWkz~gd0(Cn4pNvRYb<6xu9uiXt?S9D5! z4D_DnH>b9ZndgFs&!m(zmu*jWrGDCWZR@o4JKiuXIJ{fs<J{i~%qeLMVyATVre5>! z+xqfkrL)Wifm!RP$j_8mm0Nr-Ohc_@qHesQg1`5bYc5Ipp2s~8U1lnH_u#_okAJVv z+cC{<`jdcV)kW)Gy?LklFX_#agFp5ksBy0<lC^pl|NKRH9rH!OJ-vTlx4Hw}%;4$j K=d#Wzp$Pz=E_^Zo diff --git a/htdocs/public/symbols/icons/101-1.png b/htdocs/public/symbols/icons/101-1.png deleted file mode 100755 index 53b96ec99bb6f849169a50bcaf6f7dd4281b5c79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 265 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=sMNF0VC!mmIiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afcr;B5V#p$iV(R>FKI2NaT-(U3IwaG>9a*w`nPVUNvC3mKj zi345L&tYSrtjXz-RQ@kzVQ9e5?yN<s3|DT<h=}UYIi~5Ua^><L-`;x-t}b$u^Ecl( z`t<G5eN_Qw7gnwRxYWnd&FEI^8*x3uf7^Ov_wM)>A#42nizm=>22WQ%mvv4FO#qg% BTz3Ef diff --git a/htdocs/public/symbols/icons/101-2.png b/htdocs/public/symbols/icons/101-2.png deleted file mode 100755 index 58f049496491c3e3b844a3c0144ea2676036fe93..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<xB&jHbe%|Ic^64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5zo-U3d7N@5MI|{WJaClq&<G8<N-^$-=zn8r^_-K*yc0FT0 z4HhS9P0l=({rbX_T^J(XIplj7^*%Q6)De{ER%v`Pg|q+GoXTTKPk)~=&(R3?U_SY| zaKUlGH`^q#oJ!x<&0U|cqH79|C@-6Hb&2#-2D!8qceme8n#^W4)9BRus)>J7<hf5Y zK9}rSCs6Mp#31rzfx@cO->Z2Xj;g-AC6{S;?4r2mpRdA4W5UAsTwdXM?7^jmB{jV_ dujHIy7k=7hv|+{5X+Uo<c)I$ztaD0e0sw(6eh~lw diff --git a/htdocs/public/symbols/icons/102-1.png b/htdocs/public/symbols/icons/102-1.png deleted file mode 100755 index 4612c5179f92f063f43ce70155dcceb068f587a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=cUUT!>1fY;)iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f12PZ!4!i_=FZJMu9p^0>zLZl9@IEUN!}X2Qzrm3ng=4=qSG z>NLxI(f(}vUxyVk8->~5Zf8+VvR?n|qH#o_@cQ4oS)?cNv2Up6%@RnAEV#5nY6pYq zy`v1Q9=&2u<5(=N8x@wy?AH=+h;GYN^EIxqc8XgS&eV{(uAOV!>x}#@%e<?!ydK*I zcDq+D51p}R+cnOxX!$1#1+^~jF_^9WDtC%_{r_J6J<o2>Ej(Vv4|Fhtr>mdKI;Vst E054u{kpKVy diff --git a/htdocs/public/symbols/icons/102-2.png b/htdocs/public/symbols/icons/102-2.png deleted file mode 100755 index ef59eb589511bea89a623adc2ccce887893a72a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 348 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<ys;f&h1lYl~!C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`5JY5_^EKc_ZI|?-$aKsqZ`reYRyQcp`Y)9z+X7-~=OQh0f zoSE>ZO-Gtx!;G}H8Ahj<ioMp)(Qp#lwW2VUso|k<#GT3OC+KBux!+^GNKD4Fi`jUC zUKQ)LV)hgF=I)((KWE;?xDNs`GdKCgNE;b{al4W<$E_e$Ywv>){sd`d!N}(pXIa14 z-f~q@KjpFMn!l{gPla=P*G`Rl_~?#2=dEV0y*mu&S@wK6A9B$qPa&TF!Cn6;k$mE( mbkr`tZ+~>|Sfu(}SMACrmO|P8Q>Ov_!{F)a=d#Wzp$P#0bAgfo diff --git a/htdocs/public/symbols/icons/103-1.png b/htdocs/public/symbols/icons/103-1.png deleted file mode 100755 index ef32b1246fbd8e9b83190a97bbd792c0e69fcaf1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=+_|dr{nm{4R64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3_o-U3d7N?I+J}B61z{3(QxvO#hT`o<<D-(@8I9Iy<SupQ( zyF<sx9^1MnaZ>#?c6U#zbxOsoa4~JPlu6^5G*!TaVc~s#warS0(pE<$SWbE>Fss?g zQDE|1jTvhWxq5miZE@TgQ9ZGxRxjwyqGQiFPQT(*`C1_V;ihij25rUHPlH)!Z;qW( zui1IM<C)2&#~j~IoH|^(`B7+H{HMAfYai&(f64l>c&XUT{MD8~*D`pz`njxgN@xNA Dwl{ML diff --git a/htdocs/public/symbols/icons/103-2.png b/htdocs/public/symbols/icons/103-2.png deleted file mode 100755 index 0d79074ee16ff3271dbe37d718e72b01942d7910..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 241 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<ycm{=6I6;MdB#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H=PL)5S5w;`G~zj$90iJj|1is(<~j|H1!eH@8xT@+R}=AsVty z&YlvAnhX<MRBSf8<}UI#TfAo4RgaK_3*By>S{-@!`~;3ES4MweDZJ$L?acqEg1+fY c(~}Q!^RKeq-RG;E2egF2)78&qol`;+0DI?2kpKVy diff --git a/htdocs/public/symbols/icons/104-1.png b/htdocs/public/symbols/icons/104-1.png deleted file mode 100755 index 055eda2431e54223438d4b84867b4ab7b8581b83..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 238 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=+S?3p)a-fi8iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afTr;B5V#p&df1dGq}8<`FqaZq$HeDJ?Mx$Xb|-a@ToYW}g} zJig2k1*~GOdKT4hb;JzW*x1@OAK7`pMS6Eqj-GSz!ALLWi4yzgFEtTcF-J&}-Nu}W Zq3fi?>x}sg=|CG8JYD@<);T3K0RVUBM{xiE diff --git a/htdocs/public/symbols/icons/104-2.png b/htdocs/public/symbols/icons/104-2.png deleted file mode 100755 index 65401954192309f3217b088932b70363b896dce1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 353 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<xRYxn=^r9dIc64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4;o-U3d7N@69_7yv<z|ms=xoB3J=ekRWzxr+RS?4Ss=&ZBs zZ4R4b&EftO1Ln_v`tuJta(8duI>-I{v$B&sK~_yirzK^3xx0Pcy*v2-FILsaGqbo1 zcduA*?Mvgi>8E#Y`YE@iDmbfX?|J84b}?Q%wB4K7n3nLU9b~DJv$bMg<KHM-VUTju zQFim;?8}=w*Un_FK63JaNW$sm4^nd<cP&VD7nxylXXAU0<p;jiO4;d!I(kP`$x5yI s{6D3y#e2Jh(3$-|-?YE47O!W1rGMq;@uDx&fu3UUboFyt=akR{0O3Z8pa1{> diff --git a/htdocs/public/symbols/icons/105-1.png b/htdocs/public/symbols/icons/105-1.png deleted file mode 100755 index 4e96a707c65d170d23ce43ca371c70841c483906..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=Uf>EOSL!gjkiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0yPZ!4!i_=RdpPbliAmADwEX-?lYGsE&fz*;lrwPH0i#?v7 zchotQ`gqpI^+8|%?cO?5h0AB#2f?h=t+~>Tx?xjzED~01Vhi9dZEn_3Hkx$m)|-2Z zhi<AX3QgK_eIxrP%Z=sQo}&7(S+OQrsoT~lKQ+>t^PO{3@{{5<H^1|0h-_NzT>Z^7 z`eEonQK@}LuCv(hzBW^7-n^L|&*$z>Zws00_$Kex<U6yTq}9BZWVZROyl=v~(q#>c zK7ZNibt?3D`8O>^Pp%A^nu!O!4^QS<pF1hVp!3Pa!y6VnUKf8u@Vu>0Prvkc14nb` opFWd4F2z6jHs$S)bN>(P=j*WwP0e|&1q=ZOPgg&ebxsLQ0G$4yga7~l diff --git a/htdocs/public/symbols/icons/105-2.png b/htdocs/public/symbols/icons/105-2.png deleted file mode 100755 index 7a2326796d36812696a7baef326ed7b3e65badb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 181 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y+eA(Ql`#>Sd64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiAhuPZ!4!i_^&|2?;;WJ1{0BEfDCDGRQixg0cB11B0&vqx`1p Svr~Zz89ZJ6T-G@yGywo}XfZGV diff --git a/htdocs/public/symbols/icons/106-1.png b/htdocs/public/symbols/icons/106-1.png deleted file mode 100755 index 816208827476fbea7d7c46dc28ce5bccbdf244ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 326 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<Jdtbrg(?B7~64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4go-U3d7N_q{I>>uiL4f6ZkY7cd?iL5>!czxSXGB%pdg~)+ z*779VvVTs?j?|0yvJNuLT{+wDT0YCO=Vwy+SU4uQFaLT!V)X^3V|xqlI_ido@o2Z@ zwrxB3>z8Tifot<Fp84?NlG;nXs}WC+mVdk^KSyQhgeh_-ccpsvXdk`uw(5hd{2X_6 zf5`{N%$`p)-%oFPe9=?!;*P)-{Bq6GvOUimK25T|zKr=j&%Zy~@me34Hn^=>wQAdg R=|Gn=c)I$ztaD0e0s#L*fRF$H diff --git a/htdocs/public/symbols/icons/106-2.png b/htdocs/public/symbols/icons/106-2.png deleted file mode 100755 index 4f1e87f26d0a10008b1909453f22853093508557..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<w;$1eVf_klu^C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`<JY5_^EKaWtKFxbrfv2`_SMT~YLDx>&&1_x$ywcXig)M2t ztY0jTe%9tFs(f6sO;w3|qH0Jb?}I3I)<_Q44Z%uGl1f+9id`m8Dqx$J;k2psY{4~k z;~P$?>sJ|iN-u1xI{mjmy2<>8#?0!k59)S=v+T{hCcU1W)q3ece_5Sx^{xzlO-ZZ_ z6HFe?wyvDyz46oKbdOmMLB~vQJ<9pt_u-3mJ;Rif$$t-S-5daPErX}4pUXO@geCwH Ca&aR7 diff --git a/htdocs/public/symbols/icons/107-1.png b/htdocs/public/symbols/icons/107-1.png deleted file mode 100755 index ff8f372d21d2ac5836abd57157afd5f2ebc28d11..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<3^CANiL7<RiiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0(PZ!4!i_=#ppXEKQz|(4<KIhqsb%(g_u8du{`ha2N^REml ze)USBf&5!j63;yTnaDl)h@iAZhP~Q`*<CXYf@hwt?pe}5&vBB<x>E~mo{FE*YqV-y z!Xp%3>pFqiQKi#Mi(}Q1XKRh-#kBlU-KiAE$;-g{;hJ#%?<BRffHUV!-~A|RUl^~G z!_R23_N<+{x_@eLilobQ_7lxM{(AEIr)Nd?ZMf!nZGqn!bFF=*M+Di|$bK(Oy*K-e f@wtEhjcpm&B~?>7j{MC7`h>yL)z4*}Q$iB}%v5?E diff --git a/htdocs/public/symbols/icons/107-2.png b/htdocs/public/symbols/icons/107-2.png deleted file mode 100755 index 16e0cf0c236e217171e5058e0f4a23dcf5bb14fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 307 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<xJo6DNsnLr`Q64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5vo-U3d7N@TU9~3;Sz%$v}uVU3|1Lx~6Waf6-Soi;85E9nd z8yEL+?)eip+}M&Q6}aVDXfEfT(eS@&!kWYlY0sC*@qcgQ`Qth(@o?SV<k#;KOqtJY z`np3UH0Il_Y1#*`OnAGI!En=OMczqi`xYO4b0q(08;^u0Ti3*3HM?~-4q<FsdsW$1 v{c@}7xvgHv7<c~nd&j7T_U_HE>zDCg3A*aOsm$dj(3uRLu6{1-oD!M<zxQ#) diff --git a/htdocs/public/symbols/icons/108-1.png b/htdocs/public/symbols/icons/108-1.png deleted file mode 100755 index d5e8910cb2ccbc157b5ac60d80c75a851098ce90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 514 zcmV+d0{#7oP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v=EDE+`I+%~1dV02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00C-AL_t(I%Y~8Ak)$vTL?2rl z4SZ@+@q{44SS}14!jOvfX{XcoVFs8ju1-}hEUa#|T7x8hN3_uVoB^=W`ZpOiIW{s} zYll06yk+GrFn|fDJ28PZh|%z5c=F+vVE&Uu%|wH!flUS@81_lnf^Ys4Z!oPZpzZ&Y zW5Cxfss{T2J=*1MJe-2*h9DYZ0wZ>SU4RDdG}cGIQxH%&6|~q#Fl>xd!S2I{2eE~6 z3w-gOSD<C0_W7fA6_)n5WPObR%Fh`~_9i-azdIiQTXZA)F!;|peB~{apEJHVp8UhG zyajoi$xDVB*l2iKyZo`M94wj2s~meh#;MWs+PfQpCGWRwW_^_b;M*tX@qFNuV?Tb# zG^~%5IvE%~IgjOmO@7LhgsSApWs_-LT%{Hj6{)J<Yf;f&gGmza!!;?j$aW%6et=aa zUt9(%(!U9=MDK2%OunoFR9;2DYi|h-BK6K-w_r*91-M2@;%o&e$^ZZW07*qoM6N<$ Ef{+K(G5`Po diff --git a/htdocs/public/symbols/icons/108-2.png b/htdocs/public/symbols/icons/108-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/109-1.png b/htdocs/public/symbols/icons/109-1.png deleted file mode 100755 index f0cab5637c013e8b6927904da820563fafc95157..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<Z_tp=+NkAdV64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3<o-U3d7N={2948$%;0U(*E%n{w-j&+Pztt=ry<frpX2uRr z+rthy0z!$xAxsUQT5GG5dq1z#o1paE+;Qn7p7jsss!V-V=)dXySsSaBD)I~pXPMS` z{z%%OHbLk+n?r&@kIezE_0l{qtY)s^`6XRzFym*vhpmB?$l-lAKkl_xUiYub==_0( zmHJkExtm{qap&_aRrO3_d6jHn)!ncmu7XGZs={L52^!b(7>lMZce$`{!ES~*l79Uw zYgtbUO|w+}ulw*?yve8AipTz+o5pC&v97Cs>a+6WQ%@eA<=8c6TIQNB|G&NSzT(e# tfkh+pV_ti6Ra&X?*X1pV5or@X+iSY-TNa+g>i`S~22WQ%mvv4FO#t32pC14K diff --git a/htdocs/public/symbols/icons/109-2.png b/htdocs/public/symbols/icons/109-2.png deleted file mode 100755 index 09e2de017db8e791334a903738cf3c5744ab9285..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y!>F=61{Xikf64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3oPZ!4!i_>o>IdUCP;9)8M^MC&G_AtRNkJ;Y*cfAXY_1Kzc zO=Xzul6rClbB&hhxnHm98n*moxYID#eUjaChIJda-Q#$1)-t0lOzy)}@sPTO``EAg e=4ig+_uxDEBu@N+7RM2wEexKnelF{r5}E*C!%&X^ diff --git a/htdocs/public/symbols/icons/110-1.png b/htdocs/public/symbols/icons/110-1.png deleted file mode 100755 index 41b1f95e14b598434b6ba4b8bc4bbe68cb6910da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 402 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=^VxG6l7NC%1iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0qPZ!4!i_>!_AH3S4z|*q-$2KY3B;9EWxfj@`Y}k4t@b<}i z0ha@{zrUSl?L3zvq`qj?7Dc66p@7iL;`Qnew&nZ(c>Q;-$0jDhi~bH}30l`HXXy(C zUX_|-H*fjQM;RxLPp;NA(^tP>&F`R+WFY?V+dVDQ!;?$i+f0mj8n%5Ne{i6RlGT<? zMmG{RJob_}eb@T_R<n@iU9Ga=5lT7}4W^ad(qQq7T6fKD>V5kk3<nZAT>c1dc)vNn zzQrX-e6{G3gAwWLf4xrp=<ace_u$QU<$SBO-X^T!=5(^+y>?UI&V%ig=swAp=Gx}2 rR@&vKOUiHO@^4yoJoVRmtN)C1tf$@Y`_<D13<U;HS3j3^P6<r_-7lT@ diff --git a/htdocs/public/symbols/icons/110-2.png b/htdocs/public/symbols/icons/110-2.png deleted file mode 100755 index 7791a99ca6f293f11b163b1a1552572bcec60c86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 231 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<ykTFCo<lYl~!C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^|Io-U3d7N@sPKFG&lz~X%M|Nr9hSh39!g}T246f(UkRxz10 z{O46^x@);mLa9SWUxb<E<~8QEGanRw);R8c)G_Zehv@faCpCt%D@+CMS2CtViK+aK SSrZO4n!(f6&t;ucLK6TP3`cPQ diff --git a/htdocs/public/symbols/icons/111-1.png b/htdocs/public/symbols/icons/111-1.png deleted file mode 100755 index 276642fac207d9b90214d8a7ec175c9ab85888d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;x!~2S;5}=S|iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0dPZ!4!i_=pl1#%rW;BkJs;dV;>ySZh{?rHvuKEJqjja;Uf z`pae~)@e<xttv{}p1Uz<yjOZCaPr;q$VdjUhFMcD-nnAK9ck3>6tw$uUBr%ebvM?F ztFN84ctXkXJKTb2t4_y!KGo%2*f%}w|MpwlzPYPTeovdy(&=#CIs0pT=jtEKi4A;y zyWMB)EwD~Fwt;yyn-7acck$Y(Wpd)GOxa&@_VTk{xxe7atYm4RYZ*LU{an^LB{Ts5 D@1J#w diff --git a/htdocs/public/symbols/icons/111-2.png b/htdocs/public/symbols/icons/111-2.png deleted file mode 100755 index 579be975d5fe2babdd29b018ed5826231a12fc63..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y^NUQR^V4#p>iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f08PZ!4!i_=plpU!1A<Z+P~e|gM(r|9mv2i_i8+u?rQ*zQHL zm$sq-W0GRgPiel1N7hKH1pG<6@alfEMp}`v>VefK8%=(;3#{C;Sefxo+m#=m9~Ucl zvIRtOzI_!|IxS27n6_Z*vomT16IX~&wzzdBd*dp*h}#l*+g8uxK2a;PEmp>5%I=tl zaSfl<3-a&!9B_(Uym>lH!Oa_u^Gn&A?3HaB#6Lvm2A4MU9jxO1{O9MEQ;P+abU$aW znsY9t%jHzG($hwdiR^Pv%{ZC-ZT$+FbstI^|HnLC-W-v;>qMW!YN;o@tQ>jmU0-ru Q1O3Y2>FVdQ&MBb@04^$&*#H0l diff --git a/htdocs/public/symbols/icons/112-1.png b/htdocs/public/symbols/icons/112-1.png deleted file mode 100755 index 1021601b97c19566c5c28d283c07969b6c996e72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=H;l5>2en26~64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3}o-U3d7N_@44&*v)z~lVY>3#jCZ^e82zHPKLS@)8ok&}n< zc$co_jcZ)9#5Nvfl!)4RHr^`ZV^xOXV$K9R({r8klaHM6IJNnHht>@-g`mdOf<}QN z_g%K|DmWak<YB!oF-L3CzgL$w?k`I(d8^g5BjD&%pGn)*XKRUX^1IwEVl|cJ?rrwp npH6L``EB#oZHZs4_cKP^T*j*VdHZaj>li#;{an^LB{Ts5gNkjL diff --git a/htdocs/public/symbols/icons/112-2.png b/htdocs/public/symbols/icons/112-2.png deleted file mode 100755 index f0ad8254496ae06a9b1ca64a4c7fb5b4cae29d7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 391 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y^S%CBX?LZ;P64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF62o-U3d7N>hBT`WAJz~eICX63PeOT=QBG?k|t`EWiDJG4AA z{d3`s$INe9BzdJWw_f6!;F2sS`|t8fX??fp4|vwSk8a|=aJR+$WL)m;CyPGcWq5z~ zP5R^?k9S;L)zNeFNO0ODkD1~p*?d@wzeyX(_Aob8OT0^TcZ^Do-ZM2ukNLb>+T@ji z2}~XLxzDl7Owd~z==tNkrDw6S*`Al{kJX<1S<^qaY>JW8EEm?Ix|i=$ZcVrNYHhwm ze8$4)0M7!um?XPPQso-w^q;O&da`MS(CYt3`wTsgn0E0L_8Krr9tu}@+HzQMyVH*6 eH4TP>f0Fi}G4*`*vb+@(zzm+QelF{r5}E+yL75}~ diff --git a/htdocs/public/symbols/icons/113-1.png b/htdocs/public/symbols/icons/113-1.png deleted file mode 100755 index ca74259917ef696863603e81321c495ae363dbcd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 243 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=n;x4Z0Y@m>2iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afvr;B5V#p$=f8+i{HaBL3Tmw5KSc*<GZb650E1Zgkx`kHaT zEh0e3N`k@R)7CDPdrS-)zG?XyFMq1<vNA6@^M}@iv;!X!V?Qy*vs_v;|KE%$UzUIP gDRSfQF$ZCG0Tu)C^(GElKx-I0UHx3vIVCg!07q$1YXATM diff --git a/htdocs/public/symbols/icons/113-2.png b/htdocs/public/symbols/icons/113-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/114-1.png b/htdocs/public/symbols/icons/114-1.png deleted file mode 100755 index a238b6fba7ecf4f513daf5e50f98dfe80350efac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 342 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;>yR+8XP@s@xiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0(PZ!4!i_=Rd-Q{gI;Ayd6>~}ajtx@oh)S81_FSVXbEnUaY zI7>-LV5`Vcd-dlve8DqRIycW&5L_a4Y?%S4OrJ-}X4ANaZ4s;s7(dM2%<<z~v>gB1 z^az`YGp_D=TIhVR?VjrLvwxnlXuSM#V2+7|>Wt7sqLOc}T|0f9cUrx)O=3cRNy>-G zr#E_TaK4n})%Wi7f_{&4dAW)A9fJ1n>RhH3S1{w~E<RVb+po1J3pH0Ox2P*KT(WXH g8W(>5!K#z&N2P?BJPs+X1^R@+)78&qol`;+06BPl=>Px# diff --git a/htdocs/public/symbols/icons/114-2.png b/htdocs/public/symbols/icons/114-2.png deleted file mode 100755 index 1043d223669a667b1d2b84c7606aa70467356700..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<xFYoWkoeV~wJiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afor;B5V#p%7l(Od@<c)U;LJ(;`b@}9}*uk73we%`oJn!97` zge9Tgp{xuOUh=Rll;ULA<n&F3>9@(v<m@TWV&y(JP5-ftH9l=UZ~eTigGan4_c^?? zjh*_Mqvh1y6Dhkw6m{E+%mt&H%O|wA<g*;I|L>5qDr|w2W}Qj+v7ZbY3N|mk@i}z? P9m3%0>gTe~DWM4f*V|ss diff --git a/htdocs/public/symbols/icons/115-1.png b/htdocs/public/symbols/icons/115-1.png deleted file mode 100755 index 9107ffa3f65fffdb7a3b90ecf24bb20e999c67ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=X&iiR0qCg?Z64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF49PZ!4!i_^(}{{OdUR&D5PbTZ)KNjRu_@WhD@p<Vy~|4&!B z$(p`yUZO?uSDrBDhhh)A++w6I#2z{!aO%VSO%7MuHl0{9Q)1mB$x2Zz&z2wmL;p(( q>h0)Cu@Zdq|LcSe2{LE7c^Ha6splWd5L*GXkipZ{&t;ucLK6U8+E;7< diff --git a/htdocs/public/symbols/icons/115-2.png b/htdocs/public/symbols/icons/115-2.png deleted file mode 100755 index 393ab8b2a33f265ed2740f405382d54d77367d74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yw`jUc6r-4F}C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{SJY5_^EKc`Mb`)wb;9w4(cevv6|NRH<&8cJ8k80)2-FY?1 z%uy$eE$n#Nm+sG2+><8VJpIN-q~NTTxaNNj<sdQlv?o7woL=x;Xy|&?DpekG=1uU` zJ%-&%6Md3jJnlGB%(Pdt%QWG*-{KSVFU=M?ttvS&>e^9X7NOI*Y6gp5p3+j^()DZZ uRsQHry^9a`#y=6Qn0{#DBH^e15AzzdIlk07u=pm>l?<M)elF{r5}E*!h;nTJ diff --git a/htdocs/public/symbols/icons/116-1.png b/htdocs/public/symbols/icons/116-1.png deleted file mode 100755 index 9fab7f139ed7d67b469d3bb4e7e1e44accc55adf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 319 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=%%!QE9A3!0=64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5*o-U3d7N?g^b`)w>;Bl?DnsZEVfBGfklQYj;d%dLl&<cUB zt2qfq0{8xNI_b2re>`-UgJHw1FP|@He3WX8yD?qyND^0r=EhqrIR}2&?T-rTaxoAV zU_H+8{nNxFLFWu7`aX$Fdg}hcCc(Y_*m@3*{`B`w(+*h|D;Vug+r@fCHPQ9b9Okk% zFMd}i@AcP@<;X?HzBp-^{$#h>yp<w1_N`tr=g;rCTPJ*AjCHc=%U?My7U*OKPgg&e IbxsLQ00xJ6Qvd(} diff --git a/htdocs/public/symbols/icons/116-2.png b/htdocs/public/symbols/icons/116-2.png deleted file mode 100755 index dc309083b57e3d3ec5caa13033cb7f7ed161f7aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 404 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<w~XK;7VaiEZ7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0aPZ!4!i_=pl-OW90z|&&SKG&^oNqC{#gySA2ZKh6}yMA8F znESf<6~o4-Dz**+Uk)o*9`_T9elq2$Mcc-AABC)?e%y-l$()q<<L<{t0tX5`R=5^b zor`JyZ0pR(?O@1rV*8mX%VKxl-PWq<`$;;YV2=b#J5yoLTQiln*J|dbE<RZ`xp&!5 ztJPoqFBNlZKT<8*%G!L$drqI+BMEt>XVrEpFQUxWNt|n5)4+WC{HK|{qU+|Ys*qFo z_OV`+=eeVZ!huhB&(*AO^!s`6hu#jy2dB1cMaa(oenTK)d(`uT_DVOpZ~VXc!)eF% u$r_!dLa!?==Nxfn@{Gt|W!d-t57XHXPZpJ$|BnZT1B0ilpUXO@geCx|%cqS1 diff --git a/htdocs/public/symbols/icons/117-1.png b/htdocs/public/symbols/icons/117-1.png deleted file mode 100755 index 11fc96d8a6bc6e8bcf443649a7b28c422883b0ef..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;(Q>xUz7@&}3iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afJr;B5V#p$<`0=XItc$|gTZ<*_P9)!RAnQ-z-Eyv#v#~l=> zOxU)NP2}Jbg?;7)L6x$HPQCfSc5~_*uOBUGLZ=jV8+l$@_B7|)AHf;6XSn<F7d>zI wwd)lZgC{HVCf)~TOFv#@E1&y6yifYg#=SnD;<+`a1MOw-boFyt=akR{0E+Zo@c;k- diff --git a/htdocs/public/symbols/icons/117-2.png b/htdocs/public/symbols/icons/117-2.png deleted file mode 100755 index f85658d06082a7507eb8513b1db4de6854574df5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yg3HRdz*MLHjC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{SJY5_^EKZ-De37@=fXC&0kF#BW=#AyYCCfhCtc<f)$n{cW zy4XK2Wv=q==iO6S7HGdH5!7z%%)Pgs_0mpjhZ@Tnr~1SWpAnqTJ@JH)&cyIPT}?sE zjF+x`SQgQ{{l%Mv^G5~Ct&DD1{Xf^}{y4>EmuArSr?(m>pX4tnD&9SL;j7myiX2}r u{WbIW`zb;pCad(GxARr;|KDbwd(7#dE5$S^`lB(>l?<M)elF{r5}E*Su5>&A diff --git a/htdocs/public/symbols/icons/118-1.png b/htdocs/public/symbols/icons/118-1.png deleted file mode 100755 index ccfa8dc5939697370deeca8aa089f33357421915..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=P#=eE-T|gnp64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5To-U3d7N?I+-YwW{AmDP}D5TlxGM66XtpeK%T^yn3tr(K+ znAlnFxs;n%TYtZJ(yTn7KzKW=7X$AM1{I6yy9?$tym%{dOf_IRdv?9-`OcW_6ZWO? zJPvv3s33Ea`_Q$sogH=e9^d2%tKczB7B(-Qc+ksE?dhAIij6Aoz5h?O*&e=Secq;d zO$+v1a0?JNceF0)ND+4NDU1qV@o>#jp7kZIN6I#>6S(>&<aMWf<u94ZD$F;oUA=ze e^Ox`0HO#LX64wXLzIh4g5e83JKbLh*2~7Yw@_+yU diff --git a/htdocs/public/symbols/icons/118-2.png b/htdocs/public/symbols/icons/118-2.png deleted file mode 100755 index ccfa8dc5939697370deeca8aa089f33357421915..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 341 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=P#=eE-T|gnp64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5To-U3d7N?I+-YwW{AmDP}D5TlxGM66XtpeK%T^yn3tr(K+ znAlnFxs;n%TYtZJ(yTn7KzKW=7X$AM1{I6yy9?$tym%{dOf_IRdv?9-`OcW_6ZWO? zJPvv3s33Ea`_Q$sogH=e9^d2%tKczB7B(-Qc+ksE?dhAIij6Aoz5h?O*&e=Secq;d zO$+v1a0?JNceF0)ND+4NDU1qV@o>#jp7kZIN6I#>6S(>&<aMWf<u94ZD$F;oUA=ze e^Ox`0HO#LX64wXLzIh4g5e83JKbLh*2~7Yw@_+yU diff --git a/htdocs/public/symbols/icons/119-1.png b/htdocs/public/symbols/icons/119-1.png deleted file mode 100755 index 15b82d036b5538ef19533929fb62f8a7e3b9db92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<E<5P}#%Yj0YC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^_+JY5_^EKV;CcH}#tz@dFi{^9IDmun_h3tMk|(6k|S4$p*Z z+q`<5KP={|3uA21{F`@Ub9nHtO`GpL@VT+9#6&8?ByR$11M>peijQo6HnB5IWqx}r z+vJmo6z_z{ki98imKjFzPnjxgf2aI_r_>w9IgTYF6#>d&UmJV<{gX4li%+qf9K3j; s#P{;Ru&d|!r!Ri<w(jGXde4VUZT!|@B7atz0o};p>FVdQ&MBb@0P<*U%m4rY diff --git a/htdocs/public/symbols/icons/119-2.png b/htdocs/public/symbols/icons/119-2.png deleted file mode 100755 index 4ff4dffcd20887fad57f4e202e57b5b79d5e981f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z(SEh+IWw6i`UA#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?lfr;B5V#p$z?y!j3*@VLxhe6LM)j%vHl`XqhJ{@n(OCS6f0 zO9b<KY#%57=-6#6%sttVV@CY*^E3Xu<aqY!Ns#8RvO|3Tm>pOS2xPQvYN-6;*l_X1 z3Gsmar?u|{D}3gS-_jJ8aC)NTwdmE^?_@as_31OHGOjL-^>y={$T;PD)%=SoiWkcN sedY7Al8Rbra(Zdo(_-6C%j_?4J81+P?%U+v1#~2Xr>mdKI;Vst08WQ(4gdfE diff --git a/htdocs/public/symbols/icons/120-1.png b/htdocs/public/symbols/icons/120-1.png deleted file mode 100755 index 44db21dee6bd7736ebadefe13649576d4af31330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 260 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=vl6(I9t3V;i64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3cPZ!4!i_=Rd2l5>-;BadEeSc<c?##KX&3@gsQOL-Yo-Ekr z%%IqmyUpPe!vfJA@>UyiwTka{?s<5@(LJTrUiF=ek;Pr7ut)MS>n@tD4k~>#t#f75 x>Y}TK_c~WJX-|AU#oymT<;9`QNiWOyF?hJe3BFRi{u5{~gQu&X%Q~loCIDjET15Z= diff --git a/htdocs/public/symbols/icons/120-2.png b/htdocs/public/symbols/icons/120-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/121-1.png b/htdocs/public/symbols/icons/121-1.png deleted file mode 100755 index e2d581b171e2611a2a857118647d7f4c1191e5d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 258 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;}&xR=*ZvurROI#yLobz*YQ}ap~oQqNuOHxx5 z$}>wc6x=<11Hv2m#DR*kJY5_^EKV;CbmU@C6bO3xKfcW0QM$+XNvg(`oF%z?98`E2 zmPa-+^a<u{_Sqn`N>ccZwZhB3f+UykPybI{Y4vD}PwA1DaohL4S9`T*j!%j9y`QeV vo<H(kI%k}7Z=RXNwL0XG@-gokh93-OT$cLrtg^p=wla9S`njxgN@xNAN|aXa diff --git a/htdocs/public/symbols/icons/121-2.png b/htdocs/public/symbols/icons/121-2.png deleted file mode 100755 index 0e63464fa0e724c0df4ac875171ebfbd09544199..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z(R3cUQLSJD`wciEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f11PZ!4!i_=plUu0}n;BkqMX!lRw_}PFz*42LI^IwfzUbnR3 z9g23IcJzsA;EYq7w`Pxo&x|EpeGZID5uXgbblaIyW@;*Wd2jljpL90l=o-^_<6X>u zmZ=?3d-?KKNc-OfUm9xjmiRiZY`pcD_e1Exi*A2{moN(}${Z--tJ2NfH$jx6*0j7n zb-xDRJ=N4#_i9SymYrh`KWJ66>fTS=chwu-`agK`yX4yfZ;2V*_w6SZ&M5m}U@>oJ lWEi)DbozVNJxY;m9~cvzlC>%?%Y!_`;OXk;vd$@?2>{~(fUy7o diff --git a/htdocs/public/symbols/icons/122-1.png b/htdocs/public/symbols/icons/122-1.png deleted file mode 100755 index bdf4bf2a0c06b3a64ce9ceff9f59d792b337e428..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=f=I;rq^MFE<C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`yo-U3d7N_4%G~{DY;9$=D|Nps_Mdli(7@0RNPVa@7R9bm2 zOc#o2b+4Eg+$5Tyaz^ZKU*?UHh$ivaX%9V_T(3NQ*mAbNf8v21XT<j?WV}_7P&r<0 Ry%lIOgQu&X%Q~loCIHzFNk9Mq diff --git a/htdocs/public/symbols/icons/122-2.png b/htdocs/public/symbols/icons/122-2.png deleted file mode 100755 index 5c7dd40997266f7d1a8dfb58e01da14b5cd8d7e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z(Skj(*~YR-lk%iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c$Fr;B5V#p$;b4fz-pIG8j4|9@^}k-5exM&^x+(|aK%l~&#h z(}iMM-7Dq=H;E>woDsX*mwBTkqDee<+Cxt!*DDVnww&$npLk%$8Sy;|8E+LNRE}3$ RZv~pn;OXk;vd$@?2>@l-NOS-I diff --git a/htdocs/public/symbols/icons/123-1.png b/htdocs/public/symbols/icons/123-1.png deleted file mode 100755 index 9a99f2851e16323e5c5174321002f9a79ae4d79b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;wBkylN2cVE-iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afIr;B5V#p$<`5Aq&z;9)u5(Rb<c(q3=LeX~4#4>v3Gi}+2j z`H_&R>YZJEeUhwJ`XeKy+n44{uUsLZ%r2<dAk{82C+^{P=3AFUHayQ)Uy*V){Vm(U z=yrXXgli$S77>yAx9$77V)uzzx2}4J-#+}G?}3$)x2}(mOx-g7M|^i(a=qp}dbu9x O4hBzGKbLh*2~7ZeuwbYF diff --git a/htdocs/public/symbols/icons/123-2.png b/htdocs/public/symbols/icons/123-2.png deleted file mode 100755 index 50d955b8f4b97ff3f607b06f7e44a24e98044949..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 340 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z(SU)ah?#_klu^C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`vJY5_^EKc_ZALKovz*D^H_W$!-FSVYXwAtr>nAK~&f~!)W z;Y7s=ES?FAUxb`rUwbU9Q8q{{Rl2o$V@2S*v=j1r3xe4kJiI3{Hq6XC7WN}ujV04g z<z(28#_6HwSDD8M-o3fyeC4sjX9P>K+!bb5DYF+U-E9eezL;U|uj`C+wbp8M_H2J! zC9pGg!CAfc|C*J>KVRM;Sn};~;N%p+uWRhxyQlv<&+dQg^PCNZz9)(|{Q5t$`Rai+ eZRzg}EaJu5^$N1wHBJKk!QkoY=d#Wzp$Pz>D}uTJ diff --git a/htdocs/public/symbols/icons/124-1.png b/htdocs/public/symbols/icons/124-1.png deleted file mode 100755 index 9a99f2851e16323e5c5174321002f9a79ae4d79b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;wBkylN2cVE-iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afIr;B5V#p$<`5Aq&z;9)u5(Rb<c(q3=LeX~4#4>v3Gi}+2j z`H_&R>YZJEeUhwJ`XeKy+n44{uUsLZ%r2<dAk{82C+^{P=3AFUHayQ)Uy*V){Vm(U z=yrXXgli$S77>yAx9$77V)uzzx2}4J-#+}G?}3$)x2}(mOx-g7M|^i(a=qp}dbu9x O4hBzGKbLh*2~7ZeuwbYF diff --git a/htdocs/public/symbols/icons/124-2.png b/htdocs/public/symbols/icons/124-2.png deleted file mode 100755 index ba59de5af28f69db5b643af7fa3bd148e95f45fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 198 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z(SU*-yPF8=#P6iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c$Er;B5V#p&cf|Nq-Ft2T5tIvr^8Zkjkz@Mz}$|NqmMbaK1# kN|+`TNF1<uuv3tseJhvrkHo7NfI1mGUHx3vIVCg!0Bo;2ZU6uP diff --git a/htdocs/public/symbols/icons/125-1.png b/htdocs/public/symbols/icons/125-1.png deleted file mode 100755 index 9a99f2851e16323e5c5174321002f9a79ae4d79b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;wBkylN2cVE-iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afIr;B5V#p$<`5Aq&z;9)u5(Rb<c(q3=LeX~4#4>v3Gi}+2j z`H_&R>YZJEeUhwJ`XeKy+n44{uUsLZ%r2<dAk{82C+^{P=3AFUHayQ)Uy*V){Vm(U z=yrXXgli$S77>yAx9$77V)uzzx2}4J-#+}G?}3$)x2}(mOx-g7M|^i(a=qp}dbu9x O4hBzGKbLh*2~7ZeuwbYF diff --git a/htdocs/public/symbols/icons/125-2.png b/htdocs/public/symbols/icons/125-2.png deleted file mode 100755 index 9a99f2851e16323e5c5174321002f9a79ae4d79b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;wBkylN2cVE-iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afIr;B5V#p$<`5Aq&z;9)u5(Rb<c(q3=LeX~4#4>v3Gi}+2j z`H_&R>YZJEeUhwJ`XeKy+n44{uUsLZ%r2<dAk{82C+^{P=3AFUHayQ)Uy*V){Vm(U z=yrXXgli$S77>yAx9$77V)uzzx2}4J-#+}G?}3$)x2}(mOx-g7M|^i(a=qp}dbu9x O4hBzGKbLh*2~7ZeuwbYF diff --git a/htdocs/public/symbols/icons/126-1.png b/htdocs/public/symbols/icons/126-1.png deleted file mode 100755 index 1dc247035738680604f82f8f55cfe9643dd0dd2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=rgzmM<Y@m>2iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c$Nr;B5V#p$<`thpQ%1(@fyf8YP<hMjnQ!opU~=_)$T0hjys zZCUx5)l#m3tLxN?2Kyrtc~f2Zv&<{n4!(K%A~DrNdBYynxPSl#;fX53pWTgj0S#sF MboFyt=akR{08Exet^fc4 diff --git a/htdocs/public/symbols/icons/126-2.png b/htdocs/public/symbols/icons/126-2.png deleted file mode 100755 index 1dc247035738680604f82f8f55cfe9643dd0dd2a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 225 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=rgzmM<Y@m>2iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c$Nr;B5V#p$<`thpQ%1(@fyf8YP<hMjnQ!opU~=_)$T0hjys zZCUx5)l#m3tLxN?2Kyrtc~f2Zv&<{n4!(K%A~DrNdBYynxPSl#;fX53pWTgj0S#sF MboFyt=akR{08Exet^fc4 diff --git a/htdocs/public/symbols/icons/32-1.png b/htdocs/public/symbols/icons/32-1.png deleted file mode 100755 index e4c239447755f7db3f1f85b4e4cc5aad646be1d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;_W734C44{x?iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afNr;B5V#p$OL4fzfz@G#eQ{I9<`cSVNCiiU;Gn^_zS&T(!l z74q06nxpJ_!1=0K!|yxyvi{sSS9?+ClmM@c=QN!ZmYaVsINh&JYrm{JrDH~7K5t?7 m1L4M9uYQIqtb4=myobT$orA1Lnz$R#HU>{uKbLh*2~7Z!-cywT diff --git a/htdocs/public/symbols/icons/32-2.png b/htdocs/public/symbols/icons/32-2.png deleted file mode 100755 index e4c239447755f7db3f1f85b4e4cc5aad646be1d5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;_W734C44{x?iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afNr;B5V#p$OL4fzfz@G#eQ{I9<`cSVNCiiU;Gn^_zS&T(!l z74q06nxpJ_!1=0K!|yxyvi{sSS9?+ClmM@c=QN!ZmYaVsINh&JYrm{JrDH~7K5t?7 m1L4M9uYQIqtb4=myobT$orA1Lnz$R#HU>{uKbLh*2~7Z!-cywT diff --git a/htdocs/public/symbols/icons/33-1.png b/htdocs/public/symbols/icons/33-1.png deleted file mode 100755 index ae42eb642da8673e171020fc78c616c576d1a2f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 303 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~dqf(Ng43s6Y1#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?lzr;B5V#p$J!FY+E%;Bh&>LfA3wrPWKDGfrt$f4!0weFCyh zGA-FXxip<cBP(=*lyMJZ*QqxSlNLm@c$Po;w@<}D$wg@ySCxEK$X1WY%IQ++)%|~V zAD{ayuFtyh=F5`@o;H?CZF~7d?zhzJ8`E+<v;)ryd1|NJ2+^spnwXUO-}=}?EqCGG qFsrppi~mmuTU7OBX5H$l;CMaGjrn_4*Lnh-$l&Sf=d#Wzp$Py~K5W|n diff --git a/htdocs/public/symbols/icons/33-2.png b/htdocs/public/symbols/icons/33-2.png deleted file mode 100755 index 07aa19370a19a6cafc84f726262a1b909c15e366..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 255 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;nZ@TwKFWq?AGC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{|o-U3d7N^%v2;@3oz~L->^Y8jOwNr9q4~CdAJ2}3t)>T#H z_GD~ONi*KKd(XVn+^aa(+ntL1B7LT$Xv*dnrZZk<8+F?;yO)dY=hay0Qvd&Is>-pv s33qguCtQ*bx@Udo+o{QU&Fd{0bNr1Icl0Ue0Ig*3boFyt=akR{0C|Q}m;e9( diff --git a/htdocs/public/symbols/icons/34-1.png b/htdocs/public/symbols/icons/34-1.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/34-2.png b/htdocs/public/symbols/icons/34-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/35-1.png b/htdocs/public/symbols/icons/35-1.png deleted file mode 100755 index f627f33643fb2be54ba9a53dcb387d14b62e6275..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~d!=8m&Mp+F(Y64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3;PZ!4!i_=>tU*v5z;Bk3x#P{34|CG&}%cXMh3kBY=bzX~~ zSY#Jnw~aCN;ZYAE(ezo1+5_FL{{F7ptf6SUG44@z|Kug*|8f;dmR~Ag;E-(273aI! z#r2zd;&mAxshPEGXTn1o9^_n0{wsT|;M2C8)$!YeA02m=Ns?(<9DQP%+OE!`@ENip hUJqw{xSoB7!J<9n{$I00TYxTO@O1TaS?83{1ORk|YLNf{ diff --git a/htdocs/public/symbols/icons/35-2.png b/htdocs/public/symbols/icons/35-2.png deleted file mode 100755 index b3b8706f6275b4826ed1052b6c75370c63301f3e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;nJ{<>FNB7j1YC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`Jo-U3d7N@rcpJZ$>;Nb2#Jn5?HZofYjTcR@dR(yQm;UqBW zgHxI!gF)aPsiUVa-1}Di&ywjNOPeU00z0!uo513PMHx#s@s`}YxJQ}eXjXv6`Bi&; z1^;s$jFmMLvAUC!J3r=pM(qt>u64rK8}HeFnL9)NpVQ8d*Yjf-K1{TU_4ajt0CWX| Mr>mdKI;Vst0D56xfdBvi diff --git a/htdocs/public/symbols/icons/36-1.png b/htdocs/public/symbols/icons/36-1.png deleted file mode 100755 index 229eb5142ce81e0c0887310786ab141b778a5ccb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDW!^!5aRfuYp36C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^_;o-U3d7N?g^z9`tBz~d}@uJ^`K#Z*!2;J+VS9403H4u8SD zg@tMNA;Ipg0j6P=nhXsItuy^PL=5gWZP~Iw>T~DYs0L#nrX@CM2C5JCIa)Ux@yqS_ z<aqOOs6o@_17FWYEESSIc$0naS;0TqY_*NLeut+{z29ThbhiGXHs7_m-hN9}7XAdf OgTd3)&t;ucLK6VahhQ-P diff --git a/htdocs/public/symbols/icons/36-2.png b/htdocs/public/symbols/icons/36-2.png deleted file mode 100755 index 4e17c9f926854d29e66e8da55db1e06ba1bb585f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;npWQDgt15ik^#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?lLr;B5V#p$KNj(iOYJg>jW{Ciw|#sAaXDuYS9Y<jm&cWACz zJ9`2P!wJprij423JYTc<^qrThTAy<BRk$(kXr1n)YE^UR#))lasz*OxEsI;IxneWB zmYw5bzrcc*>}idb-KsMigOhZxrLgr+nyPyCN6gbjKRDn1-T$vqZ*}36=bz>KH{D$` m@6PoM<)dqhPx>y&tzw+i?B*D4%&rJ@9fPN<pUXO@geCy;Gj3b} diff --git a/htdocs/public/symbols/icons/37-1.png b/htdocs/public/symbols/icons/37-1.png deleted file mode 100755 index 473f8bf0898c5f545cbcafe87c22e351ba81eae6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDW#P?lqwqKzRnq64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3Do-U3d7N?g69~3-nz#$y7?BsRprN&FGf8H*=(*8)o+N8F{ zpRZ{GL$b=pBRn@aLl{`!dgqm?-I(pby7M-J%_F;O!GeEtu63PXw!{6}#GkGV>cyX} zcN^SWdYWZMq;b5&dDS%6rHeLeKa-95xIaIpXs<Qv*U!?6etJaS={UYB^=$Nx;Ae&Z z%R39V7Anu<J}1)CpF69OY1YBesyn~`=uJBj7It8bQNHH<Rz_*}laH4~zyCP(Saigu iea{Z>yxn1I`&{2Tp}3Yg%D)}x7Y0vPKbLh*2~7Y4_=RKu diff --git a/htdocs/public/symbols/icons/37-2.png b/htdocs/public/symbols/icons/37-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/38-1.png b/htdocs/public/symbols/icons/38-1.png deleted file mode 100755 index e9ee41d309dafe9cc12f918a8c82d306669202ae..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDW#9xV5nm6HrL9#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H^+;)5S5w;&gAYBOi+)2b1yt|3=lfjz|UCn(78{Po4CjYYBsc zkgS?nQS5vct0v)2?F(G#{6-6+4nJ}FrlR*`*Y_XFD^(}&b$Hvtu!V8?FTDlZ|4use z#Z%^G<stjlvo6zJN-ma|?~;g2PyFR^H|7Z2jdPE<N)8q7%zgEW-B2KkJEd#^C(s!T Mp00i_>zopr01ZQ1)Bpeg diff --git a/htdocs/public/symbols/icons/38-2.png b/htdocs/public/symbols/icons/38-2.png deleted file mode 100755 index 5a746b63c83b67a8bd71a8b6ff231aa8354076b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;m>aOjcmKoJJX64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3UPZ!4!i_=plc?vNYaxhK&|9@sodQj4Z;8jbkXRC6qTjj-| zurj7i|3{pA6JLSQGRN!5T)TP93#LC6+o#H!!0Ucrf_s@_<<upQvM;IqC~xh3GJ9#Z nO2O}r$xB`v@>&^AzPl_~Hg|`exVwb|$bSr;u6{1-oD!M<2+vSq diff --git a/htdocs/public/symbols/icons/39-1.png b/htdocs/public/symbols/icons/39-1.png deleted file mode 100755 index 23685956b2455614e339da0c557017c6f22510e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDW#9S$Pyw3{Xh2#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?l9r;B5V#p%022YFizc#8df4sYLlhwH5bd-9aIpHgK%XHA`w zty1w}LC_MdO>-?cJ(5H+J$1Ynw*Nd(DJaPFQDI+$gMi?BZktPv3YA`Yuibpt{r}>f zsIkDa*M@o1?HGNtuUC6o86y?eE|_~Tr#*dFpv2tyCJSo3U!*fWcw)PLX0EgTz9X;p sSM5{z@Lp}p0_}uVE2mz)`~3&A2FIaL39COVfo^2*boFyt=akR{0G|zQ&Hw-a diff --git a/htdocs/public/symbols/icons/39-2.png b/htdocs/public/symbols/icons/39-2.png deleted file mode 100755 index 7f5d1f09c80d07c6325f73b9363fbdc7432b097e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y%#!+>>KR_YL64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4Eo-U3d7N?g^Jji=kfyZ_K^OJ_Ls@ewb*G~97nNb<X&ndX& zhQ?Y|l?^}7-&b(Bc<Wm4igkhv0a3#C%>RlEgxVWUm@UwG$mBLx-!QW3UxBL)ONC$F zfkna-O7l+nD62;{EtPtBIq1m(v2sS!CAW7LpVz&XXH)pO_uf(uo)ZjHZ=9X6{&U{4 uxHA_-eA-tCS5A^%|JXV`GmFvxG4In^d3?vF_^biClEKr}&t;ucLK6Vu5N)~u diff --git a/htdocs/public/symbols/icons/40-1.png b/htdocs/public/symbols/icons/40-1.png deleted file mode 100755 index 6e15bcea1b12b35a183436fabe77e7e24f44944f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDW#L3UhV-ZJ>~3iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0IPZ!4!i_^W6E>1kGz~eIi4&VG8Q&%hI{y3$es<KvN{*}$& z6Hhc47H7CIZ`!ikX_{x!RlE26EH@78ozF|Tk#;oA%!s{W-~6T`whfW&X=<L=jxacX z+;(f9ip}n&%8V2GTGF?tHf4QOkE&K$SzN!<YxUgfZ~4C6uMhrYdA%kmTUCyQ{VDf? z?%R57O+f~#8M~x8lRCD)k1L!!LGnlHE$heIv*ViH^6g3Dn-MFPsejI8@7Z$cu=~Q! zA#>ZW|G$6dc8%<dZ$D}$^re(%1z#1uo4+XidEV=Pr~flvO*UKI=3lWD=tl-mS3j3^ HP6<r_7T=Lw diff --git a/htdocs/public/symbols/icons/40-2.png b/htdocs/public/symbols/icons/40-2.png deleted file mode 100755 index 485cd977b9ecace737370d2f5c6af1d990f43e4b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;lm;}q{Fr+`9|C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`*JY5_^EKVPtyixG50*~wd9X`okXAg0$nfO^EjrIH|@6CNd zH;yD6+F2lITJTHZp149<oBG2K26EyRhM%uB`)Mirp5ZxTlEd(4;@aotM`Jv*ELhX# zX>TjrBXs(O*rho>&EK3{mrp*Gnb=a7eB9LIUsLSun-^{-E!!Dy_gdIgW5=eYAFh`_ zs9w16z>Gt^EkQlng3fQMAD(uO;%vIG=E8!8`{sfzk52qupuJbn*m>4u!8?291fBmp ly8d&K;E_*pF8}^X+wXXn<s&9lvl{3d22WQ%mvv4FO#rlsiHQIJ diff --git a/htdocs/public/symbols/icons/41-1.png b/htdocs/public/symbols/icons/41-1.png deleted file mode 100755 index 9e566b39f9a32aa830f8cfb7f26de22fccf571af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 527 zcmV+q0`UEbP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV00006VoOIv0RI60 z0RN!9r;`8x010qNS#tmY3ljhU3ljkVnw%H_000McNliru-v=ECIw!GTZK41G02y>e zSad^gZEa<4bO1wgWnpw>WFU8GbZ8()Nlj2!fese{00DPNL_t(I%Vm?jb>lD)gg?=0 z!HG&B!>L0dTmn^wr82-0tn|v@hCmApt_WPPAPD;K9v`q=?9BcQE`(SB1X$hYFr&$M zJi#!8>h5=Fe_&8EJy?^N18DT!mqDgN9X5!;G99|GWVEonp9CX~RS2v0z^E>LYk|w# zSkexB5S(ooPN=QM#(VM!!}9t6@EcVf0F&H1*#R;h{W6Rz*<d_4RU0=42Ua#1XC5zu zH`r+148%oYEru~8;*YRglTF6*?zw)KRm)X~g%Hb{N{K&fJMU|)Un!-msT75^D8#}P zi^5v22FwVJ@OV0pGylKlZ=ng61R84(gs^Gvu~)ZrS~#WrhB-LE?i~z6N!7GNk%tC5 z3HucKv3_W}KmV|C4`Ktz8;01}5aNd0G29&Ca%214h+lWMzZ^PPUPcT;lWH-vd}8pi zy0rbCCHG$U<d$UU4e?u8u1_Xe3w*r1H<tF&oTTZXm#0G4gG^&P1Vnoq{{Y&e^wYvz RdpiIC002ovPDHLkV1ni6+cy9J diff --git a/htdocs/public/symbols/icons/41-2.png b/htdocs/public/symbols/icons/41-2.png deleted file mode 100755 index 356f3812eaf235c7c1f88baf5fd9719e26508a48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;n6b&$Jl1yD$`#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H^+u)5S5w;`GwV-h2lXI9z6Se&7G8BsnUCMf#>h9Y1S}%I=9~ z84kXaAB3iz>|h9%*(>N;$RfbE-CN<szsManh7E5fU01W}c<C*~x2%Dq=t1_xi<4S5 zvFE$aVEp@sxkGB2Z~OAQ_Z(kb-+U{X_4S#%eff>SGI{mNZ-eCcS~Qe+rQS*bUBTe# L>gTe~DWM4fnB!X! diff --git a/htdocs/public/symbols/icons/42-1.png b/htdocs/public/symbols/icons/42-1.png deleted file mode 100755 index c4f02de449a1b495540789c7a96bc94fd8c110cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 335 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDW#bgq%|0J)n?eiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f1cPZ!4!i_=FZALMN@;9)ubV%5(46|G{Ij%}SNwnDYCt?Zke zCx=4Ig^w2Xd!%o!j`cS5v{~8MUK*`%b4AKBc0Qp89%ir98Py{ND@&NeAAiwUKW%;F zo>!dh(Lc`}ESzyS=<&NFlNp&fiWv_0&$E_sm=rm~dH*Y>J^Vl3terOBhWYeSBk76C zal0lkv|6s%rTM4$tTz*<XIJFXPi*FTo|akm;@8WiI#N3>araw>P0W3NI&jk8zvgv} Y2hGlLS_bv*1$u$O)78&qol`;+09llIng9R* diff --git a/htdocs/public/symbols/icons/42-2.png b/htdocs/public/symbols/icons/42-2.png deleted file mode 100755 index 8377b3af0006601ba2fa2e0c934ecd04e5e5b9cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 344 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<x6$JLbB??55R64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3Do-U3d7N?g6JMy&{aLAn5x9tB%+gtCq#D9EKp2ojaTf@|M z+7S^0pP7wKDrt5iMrZy9`v`GgS<)2bc*jSpBl!FQG3f$U75l~=i8<@8&Ru)mX%+t) zUAarrA95A$zE9w~!x-qHXlr^>;Zi@}gfGW$)~su|B39gN!?31c+X1nxxH)Xwzs39x zn_SQ{Y4)qw+>_6)=uL22tdrb$;_yAWvX8rJ{c8Q+${u*veAZQAe!=cZfq!nf6$*Em i6@Ftp8#JS8W&9C!E~QD!-Ftw3VeoYIb6Mw<&;$TeDT4X{ diff --git a/htdocs/public/symbols/icons/43-1.png b/htdocs/public/symbols/icons/43-1.png deleted file mode 100755 index 935aa24a888948bc9d5bbecdc371a3e04d744c3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 200 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDXQC!KZ8c^?^c?C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^_Po-U3d7N?W{{QqyyY*sLBqM+-cAOGv!a$e1l&|q22W?*12 lFEQbV{iVYRCaQc)%na+*_#a=Mn*`F!;OXk;vd$@?2>>B(I=lb? diff --git a/htdocs/public/symbols/icons/43-2.png b/htdocs/public/symbols/icons/43-2.png deleted file mode 100755 index 78b514349d5c5d88d6375986c6adaec6086996a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 213 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;m};?Mfz7NC%1iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c$Tr;B5V#p&cf|Nq-Ft2T5tIvr^8Zkjkz@Mz}$|NqmMbaHE$ zH3(V?T%6m>tx%o*V6Ven1BqD|E#@RQMldi$ua^-1w`JiCpg|0tu6{1-oD!M<p6x=; diff --git a/htdocs/public/symbols/icons/44-1.png b/htdocs/public/symbols/icons/44-1.png deleted file mode 100755 index 946f15ff9cfa1d304e5be1e1c2ffb3cf2635b58d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDXO+&-?y`T0kMm64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3ePZ!4!i_=Rdd-EMJ;BfYRU%%y<PrlgYkPeA7LytfXiN}AK z0<r};oSI{UKi*Plc3rI?&Zo6bd=A&O$LlwhMJN_}Kbe_Ud*q>az`=9dea#%xSaepN zmE|(yNa^<7!&-J^d6Vp!1&#-2SJzy9;?J78rPH%feZ}3LrrQGZ?zXi*UAM<prkX9y e`s4fZe+=F~kL4_%aQgw!T@0SCelF{r5}E)goo6%v diff --git a/htdocs/public/symbols/icons/44-2.png b/htdocs/public/symbols/icons/44-2.png deleted file mode 100755 index d74dc8652b2cea23681141cbaf2cc22adffbf46d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;l;=hch9?14g(C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^|BJzX3_EKV<-?3;H?fyYHY(0}sVf@L-7ujW2Vt)Ba`X+E1% zRH&=d!G!+#ou1o%p1<*|_sr?eH&@G5C!{sGYzx@lyx_*clQZ+Uw&e#;`*~oKj{LFq z@Vad`h4j-uH3)LNWe?2#8oKyT-_27CcU)Vo<?PCDa;Nu|+<|LiuN0-U=I_u8`Kq6> zW0geFd8dn~HF>5!n6-VSIeTo3spks8KgSL%TJhrLw)DRfb5jEMA2IhoJMko6!+8g5 zanBEnCg!cJDN<v6Bh}=8@A4-@o6?Av2QGE`+ijcAI_rf0^KI|@U#@@5eRJtoS@!Zf RMnJDJc)I$ztaD0e0svO(oE888 diff --git a/htdocs/public/symbols/icons/45-1.png b/htdocs/public/symbols/icons/45-1.png deleted file mode 100755 index c1431907c8ef004665ba0c13c430eb191320762a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDXO|^PD581wbLm64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3^PZ!4!i_=FZALKe<z~NlG>Hq(yZ&Y%8wmeF_r{i0(L~~M( zao*`lNrqM51RXo9h1VZZSGm`@`*UE&%uau%)9-$|%$fN?M=0PM*BO<<4_sgGNwK(c mXs;@rx}Nu+`jPm$$Gk7w70j>H9KQ;*jKR~@&t;ucLK6V;=~dbQ diff --git a/htdocs/public/symbols/icons/45-2.png b/htdocs/public/symbols/icons/45-2.png deleted file mode 100755 index 6abb770bb874389650ccbf3c9a0850d2a9f231bc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;nUQOYf0X`ql~iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8af(r;B5V#p$I%j(i6cc$gmj-+#tW%{#o%Ew9aK!PIRR8<*q? zbNj@ZCou#lc~+&LD{u7+2%Ow2vU}Ofte0DgvnL#}p7*sUlm9eV{q!3jt#&$?FBdLM z|MZu=EU50=f~yHN`Mhaenmj98ynAN<VEDkW>_E8cHm!;`K&u%%UHx3vIVCg!09qVb A7XSbN diff --git a/htdocs/public/symbols/icons/46-1.png b/htdocs/public/symbols/icons/46-1.png deleted file mode 100755 index 86e57b13395c177939ad24d5f9b90bb161ca8858..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDXQ81pltNcY#8ZC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{Yo-U3d7N?g^wiaSg<Z){Jec#e7+TxkAb(GpeUx8GY2TwT| z9N0YOZ#k=NDpPn%p-C*|eXZ2oR<WRt&8>WwIv5*Lx#spd&oP%^I~~RS<1e2Kcdu@2 v{_jbBb5^KzfUwR-hKa&gO%7jwzlY)EbvMa?{X#E*7BhId`njxgN@xNAg!ohH diff --git a/htdocs/public/symbols/icons/46-2.png b/htdocs/public/symbols/icons/46-2.png deleted file mode 100755 index 27b2263df191384d248e7f638ef7c5d3b9a78d45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;nQg~qO}oIoMT64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF53o-U3d7N_S19~5jh;F(;U^H_amtLO|(>!tqZ7uz{$lsTQg zD(^Ev^yUdCAw!oG8y1J4M>mbM*My~ieg0j0VhO8~Q+NhL$*JZwKUD-LC2ve)c>VEH z)=p9PTb`2^n=$N)=i<81Y3eVkTE1J(JnEx{w!G^#xvN?(EtyZg98l!fn#8`=xAC3a zjj6s$e_3Lm3te@QH*xrIV4HmLO8+R1o!^q~B|WpN5cqD_u{V3(w|8j{L2l-4_gBTQ m`I9k|=S1|ew?=<=pUW4SRN;QUjV&4IAqG!ZKbLh*2~7ZMk$<`X diff --git a/htdocs/public/symbols/icons/47-1.png b/htdocs/public/symbols/icons/47-1.png deleted file mode 100755 index 3476187a2d78c283847d22affa3b317637f68be4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 244 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDXQmR)<d1ETE8NiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afHr;B5V#p$<`9Jv|{cv#HqPHtbaKJUJXoK{yZms4I+g8oUP z4c<HfX=bX=FE=Eaybjt}dij8kc&PtFrB7`QT3;`(<QA%!E*Q0}`EI_4blH0=iK>XF f>?!}XpEI(XmG|A=Wby9|&>jX)S3j3^P6<r_izrTa diff --git a/htdocs/public/symbols/icons/47-2.png b/htdocs/public/symbols/icons/47-2.png deleted file mode 100755 index aeaa4d485583ed6a2af0d7bca9bcd52e30d476fe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 233 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;nA(!a0r8-PNRC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`#o-U3d7N_4%GUPg7z{9-s&&8kr{q>xeZ86)zVl{<hi$vn% z&Ab`zzO#RoHs`&`EWN&@aksO_YR-wNbLU<>r_S`Rjq&4}FykEsE57MV&hf8V&bTox WHTN&$_MJe(89ZJ6T-G@yGywq5QBE=d diff --git a/htdocs/public/symbols/icons/48-1.png b/htdocs/public/symbols/icons/48-1.png deleted file mode 100755 index 4c6ba20d8a8cfe2cce8ab542d9b3bb3974efc10a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDXQGLgAyPqd+0a64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3Jo-U3d7N_S1NAoo(@MM?&Uwm+R-10h!GYy8KLP9sL?e+F# zV3_p%@#Bdu3>#!O92aO16LfQUabjOX_@)bu<|;Q``{qOhJ<k3$xjA&!Oy3!fwy)QB zu86JQv*+chK($!&V;dVIiw_HVFg<_G^!0z?#6=#FX=1J`R`44z`}^`pS9!R)YFm5V jQVLF9QknJc!cV4am5mesopjg*bQ^=GtDnm{r-UW|h+S$+ diff --git a/htdocs/public/symbols/icons/48-2.png b/htdocs/public/symbols/icons/48-2.png deleted file mode 100755 index fef9f60f5b70b9ece1bf5891c07be8329e101ced..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z;l~_tKbcbAdvVC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`9JY5_^EKbi2_7q}K<lw&cr)}}S|EzJ9{?D$&b}dZ*xX4LW zMMT2$Npf1c0E6f0jnkRV&ETqk9<H=oWQL@90z<*c=7*2fGKG3r`u@%{%s0(tcKul9 zSQW`|;MC?VoBp)-v$O83$`JKcdwh^hq)|NduXBE%T3FbguuCE<s_m06rZOu3ye#lE z@silS5Bnk&G7lfW`S;Lot5e(Z7RM|zv3P3qclWvchil{JOuA($33M-mr>mdKI;Vst E01y0gzyJUM diff --git a/htdocs/public/symbols/icons/49-1.png b/htdocs/public/symbols/icons/49-1.png deleted file mode 100755 index e2eff03667562608b11858fadb9e50e1641a9371..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 351 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTS@j=_bbXFwsz64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5(o-U3d7N?g6I|?0E;E1W=`}l1BquHO97j3R<mn#vvaOCBd zIRQ6XT~$I^8J>8Y{duWx5evgZ@eM~W>|59<>F_r2vHa6F7oL}JFHdJ?(|Hz^(>U>f z>a0^I?<}94bdc5h^XeB4&wbT6-^?sldE#MfSSj#(-JvD-x5bFR{d}3{#+=HJeWeo& z!aUSB>U>YsTqwA-a!SqI^{z%iceF$FRo$y1RE~Xl$29Yq0oS71=2HxF-teACD>~yf rc~#u}mF#Lx`{rK`obuxS`#+5H)q^^`=ic=KdWpf))z4*}Q$iB}Ew76< diff --git a/htdocs/public/symbols/icons/49-2.png b/htdocs/public/symbols/icons/49-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/50-1.png b/htdocs/public/symbols/icons/50-1.png deleted file mode 100755 index 9a15de1617cb1f01ca47aea3991724630ce5c1e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTR&chA9RXMjSIC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{so-U3d7N?g^_U3Cb;Bk&$G%s!2&i}kGgw{QdR9M2aRM;wR ztCvjl&lxHVt8V`DP*P$3AX#*JBWv8`=qY_$<4-N$zhCitkyn`JHCDUA)2F{XC|Mo# zE=uV?=hYU$sCOi>abi+ckMh;yYH7zRN}q05I1qMu_K)vczY9Z+IZp1eJv+1bAJerv WmhCm{+qMCn!{F)a=d#Wzp$Py<VP*{g diff --git a/htdocs/public/symbols/icons/50-2.png b/htdocs/public/symbols/icons/50-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/51-1.png b/htdocs/public/symbols/icons/51-1.png deleted file mode 100755 index 2885b1727bc189ce28891680efa1041daf7af971..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 346 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTTO+DW-xJAp!yC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`*JY5_^EKc_ZpB80S<dCVk-Rqv+`Bo+Kc$`fXzvYQ{ixR^0 z>JkzpCeDy#Xz<x|bITzXhC~MU!gp($6zduV8BLzn+<Lt4HD`&#&&wyLSM_*_O}lAZ z?ft22dohnVuY;O+G`I4>ZNlp~rj`o$=)82EZTjJeknSqB`EPibV`F8mu70yY^<RT; zsrwc0W*=eZ_j6}oRn(P`VT+Md`_&VhwcywL>e5pwH*SXC*yz}ND5a{8`@$N>M6O@i hRn3p;R@q%+VX!aa4UJJYa{>hogQu&X%Q~loCII;;drSZT diff --git a/htdocs/public/symbols/icons/51-2.png b/htdocs/public/symbols/icons/51-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/52-1.png b/htdocs/public/symbols/icons/52-1.png deleted file mode 100755 index 2febcd239483778bfccddbffcecc48ddca657f18..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 318 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTRQM^vZcMxc;niEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0tPZ!4!i_>$15Aq&1;ILWjH(B4>G&w}_@ZHY*>kIjtd%W(r z+&O;3sQib4Z>Zq~n;o3F3=UhL%)A^D=rONij_kgEzQ%@w75lzz>0e;X#CTv^oTA_x zcXnx4^R4wQoegVmRLo`e+-5Yx;tJzUmOl>{*xY*`$Zr=A)~<T`PJSH!?ayMOYaZ<T zvr2#WgxbhzhwuBkBR&Qx3tZm!#)<VwaA>nx*WyUY=lY9|c-`^8<n#pSVg^rFKbLh* G2~7ZY@O4fA diff --git a/htdocs/public/symbols/icons/52-2.png b/htdocs/public/symbols/icons/52-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/53-1.png b/htdocs/public/symbols/icons/53-1.png deleted file mode 100755 index 31406b4b787f36bec01c1f20ff8ce835d55c992a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 331 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTS*N=BeB$SBDY*N775{M_8syb=cIqSVBa)D(sC z%#sWRcTeAd@J2pyprXy5E{-7<r+X(K6g{lK<GjCeF59!0Q)ad*N4nd#EGy(OiOG=@ z6Psk{$#5gj{ZoPFX@*N8cdq>uPd0I3_OjRE*ZgwpF_V98=jOY2?07TZ)jwK#%{XJh z_O`ic+B?ssD#S#0Tcv(@@;9!TyV+}QrTmNvY5i|^77IK%p>$)%j6KX7W?p_(`hMS~ z1DtmYPin?5dOx-5UGC-p=@^cvKax+E=vYtH6<+n-^2PI0M$&c9L%)AxX0Bn_$QJkV U_eSoIK<6`fy85}Sb4q9e0CAptrvLx| diff --git a/htdocs/public/symbols/icons/53-2.png b/htdocs/public/symbols/icons/53-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/54-1.png b/htdocs/public/symbols/icons/54-1.png deleted file mode 100755 index c244d84389d105328c01be0972f0789259c3a007..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 281 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTRw^A(4a6+j`$64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3`PZ!4!i_=RdTk{<-;Be+Wm1}kB_xuHGcJj&I@>;_6v&xID zU0rzcOh$%|FP1!~d^i{?j=r&FiMgD%UgW`6HSzL!hWx@;)LfHtw2o#oF}w_FWtnBa z+3YhX=efiFmksVTIFuVtFmL|9_>#It)2TjHZ_^`h*Pn@B9hRbYWZx|9(tV5zT?|uM T*T??{I)=g1)z4*}Q$iB}O1WMT diff --git a/htdocs/public/symbols/icons/54-2.png b/htdocs/public/symbols/icons/54-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/55-1.png b/htdocs/public/symbols/icons/55-1.png deleted file mode 100755 index 3e72b3c515c2394eaf6878339a7feca4af8addf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 270 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTTG`~k<Q=0G9I64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3yPZ!4!i_>c-2l6#2@Hkr^%KY=x?~dpDE&k_&>kSmU^7wwc zD%8IA&{AP!n6OrMPLe2thhp(_!KA-=@20R{ytnM$Iw7^Gw!tOqHBL)B@cNMQjq#kl zq)IX4l?rplRIY?0`x#EX;rjKT>(xq@lMyqcl!N2Xdd%hjeoXOh;nLd?Ko>B0y85}S Ib4q9e0I#}RLjV8( diff --git a/htdocs/public/symbols/icons/55-2.png b/htdocs/public/symbols/icons/55-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/56-1.png b/htdocs/public/symbols/icons/56-1.png deleted file mode 100755 index 537faabd8da10a1ffa2b30feedb3d671ca95f1bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 354 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTTG^&h9gXFwsz64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF48o-U3d7N>iI9fg<`Ik@}mKl$&@zhqzew)_(F(a?k2Vx}cd zn9w3RiGg9F+X7~dAJ4tR7#o)K=g&1t%Ika0#i8O`CQ@@!*UCle^Q|S0aUD)eEVVo* zvp25cJ~ij{gQ-#9V%U$znz%D+Y;)vqdChKky^c}qd%IljwFKEYNne+{#%~t8cWcl3 zv=>U>H<?8`gl%{2vfb9Gx<WqoMrlX>!{yxPH_l+I75Z4F_vFPj`FUa4>{hIudsMD1 sd{CqO_=#$yP;t+{6aNZb@9$ykk}H`#BVo!$psyG_UHx3vIVCg!00aVqjQ{`u diff --git a/htdocs/public/symbols/icons/56-2.png b/htdocs/public/symbols/icons/56-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/57-1.png b/htdocs/public/symbols/icons/57-1.png deleted file mode 100755 index a8324072a3e51974849979fbb716cc92549376ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 317 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTT0_|xrv$AChTC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`9JzX3_EKV;Cj^=AN;Mpwr-9GZy&A8*gBe-5R``p%XZ4hNY z&g$jFe)6|sqsq76#$As$@Z9reu-GTMyZQ9njlz@fgk`2$yU2$5GF<8^$n(x}d$RV{ z(TgV!)@`>~Z~9r~zM`1O0>!frKf0u`f6Vn)-(c}VLnHihjB|W+o7XC-^`0F;LXXaC zm;9c;&w(NNf#0%k$~tRQI1N?uH-v^R{vzhh^#AYN_!SNwUpG!-$pt!?!PC{xWt~$( F69Cz;bAJE; diff --git a/htdocs/public/symbols/icons/57-2.png b/htdocs/public/symbols/icons/57-2.png deleted file mode 100755 index 148ef50a59fadbbae0879edba48a594a19a60d67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*FLK}dk!XP}T|iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afMr;B5V#p$b)5Aq&R;9-`%(!1wB$C(tl6;l?utbB0QhS^eY zlA&kB={5Ui3Gq5k&9QjZyZPpWeHw+VEoRfb=dx`oVw~9MV!V2mZXa*g{WOaUx(iq) zNM1R^uw1*Qx>oo=FvCB_55*s9w34*hg)T1c5q!!v-CD2f=dF@jpzREvu6{1-oD!M< Dez91! diff --git a/htdocs/public/symbols/icons/58-1.png b/htdocs/public/symbols/icons/58-1.png deleted file mode 100755 index 76793e577ac62bc971af8606cccde31ed4e5ce68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTTWigS(JM4*sliEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0oPZ!4!i_@(^2L+oAcqZ@gWBz;4r)2rLCpL$zUMZIr2xZhh z-~1?IQ*wh!gc;CvKP}x-52pBjiSk&L!tm;3`9`iI@1_eMdDkd&r&C<GM436DS@lBb zJ0Bs>Rc9Gf4o+52>amc`+)=!#Tw<Q$+#Bbw?c4q9O1~;&=TY5~I{oXD?L1C-%2j)_ zeAB-t{@^RmZ$^dR8;@)ijy=qzD=q&c`LD}H>%RBl1=adTWsmQ<J@0g$ht}DbA|0;f z*RJQ>F}W-H{-=sXUXk~YiL1^gZ;$tvWbON`)D`x~hO3sLH2V9bmcx^hfxcw$boFyt I=akR{08~hh4FCWD diff --git a/htdocs/public/symbols/icons/58-2.png b/htdocs/public/symbols/icons/58-2.png deleted file mode 100755 index 330114382a8d71be56d66e8ce802860833e9d005..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*F5h;!Y{hd?3864!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3KPZ!4!i_=Rddy5@V;9%xl|9yYtd6U?etL0sy&GP0bC~|FB zp^})!rm^d>wuHd~u3T=B9ap@L7+VN`G_5gz?&HGRVa2W-mOORl7A=QcZ>#nkySwXN z<4@B=;lg_ZC-*%#*c`aztRug<<%vrc&4+cr=yyK&z^Z=#Cu31!zU7t)(P}_9FnGH9 KxvX<aXaWEMdRu(} diff --git a/htdocs/public/symbols/icons/59-1.png b/htdocs/public/symbols/icons/59-1.png deleted file mode 100755 index fde1341883cecc957c825353b9cde13453c13474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 357 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTRM&&R-3OMpU>C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`bJzX3_EKcv8d|I&CfX79Cim?3TusK3b(pwl+AB3F=+_Kq{ z;h;c{+VqTLo0VU0pOmT+Xf=2L>Xh|6ClpF`e>=?*9^@0iI^|KlWC)|+sz}bzX|6LJ zXFvGD+#LHg^vxXCxx9IbQ7j5V>0;_@uk1`{sJq!{*b}XNTxC+igby6fJjQO_hZawF z{^7d)$Z=)1mG9>Bmj>_WJ+pCrmGz6&{@i!3e7^Z|^DE6}eX+KE{|{~4b^1>9Ls6xP x$7bz)+|+COxqC;-hq?RHzsqcAkvE)Z?(DsF|KB}#7Xm%T;OXk;vd$@?2>=0ch~)qP diff --git a/htdocs/public/symbols/icons/59-2.png b/htdocs/public/symbols/icons/59-2.png deleted file mode 100755 index 86e8b06f4ed3190a33203b8f954b6d53fa3bfa73..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 412 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*D_^UZC#=|CaL64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aRvrP7Ec$)5R21GC!e0!Y{1iIU%eu&R%ERM=fY)6STbC#R>{3T zcthgExg51!9NZKBwaXNpW7xATT#V)L5C3VNOb#p?&Td-rH&uwiL-p%dyW44!3NKdO zG?-TTaB@KSncj+7zZ_?XYcVtMo&VaY(DRu?=J~0e*GjKmVqjL_YFZk*ASL%ueCgp? zb}AeW`~0qlo<3ivz>xRiSfvi{4<)7eV+&Sax*c)em-+pl@4w5<rTx7h7jZl@(QQyG z5NR=#eRS3Hs?(o<I~&p-PvV-i@YhY9qH`azzkQ!}jBB-D{^`fl?_6A^!PV;7v}@a0 zE6x+H&3idB@3(q7u}qj>WLmxN>(8}veEly48R{5|tPi~Z(%=UQGzL#sKbLh*2~7Y1 CD5MAg diff --git a/htdocs/public/symbols/icons/60-1.png b/htdocs/public/symbols/icons/60-1.png deleted file mode 100755 index fc326d3d5b38ffbfb5756a35ffcff248f572728f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 269 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTRsd;JWjT%eF-iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afkr;B5V#p$P$&vG>=2(+Xx`d)8jd+T+LY>umz=L->Do!5zV z1>w9ec*XV}na`7BoSQIPz=gdgebc!meV0^Ee&nkXQn=lJooP>t#ndI|-b}m0zGPC? z3&p0Y3|lU(^ds5EC!)m`?0M>))Nh<`!hC*>@P_^WXO?{r&+fUh;HVPN0Sun5elF{r G5}E+98eEA0 diff --git a/htdocs/public/symbols/icons/60-2.png b/htdocs/public/symbols/icons/60-2.png deleted file mode 100755 index 217f9ef55b020b136b39b68d78f9d074070fcdd8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 234 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*FbE^C6q3ZRf=iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afLr;B5V#p&cf|Nq-FTP38V{5gN%z=03{|JS>*F*R^bKO(up z(co|aqgc(P^o{~SZe~G-n+he)9YzOOye7Y4s*!rg=(jmS!Ob|1xr22v8xJ=#Ltwu0 V>stZl+kmDsc)I$ztaD0e0svZ^MU?;m diff --git a/htdocs/public/symbols/icons/61-1.png b/htdocs/public/symbols/icons/61-1.png deleted file mode 100755 index 227c9f0f41782487a4f257b1c366566f6cbb0a49..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTS{kY&bKSD=t&iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$z?9Qh6z@UWCC*D-JZ_Fw;m;639xcch#ZR!n!> zv?(r9_~<r<r!V^bdY|svb7yCqr~y--0^67Kk@?z_uDriHDaF&7>A{6<_Sd%FoNlaB zt*cs{tfsJVHs8F%4eNdX+?*a<^H8P1=KqZRuaov?HtJt~yoqt!RKB-K``*@lRpS54 Z(zkWj?4p3Y^*{$Pc)I$ztaD0e0st%3XrcfB diff --git a/htdocs/public/symbols/icons/61-2.png b/htdocs/public/symbols/icons/61-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/62-1.png b/htdocs/public/symbols/icons/62-1.png deleted file mode 100755 index 7919b1508e492799e62b893d3700fe0c3c15f2b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTTS9>2_vW}uK{iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0}PZ!4!i_>Q(9~3;Sz{Ao%WwK47cBW$O5}w^G*Olh&n0xl{ zgA+V8kNiy*H$Fb1*uv4U?uM`UTYlC{(?pyWeBH8iA5+1ORBi8o<5{e$zrIV;Pq@jK zbMqLJDua>4x3dcpqSwxDWjLDdaw(thHw$O+VyQci9b1GdHfd;j7_|o<R`<O8QNXXX zq^Ms%{06s1=XK?v*ALex%I*{UvTcv}v(kIBU+86aPx8($Dn8Hr@QTM)ez*6wj}Bjb b|A#T$&G7LYlS}zPPcV48`njxgN@xNAhns!* diff --git a/htdocs/public/symbols/icons/62-1.svg b/htdocs/public/symbols/icons/62-1.svg deleted file mode 100755 index 6ca9118..0000000 --- a/htdocs/public/symbols/icons/62-1.svg +++ /dev/null @@ -1,141 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:osb="http://www.openswatchbook.org/uri/2009/osb" - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - id="svg3406" - version="1.1" - inkscape:version="0.91 r13725" - width="20" - height="20" - viewBox="0 0 20 20" - sodipodi:docname="62-1.svg" - enable-background="new"> - <metadata - id="metadata3412"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs3410"> - <linearGradient - id="linearGradient4149" - osb:paint="solid"> - <stop - style="stop-color:#000000;stop-opacity:1;" - offset="0" - id="stop4151" /> - </linearGradient> - </defs> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview3408" - showgrid="false" - inkscape:object-paths="true" - inkscape:object-nodes="true" - inkscape:zoom="45.95" - inkscape:cx="4.6898803" - inkscape:cy="9.3630291" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="layer2" /> - <g - inkscape:groupmode="layer" - id="layer2" - inkscape:label="Layer 1" - style="display:inline"> - <path - style="fill:#b3b3b3;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:0.8;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 2.4693829,10.743841 4.4511829,-5.1943307 4.8966272,0.021763 3.156422,5.1642207" - id="path4376" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccc" /> - <path - style="fill:#ff0000;fill-opacity:1;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 2.4693829,10.743841 -1.8600249,2.030914 -0.0217628,1.741023 1.4145811,1.196953 4.9619151,1.08814 6.0718176,-0.02176 4.940152,-1.153428 1.414581,-1.305767 -0.0029,-3.587369 z" - id="path4370" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cccccccccc" /> - <path - style="fill:none;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 9.3580451,16.792292 -0.02181,-1.362477 0,0" - id="path4378" - inkscape:connector-curvature="0" /> - <path - style="fill:none;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:0.8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 8.1397624,5.5598044 4.43e-5,7.7524236" - id="path4374" - inkscape:connector-curvature="0" /> - <path - style="opacity:1;fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1.107;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="path4334-4" - sodipodi:type="arc" - sodipodi:cx="4.8639832" - sodipodi:cy="16.213278" - sodipodi:rx="1.7530049" - sodipodi:ry="1.7856489" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - sodipodi:open="true" - d="M 3.1109782,16.213278 A 1.7530049,1.7856489 0 0 1 4.8635625,14.427629 1.7530049,1.7856489 0 0 1 6.6169879,16.212421 1.7530049,1.7856489 0 0 1 4.8652452,17.998926 1.7530049,1.7856489 0 0 1 3.1109791,16.214992" /> - <path - style="opacity:1;fill:#666666;fill-opacity:1;stroke:#000000;stroke-width:1.107;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="path4334-4-4" - sodipodi:type="arc" - sodipodi:cx="15.081611" - sodipodi:cy="16.16975" - sodipodi:rx="1.7530049" - sodipodi:ry="1.7856489" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - sodipodi:open="true" - d="m 13.328606,16.16975 a 1.7530049,1.7856489 0 0 1 1.752584,-1.785649 1.7530049,1.7856489 0 0 1 1.753425,1.784792 1.7530049,1.7856489 0 0 1 -1.751742,1.786506 1.7530049,1.7856489 0 0 1 -1.754266,-1.783935" /> - <path - style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#1a1a1a;stroke-width:0.40162328;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="path4380" - sodipodi:type="arc" - sodipodi:cx="1.5112727" - sodipodi:cy="11.812865" - sodipodi:rx="0.84983104" - sodipodi:ry="0.8436057" - sodipodi:start="2.3268943" - sodipodi:end="5.4319826" - d="M 0.92821389,12.426604 A 0.84983104,0.8436057 0 0 1 0.88246619,11.245375 0.84983104,0.8436057 0 0 1 2.0713785,11.178412 L 1.5112727,11.812865 Z" /> - <path - style="opacity:1;fill:#ffff00;fill-opacity:1;stroke:#1a1a1a;stroke-width:0.50709417;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="path4380-4" - sodipodi:type="arc" - sodipodi:cx="5.4738126" - sodipodi:cy="20.904537" - sodipodi:rx="1.1014514" - sodipodi:ry="1.1388382" - sodipodi:start="2.288325" - sodipodi:end="5.4377386" - d="m 4.7495811,21.762575 a 1.1014514,1.1388382 0 0 1 -0.3560156,-1.080423 1.1014514,1.1388382 0 0 1 0.729113,-0.857034 1.1014514,1.1388382 0 0 1 1.0818337,0.227264 l -0.7306996,0.852155 z" - transform="matrix(0.85691816,-0.51545249,0.70172322,0.71244966,0,0)" /> - </g> -</svg> diff --git a/htdocs/public/symbols/icons/62-2.png b/htdocs/public/symbols/icons/62-2.png deleted file mode 100755 index 0f2bf5b36e9e8fb6087009cecac20c696cefa5d0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*Dx%gw;4UO*wq64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiAg}PZ!4!i_^(}{{OdU=1NF$5q4ny|KC`tc&5jt9#>vr&siH+ zq&9t!47}^=VIRW3O#B3ci1Y!De%7Ev44P(a_qdynG+Zocu$?V5dnx1LFLKIhJ$to) P<}!G?`njxgN@xNAkPk$A diff --git a/htdocs/public/symbols/icons/63-1.png b/htdocs/public/symbols/icons/63-1.png deleted file mode 100755 index 476e3121d349491ac9b059324c840544eab62a05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 455 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTS<Oh;G!5ulJ{iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI0FNtzNd?0h{fsN$)^hs8}PWu8?S3S!<*--*_eAIS3oslt%Un3 z*(VIIlKU68Nbx9mv54(XC@Md9?d#`Plb*gcj}^J|H+-_vzYp!z<@G)3y|?%7^m#OW z^Q%d$VjJ={UOd=!kVhv`{!jW;i<&QPDz>f(H{xm)Zq%@UlILV`>{2)p_EF;Y^ttK{ zFaB3VT)Z)#SIuK}PkPbT=x!Cs6iya1>072AKAM%gw=29%C|&i@Sj<*lRPo++v68Sa z*XCL7$UgCP)sbDF9Niw;)_gj*PxN;3n@Ya0MRB1CH&=6il95kcvomP7qq&Aqu(`zb z*-DcYVi{UPPf1P^`S|Vbqokf)IT<ZhoL1Q<rhRwI?Nr=-LS%zhX>)pWu4dcU#<T_1 uGI{x4ngTf~x`#I(XL^y7|FiV_7iMq1BZ{^YUSt5nm%-E3&t;ucLK6T{_q5mm diff --git a/htdocs/public/symbols/icons/63-2.png b/htdocs/public/symbols/icons/63-2.png deleted file mode 100755 index 6a6d597fb43208a79cff06b4722550777b98b4bf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 365 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*FHdbQaT3!so>iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f15PZ!4!i_^Wq2L+EPaKz{wuU<Co%Ht(-mx%4(cGy;d>6Pm7 z9^(e)H|w0v^xS^Y#L9on`o*_kjXWunhH~qSsxRmGmD1Q`6H>xso~<m|xq$IRQ%ivs zyLZ&V8P+P_dM`z9bP{`~8sxZ7I;Fg^YaX}Rlg;9RyDzd{*m$$$LQS_+3D?=u+|?)5 zUU~Rxtm&Gozbi!WLiBP2N7MT*ca^?7JQQ?{{nRHSC&2QM?Zw~D<NaTzzc1=6zu?bk z&oJFe*|=BZrSZkAsI#FNYi4Eh`o8|d6ghqE`p@DWrsWsidN*$edXT}>)z4*}Q$iB} DuLFvD diff --git a/htdocs/public/symbols/icons/64-1.png b/htdocs/public/symbols/icons/64-1.png deleted file mode 100755 index d37e76f70eac706a3a940c5a687cb6283de7acf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTR!OVi(Lmw`f(C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^_=JY5_^EKXmYe6aAS0*}jl<CScE(cQsJn#z9CTO4$&Tgpx_ zzWMXt_}kItFPc~~wnp_%yJubgrgwIk^n<@&5B2)ZsACj&mMM&CWjd|N>|AbW@?rbQ zqdOQ&8*209Sp68g0tMKLSfw-?q&ozkzbfXvb3pio$36M<=&W$1YkxN@G?-1?_RyLu ztl%oE!<GE|{ZrLuiyUEIzCT#NSaLDL&*VAhUG<LbNY2i3oZ)jwAh2Rf`8B6smlWru zZE6&8d_CvbuQLgicUjG=*0nKpIbTrD%-9&i^k;wSFGlvtc$RCeDT+WpGI+ZBxvX<a GXaWEv!HHr3 diff --git a/htdocs/public/symbols/icons/64-2.png b/htdocs/public/symbols/icons/64-2.png deleted file mode 100755 index 655d57f257b45d238bb6dac46366730bd89179d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 398 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*F1bbZO`8laG5iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0yPZ!4!i_@)>FXkRL;BlGX;xjqEY-$zD`H6jry$b7v{-(`+ z?XKOr=<yQ<Mm3#>6~~h&xwzk&xX*Lnwxtg)zUtcFtfG>b^Xh)c$r~)+rysxJGF4@w z_2l%8OD}9l_myT}kl1rBZlnB-bFZ|XZdrUz%vAdAg_9xrtu+QGV>>c#Ot?7lyqrXD zSon&+6MHo)^j}n|9Q2*MukYk^tLrz<&sm-QuyE1igHxLC-0qCKv35e4hyBC*rPC^B z@)Ui}m(Y3ppvL9jlOhwdV^v(|ZeOtJoqK4y%EzgvI3}leD(=emJ#hc;|E0Tn!lpIN pWywrAw9sGaXz9N#`wE}dGv2EHQ7}uL)dm;>44$rjF6*2UngBvzs%`)P diff --git a/htdocs/public/symbols/icons/65-1.png b/htdocs/public/symbols/icons/65-1.png deleted file mode 100755 index 4b4bf358c9adbf1b064b5ae362faf1ea583f8442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 332 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTTKxvlQ@qd+0a64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3to-U3d7N?g^KFfR9fTPuZvESqDw3l{otzPQvOOvhA*vj!> zRp>;e<T@UkIH}!Q^&JH>%5Hq`=8Jhz_VQffuDJO0>XsS7>{m{1zH}<Db*YhBCu_`} zkYmM{PQ>o0ILW#3YObx+g&iv|@or!Zn7XHN>ZaNRgEMv#EroYHdSkz~G+RHHdf)B) z&~ZtHir1H=f?hmqojLFHRu)xdoR%r9)AYR3U8+}c;o1F)ngu0CkGMR|pUfORfAfpz V6ZO9)-vGLw!PC{xWt~$(6973JfL8zj diff --git a/htdocs/public/symbols/icons/65-2.png b/htdocs/public/symbols/icons/65-2.png deleted file mode 100755 index 29c4b7d9070add1d70e1ead7fd4ba957e542fdcc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*FXx+g>1E})QPiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8aflr;B5V#p$ELj$91}Jl;p--~PAXkl)4r@?etrX_;r695OwG z-53tBnE51?D_!lG@aLGLz=ng;mJa-dA34Kv6{GTF4P(VUE-jS#KJz_m<G)Lj4=6N; pomE(^EgluRc<+OQ2lMxTWQjk~STDDQb0*M222WQ%mvv4FO#pR3Qtto& diff --git a/htdocs/public/symbols/icons/66-1.png b/htdocs/public/symbols/icons/66-1.png deleted file mode 100755 index 2dce183c93c0a998bfcd4dfe7f332dff1662503c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 273 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTT4#%zw4pMgS>C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`}o-U3d7N@UHcI0bN;9=Q*ME>RMKa=-)-ZPnZps8`ioHr|H zUP#@}$ZQhi*lem};CU&j`ds0LsP4*nk_#fG9WL6Z&R14pXG@6=6bfZIFZ6w4oa>6; zc`Y|Kz7v;;YA$v^)7|pgVGr*rq0i>awWi(JbhDcM+yDIrIt5J5o>P@KZK>4-I)cH| L)z4*}Q$iB}`IKH9 diff --git a/htdocs/public/symbols/icons/66-2.png b/htdocs/public/symbols/icons/66-2.png deleted file mode 100755 index 4bc23cf550880f04a6d6b9d01ffb017d27fad852..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 407 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*DZvz61AH9#TB64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF6Ao-U3d7N_S<J~;810*71toVRVt*CvStP1cRzmRqa-|KN#! z&$6`iy$U}x{V$wdHJ9VULwhqu6DfwZ<`Yi;Gv%9eAoH%@>Sv#WP9N^yb*X(m!y2i` zPY%fsR%%q9-?wZLckj1{>IodXErX8qv@>Z~O=|t<%6lSzW5r#|c#dZ?B)#<OdOcH0 zUwG*<<ZSHqmAZBH?c&@IF~w`7v(}WXd@4Bq*At6PkC<hO67E`jJG{A)U9Yx^<H6Qn z7tdFJ`*Gg+z<cTBgX)>5s^eJh@k)lDE-H207n`wnXWr(#^fw2BUT$A?Kc~yTIBll1 x6tC-b{*vDbp00m6cSp?n->&LtQ6N;qaO;l1oShe2<bgrK;OXk;vd$@?2>@l+q|yKY diff --git a/htdocs/public/symbols/icons/67-1.png b/htdocs/public/symbols/icons/67-1.png deleted file mode 100755 index 548fb93b2b207a7d1974e3793146587a788405ff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDTTa$l97Era&Rd64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF60o-U3d7N@UHJ}B61z{3*mv+Lo@Esv%M+*-i9yyb$|pC$87 zD|bj3_@q@F)juB@HDC3nN@1GmoS5f~X<@a8=j~(k*cA0)-oBk0M->|KPIzpZHF@j5 z9kJ;jSR2HI7>$Fw5*a-<uDi^%SiEqKg5d?;pT#d69bRewvap=;Wvhv7iSs;R+Y9qw zu48z2e!A&C&ADedYvU|59p@!iPmU;Cpz|nd`{KZVtVI@`TesyU{Qp1mUQS%>rj}oq R3V=>$@O1TaS?83{1OO}#d&B?$ diff --git a/htdocs/public/symbols/icons/67-2.png b/htdocs/public/symbols/icons/67-2.png deleted file mode 100755 index 2fa7f60047c2cc274f2e999db47042105a3effcf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 372 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y{kfH3<Ge9B964!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3*o-U3d7N?g69~3;Sz%zM=pY!~Cs;|H7@=HJHzp3w6#vP{C zXBY20ox`l+9kEd5&*zwBtEHc>;V+CyTAsifBk=Q`*S_7$9=u*;maZ$UKdo1Gh1^%O z6TNJOYz@pw6H}!9_cAfO3u$;9W7IJB2;ZB%YXh#{@O;1CDqHd!+oBB{c27E<R_&?G zaO@^)w3%A>*<Z{X0xm@FIJZgQKy$(3TN~?^F?`7O=|3uQ+w-m7DltXr`)^7o?lV(% zXJ(&bbGv=xJQabxR?H_}-na0)J428??wYEjkk`~Di<CTt&SmZKx4FA`HUG{Z(}4bD N@O1TaS?83{1OPWPkhlN< diff --git a/htdocs/public/symbols/icons/68-1.png b/htdocs/public/symbols/icons/68-1.png deleted file mode 100755 index 9a99f2851e16323e5c5174321002f9a79ae4d79b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 276 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;wBkylN2cVE-iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afIr;B5V#p$<`5Aq&z;9)u5(Rb<c(q3=LeX~4#4>v3Gi}+2j z`H_&R>YZJEeUhwJ`XeKy+n44{uUsLZ%r2<dAk{82C+^{P=3AFUHayQ)Uy*V){Vm(U z=yrXXgli$S77>yAx9$77V)uzzx2}4J-#+}G?}3$)x2}(mOx-g7M|^i(a=qp}dbu9x O4hBzGKbLh*2~7ZeuwbYF diff --git a/htdocs/public/symbols/icons/68-2.png b/htdocs/public/symbols/icons/68-2.png deleted file mode 100755 index 8e31f43a854ea60f6e2d0340979c15dd3946a3be..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 409 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*FP>c<cVkTH@at`Q~9`MJ5Nc_j?aMX8A;sVNHO znI#zt?w-B@;f;La3=E8no-U3d7N?g^Iymu&0uRe=z4XQEeW}IDtVt8+?JC*AuOqhN z_IcURbqAFdJ0<%%9@xL$B+o4)@I#o1(IwaPis`5N=UJ=0b@p>R#O{3RHk+wLL~LC^ z!1ar^$>KF`j#hWpSBn^J6f`#HN|iA)Johs}?9@6A5q;&bB?bHQKpGn^EDPLwKRDKT zc3<tW`pXXjt{a$lO?j$y^63q=Yu0tej2*AG`WvmBfB8+GPhYOG|H+f758pmme&E8v zudDADH_x;ezbe0Ua`5$|6Ith*=3H5J_rLFnyN~X^a*kzAU$N)$yHj(z4`k*&Ua9v( xgwY`9!|8jy#_w}(bOlcjJX76#Ml+~_`QBU={Z+kPRlpEq@O1TaS?83{1OOu7qTm1k diff --git a/htdocs/public/symbols/icons/69-1.png b/htdocs/public/symbols/icons/69-1.png deleted file mode 100755 index d60450fd28667e5e773dc9a42c5116fad1d4f39e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 376 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=GNwh~-GEhje#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H{7lr;B5V#p$KN2L)Rcc<$Wb^Iy>_w&tYRj<7?MtG>wzuza2K zS<jfSGtK;@REvt6u;8RA*7aMC&iQldh<Mp4<<4uYrkat>mz^g?UHKzx&dNSPZLiWS zgCwaA4n~K`O3H^1EAQrsujzN@xwh3u$|vFaffEsTqc+FbZrkE}lp$ebg7#NsFWYMo z2Nm1?@vRe+^b}idqZYY3%`MGx?+n2fi3hQ>xBiGbx`z3dMy<($u8J!Rtg$A_zg3<X zu_?0scvOBdDpmN~EB!xv+0UC9-pyGgwp6fpiTnLeezSkP&b1M=*=pWqW@NcY;CvC# OuMD29elF{r5}E)x%!u;< diff --git a/htdocs/public/symbols/icons/69-2.png b/htdocs/public/symbols/icons/69-2.png deleted file mode 100755 index f6fab0f13f258e57cedbf1d7cca908aa95972024..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 308 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*DpSK$i1E})QPiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0XPZ!4!i_>o>Y!p0fz{AWKzs$2ca*E&*L!th}wGTqi=uI!3 zacJ2&ub>}#Ya^WwF{|8_-G40Zn(d98fS~X0;S(7(k_#OJgift>@DymV3V$*saRVD? zZKa+J!-Br6&N*#2uT9Z4eK6nZuB^)LU6+%8d6`JGToqCLIj@p4c#YF0^S4r4?rt}W vZMHpdxAMt`w;k?``_m50FJ|&%VA#Xh@-|-0dK-r^(47pPu6{1-oD!M<`{!%R diff --git a/htdocs/public/symbols/icons/70-1.png b/htdocs/public/symbols/icons/70-1.png deleted file mode 100755 index 3576fa91f69f6a7edf05f9b10acbe91820768d8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=mqJCfeNuZEqiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0APZ!4!i_=RdUo31>5NNU2ahG4&I_1Oi-YtdG8rHs0uD71e z9?~(%Kyv2J#^%)ge91W~^LX4Bon8?5Zu@4(#djD5l2UEcgW?Ycs7v4OpZRh=i`;zi z<gM>23ue5yx2|HM-qp*oXD@zZFwoyTqwE4pO@peoT+GQ=O=7+d#yYb+wkRuk?vU+a zJ+Gbet+Mfas<vpqnBLkc*O@h|JfC#@3kftU4c`4+)bZDBh6$}PCk}PqyxDYKC4QgX y9>I{zV_$sUXk~o8w(HKJwS`lwe@U~;_2siZ`o7zr-BkzZHwI5vKbLh*2~7Y4VTi*3 diff --git a/htdocs/public/symbols/icons/70-2.png b/htdocs/public/symbols/icons/70-2.png deleted file mode 100755 index cc3488904a5c5c57c06ca98a6b2956c902c206ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 399 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*F9va!^*XFwsz64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF5_o-U3d7N_S<KG=IyfyX8OLfK)#EKlzJYEcWse!r-?;hgkn z!kRBzJx-(@xG}HMcNdRQ!Uy@;3?i%!zKZj|MaxLMo}%}C>&cA0z1uh2GbDY|F??Ve zzU1`VImw)Tu6MOfuSdomIr>CPdhWqlQx`Ys`8WCPc_+%_rI+yGrv2xdjYS0yY~6N$ z`zOvGz1i%Knrr&97uM?QgVyDEPrtavSM^%yW_Q={2eaQ#cd5^OY`yoockQy3hi)dH zOx03QyB_yMvFFL`K%?V-IPWukRy92EY`*8)guA+Ivr4o6zDoD_cZe%B>U_+a1wU_v pi``MEy!PX?k{PqJkn8gQ++V^C4whIl?F9w_gQu&X%Q~loCIE*<q5J>< diff --git a/htdocs/public/symbols/icons/71-1.png b/htdocs/public/symbols/icons/71-1.png deleted file mode 100755 index f372c554e042dae568086d3c1d18c035038db56d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 263 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=m(P{%ZaiEZ7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJh`NKwA0i(`nz>9do(xeh4sxTs&cog%4!d)~^(s(EFBAHumgl}vV5 zdK`H!upxfN3|@wFD!e^w(!`3qn!mDziG6smp^^1{ukB)1A=ZigU7QSSRqTH18ust{ zw59pM)_cakl7(5#zTI@my{E<e>=$e7-6PVekIi0KZQ9QPw3@-w)z4*}Q$iB}p!Zim diff --git a/htdocs/public/symbols/icons/71-2.png b/htdocs/public/symbols/icons/71-2.png deleted file mode 100755 index 0df603172423e780482af59399528a7a577d5897..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 287 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z*FfQ1$)xxj-Sw64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4hPZ!4!i_=Rd1@awG;BeOb_|N>a&)wr`hqNT_{xFRGH6hI5 z(iVmZD#s-Mue_$ak}><RPj^leN7~uP<-eJ9btfEQSoHrb+syQ{Db~$%n`Zufb>YyA zbo0k$FBDfK&rpfERHtHl;`i&G4<e5|c5Pbx;Y-hIPoo_*ZgZD3O|M?i9lUmPxaVuN buwC3TiwbS|TXp(@PGazM^>bP0l+XkKqNHo9 diff --git a/htdocs/public/symbols/icons/72-1.png b/htdocs/public/symbols/icons/72-1.png deleted file mode 100755 index dbd286935393791a158bd932b431893fea0ca973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 352 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;=hnwJ(G@y`ViEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0EPZ!4!i_=RdU*tWkz~eH1vCreWG_hwZH~GzIJ)b7~o%xcK zQ25#|k;D%#&)Kmj8b9tg-MBp?|GvJV!Q!_I^cMOl?WzwIXmm4uJC*;TCd*3e{_lM$ zP6sbp8h*RQx#LesXxMg>jE7GS+D(xTH4!*B?_$th)$j>-*Qe|6OiHyqW+723(E6-Q ztuHOpu_(2jiK~^#;o_xk#zSdoFJsHDKbHHRZ$6>@^MN47Y5MUFhtr-nt~q`4X+iv| qgRho<csc+24_%JgH$5BQKUP=wPSjtdq^t$>6N9I#pUXO@geCwP%!bGS diff --git a/htdocs/public/symbols/icons/72-2.png b/htdocs/public/symbols/icons/72-2.png deleted file mode 100755 index f1b1e57928b5bcba1e5ce66891658ae3aa48e71c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 362 zcmeAS@N?(olHy`uVBq!ia0vp^0zfRt!3HF+tk*dLq}Y<Y-CY>|gW!U_%O?XxI14-? ziy0WWg+Z8+Vb&Z8pdfpRr>`sfeJ(C`K}%*OM<$?<WQl7;iF1B#Zfaf$gL6@8Vo7R> zLV0FMhJw4NZ$Nk>pEyv_B~KT}5R22j!Hz;L3OwAu|MOo_e-Qp?;`bE(sGNyMQ<pJ^ zNnbKyYEWTph|u($(DHgt(dHMed{dOgH%GFkn3gi|>nAN;6Pb`4ES6)lvYK0a)&3d2 zjQ=u^7aIo#c~9K8^fPD0%CpDczMgjDXv^02Rn04mKjx_&ZT%4HHF1ehdA<6|gb4Wu z9vuGy?<7Cmn1Ab=^Ip9jd5cWqzee<Am|kK(@M1@Bs@Y|YteUi~v+Y)&RG;KntY?(8 zSipAwH#_0xcg>N3X+?%PKJ{zk|9m)jTdMXWYi-%=TidQ&bq4y5!PC{xWt~$(699jy Bh}-}G diff --git a/htdocs/public/symbols/icons/73-1.png b/htdocs/public/symbols/icons/73-1.png deleted file mode 100755 index 2354f488479173396619914702e2fa381c2ce7ce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 297 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=;*ul(L2cVE-iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0<PZ!4!i_=RdU*v62;Bi@hBzKPcb;UK0?amd~DR?c_Smx`Y z$?JYwyhX*vjL~U1gF^P~2g}Z{waE9Fa5K^Ju=}0QDuQmO_QWwOcs_4q33(aFJ&#G` z^Rt}u%l9dpAKP!T$)Vx0+UEO`2mUqri3SxL7i@cBv~SZfjV1EBGah&Sjj8b4_T^4} lsPgo0=5-IRFy-~I?`^Lree!eZU7+I_JYD@<);T3K0RXYPYhVBX diff --git a/htdocs/public/symbols/icons/73-2.png b/htdocs/public/symbols/icons/73-2.png deleted file mode 100755 index 5cc39dd8e603fde9ae9d526873d7a7ce46327bf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yb(xR-}x<Dbx64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3qPZ!4!i_>c-2l5?I;Bb!K^!xr9<5Kx!KI#I!zml13mMjSp z+T&d0;jt(@UAsV}SlXpE@LWN~JM)fdqEB<S8f5t}SWWy;qMy^4B75RihVBMt??qpK z?Nd|T;V!{&qyJvdq#M;yD=KGyds0#Gs+ntw$UK#p-@Ww;#m~9Ve)IJ;>yWz%bOnQ_ LtDnm{r-UW|WRYGK diff --git a/htdocs/public/symbols/icons/74-1.png b/htdocs/public/symbols/icons/74-1.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/74-2.png b/htdocs/public/symbols/icons/74-2.png deleted file mode 100755 index 0ae51340cbda1e553868e147d304abc06470ca0e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 305 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<xQr}$Z69iWh8iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0{PZ!4!i_>!_UF1EYz~d}?rMGY9DW5w&C2IHGrv^JUyGU_1 zGCWRq@K6d4-RBo@uY+BhE&3mW=zgUc7gv9=Irzq|!s}*n_gzK?mDt}4CbPW1cmCy` zSnDvqX5P>P7N;~78%sC!)x9yd*m!h4fA^7o4)e1A$yqJj47%G^D(^}?YazDigYwGX sQ~%6NEqmVfy7@rb`LM`+@6-M=uvhG5<aJZ%20D_#)78&qol`;+0Bjd*LjV8( diff --git a/htdocs/public/symbols/icons/75-1.png b/htdocs/public/symbols/icons/75-1.png deleted file mode 100755 index 30bece8d49f0a8e964aca1ae35de78c8684314f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=K%rcb~6M;gKC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{OJzX3_EKV<-bg=M<0*~u_o0Z4xwASuu&GEl|Xj@a?vbpn_ z4Gv1A^Plc<zwhA`AMYfzSzp$(fnllgOTBX{hSq8Idd3q{Ht%TVKmTc+RYS<TWgC;Z z)70+Egeeqn`q-7Ny;ouDjG(Q?F+scL*jbix{(tyy;?j$L4dG#i39sr8KU&l2_A2?P zwOGS6H7|z#yFc&!IkY6SF06j}{Mw6wI$72-2a`WH6(4xD<oe_lb@q>Tu{%mmeQxp4 z=-8})!k*-mOPk;8-LHQVy>an=-=xGvMhrJUR$b2VdE}>C@&AC-*7S}ypOtc_zW?^; c?!=V+AqN?zJN0ah0D7Cj)78&qol`;+0EnlZVgLXD diff --git a/htdocs/public/symbols/icons/75-2.png b/htdocs/public/symbols/icons/75-2.png deleted file mode 100755 index eba53c6d14379fefc04bdf30ae500e072231fab5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 266 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y*-lpTr+<`)pC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`3o-U3d7N^$+J8~T`;PC$QfBt6g<4cV55?Y;1lNN2A($Xo| zz~CS>U*q*E&30{dgDpRjvXXZ)%zd-!{gl_yCwkgs8Ju`el-jgQ_}!YnJ9pu%_Su1Z z$`U5uNL<?V&Q$Bo9i_KHo9`#4hyPp`!+S1qPTh0veHLE4Y%xy+fwnVvy85}Sb4q9e E0G%ORy#N3J diff --git a/htdocs/public/symbols/icons/76-1.png b/htdocs/public/symbols/icons/76-1.png deleted file mode 100755 index 74b3e85a9722e0e18e2df915ab1884f2ef6aec3b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=KRf(o<4p2z4#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?lgr;B5V#p$_|FY>l12)NvjTjOTG)-`H@TGWN8KQXs&{uZ!w zF=?MX<7i4+S%kwG9tOdi;=M2UHl9tM9B^mWwQtWhSDGBKYA|SD_U_)#&tf+k<ZR^F z99CZ2!1CgJntaD2#jc0jew}=OR*x;(O@?csSXw!!(3Tq;wEwN<oVOtI`)!u3=WLd& zlA6-|`|^rvm5i{h=R7$N39V~+#3HnO)`Ip06E~zBzI5O9G`mLL(K9ZO?&h`4<ZO^R c|5JD01Uav)NUKa^peGnSUHx3vIVCg!0HYXzf&c&j diff --git a/htdocs/public/symbols/icons/76-2.png b/htdocs/public/symbols/icons/76-2.png deleted file mode 100755 index 1d090821055880f13d748edd83fc59c0a0eb3841..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 389 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yTh;`RXBcPCEiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f1BPZ!4!i_>!_U!2;kAmXAgx7u+2jV{ebvrW@BPGMNva{j`( zH|;yLv^~v=``j<iY&3tLDYAxP#=ADznlHE3-+jV&zjHA|Pe{dQjkcpN!sj$5?%sWJ zrY%2%=W*?bm#1GvUz-0sA@uX^!xNtc`jkIrXWtxukKf_Tk2lj|!{ZtQHz+Z0pUhLH zy5qJdo8&L6J+^OBJo~rIxT3LZpQ@U(Qm&)fg^yg>;{S3D8us2e@1M{payhv0@&Wht zQ>F`Cw|RB4W_63m<<l~|!q~5w$+`Vv`Mdea{mkU|>mPqy&z-u#OFV1xto>69R&q#Q fYTmZvLp{SX%jthM*x76YdYr-2)z4*}Q$iB}Q;wfD diff --git a/htdocs/public/symbols/icons/77-1.png b/htdocs/public/symbols/icons/77-1.png deleted file mode 100755 index a00e2c4d0a9879e2ccb8296d05514a7dbceda49a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 296 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=qNmrMl7EnmC#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?l5r;B5V#p$_|4)V4d@HoHi%CvJYOJr&LrTiz-?)auYO9cU6 z@7a&Mm%8P}-3buNdgR8~V3)K~&gR)Hr^_<)cbjuEFeL9iW8AEicSe4L$wMRe<UQs6 z=XVA;8EYJ#Aiy)jde45FGZPkUI~UYZ|E1U9WJ`vARcVd#{#wVZh4m93#Hy^*<H}4b ioSJ(u*^lF17W=!iwu_y3R=o$hjlt8^&t;ucLK6U8gk}-| diff --git a/htdocs/public/symbols/icons/77-2.png b/htdocs/public/symbols/icons/77-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/78-1.png b/htdocs/public/symbols/icons/78-1.png deleted file mode 100755 index bc352a0b20bc4bed3e8c7f10d22768252ff917bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 320 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=a#N>KDkdcxlt`Q~9`MJ5Nc_j?aMX8A;sVNHO znI#zt?w-B@;f;LaKt(G&T^vI!PWJ|16lGTA;NExJBYl(c)tM#BzAR3c4}I{&yD@`9 zL1p1ukKg4w*CJi-PiB3$=EWNA3x5<U?K`)~XR!24a<{FoeX-^Qx5x85o@4W5j07k3 zA98Jq^E<#Il4;%CW4_kt)87jWAB-9j#WxkZEjd`>5%-vxVJn-P!4-vUw(NXs?Jg6S zHP1Za=iSOy?^0g!BK6a=#Azn-7r9Gq*xh;5x+mXSUdzyxnR0ttW`{q}%?zHdelF{r G5}E)}NpPqD diff --git a/htdocs/public/symbols/icons/78-2.png b/htdocs/public/symbols/icons/78-2.png deleted file mode 100755 index b49eaefba74ff79ab700bc3f55a9ce5af3cf18aa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yzfa)KaETE8NiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8aftr;B5V#p$aP0=W(-@Hh+e@1DCd&g{1UJKq+seb3szUX+>? zBs3>@6XT>!EII7k8gv@x)o*N{R5$Nq{j?ce6GD@(@GEb4rL3|wn!#!A=3CDNFI})n p-FEz|)vn0GLpQeCtS)O|SBp45!~gE3IY8?eJYD@<);T3K0RT$|RL}qb diff --git a/htdocs/public/symbols/icons/79-1.png b/htdocs/public/symbols/icons/79-1.png deleted file mode 100755 index 1bcf0061934f3c20b2a7f963445798dd752e9ad8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 371 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=am7Bc(JD`wciEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f1TPZ!4!i_=pl9n3v!z~ef<EAO%L?yj(c>jlRG+)n6R3H<y= zF6Q(!Wy?;6My9_%J*4D4=d2eO=l4{x^icUYVb6|px9UD_dZlq9a<Pl}rT2R}7v7r{ zALU_vZj-pTNkej7?_JSb=WK6WTf+b2f2M!({A+?MnfC3l=xQtw?n+$o^POt1%K-(3 zltYiSC-^+uev!@7_mTRYsT&jBl^@UgKC#NpXwm^zJ=a&a`F8X7hS=vU>&*D>?rzRh zQFt@O>R3O6w93)KkKPVl%PO5TZwVB<Y%V`%nlNjpxWYN-lkywbf4*#BQ_=!@lfl!~ K&t;ucLK6UENsoL0 diff --git a/htdocs/public/symbols/icons/79-2.png b/htdocs/public/symbols/icons/79-2.png deleted file mode 100755 index 2cc4e5417557de1eca35c5885dd22d992ce5c31d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yj_=K&uKt@WIxJHyX=jZ08=9Mrw7o{eaq^2m8 zXO?6rxO@5rgg5eu0~KBKba4!^IDK}~!CV$a9@qKdFV)<$6jd*{sikgE-LUq6;q7y$ z6*o@~ENgc;r5eA<;8@MRUgxJAf(xa53aqRorYj!U!I#dmf}eMT-qrIW{Ga`dKOKCa z?!zhcGM{DtL3>?Ar8#exv;2Ni%h|5d|8Jj;Yr^K*H@{_$<W5O9lDCm6S6#8N&2r&} zwdVHqPwz~<5WRhWdG+gA*Q?iM$NinNEh7K!tyNn749{QBbV{`04`O4g@O;qFz;WT= z&$Uj?g|b(!3(aoY72>V^ZQH5{(L1v;{FtUKy<_^3`OVXp2Np8>^8tOx;OXk;vd$@? F2>_24i^u=~ diff --git a/htdocs/public/symbols/icons/80-1.png b/htdocs/public/symbols/icons/80-1.png deleted file mode 100755 index f037b7fcdc5c86989a3476f1c4127b0bf85ab027..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 367 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=)?w#wuGk`*pC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{$JzX3_EKV;CKFHf_z+<yGZ}RfU*1iXpmkbYaoDrJ$*6O-@ zfr7#+C7roK$G_dQvUCzEe^V$XF!7X6(78{$;@|xDDOZq)SKhn3<4WeU^ELO5PF&`~ z;Ina#n1j!ne`eP=iXGoNBeg7wq4Vnb_ceYD4Pw1{erb~pkA^J2;5ad9RjJdaz(1=> z|87=ih|pl*P&j<Q<igSP;wXko3tZi~7qF#vrZKH%dpfWDgSkNNMa3He+a64N&~Zt2 z_PXOTvQr-2E(`UDf4{497ssRWNt=$^#r;2X_x_EC%W4@n&-{G3VCIW1pcffDUHx3v IIVCg!0HkA+F#rGn diff --git a/htdocs/public/symbols/icons/80-2.png b/htdocs/public/symbols/icons/80-2.png deleted file mode 100755 index a736df9c42c956e7dae85ce86bb034a1fdbb6341..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 279 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yj^`hKuFM&dmC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^|9o-U3d7N?g6JMtY+;LtuI|5N?{mcO0mrR}LRgH0aoN$|+X z$ZS<%aCoxEzPn$CiD8#<%z2K24UTfWJ8F5?y!m!H<tSf+PVD`g2b`iT7%W*PD9y1| zR9CvSyl<U>;6*8c;+HS2ZvQ#Y-l)x@dpD}G_ta}q#hs$d)F(!{7ptEWH~g&M>=L~$ Q8R!%SPgg&ebxsLQ0BBTQi2wiq diff --git a/htdocs/public/symbols/icons/81-1.png b/htdocs/public/symbols/icons/81-1.png deleted file mode 100755 index 43753804d2ba69f699ed0b59058545d8304a71b2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 345 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=Skm?7ANkAdV64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4uo-U3d7N?g^_U1dRz~j=s>bw2S%_`R`V;PQ>t=Odz<YJO$ z$LGf!5}y5*(~BwU=sopEo?EWOz7XwhV2J&$>Y2QMsdsYx*C_?N7!xE)5*l6_=FEBd ztW<&fg89aEUAr50yFZ<olz8*%hB==W&WehBGNT}Dn?s33ZTqZ8=}oRHYV~uL{G9Ya zWcM;7Kh9?dU%hyrQZDXsUE<d_=^5{;<$l<)U);!dDKE1pM5tim<*P^4s>=MCyi=BQ jE_onzvf<YL{h!&x{KGeIpCS<m^bCWitDnm{r-UW|)Yyc* diff --git a/htdocs/public/symbols/icons/81-2.png b/htdocs/public/symbols/icons/81-2.png deleted file mode 100755 index 304182be1e7a5eecc623070d9481e056c335be69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<w>&jb74IY1%F64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4|o-U3d7N?g6I|?09;OMsg`~UQdi*@SN4!SJgwwx=OA>`Tg zNP#mpxn~xOLs7=NS6tRX2l+3mH>vFX!I*bPZoYKG@m}?I?_QP6%Qlxd6lzsYzLeN| z!dc~p!yo;hCw&&YI(oKij%f6f$Xe};jS=fv%-&9SQo8u}!oI#Ng$pt76*kD9_O;&I z99j}{;gzL}&YQEv0`KhQVgfFQ-Lnih{Z`>>Si!O2e1~vjeh-$}D!VQwa^>AC|M<T6 aA5(yKc!OBnt7xDn7(8A5T-G@yGywqW1%5&R diff --git a/htdocs/public/symbols/icons/82-1.png b/htdocs/public/symbols/icons/82-1.png deleted file mode 100755 index 588818dc9411621f04da72fd130470739af4e7b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<Hd!X4=3!so>iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8aflr;B5V#p$J!1Gx?ua5($E_`812-yCPJ&6>~FZ{6dvbb^Sm zqEa7=XN5dtQTdi9zYorzA-mZ*^iS8jpr<8kc37-X*>L-JT>QF#x$LVC-)cO6GjHME qV|ic7xFzTLN;vm2&iHq%u!+0svMukatHB_TGI+ZBxvX<aXaWG-j#rfc diff --git a/htdocs/public/symbols/icons/82-2.png b/htdocs/public/symbols/icons/82-2.png deleted file mode 100755 index a3eac8a3f56e953553e649d355f48db10f66e72b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y{d6lGNH&95j#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H=PX)5S5w;`H6g)_eyPc${VBr&({EUaGFrd}_H@`>HsJib@p) zCW{uA9ZX9$iG8`SX2t!-lP@o6>e&2nhjq3t+Xat~lzV~|-uG6eAGyF7|2|0dT+I`{ jI+YoF4|H_CDc{GigHdO5i*oE!pj8Z>u6{1-oD!M<;hIu3 diff --git a/htdocs/public/symbols/icons/83-1.png b/htdocs/public/symbols/icons/83-1.png deleted file mode 100755 index 2b870affa4cd624357597de967fabd603c186b8a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=ynrwV)8c;~G#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?lLr;B5V#p$_|0{I#gc$}jT=YHXTSI>Md#Gb`igl$)gkJGQT z*?~fCu0fMHmT&8nQ2EN~5cJYxRlOSLOAo2W4BZ(k3#`I*?<|U!ym4|r(CyzlB6muD zd83oQAxcj{`8?;Ocg3+wZz(4g>+ij|$7n^s>%Dc;&F!0)AK=){=ak<#ulj**aK`fe jj^ZrY4fCcpNi+Ga@#tUTHZ$Wa&~*%+u6{1-oD!M<BDZ9f diff --git a/htdocs/public/symbols/icons/83-2.png b/htdocs/public/symbols/icons/83-2.png deleted file mode 100755 index 5ffb898d9662cb78e8d8d2d2126ea4e48ae9cfd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 293 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yN%CbtWOrVftiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afqr;B5V#p$DyVz~}E@U$3v=U?G|Wq8YYYyZ6GpO<PUM`#Bg zbWnIwuO=vvuEgoE{*ms!Dfdky)@xUmdhU4p%Y%if<L$PMF=BjvFY30t?>o8t-NttR zuemnoJ!>B&^!?O*Rx@#$xrX=gM?cP+d|vp+Lo%Q9P`q5`sy}}<mWOs(v!4rIEz&>h gg+;I3LH$naytUm-+m`%026PyMr>mdKI;Vst06}SMi2wiq diff --git a/htdocs/public/symbols/icons/84-1.png b/htdocs/public/symbols/icons/84-1.png deleted file mode 100755 index ac19132f2a620076c53747448698782185680f0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 349 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=iXy>Bsn}I@-C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`5JzX3_EKbjzbdk5&K)`waYM;aT>6*$D3<Hig2qsMXx2f;< zMJ7*==!=t;T*Kb{s8PSo;87Lp7Z!1H-n!)-S@O5<{+IC&XXax#Y%=GU?KZ=F#s=0G zyWgMr&Ec!ceBxx_DLLNv3tn2!IL^<+dGlQKq%GY#KYx33txM5Vd(vV1X5Fk=4vfqA zyv(oKTAZ;c{NSxJC2{2}$3HV1H4cU@v1;|&oyh!LFz@cf31NnZ?l=bPoGSXGd-RIk o2Hm~oze{e4HN4sXBifcx<4L0HfzMOk0X@Xv>FVdQ&MBb@0RI1lzyJUM diff --git a/htdocs/public/symbols/icons/84-2.png b/htdocs/public/symbols/icons/84-2.png deleted file mode 100755 index fe9dd5d742296290cc5281f01e1c9bb8f2453135..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 327 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yt!O|V)LxDn)C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{~JzX3_EKV;CzRi0?foJpT+ZuCM&h4Ddnf9qRV26n5Q@LqM zjalk`QW~7RD)*;zst7X3E#9E2Qd#-!s7m2SC;v$-lY-UP#LVBzu;IedQ_GXzZEfAW zwRFp^^XY|0lROk|E>@BkJRHU7JZXE1hlWAKdc&EG{vWuf)gOtJuJkE;wP?q_&1Ok| z{)b<*lb)pHcf;wfNkZx_`A0hzU7Ve<`~O7&_ac>d{hCDu>O8VF%4`kdReWt*ZLU}{ Q1D(#`>FVdQ&MBb@0DqEood5s; diff --git a/htdocs/public/symbols/icons/85-1.png b/htdocs/public/symbols/icons/85-1.png deleted file mode 100755 index 2b874b734dadee76f5ed49500c8879cdd50206de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=?=!BhZpMXM=C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^|7JzX3_EKa|jbei{&1CPsm<yD;S*EdBoZDCAp5%SP}{dn2j zhYd|(obsJAI}9$JxOApMZ<}Wlx0TtW@2tyOJou9L_?g!AJeXv=hiQ_^(xWzOzdp2D zaYf1V%o`iVGp%RWWdAjg>oioDeL~G3lJTecbeqGijprDRX596x+kEAj)`i1;TR7g@ zPciA>^bs;_UBu?|;N-`9Z+{-LO8*~zFRp;OMkI~l68BC;pi>z<UHx3vIVCg!0CPQZ ANB{r; diff --git a/htdocs/public/symbols/icons/85-2.png b/htdocs/public/symbols/icons/85-2.png deleted file mode 100755 index 5657beefed36435e3992f9e499449173a0569e58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 261 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yd>}jt9kAXsxC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{Yo-U3d7N^$+d-5Gn;Ar``ao?_enN>j@N_rNYf)i4O8W<)_ zd#`$?L^s9KyWsaO);$XZ5BD|JMC~jSKKxSf#cbV@Z!--Tgf^J5F=W3!**WpD*CL1K zM<l0o?dDlkn98-#cE_&Hh0zv!kEQke{=rx~O)&SL=f7P*iy1s!{an^LB{Ts5a1vTJ diff --git a/htdocs/public/symbols/icons/86-1.png b/htdocs/public/symbols/icons/86-1.png deleted file mode 100755 index 990682cf3e3c6e48afcf3a1d1d96cde6fa99c16b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 329 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=?k?CgRnLr`Q64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4&o-U3d7N?g^zAM<Gz|&&hceSAZTN3vcN9oMQs6FAgf7V$3 z_xs|P(x%9=X}97*23yIuIWr`$GNiHX+%1~%w|e8snNRpUw@i9+Gk@c8yLaCz$|fk3 zHUtO>DM);3V4gSU=esb+&COi#t5x=f%}<|xZ11dR8Xr{VZe)mK>tLUzy5T|ozr@G| z!G9P9^yby+gs)!XuvN1qdqEJF8mIq0qn62BIp?0cF`cnnTUpJZ=K1Z5wg04ZNpml4 SbG-p{JcFmJpUXO@geCxnDS4Lw diff --git a/htdocs/public/symbols/icons/86-2.png b/htdocs/public/symbols/icons/86-2.png deleted file mode 100755 index e325cd800db9e41f5c3488258ec47f896fece82a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 325 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<xS$NnBsPoR)wiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f1APZ!4!i_=SkFLJsl@_0WrTV=d+^0_6(PwnKouKjv<ph;nt z$<|&cA@h$fXKSRUtnzu(XxlSEMtmw~;HlM*dRF=<b=jPld}-pIM3I@r8b)t#zKoeD zc}Ch?b#>lq?))bjsfrbzPN|dT-kHO<Mb|S`XabApkNov{`X3%Re3D!|x0rc>TlDoh zp7|Z6k8-9R)(D^cHRxB9@u8hH-TYyW{AYjv6t}VeGub7tKKVdu4WrDr=Oy!|=x75S O&fw|l=d#Wzp$Pz8&v**} diff --git a/htdocs/public/symbols/icons/87-1.png b/htdocs/public/symbols/icons/87-1.png deleted file mode 100755 index 967246f286f112c89ab3faf446a351b880795a8b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 366 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;yzbR|z7NC%1iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0wPZ!4!i_=Sk9fb}naKy~nvn>3R+V5pgd>_twpTqCwnq)Os zv)$!pW2``n%A&QK?$2f5OY5}z$eFcZVcl1!Q<3VOllaXT%37x<NZ)wlwD-`HX6x07 zdABsOCO!FFev(6LpGs)X8nzTB>BcuTw+s4id^+=Ds;F}D0`ny|md%WrC|l-sU%El* z=qm2+d)~F8@jfPB64LfPle`vp&`<xY@z+G5o6>QHik+cla%cELHr#z2JZ-;Ip}}dP z*^h3{V>|g><Lb?82H!s)d}ST@{b75mRO<26N%hx%GJC!{Z+%U#Knv(Y22WQ%mvv4F FO#lhmk4OLj diff --git a/htdocs/public/symbols/icons/87-2.png b/htdocs/public/symbols/icons/87-2.png deleted file mode 100755 index bdefa72a7ace4aeb8794e5d64ef49a17fed16474..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y-PILdq89*V)64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF64o-U3d7N_S19~5jh;F(<O^Els#Tls)gr1F`NeUZoiZdqt* zsQBY$cZ#O^#8rp<mb~4=^5IhJo4hQ>?_0Kg=wR9E@+DLtGnhX^eMyYx4c2b|4a>K# zO8p+1`9^Aq$b|maml(R7zim8pclFa>_7aPg%Q>DLD*woFq_X6;ljQXHW)mSLX|=kd zuS*{2_g>nl>@cHW<8r=qbt;$UVcpA@t@bnSN(_2^arzFRUl|xYUHx3vIVCg!0B>b< AVgLXD diff --git a/htdocs/public/symbols/icons/88-1.png b/htdocs/public/symbols/icons/88-1.png deleted file mode 100755 index 417eb64bc3777f42b32f1f0379f9c8e2cca66dce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<7$EK=}VL&0t64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3Fo-U3d7N@UHKFHf_Ai$EoI7E2fx}#GbSY<FzchIj3I{(a( zNo__=Md75UQ)});_om)_=4HDh!rX8|3741Yk^0`{Yz?{IlXA1mZ*1qa&8^+E*Qc-d z9N&!Twi7wlJ9Ke=jq)wyl-S07rh5HGX-yHPMkmGdlK$5|OYfH4?-dZPwp~$<;jhsT ziEBI?Y9n0syjpna;|hOallTQmo1OOjPp@K*on6NFIPCfrpj#O{UHx3vIVCg!06&0k ArvLx| diff --git a/htdocs/public/symbols/icons/88-2.png b/htdocs/public/symbols/icons/88-2.png deleted file mode 100755 index 32ff405e906ebcb7c24bdc8b351de40a9a7f03fa..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 322 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<w<f8I(lU7(O;iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0lPZ!4!i_>!_I|?-@aJbs{nSb&tTee3yeG%*8852x5DoQsV z7w1^PB*M^RZ}&2B+s{kC|F7v&EJ{juIWCeTqPgywFZYJUr`pWIyPA}fQ~U$&ES<}j zsd^zluFAFG*}X&NF~T3`nLKXqyfX1h<^xw9ft3Q5j#t<c)wxVwBu#C+Gdb$1S@#bU z_CF6p4~2hV)ZR9!$FoQ4_KK*2-9Im$`)qdT?B6u$%FD0omg-BI$3$=@NF4;an!(f6 K&t;ucLK6TK7<Cx{ diff --git a/htdocs/public/symbols/icons/89-1.png b/htdocs/public/symbols/icons/89-1.png deleted file mode 100755 index 9e52ef517898574c7da37213567f232f1c00adbf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 275 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=o<>MtEbAUpUC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{!o-U3d7N@sPcI0bN;9=SRm+$|7*Y&mMs}xpbtX0^kE;Qri zrG^Pdyk4GA6nvQO*gRk57u#%Uh68t;I{OY>HkN30c4V*KFCOcB`CO`!<26g~g_+M+ zYY1>REM2allC3gdh1(%WWJPyg!n`BjnC}Vq?D<)2`a|u<Tl2K7jEB12pVdza%>_Dx N!PC{xWt~$(696H{U)ulx diff --git a/htdocs/public/symbols/icons/89-2.png b/htdocs/public/symbols/icons/89-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/90-1.png b/htdocs/public/symbols/icons/90-1.png deleted file mode 100755 index bad1b738c2757c4e7f06e7afb57a07ee66aa23b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 333 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<N>%YJ6Gl4>qC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^`PJzX3_EKV<-9LU#fz~ek$J@4@IyuF*J_@8@RtJ4@@*yXa+ z!&hqe%F8Fr{I8X$dtQ1dcKg)d)%I^1C*5h#eYyEKquOn+<wogi81oZWo_T#<rE<~} zmTOsBAB9vH&Nv#hvn}R&p&h|}vTkN)o`vq;u%y|w2H9`44LYlgHY{{KH_?Z2&xHk3 z+dF>cE}1Pg=S$*$kH>m{*zdnN6tv1BetN9O$0~2b)Y%i+Oz+KK?f00Y#7f)$_)l(| XReLt<xfuNg=m7>#S3j3^P6<r_1CD_< diff --git a/htdocs/public/symbols/icons/90-2.png b/htdocs/public/symbols/icons/90-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/91-1.png b/htdocs/public/symbols/icons/91-1.png deleted file mode 100755 index 4e56743e1227b9a4ada96c482e9ce28dc751f248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=&>e0#P7XpPOOI#yLobz*YQ}ap~oQqNuOHxx5 z$}>wc6x=<11Hv2m#DR)-c)B=-Se!l@e319B0?(e+yL{)Bh#EN=xou{XRE%x4Gd}-y z;sqflC87SPO%7&e-+uadW=xcpS~{y?iN~syOzFNC%k}^N*~iwmq}eL_$r`~2tUun{ zemnY}U-Zmh=NAlXJh?A->^vS87=Ac`we6_!*46_LXZ|SC&AIcTTH0c&Z1z14jjKVE zvXkeW;a@Do&y?t)btYCw)$rJYL(Kc<E2|i)u-SZIQaLOff5>QJ2*;_5mP~VRvee%` a#vi_5gW-}};(9<oFnGH9xvX<aXaWE?h<QN( diff --git a/htdocs/public/symbols/icons/91-2.png b/htdocs/public/symbols/icons/91-2.png deleted file mode 100755 index c1cefdfed647500ea591a9d25aee4a9b78752d8e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y#WOLdiTcD6+iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0HPZ!4!i_=RdS@W?da<tj^ZeMt1^O=?Hmp<=k&3@FkqHx+V zfgkb;>!uu<UEs&vP|sZAcY1ENoS&%l23HGKwUzI$H7=c@!nCU_A?oY|J%+jc3EKZ| zZB;rWGVy5Au3hG$DVuMudsn^N^Bn&vn<ct|aRMeEJcO<*fARfxO|;|iihnn+9Ppns t>vcsz!E{GM=D$~c_nDrY-eCWT*+JNGQD4M=XP_GyJYD@<);T3K0RTfka8dvO diff --git a/htdocs/public/symbols/icons/92-1.png b/htdocs/public/symbols/icons/92-1.png deleted file mode 100755 index a88ae2cb57c24b6b4f12ba9999ae7195ccb40268..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 264 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;)@BZ|UbAUpUC9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^_Oo-U3d7N^%v_U2+x<Z%}M_%HmN&XN-)9_|;{v8;W6lwb9r zs3&8C$}ZEjS<@IY^R{d~n6<S_E;RCv`H3&~-MiWP;v!|Fzxb%%KVtZOYsc}cbF)m2 z-Ehs;zB%{kHAxGG<MAJt$f!nt6%7*YXDBJ^<)6ysA|A$Xs0_55!PC{xWt~$(698)A BSHl1R diff --git a/htdocs/public/symbols/icons/92-2.png b/htdocs/public/symbols/icons/92-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/93-1.png b/htdocs/public/symbols/icons/93-1.png deleted file mode 100755 index 51244768f13981197b89ed17943ab23dec852ba2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=Qn(%FoJ3t}H64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4ko-U3d7N^%ve$9JWfv4qspjpzil6fVvyS!$;e9b@UgNB00 zQ<c+V$NCT7V3@n1|AKY~$NM8{yOSDr9>`PTzhvIYzF__8-C1n!Yh%T?WZXGEsaUJz z{JHZ=N!sfByVH;DeQBR^HrVmhIklOrjo!x6K@(Em{|`L7zftAw&v=emKc&6zhlca3 zUR}JK{dk4&>x{st72lUFU^thyY8I>9;t$LzZR<booshp4=u!qxS3j3^P6<r_szr3c diff --git a/htdocs/public/symbols/icons/93-2.png b/htdocs/public/symbols/icons/93-2.png deleted file mode 100755 index dee7bb238f0b1cc57e6ca81f1016dbd165ed8928..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 285 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~y9~daPS!M)9H5Y7iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afmr;B5V#p$<`H}W0|;Bk2`5WL~g@=x<sKUee_2zwppTJurk zlV{@zaTQkHX?~kZ(tqpRWZR<7XS-?Fvh#A)Qr~56xJ_cnFWOMudf#ltx=xj-eYY3` zG&W_5D-`BFXr1h$Av8nQC)KJpyLKhxJtdKo#Z{8WOz-~ZTar9och?c!ceCfeoLs@+ Yc`nh*Xivy%po17ZUHx3vIVCg!01dTb?*IS* diff --git a/htdocs/public/symbols/icons/94-1.png b/htdocs/public/symbols/icons/94-1.png deleted file mode 100755 index 4575d4e1c35e92c5de151d3a637755b6789b1632..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 347 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=wc(k15a-fi8iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f1HPZ!4!i_=>tofbS~z~eGMxX*Icv@H*&Flsh$nGp4@<F+8X zy2J_gHlAG>$CPbPuI7DrE{x~z1BRD#4u$z1_S5L{-^jfo=Qx9l!0+f5Q{E|0rM@z4 znw)s?kXph;lgxyh0*6-Iyv4<R{q)s^YqBl|)SbGK%v^NVxPwD6c2e|~AclzO*2}&c z-B*_VGFz2l%**lrE2Dd@!Qap2@>5>_VUzfEP_#Q>vsgUyu8p6?wcTI*I=8>*(dRAY m%4=hn+zg7-nSFg-5&O)HqP=T*T62KjVeoYIb6Mw<&;$T&<Ai7c diff --git a/htdocs/public/symbols/icons/94-2.png b/htdocs/public/symbols/icons/94-2.png deleted file mode 100755 index f4ea80a4648f6bf007a4544367b8e530cb5f6d9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 370 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<xavyTzyQJ|1yiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0oPZ!4!i_=RdUCcdfz~eH%$?x#D{zz4AjpQqm&T<RmRKH)( zlKtkKH-&9$?=cn@MwRy^O8TxW-i0;RYzMx6o;9s1E~4{O;Ek@sQGu5`)NK73_W3ii zCB-`a%I;Xj<(nLya46n5Z=M*Zlt)9J!^{t_w)^aEoo^MX<;?fc!s%JXTZfGJg5niS z#Vh7=6bDIqB{WGsSZ-%g%lXPVPiRKK*JZ{^V*YYoQxuO!olmUp+;^Pa>6o2zW$mN~ zHI~QwCmuU3@!#l@enVqcbV=R$%;1B6Pj5b0Ad|Ds_K11j+v&;)Wj0wrUov>Q`njxg HN@xNAY0QR+ diff --git a/htdocs/public/symbols/icons/95-1.png b/htdocs/public/symbols/icons/95-1.png deleted file mode 100755 index d1fcfe56ad72c0699caac980b028d2c088317f04..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=g<n(U$WT22_iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0nPZ!4!i_=RdJBl4q;Baod{(HX9^x}E;+{eTMe`g(^>e$5C z%QR{Fsvbu{#*2#PViAJxxo+xNKEI`BDQ;OeDazoKP4Z8hzO(o4$c4&Sx14O=s(6ic z>AXwpzh$+DvJ~y#yf1w7rkO4)Jgay=)ym&uZ1|+PV_MtGg4^*sEXw}YHa(ui!6Wfu u{hx1|j#t9eDqpehF1{sf{BnQUKc@A+S1XF1y2c4~C4;A{pUXO@geCwGF>ojV diff --git a/htdocs/public/symbols/icons/95-2.png b/htdocs/public/symbols/icons/95-2.png deleted file mode 100755 index 0339a3c42fd95f6bfb406f3ee220afeecd8743a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y_!n@Fl?LZ;P64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF3QPZ!4!i_>o>J90HR@Gz_Y{6GJ(=Y(~7yRR*_oR;RXFi>cf z$}z<W3lhI`RT!OfxMzAj_WdmFBPOaIRt;rM@(lZ`&xfkMm@Ry7iG}Sv)7+&#ude-M Yc=||1Ag7VD31~ipr>mdKI;Vst06f-Ba{vGU diff --git a/htdocs/public/symbols/icons/96-1.png b/htdocs/public/symbols/icons/96-1.png deleted file mode 100755 index f9084733c9f4bef00d7ae343aa049e87d33ff213..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 381 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX<VAFuQ0r$8ae64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF57o-U3d7N?g^zTJCRLBREV#LBe2^#Q_L409(41$F<7-aU7A zf2>UMO|K`eQjKjp-9IxhtDM}igN?!X@_vS+r&CWb1gxB{XzrPorWNNg@1E1Qzeb)j zW=>LPVr+ObGjpC*qReB(gp78F1wo7+^THg3-#5mxeY9S6Zt5qED@)5}GOV`f`)JYp zGW}Pn-umuqH~N=d$T~gmdeE)7Jta@)FrD#9<XJOe{dtAE-fN1NI!0MWpHNJ&|IW7a zckSDwVw?KS9n$%iu`YL4(pi5m<@{Zfl9WWANiGu3&-LS`*t~o%KA(Bpgtc#z=P7fo VIT&OvQ4RDkgQu&X%Q~loCIGG9lKcPw diff --git a/htdocs/public/symbols/icons/96-2.png b/htdocs/public/symbols/icons/96-2.png deleted file mode 100755 index 58a29620497e901cc1b3f0ce06987becfdfb8d8d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 310 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yR{QcFQu0SEl64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiF4ko-U3d7N?g^zRP>qfTN{<%@xMkm6t*<g|Gkobz$Mg&iX}c zCyiu;=J4k<yu0z}-R%8&4!0Nr><r%}Hn3D17k+Kwi_<x_;jxZPIqxJD+c)3$Y1#b= z`Em1^$zx&W)j~Fx=W$nUEcWkS<!~~|#%ZmI%b7z<iXy!lWuI%V7R%hj{dbO8#H)=p zt8aPFnGyQqqOI?7i6ha{zj{RHi*MU~|0nZ}T%o`#R*yCSUCQ9;>gTe~DWM4f6peKQ diff --git a/htdocs/public/symbols/icons/97-1.png b/htdocs/public/symbols/icons/97-1.png deleted file mode 100755 index 192b503d4654bc5e3198b9c1321bfe646914f390..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 312 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX;$LvHdRU7(O;iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f07PZ!4!i_=FZJMu9r@-QE-Js0=$L0z-`!NT9N--7}&7CPN> z)>UMk$)e77^BJGqog;6Vn6_1KSew~6*V1E_Smd?<)m6v1KhK=_WNTCUQaMgLp~<qM zUn&9u82enJzWeXiIQD*TuK4dFcgE@Gz6vwXVl2FTeL~4pP5vLtdwrKJ+1ozl{GZgh zYJO|lk`Mem<EvEYs`shua*o{jxI10f@7F)(PP@6QY_9R6DL}U}c)I$ztaD0e0sx1A Bb6Wra diff --git a/htdocs/public/symbols/icons/97-2.png b/htdocs/public/symbols/icons/97-2.png deleted file mode 100755 index 8ddf159848806235ec3d017e75ab7b87887b8f6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 252 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<yxLcz6AOQ4WsiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afFr;B5V#p$V&EQJmja4_rs{eRwTqS{9VfslEQyZ1FLN#?GY zEfmwDT(e%;kyV28@`BffZN6>VJ5Chw#tXfeV=Ggetdr4}qQf~yZEf@a@Eaa>k-OZO ouJ_;Y?2@~@K-l=!TFa}<npFl8zkDy`0PSP&boFyt=akR{0PE#YDgXcg diff --git a/htdocs/public/symbols/icons/98-1.png b/htdocs/public/symbols/icons/98-1.png deleted file mode 100755 index 99aaeaac0f633dc7c3440421703d482f37b64894..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=MN??N8AE1zAiEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afAr;B5V#p$P$1GyRuc$|el{!@Q#_q=qT{4T@prWeyAH10;s zYB|93!q>MdvR-k+*<7aEPgoCxt9%v?RW0*eRJxm4>b!DV&HNl;Q>h;da-<JL8f3{7 zyb-G1)+cpSG&4_f%2JMiNH6}kXB>}tPHN0KUf%Rp>HdEo?f9U^d-LZdM+4o!;OXk; Jvd$@?2>|P!Tz>!n diff --git a/htdocs/public/symbols/icons/98-2.png b/htdocs/public/symbols/icons/98-2.png deleted file mode 100755 index 9ed506b8b0dd865b75ba45380ec9d079977895bd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 337 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<x0Po{E~Bv44Q#5JPCIX^cyHLrxhxhOTUBsE2$ zJhLQ2!QIn0AiR-J9H?lgr;B5V#p$I%(R|GYJe#%8om#gsdxLV%>K@}t`Gje14;6KV zv@&z9XL@-SOt>TLd89W(ZI%w_B&&^DG4h8xWe+Ib^t9+;FvwZpy?W-0JzqB*O_<=4 zr~hn{Mkg=Bw4WO<J-?n--()h?&&Q|w(sSE&uZyRca5{YdS@hYCA!mt#P}pQ`!~3xh zA52eo5_^30%y~JHlc5jhXI!1J>ZknGS-D}k75CD0w{h&rw&t2=WufF=^HO2o@0ic~ auj_Y5yzNNJek~951cRrmpUXO@geCx-XMK$T diff --git a/htdocs/public/symbols/icons/99-1.png b/htdocs/public/symbols/icons/99-1.png deleted file mode 100755 index 3c0e000ba2e2541c01c313ae960021179f7e1eb8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~yDX=Mg==EfW}uK{iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8afWr;B5V#p$J!FY+Ex;BetTo_KoQ<#&&*zAP7ViCQ}8N21dE zbHbbr35&THIy|Z#nl$8GbluxrQhd~&K~^Mv!<sYa+ZO71-6}JkAlhJN9=h0$wd8EU z1j&Sqb&vnXGtSy(y=H+v`>bu;*_zCAH=NjY{t)x7<&Pem>-nfDec)W#3x$BNhj-uC ZFi(Hxb8t1gbPdo&44$rjF6*2UngC#EX9NHM diff --git a/htdocs/public/symbols/icons/99-2.png b/htdocs/public/symbols/icons/99-2.png deleted file mode 100755 index 417eee9c155752e092150b0793a6294b6dd79dd7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 382 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~7Z<y}`O^6E3ZRf=iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8f0uPZ!4!i_=pl-z_|%z|&%%cd1uy`$2EXGEPrjo1pXenC;E_ zW}ePu%iiFy+etg8IQDk2vBBE6JAb}=vnR7%bjAe^&6GzTWwRH=P1(J_iPN{U>H)XH z(iBA_$<`CC`^BzQ2)gV|ww`-IdsEZypxopO8tXS#yxCvvEY7gAW2)vX{izrK?cLtq zz4)K#uLMCUA4YpOH;0XG@?i|0j%-P-?XSyweddAh+j5;>vqP`eHq>oc@ycggwExc& zK~3F!e4=`_A+GaE4Hg7@y^B53uq=PI^{e?YQdT-`D;H)c$oWh=Y|{Jr{Qu)WS)VMK WDsbnl;(VZw89ZJ6T-G@yGywp36qW@5 diff --git a/htdocs/public/symbols/icons/Icon-set.gif b/htdocs/public/symbols/icons/Icon-set.gif deleted file mode 100755 index 5c33bf91d699fd6efb24e893ab64b1c64e9d201b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28767 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 diff --git a/htdocs/public/symbols/icons/dot.png b/htdocs/public/symbols/icons/dot.png deleted file mode 100755 index 0d77c340b05896966921ea47c2423b2a76ae35da..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~Cp(9!_=GNxXrPc}iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c#~r;B5V#p&cf|Nq-Ft2T5tIvMcrBpg&bapFWrsNpt-<FA=g zQ=k4nb?Vgrlb@J2xz)5?&=YunZ|~`jUf&RfLrgt_;TcNoKQe-r-C<zZwqNYs`J_Y1 QKyw*9UHx3vIVCg!0Qjs+tpET3 diff --git a/htdocs/public/symbols/icons/dotColor0.png b/htdocs/public/symbols/icons/dotColor0.png deleted file mode 100755 index faaba3d32c2218c0dce98fa8d8c35c051273e68a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 247 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~mng3Z!$!;7pMXM=C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^|5o-U3d7N_4%I>_5#z{7mLL-WS6$(wzTulO0TGQ^SfYx{@u zeMMf2PM8@-&A7tOkS*fnbi3~49N~)x4|C3X#w4L(`{5)PYe4F}f1(b|_AC_--ZP$C kdF_tL@$bLlE9D9p7PCowNLdiG6KEBKr>mdKI;Vst06^ALw*UYD diff --git a/htdocs/public/symbols/icons/dotColor1.png b/htdocs/public/symbols/icons/dotColor1.png deleted file mode 100755 index c52ccc7ddc9436361e94f0bc4542f79280daf3f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 229 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~mng3px5(XuA3!0=64!_l=ltB<)VvY~=c3falGGH1 z^30M91$R&1fbd2>aiAh!PZ!4!i_^(}{{OdUR&D5PbTZ)KNjRu>0tf;QY>{!zIkew{ zEr+r1Duc?|{}Yc$cz!)p&-CY@47cz<S0e);Sk#%w%Y5wO5}%!n41xKgve7eDK?XB; My85}Sb4q9e0Joe*g#Z8m diff --git a/htdocs/public/symbols/icons/dotColor2.png b/htdocs/public/symbols/icons/dotColor2.png deleted file mode 100755 index 61084ba3eb697adbd3bb5912ce11be5f3e786ff5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 226 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~mng59>Iv>#bD)r9iEBiObAE1aYF-J0b5UwyNotBh zd1gt5g1e`0KzJjcI8c$7r;B5V#p$<`4ssqa;9>S(T3!0hXIaf;1&*Whg;vey*V&MA zbJ?QqMSKQ3gr~6dr`_=3vXSCBEjQ!dya#9hycC<oxMjnP#(&}Kq)VjM3CSuXTq^*Y O%HZkh=d#Wzp$PzuQAaBP diff --git a/htdocs/public/symbols/icons/dotColor3.png b/htdocs/public/symbols/icons/dotColor3.png deleted file mode 100755 index 3571cbe9e405086c368b10e574f93e3285fd9048..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 227 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP~mng5fu-vMX?}0*+C9V-A&iT2ysd*&~&PAz-C8;S2 z<(VZJ3hti10pX2&;y^{-o-U3d7N_4%I>^PKz~Q|8h5GM9|1Ono6;RsavSl{2{0>jg z6Dt%}vNM<(c`lkh^X?e|Ryn3So8}z9EWBlAe%`{Fj11!XXBz%b{oKHqEg&kpY7J98 P&{zgfS3j3^P6<r_OoB&b diff --git a/htdocs/public/symbols/svgicons/100-1.svg b/htdocs/public/symbols/svgicons/100-1.svg deleted file mode 100755 index 4f44880..0000000 --- a/htdocs/public/symbols/svgicons/100-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3957"/> - <path d="m 2.3225454,23.562785 19.2338326,0 0,-11.58873 2.006407,0 L 12.025945,0.43721472 0.43721467,12.025945 l 1.91992393,0 z" id="path3961" inkscape:connector-curvature="0" fill="#ff0000" stroke="#000000" stroke-linejoin="round" stroke-width="0.874"/> - <text x="3.626" y="18.335" id="text4509" sodipodi:linespacing="125%" transform="scale(0.86944981,1.1501526)" fill="#e6e6e6" font-family="Sans" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="8.05"><tspan sodipodi:role="line" id="tspan4511" x="3.626" y="18.335">FIRE</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/100-2.svg b/htdocs/public/symbols/svgicons/100-2.svg deleted file mode 100755 index d65a428..0000000 --- a/htdocs/public/symbols/svgicons/100-2.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - <text x="1.773" y="8.688" id="text2985" sodipodi:linespacing="125%" font-family="Sans" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="9"><tspan sodipodi:role="line" id="tspan2987" x="1.773" y="8.688">D</tspan> - </text> - <text x="14.825" y="8.688" id="text2985-9" sodipodi:linespacing="125%" font-family="Sans" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="9"><tspan sodipodi:role="line" id="tspan2987-2" x="14.825" y="8.688">X</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/101-1.svg b/htdocs/public/symbols/svgicons/101-1.svg deleted file mode 100755 index a77b74a..0000000 --- a/htdocs/public/symbols/svgicons/101-1.svg +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="-0.258 -0.548 24.000001 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="101-1.svg"> - <defs - id="defs10" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview8" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-5.440678" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4206"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g4752" - transform="matrix(0.94457081,0,0,0.94457081,-48.338123,48.378111)"> - <path - d="m 60.945313,-47.661027 c 0.925776,0 1.674641,-0.747216 1.674641,-1.667339 0,-0.92766 -0.749101,-1.674641 -1.674641,-1.674641 -0.920122,0 -1.667339,0.747217 -1.667339,1.674641 0,0.920123 0.747217,1.667339 1.667339,1.667339 z" - id="path4198" - inkscape:connector-curvature="0" - style="fill:#231f20" /> - <path - d="m 73.362252,-42.848406 -1.770517,-0.338744 -1.030603,2.048249 c 0.167488,0.03863 0.340393,0.05701 0.517068,0.05701 1.098917,2.36e-4 2.01904,-0.746981 2.284052,-1.766512 z m -21.756674,3.458114 c 0,-1.358275 1.098681,-2.462375 2.456957,-2.462375 l 5.180575,0 0,-3.721242 c 0,-0.925776 0.747217,-1.672992 1.674642,-1.672992 0.925775,0 1.672992,0.747216 1.672992,1.672992 l 0,0.57596 2.468029,0.631318 c 0.430615,0.09941 0.706699,0.530024 0.609174,0.960639 -0.09752,0.437918 -0.530024,0.708584 -0.966293,0.61106 l -2.11091,-0.495161 0,1.437426 2.484518,0 6.79821,-7.033776 -0.202351,1.829408 3.347633,2.224925 c 0.552168,0.316601 0.752635,1.030602 0.437918,1.58277 -0.248522,0.441687 -0.743447,0.65511 -1.209162,0.568657 l -0.27043,-0.0497 c -0.322019,1.302917 -1.499851,2.263557 -2.898644,2.263557 -0.276084,0 -0.54463,-0.04052 -0.798806,-0.108596 l -2.535872,5.180575 0,7.107509 c 0,0.609174 -0.500578,1.104335 -1.109753,1.104335 -0.609174,0 -1.104335,-0.495161 -1.104335,-1.104335 l 0,-7.269578 -5.59635,0 -1.001157,1.713274 2.09442,4.992829 c 0.30553,0.535442 0.114014,1.207278 -0.414125,1.507154 -0.535443,0.303645 -1.207278,0.114014 -1.512808,-0.414126 l -2.444001,-5.763602 0,-1.834827 -1.093263,1.720813 0,5.348063 c 0,0.609174 -0.495161,1.104335 -1.104335,1.104335 -0.609175,0 -1.109753,-0.495161 -1.109753,-1.104335 l 0,-6.176315 0.914704,-1.431772 0,-4.843951 -0.909051,1.391255 0,4.032189 -1.748373,0 0,-4.074356 z" - id="path4200" - inkscape:connector-curvature="0" - style="fill:#231f20" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/101-2.svg b/htdocs/public/symbols/svgicons/101-2.svg deleted file mode 100755 index 27c2148..0000000 --- a/htdocs/public/symbols/svgicons/101-2.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3064"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <path inkscape:connector-curvature="0" id="path4305" d="m 21.887317,1035.9366 c -0.04771,0 -0.09492,0 -0.141903,0.01 -0.597417,0.034 -1.132448,0.2812 -1.450926,0.6765 -0.114029,0.1416 -0.356407,0.1856 -0.541427,0.098 -0.120747,-0.057 -0.186751,-0.1554 -0.186832,-0.2563 0,-0.054 0.01842,-0.1085 0.05808,-0.1576 0.470154,-0.5838 1.272944,-0.9406 2.162251,-0.9657 -0.07538,-1.9228 -2.096246,-3.4714 -4.60875,-3.5349 0.153647,0.3492 0.264017,0.7142 0.325154,1.0919 0.02671,0.1649 -0.126498,0.3152 -0.342209,0.3357 -0.0039,4e-4 -0.0077,3e-4 -0.01174,5e-4 -0.01238,0 -0.02486,0 -0.03704,0 -0.19576,0 -0.365416,-0.1116 -0.390113,-0.264 -0.06388,-0.3948 -0.187836,-0.7742 -0.364008,-1.1332 -0.403386,-0.8222 -1.081649,-1.5369 -1.94461,-2.0838 -0.117327,-0.074 -0.238033,-0.1454 -0.361917,-0.2135 -1.075092,-0.5898 -2.389908,-0.9346 -3.797595,-0.9346 -0.120263,0 -0.239924,0 -0.3589004,0.01 -0.6587147,0.028 -1.2965944,0.1304 -1.8964644,0.2993 -1.6054185,0.4524 -2.9383334,1.3778 -3.6691258,2.5956 0.096694,-0.01 0.1940307,-0.01 0.2920515,-0.01 1.0352724,0 2.0340235,0.2333 2.888257,0.6747 0.1124203,0.058 0.173075,0.1527 0.1731957,0.2492 8.04e-5,0.058 -0.0218,0.1168 -0.067493,0.1685 -0.1217117,0.1378 -0.3663014,0.1739 -0.546375,0.08 -0.7235926,-0.3738 -1.5699427,-0.5714 -2.4475854,-0.5714 -0.2474454,0 -0.4900641,0.015 -0.7264082,0.046 -0.068377,0.028 -0.1471319,0.041 -0.2269322,0.034 -0.027873,0.01 -0.055667,0.01 -0.083339,0.014 -1.9151274,0.357 -3.3410755,1.6796 -3.3410755,3.2525 0,4e-4 -4.022e-5,7e-4 -4.022e-5,0 6.8377e-4,2.0145 2.13666982,3.6474 4.77148832,3.6474 l 12.0025086,0 4.47638,0 c 1.249454,0 2.262645,-0.7746 2.262645,-1.7302 0,-0.788 -0.838548,-1.4292 -1.869194,-1.4292 z" fill="#b3b3b3" stroke="#808080" stroke-width="0.487"/> - <g id="g4307" transform="matrix(0.04105515,0,0,0.04105515,-0.19392772,1024.4556)"> - <path inkscape:connector-curvature="0" id="path4309" d="m 45.378,497.42 c -3.818,10.365 1.488,21.863 11.853,25.682 2.281,0.84 4.616,1.238 6.912,1.238 8.14,0 15.791,-5.008 18.769,-13.092 l 49.855,-135.322 -42.627,0 -44.762,121.494 z" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" id="path4311" d="m 181.378,497.42 c -3.818,10.365 1.488,21.863 11.853,25.682 2.281,0.84 4.616,1.238 6.912,1.238 8.14,0 15.791,-5.008 18.769,-13.092 l 49.855,-135.322 -42.627,0 -44.762,121.494 z" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" id="path4313" d="m 317.379,497.42 c -3.818,10.365 1.488,21.863 11.853,25.682 2.28,0.84 4.616,1.238 6.912,1.238 8.14,0 15.79,-5.008 18.769,-13.092 l 49.855,-135.322 -42.628,0 -44.761,121.494 z" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" id="path4315" d="m 498.139,375.926 -44.76,121.494 c -3.818,10.365 1.488,21.863 11.853,25.682 2.28,0.84 4.616,1.238 6.912,1.238 8.14,0 15.79,-5.008 18.769,-13.092 l 49.855,-135.322 -42.629,0 z" fill="#b3b3b3"/> - </g> - <circle id="circle4505" transform="matrix(0.98480773,-0.17364829,0.17364829,0.98480773,0,0)" r="1.219" cy="1026.49" cx="-174" fill="#80b3ff"/> - <circle id="circle4515" transform="matrix(0.98480773,-0.17364829,0.17364829,0.98480773,0,0)" r="1.219" cy="1029.18" cx="-175.93" fill="#80b3ff"/> - <circle id="circle4505-8" transform="matrix(0.98480773,-0.17364829,0.17364829,0.98480773,0,0)" r="1.219" cy="1027.47" cx="-168.42" fill="#80b3ff"/> - <circle id="circle4515-0" transform="matrix(0.98480773,-0.17364829,0.17364829,0.98480773,0,0)" r="1.219" cy="1030.17" cx="-170.34" fill="#80b3ff"/> - <circle id="circle4505-8-9" transform="matrix(0.98480773,-0.17364829,0.17364829,0.98480773,0,0)" r="1.219" cy="1028.42" cx="-163.01" fill="#80b3ff"/> - <circle id="circle4515-0-6" transform="matrix(0.98480773,-0.17364829,0.17364829,0.98480773,0,0)" r="1.219" cy="1031.12" cx="-164.94" fill="#80b3ff"/> - <text x="-0.156" y="1052.23" id="text3098" sodipodi:linespacing="125%" fill="#1a1a1a" font-family="Sans" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="7"><tspan sodipodi:role="line" id="tspan3100" x="-0.156" y="1052.23">SLEET</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/102-1.svg b/htdocs/public/symbols/svgicons/102-1.svg deleted file mode 100755 index 4816ec4..0000000 --- a/htdocs/public/symbols/svgicons/102-1.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata16"/> - <rect x="-16.834" y="8.951" height="5.149" width="16.834" id="rect6" transform="scale(-1,1)" fill="#ff0000"/> - <path inkscape:connector-curvature="0" d="m 17.262338,8.262819 0,6.38346 -10.0774435,0.0082 c 0.5913749,0.483155 0.9605805,1.149107 0.9557546,2.023167 l 10.0037429,-0.006 c 0.09583,-3.391009 4.906836,-3.379471 5.011375,-0.0196 0.722587,-0.0054 0.822818,-0.169504 0.829785,-0.835124 l 0,-2.54551 c 0.0091,-1.137564 0.151138,-0.386644 -0.690943,-2.543831 C 22.428158,8.4281362 22.667023,8.6406854 21.883322,8.5813386 L 17.262338,8.262819 Z m 2.001581,3.763825 -0.03988,-2.7121043 2.57251,0.1595355 c 0.468983,0.031418 0.472886,0.034362 0.638143,0.5783168 l 0.658084,1.754891 c 0.22108,0.538266 0.185892,0.696875 -0.418781,0.6182 l -3.410073,-0.398839 z m -19.25064324,2.632702 -0.00490023,1.434155 1.66120227,0.588036 1.4585673,-9.33e-4 c -0.00594,-0.831598 0.3396595,-1.53102 0.9524215,-2.022334 l -4.06729084,0.0011 z" id="path4" fill="#ff0000" fill-rule="evenodd"/> - <circle r="1.472" cx="-5.635" cy="16.624" id="circle10" transform="scale(-1,1)" fill="none" stroke="#000000" stroke-width="1.487"/> - <path d="m 0.06519882,5.2563742 3.67926758,0 0,2.9947522 -2.84501464,0 C 0.22810636,8.3130312 0.02206606,7.9484071 0.03311293,7.3847869 Z" id="path4266" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc" fill="#1a1a1a" fill-rule="evenodd" stroke-width="3.488"/> - <path id="path4230-7" d="m 4.2792429,6.4865296 0,1.4332034 3.123098,0 0,-1.4118114 z m 7.6580091,0 0,1.4332034 3.123097,0 0,-1.4118114 z m -3.8290057,0 0,1.4332034 3.1230987,0 0,-1.4118114 z m -6.609845,1.4009481 2.0107626,-1.3904208 0,1.4118117 -2.0963258,0 m 15.3587959,-2.0749345 -13.818638,0 -2.28884665,1.7326778 0,0.9412071 16.17165965,0 0,-0.6203413 -1.026772,0 0,-1.4118114 0.98399,0 z" inkscape:connector-curvature="0" fill="#4d4d4d" fill-rule="evenodd" stroke-width="3.488"/> - <path inkscape:connector-curvature="0" d="m 21.614958,8.1381339 0.02868,-0.4101547 -0.535784,-0.037466 0.01815,-0.2595229 C 21.158279,6.9694151 20.781066,6.5681619 20.282189,6.533277 19.784115,6.4984483 19.355121,6.8435282 19.322858,7.3049026 l -0.01815,0.2595228 -0.524293,-0.036662 -0.02868,0.4101547 2.863221,0.2002159 z" id="path3" fill="#0000ff" stroke="#000000" stroke-width="0"/> - <path d="M 21.214851,7.0125175 21.738875,6.8378429" id="path4411" inkscape:connector-curvature="0" fill="#0000ff" fill-rule="evenodd" stroke="#0000ff" stroke-width="0.111"/> - <path d="M 19.318657,6.8472358 18.842401,6.5674276" id="path4411-1" inkscape:connector-curvature="0" fill="#0000ff" fill-rule="evenodd" stroke="#0000ff" stroke-width="0.111"/> - <path d="m 20.752567,6.4995702 0.351836,-0.425823" id="path4411-4" inkscape:connector-curvature="0" fill="#0000ff" fill-rule="evenodd" stroke="#0000ff" stroke-width="0.111"/> - <path d="M 19.836981,6.4496678 19.616145,5.943361" id="path4411-4-2" inkscape:connector-curvature="0" fill="#0000ff" fill-rule="evenodd" stroke="#0000ff" stroke-width="0.111"/> - <circle r="1.472" cx="-20.651" cy="16.624" id="circle10-6" transform="scale(-1,1)" fill="none" stroke="#000000" stroke-width="1.487"/> - <rect id="rect3343" width="13.212" height="0.379" x="1.723" y="11.36" fill="#ffffff" fill-rule="evenodd" stroke="#ffffff" stroke-width="0.706"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/102-2.svg b/htdocs/public/symbols/svgicons/102-2.svg deleted file mode 100755 index b5f4fb9..0000000 --- a/htdocs/public/symbols/svgicons/102-2.svg +++ /dev/null @@ -1,25 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g transform="matrix(0.08683674,0,0,0.12984142,3.5732685,1034.444)" id="g3405" fill="#4d4d4d"> - <g id="g3509"> - <path inkscape:connector-curvature="0" d="m 61.254807,4.999999 0,2 c -12.621002,1.629901 -27.061005,4.7024 -38,11.4684 -11.507004,7.117199 -9.490997,16.063301 2,21.531601 -2.535995,-13.834801 24.475998,-21.2733 35,-19 -7.85701,4.938299 -37.820007,12.626499 -16.001999,23.621899 2.25499,1.136002 4.563004,1.798603 7.001999,2.378101 -8.223999,-11.623299 13.093002,-14.979 21,-16 -3.404999,4.229698 -14.292999,3.501999 -15.218002,10.039398 -0.899002,6.361401 10.871002,8.882801 15.218002,9.699802 13.065994,2.4557 29.030703,2.5117 42.000003,-0.638901 4.61149,-1.1203 17.0063,-5.137302 13.91359,-12.006901 -1.41739,-3.148399 -5.4102,-4.907799 -7.91359,-7.093399 8.3441,-1.2341 18.63359,4.719498 16,14 2.10899,-0.921898 4.0885,-1.860199 5.96449,-3.223801 18.70981,-13.5991 -11.95689,-18.598499 -16.96449,-25.7762 12.94209,1.6713 34.612,5.9484 35,22.000001 2.1483,-1.917702 4.48039,-3.7542 6.19749,-6.091 C 177.6577,16.659798 148.58,6.909198 138.25481,4.155098 c -3.668,-0.978399 -7.6133,-1.0165 -10,-4.155099 15.2339,1.203899 32.7129,5.132899 46,12.876499 6.28795,3.6646 13.32872,10.0522 10.25772,18.123501 -2.76161,7.258099 -11.49953,11.5462 -18.25772,14.188301 -16.82201,6.5765 -35.98741,9.983597 -54,10.772297 C 84.948807,57.156299 56.663804,56.2877 30.254807,48.709098 21.236802,46.121101 10.155808,43.918998 3.387803,36.895099 c -7.645004,-7.935501 -1.042999,-15.4701 6.867004,-19.632 14.806,-7.7901 34.358002,-11.5485 51,-12.263101 z" id="path1365"/> - <path inkscape:connector-curvature="0" d="m 70.254807,42 c 5.369003,-1.971802 10.352997,-2.606598 16,-3.168999 4.231995,-0.421501 7.767998,-0.421501 12,0 l 7.000003,0.607998 c 2.17399,0.344101 11.19619,1.819798 8.10959,5.851902 -1.90999,2.495098 -7.2558,2.824299 -10.10959,3.2701 C 95.077607,49.838101 73.358811,51.857201 70.254807,42 Z" id="path1605"/> - <path inkscape:connector-curvature="0" d="m 177.99594,40.912319 c -2.26642,12.892502 -16.72382,17.374199 -28,19.789402 -28.3129,6.064102 -55.64762,3.871994 -84.000014,0.210598 9.261002,-3.886002 22.1464,0.392101 32,-0.0394 28.575794,-1.251202 56.046294,-3.301403 80.000014,-19.960602 z" id="path1609"/> - <path inkscape:connector-curvature="0" d="m 173.25481,59 c -4.2818,14.376198 -22.65641,14.798904 -35,16.4244 -28.04901,3.693703 -59.458011,-2.149002 -86.000003,-11.091805 -10.475998,-3.529896 -24.57901,-8.821396 -28,-20.332596 8.263992,3.475399 15.481003,9.102398 24,12.315598 38.215996,14.414398 87.339703,20.267502 125.000003,2.684402 z" id="path1627"/> - <path inkscape:connector-curvature="0" d="m 164.25481,74 c -1.5712,15.199005 -22.54,14 -34,14 -28.863,0 -74.668002,-1.978104 -93.000003,-28 9.51799,1.8353 18.641998,8.528 28,11.645096 C 94.757805,81.471802 135.80611,89.602997 164.25481,74 Z" id="path1699"/> - <path inkscape:connector-curvature="0" d="m 151.25481,82 -1,1 1,-1 z" id="path1775"/> - <path inkscape:connector-curvature="0" d="m 137.25481,93 c -15.87451,14.72299 -56.256,7.877 -70.000003,-7 10.156998,-0.596405 22.635994,5.794006 33.000003,7.410004 12.30829,1.917999 24.7016,-0.376007 37,-0.410004 z" id="path1797"/> - <path inkscape:connector-curvature="0" d="m 71.254807,95 c 17.209999,9.79401 35.089603,9.013 54.000003,9 -9.73851,10.34 -32.788005,9.522 -44.000003,2.3 -3.865997,-2.49 -10.106003,-6.298 -10,-11.3 z" id="path1819"/> - <path inkscape:connector-curvature="0" d="m 72.254807,107 c 14.245995,8.313 23.916,5.653 39.000003,7 -7.16851,8.588 -21.832004,9.218 -31.000003,3.44099 C 76.6418,115.164 71.311799,111.698 72.254807,107 Z" id="path1855"/> - <path inkscape:connector-curvature="0" d="m 94.254807,124 c -3.297302,5.44 -9.484009,7.22501 -10,14 -6.074997,-3.64999 -12.81601,-10.162 -15,-17 9.421997,2.713 15.110992,3.78 25,3 z" id="path1887"/> - </g> - </g> - <path inkscape:connector-curvature="0" d="m 21.713332,1037.3646 c -0.04689,0 -0.09328,0 -0.13944,0.012 -0.58687,0.039 -1.112518,0.3181 -1.425407,0.7652 -0.112021,0.1601 -0.350146,0.2099 -0.531908,0.112 -0.118609,-0.064 -0.183411,-0.1756 -0.183494,-0.2898 0,-0.061 0.01807,-0.1226 0.05707,-0.1782 0.46192,-0.6603 1.250558,-1.0639 2.124216,-1.0923 -0.07408,-2.175 -2.059334,-3.9268 -4.527686,-3.9986 0.150968,0.3951 0.25941,0.8079 0.319475,1.2353 0.02622,0.1866 -0.12429,0.3563 -0.336189,0.3795 -0.0038,5e-4 -0.0077,10e-5 -0.01152,7e-4 -0.01218,0 -0.02442,0 -0.0364,0 -0.192344,0 -0.358994,-0.1262 -0.383245,-0.2987 -0.06274,-0.4466 -0.18452,-0.8756 -0.357638,-1.2819 -0.396296,-0.9298 -1.062623,-1.7383 -1.910383,-2.3569 -0.115232,-0.084 -0.233842,-0.1646 -0.355539,-0.2414 -1.056117,-0.667 -2.347806,-1.0573 -3.730727,-1.0573 -0.118156,0 -0.235736,0 -0.3526155,0.012 -0.6470995,0.031 -1.2737389,0.1474 -1.8630373,0.3385 -1.5771987,0.5118 -2.8866319,1.5586 -3.6045433,2.9359 0.094978,-0.012 0.1906141,-0.012 0.2869094,-0.012 1.0170893,0 1.9982377,0.2637 2.8374343,0.7631 0.1104575,0.066 0.1700295,0.1728 0.1701531,0.2818 8.22e-5,0.066 -0.021408,0.1324 -0.066284,0.1908 -0.1195558,0.1558 -0.3598616,0.1966 -0.5367664,0.092 -0.7108716,-0.423 -1.5423283,-0.6466 -2.4044972,-0.6466 -0.2430641,0 -0.4813936,0.018 -0.7135889,0.054 -0.067146,0.031 -0.1445455,0.046 -0.2229321,0.038 -0.027378,0.012 -0.054672,0.012 -0.081845,0.016 -1.881564,0.4037 -3.28247539,1.8999 -3.28247539,3.679 0,4e-4 -4.123e-5,8e-4 -4.123e-5,0 6.9987e-4,2.2787 2.09906162,4.1259 4.68754512,4.1259 l 11.7912384,0 4.39763,0 c 1.227506,0 2.222817,-0.8764 2.222817,-1.9572 0,-0.8915 -0.823799,-1.6167 -1.836277,-1.6167 z" id="path3614" fill="#b3b3b3" stroke="#4d4d4d" stroke-width="0.534"/> - <text x="1.596" y="1052.36" id="text3475" sodipodi:linespacing="125%" font-family="sans-serif" fill="#1a1a1a" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="8.75"><tspan sodipodi:role="line" id="tspan3477" x="1.596" y="1052.36">F</tspan> - </text> - <text x="16.497" y="1052.24" id="text3475-1" sodipodi:linespacing="125%" font-family="sans-serif" fill="#1a1a1a" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="8.75"><tspan sodipodi:role="line" id="tspan3477-7" x="16.497" y="1052.24">C</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/103-1.svg b/htdocs/public/symbols/svgicons/103-1.svg deleted file mode 100755 index 97780e2..0000000 --- a/htdocs/public/symbols/svgicons/103-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="-0.258 -0.548 24.000001 24"> - <metadata id="metadata17"/> - <g id="g4180" transform="matrix(1.0127819,0,0,1.0127819,-0.24080261,-0.17759904)"> - <path d="m 13.941942,11.960746 c 0.601141,0.205439 1.252519,-0.106889 1.461379,-0.706533 0.20886,-0.601141 -0.108598,-1.25252 -0.709739,-1.4613797 -0.599645,-0.2088601 -1.25252,0.1085987 -1.46138,0.7097397 -0.203729,0.596438 0.110309,1.252733 0.70974,1.458173 z" id="path9" inkscape:connector-curvature="0"/> - <path sodipodi:nodetypes="ccccccccccccccccccccccccccccc" d="M 11.797545,8.6023093 11.44182,12.22476 9.1471382,12.787635 c -0.2037294,0.04682 -0.3758199,0.147078 -0.5160576,0.272138 l -5.0387232,4.865136 c -0.2973637,0.282186 -0.3039908,0.756557 -0.016675,1.04879 0.2821856,0.297364 0.7565567,0.308908 1.0487898,0.02672 l 3.792831,-3.654303 4.6430228,-1.137294 -0.03164,0.01005 0.773231,-0.197103 0.70974,0.808291 c 0.110308,0.120143 0.265511,0.193682 0.43247,0.193682 l 2.500122,0.01005 c 0.314038,0 0.574632,-0.255463 0.574632,-0.574632 l 0,0 c 0,-0.277269 -0.193681,-0.491046 -0.449359,-0.554537 l -1.86221,-6.4849279 z m 5.214234,5.2758017 c -0.569502,0 -1.518244,-0.0049 -1.805346,-0.0049 -0.272138,-0.307411 -1.347864,-1.523161 -1.347864,-1.523161 -0.01497,-0.02181 -0.04169,-0.02672 -0.05686,-0.04169 -0.272138,-0.318955 -0.704822,-0.482709 -1.137293,-0.380737 l -0.67297,0.16696 0.359145,-3.6592205 2.844303,-0.8617349 1.81689,6.3044964 z" id="path11" inkscape:connector-curvature="0"/> - <path sodipodi:nodetypes="csccccc" d="m 23.07216,4.463962 c 0,0 -3.773916,-0.4529368 -11.610758,-0.4529368 -5.7801351,0 -10.50210258,0.4529368 -10.50210258,0.4529368 0,0 1.95759978,0.8634881 1.61831308,3.5353982 0,0 2.8096608,-0.3343004 3.986673,2.0729118 0,0 -0.1009115,0.03153 16.6182025,-5.035283 0.36027,-0.1558268 0.331181,-0.5244092 -0.110328,-0.573027 z" id="path11-9" inkscape:connector-curvature="0" fill="#ff0000" stroke="#550000" stroke-width="0.5"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/103-2.svg b/htdocs/public/symbols/svgicons/103-2.svg deleted file mode 100755 index ad13249..0000000 --- a/htdocs/public/symbols/svgicons/103-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4196"/> - <path d="m 8.4874864,0.50166737 c 0,22.94102163 0,23.01852463 0,23.01852463" id="path4200" inkscape:connector-curvature="0" fill="none" fill-rule="evenodd" stroke="#000000" stroke-linecap="round"/> - <path sodipodi:type="star" id="path4202" sodipodi:sides="3" sodipodi:cx="11.072906" sodipodi:cy="4.9913278" sodipodi:r1="5.1861811" sodipodi:r2="2.5930905" sodipodi:arg1="2.0943951" sodipodi:arg2="3.1415927" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="m 8.479815,9.4826923 0,-8.98272909 7.779272,4.49136459 z" inkscape:transform-center-x="-1.479492" transform="matrix(1.1411034,0,0,1.020518,-1.079427,-0.01340882)" fill="#d50000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round"/> - <path sodipodi:type="star" id="path4202-7" sodipodi:sides="3" sodipodi:cx="11.072906" sodipodi:cy="4.9913278" sodipodi:r1="5.1861811" sodipodi:r2="2.5930905" sodipodi:arg1="2.0943951" sodipodi:arg2="3.1415927" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="m 8.479815,9.4826923 0,-8.98272909 7.779272,4.49136459 z" inkscape:transform-center-x="-1.479492" transform="matrix(1.1411034,0,0,1.020518,-1.1093532,9.0607759)" fill="#d50000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/104-1.svg b/htdocs/public/symbols/svgicons/104-1.svg deleted file mode 100755 index 4fad64a..0000000 --- a/htdocs/public/symbols/svgicons/104-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="-0.258 -0.548 24.000001 24"> - <metadata id="metadata17"/> - <rect id="rect4242" width="24" height="24" x="-0.258" y="-0.548" rx="4" fill="#000080" stroke-width="0.5"/> - <text x="2.343" y="20.565" id="text4244" sodipodi:linespacing="125%" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" letter-spacing="0" font-size="25"><tspan sodipodi:role="line" id="tspan4246" x="2.343" y="20.565">H</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/104-2.svg b/htdocs/public/symbols/svgicons/104-2.svg deleted file mode 100755 index 4b79fd6..0000000 --- a/htdocs/public/symbols/svgicons/104-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata7"/> - <g inkscape:label="Camada 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <path d="m 23.310235,1028.8715 c -0.037,6e-4 -0.0751,0 -0.11147,0.01 -6.7e-4,2e-4 -0.001,-1e-4 -0.002,0 l -3.67436,0.6276 c -0.23368,0.04 -0.42959,0.2003 -0.51606,0.4211 a 0.16705751,0.16705751 0 0 0 0,0 l -1.70506,4.3721 -16.63986969,0.4149 c -0.19136,0 -0.37099,0.091 -0.49542,0.2353 -0.1244,0.1441 -0.18429,0.3358 -0.16101,0.5264 l 0.91859,7.5985 c 0.0379,0.3188 0.30127999,0.5716 0.62133999,0.5966 l 11.8631997,0.9433 2.35117,1.8496 a 0.16705751,0.16705751 0 0 0 0.008,0.01 c 0.003,0 0.006,0 0.008,0 0.003,0 0.005,0 0.008,0.01 0.42908,0.3203 0.53543,0.7566 0.47479,0.9991 -0.0346,0.1381 -0.0873,0.2397 -0.21262,0.3179 -0.12532,0.078 -0.34179,0.1348 -0.71216,0.1135 a 0.16705751,0.16705751 0 0 0 -0.004,0 c -0.0119,-4e-4 -0.0252,-3e-4 -0.0371,0 -0.002,0 -0.004,-10e-5 -0.006,0 l -14.1483297,0.041 -0.002,0 c -0.37180999,0 -0.68473999,0.3095 -0.68325999,0.6812 0.001,0.3717 0.31561,0.6824 0.68739999,0.6771 7.2e-4,0 10e-4,0 0.002,0 l 1.03419,0 c -0.38426,0.2449 -0.64198,0.6734 -0.64198,1.1601 0,0.7569 0.61995,1.3768 1.37685,1.3768 0.75692,0 1.37685,-0.6199 1.37685,-1.3768 0,-0.4893 -0.2584,-0.9221 -0.6461,-1.1663 l 11.6505897,-0.033 c -0.41975,0.2366 -0.70598,0.6859 -0.70598,1.1993 0,0.7569 0.61993,1.3768 1.37685,1.3768 0.75692,0 1.37686,-0.6199 1.37686,-1.3768 0,-0.6574 -0.46699,-1.2115 -1.0858,-1.3459 0.58509,-0.207 1.03455,-0.6338 1.31286,-1.286 a 0.16705751,0.16705751 0 0 0 0.0103,-0.025 c 0.21336,-0.8532 -0.16506,-1.7808 -0.94542,-2.3842 a 0.16705751,0.16705751 0 0 0 -0.006,-0.01 c -0.002,0 -0.002,0 -0.004,-0.01 a 0.16705751,0.16705751 0 0 0 -0.0227,-0.023 l -1.66584,-1.3067 5.1957,-13.3082 3.2966,-0.5615 c 6.6e-4,-10e-5 0.001,2e-4 0.002,0 0.34631,-0.056 0.59958,-0.3784 0.56973,-0.7287 -0.0299,-0.3509 -0.33564,-0.6261 -0.68739,-0.6213 z m -6.51063,6.4818 -0.95781,2.4565 -1.24886,0 0,-2.4008 2.20667,-0.056 z m -2.68352,0.068 0,2.3883 -2.30575,0 0,-2.3305 2.30575,-0.058 z m -2.7826,0.068 0,2.3202 -2.3057497,0 0,-2.2624 2.3057497,-0.058 z m -2.7825997,0.07 0,2.25 -2.30576,0 0,-2.1922 2.30576,-0.058 z m -2.7826,0.07 0,2.1799 -2.30576,0 0,-2.1221 2.30576,-0.058 z m -2.7826,0.068 0,2.1117 -1.69061,0 -0.24978,-2.0621 1.94039,-0.05 z m -1.63281,2.5865 1.63281,0 0,2.1572 -1.37272,0 -0.26009,-2.1572 z m 2.10965,0 2.30576,0 0,2.1572 -2.30576,0 0,-2.1572 z m 2.7826,0 2.30576,0 0,2.1572 -2.30576,0 0,-2.1572 z m 2.78261,0 2.3057497,0 0,2.1572 -2.3057497,0 0,-2.1572 z m 2.7825997,0 2.30575,0 0,2.1572 -2.30575,0 0,-2.1572 z m 2.7826,0 1.06515,0 -0.84222,2.1572 -0.22293,0 0,-2.1572 z m -12.9221697,2.6319 1.31492,0 0,1.5482 -1.13946,-0.091 -0.17546,-1.4574 z m 1.79176,0 2.30576,0 0,1.7691 -2.30576,-0.1837 0,-1.5854 z m 2.7826,0 2.30576,0 0,1.99 -2.30576,-0.1817 0,-1.8083 z m 2.78261,0 2.3057497,0 0,2.2129 -2.3057497,-0.1837 0,-2.0292 z m 2.7825997,0 2.30575,0 0,1.3129 -0.43762,1.1209 c -0.0568,-0.028 -0.11873,-0.044 -0.18165,-0.05 l -1.68648,-0.1342 0,-2.25 z m 2.7826,0 0.0351,0 -0.0351,0.097 0,-0.097 z m -11.6815597,8.7483 c 0.44991,0 0.80918,0.3593 0.80918,0.8092 0,0.4499 -0.35927,0.8071 -0.80918,0.8071 -0.44989,0 -0.80919,-0.3572 -0.80919,-0.8071 0,-0.4499 0.3593,-0.8092 0.80919,-0.8092 z m 13.0522097,0 c 0.4499,0 0.80919,0.3593 0.80919,0.8092 0,0.4499 -0.35929,0.8071 -0.80919,0.8071 -0.4499,0 -0.80918,-0.3572 -0.80918,-0.8071 0,-0.4499 0.35928,-0.8092 0.80918,-0.8092 z m -13.0522097,0.3839 c -0.24442,0 -0.43968,0.1953 -0.43968,0.4397 0,0.2444 0.19526,0.4376 0.43968,0.4376 0.24442,0 0.43969,-0.1932 0.43969,-0.4376 0,-0.2444 -0.19527,-0.4397 -0.43969,-0.4397 z m 13.0522097,0 c -0.24442,0 -0.43968,0.1953 -0.43968,0.4397 0,0.2444 0.19526,0.4376 0.43968,0.4376 0.24442,0 0.43968,-0.1932 0.43968,-0.4376 0,-0.2444 -0.19526,-0.4397 -0.43968,-0.4397 z" id="path3847" inkscape:connector-curvature="0" color="#000000" stroke-width="15.5" fill="#550000"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/105-1.svg b/htdocs/public/symbols/svgicons/105-1.svg deleted file mode 100755 index 0577b4c..0000000 --- a/htdocs/public/symbols/svgicons/105-1.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" version="1.1" width="24" height="24"> - <metadata id="metadata26"/> - <path inkscape:connector-curvature="0" id="path6-9" d="M 0.42237017,20.852183 C 1.4886938,21.641264 2.6475758,22.253 3.8782569,22.569115 c 2.0606033,0.632017 3.9047512,0.997097 5.9958112,1.1718 1.0803169,0.09786 2.4267789,0.121537 3.4780879,0.103979 1.148719,0.03236 3.06396,0.134213 3.06396,0.134213 1.492934,-0.09743 3.020733,-0.125285 4.329408,-0.525325 1.16385,-0.500881 2.142446,-1.482579 2.983006,-2.530347 0.550327,-1.131092 -0.573852,-2.065826 -1.349076,-2.451413 -1.584141,-1.093048 -3.36483,-1.490939 -5.387889,-2.103011 C 15.387074,15.896081 14.028803,15.67259 11.583978,14.996822 9.4965832,14.749861 7.5530337,15.26673 6.2960009,15.657008 4.3380386,16.436501 4.9218724,16.35612 2.6306795,17.363095 1.5947333,17.95343 0.28957936,18.6799 0.12804054,20.191189 c -0.006513,0.261309 0.0969278,0.53011 0.29432963,0.660994 z" sodipodi:nodetypes="cccccccccccccc" fill="#2a7fff" stroke-width="0.255"/> - <path inkscape:connector-curvature="0" id="path6" d="m 2.7730463,20.337108 c 0.8607735,0.540145 1.7962623,0.958893 2.7897109,1.175281 1.6633903,0.432631 3.3793443,-0.02419 5.0673198,0.0954 0.872069,-0.09363 1.655922,0.340182 2.504575,0.392413 0.927285,0.02215 1.866334,-0.08029 2.776392,0.156119 1.072561,0.206361 2.230089,0.444281 3.267555,-0.03836 0.9395,-0.342865 1.729455,-1.01486 2.407986,-1.732083 0.444242,-0.774259 -0.463235,-1.414107 -1.089021,-1.67805 -1.278774,-0.748219 -2.716208,-1.156875 -4.081423,-1.71214 -1.348774,-0.505452 -2.766658,-0.794726 -4.097323,-1.348165 -1.042133,-0.396197 -2.182444,-0.22411 -3.2507381,-0.04781 -1.6876819,0.351863 -3.1450431,1.341724 -4.5124108,2.349031 -0.836251,0.404097 -1.8898162,0.901385 -2.0202169,1.935898 -0.00525,0.178873 0.078247,0.362873 0.2375941,0.452464 z" fill="#e5b380" stroke-width="0.19"/> - <path inkscape:connector-curvature="0" id="path8" d="m 14.155551,20.157272 c -0.108809,0.123074 -0.712277,-0.223187 -0.88619,-0.17749 -0.173914,0.0457 -0.436605,0.619553 -0.609194,0.570419 -0.172587,-0.04913 0.0319,-0.639557 -0.07344,-0.764754 -0.10534,-0.125197 -0.834465,-0.158301 -0.83232,-0.311741 0.0021,-0.15344 0.731991,-0.172081 0.840801,-0.295154 0.10881,-0.123074 -0.07912,-0.717388 0.09479,-0.763085 0.173913,-0.0457 0.420497,0.533205 0.593085,0.582337 0.17259,0.04913 0.785564,-0.285068 0.890905,-0.159871 0.10534,0.125198 -0.472111,0.50162 -0.474255,0.655059 -0.0021,0.153439 0.564629,0.541207 0.455819,0.66428 z" fill="#f3f98f" stroke-width="0.338"/> - <path inkscape:connector-curvature="0" id="path10" d="M 8.7185804,17.631722 C 7.6474285,12.043944 9.4008377,7.2022748 13.759866,3.5144596 14.286828,3.470482 14.218373,3.9973953 13.83578,4.2926727 10.355637,8.1216331 9.669201,12.985452 10.120977,17.983736 9.7056131,17.646691 9.2814064,17.346933 8.7185804,17.631722 Z" fill="#9c6434" stroke-width="0.237"/> - <path inkscape:connector-curvature="0" id="path12" d="m 14.200774,3.9008721 c 0.846883,0.8169903 1.492017,1.7650085 2.110296,2.7560443 l 0.392165,-0.6594174 0.209479,0.8337544 3.856939,1.5668713 -2.276069,-3.6008689 -1.04933,0.079075 c 0.005,-0.1957562 0.07546,-0.5014145 0.08051,-0.6971694 C 16.552831,3.7037343 15.546575,3.3106627 14.459617,3.529059 14.370307,3.558324 14.226546,3.546675 14.169112,3.599897 l 0.03165,0.3009754 z" fill="#026333" stroke-width="0.237"/> - <path inkscape:connector-curvature="0" id="path14" d="M 13.693886,3.9300053 C 12.67843,4.5224553 11.828091,5.2901655 10.993699,6.106054 L 10.768177,5.3721624 10.368051,6.1324177 6.2512902,6.7379065 9.3117522,3.7804582 10.312603,4.1067214 c 0.04126,-0.1913914 0.04491,-0.5050974 0.08617,-0.6964882 1.056408,-0.2308717 2.126745,-0.3735697 3.131299,0.096998 0.07987,0.049664 0.222292,0.072519 0.265542,0.1378807 l -0.101726,0.284893 z" fill="#026333" stroke-width="0.237"/> - <path inkscape:connector-curvature="0" id="path16" d="m 13.847257,3.9837972 c -0.28159,1.2232894 -0.792609,2.3329258 -1.357456,3.4413939 l 0.814474,0 -0.644791,0.6473913 0.678727,4.3954436 2.036184,-4.0547117 -0.644791,-0.9199767 C 14.910597,7.3911179 15.227337,7.2888987 15.408331,7.1866789 15.310666,6.0350583 15.119277,4.896888 14.327093,4.0184255 14.251693,3.9524265 14.183828,3.8141139 14.104017,3.7904499 l -0.25676,0.1933473 z" fill="#026333" stroke-width="0.252"/> - <path inkscape:connector-curvature="0" id="path18" d="M 13.70466,3.7179063 C 12.708895,3.3516704 11.687172,3.2017038 10.641327,3.0906587 L 11.01885,2.50992 10.262073,2.6695945 7.4677368,0.14827983 11.279478,0.5758619 11.631314,1.4620384 c 0.156194,-0.081672 0.37531,-0.2601348 0.531504,-0.3418078 0.769281,0.6034346 1.485609,1.2674602 1.739762,2.2394902 0.01173,0.084353 0.07811,0.1968542 0.05785,0.2647289 l -0.255769,0.093457 z" fill="#026333" stroke-width="0.214"/> - <path inkscape:connector-curvature="0" id="path20" d="M 14.110627,3.5996953 C 15.06045,3.30601 16.023993,3.2160071 17.008209,3.163618 L 16.683281,2.6015113 17.38373,2.7882401 20.122147,0.56628391 16.533904,0.77861736 16.161309,1.5906377 c -0.142187,-0.084135 -0.33853,-0.2619512 -0.480717,-0.3460832 -0.749455,0.5268353 -1.452311,1.1129868 -1.737683,2.0101682 -0.0151,0.078367 -0.08273,0.1803834 -0.06708,0.2449039 l 0.2348,0.1000687 z" fill="#026333" stroke-width="0.201"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/105-2.svg b/htdocs/public/symbols/svgicons/105-2.svg deleted file mode 100755 index 3ef2ad0..0000000 --- a/htdocs/public/symbols/svgicons/105-2.svg +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="-0.258 -0.548 24.000001 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="105-2.svg"> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview6" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-0.76271186" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata19"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <rect - id="rect4191" - width="14.886283" - height="14.886283" - x="4.2988591" - y="4.0088582" - style="stroke:#000000;stroke-width:4.06287098" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/106-1.svg b/htdocs/public/symbols/svgicons/106-1.svg deleted file mode 100755 index 6c56a63..0000000 --- a/htdocs/public/symbols/svgicons/106-1.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="-0.258 -0.548 24.000001 24"> - <metadata id="metadata19"/> - <g id="g3339-7" transform="matrix(1.206235,0,0,1.206235,12.018091,-3.1654974)"> - <circle r="1.188" cy="14.952" cx="5.523" id="path3341-1" fill="#666666" fill-rule="evenodd"/> - <path sodipodi:nodetypes="ssscssssss" d="m 5.4550981,16.158002 c 0.6654362,0 1.2007092,-0.540525 1.2007092,-1.20779 0,-0.660182 -0.535273,-1.200707 -1.2007092,-1.200707 -0.6672637,0 -1.2025361,0.540525 -1.2025361,1.200707 2.256e-4,0.667265 0.5355008,1.20779 1.2025361,1.20779 z m -2.7777529,-1.20779 c 0,-1.528858 1.2418136,-2.774098 2.7777529,-2.774098 1.5306879,0 2.7725006,1.24524 2.7725006,2.774098 0,1.536169 -1.2418127,2.779581 -2.7725006,2.779581 -1.5359393,0 -2.7777529,-1.24364 -2.7777529,-2.779581 z" id="path9-0-5-2" inkscape:connector-curvature="0" stroke="#000000" stroke-width="0.319"/> - </g> - <path inkscape:connector-curvature="0" id="path11" d="m 22.660454,11.946482 -0.0052,-2.7536211 c 0,-1.0969109 -0.97583,-0.9809973 -0.97583,-0.9809973 l -5.517577,0 -2.012988,-3.3958637 -1.184744,0 2.012987,3.3958637 -1.525072,2.5797514 -3.4767336,-0.0052 C 8.77486,8.3205887 6.333711,8.4751402 6.333711,8.4751402 l -6.59157429,0 0,5.8617228 0.94235947,0 c 0.1264716,-1.993669 2.04106752,-3.574901 4.06461322,-3.574901 2.0235456,0 3.9435329,1.584827 4.0646131,3.574901 l 5.7300845,0.0052 c 0.121081,-1.995466 2.041068,-3.580292 4.064613,-3.580292 2.023546,0 3.9487,1.584826 4.064614,3.583661 l 0.356277,0.0036 c 0.394915,0 0.712554,-0.321234 0.712554,-0.714351 l 0,-1.688385 -1.081411,0 z" fill="#165016"/> - <g id="g3339" transform="matrix(1.206235,0,0,1.206235,-1.8384114,-3.165498)"> - <circle r="1.188" cy="14.952" cx="5.523" id="path3341" fill="#666666" fill-rule="evenodd"/> - <path sodipodi:nodetypes="ssscssssss" d="m 5.4550981,16.158002 c 0.6654362,0 1.2007092,-0.540525 1.2007092,-1.20779 0,-0.660182 -0.535273,-1.200707 -1.2007092,-1.200707 -0.6672637,0 -1.2025361,0.540525 -1.2025361,1.200707 2.256e-4,0.667265 0.5355008,1.20779 1.2025361,1.20779 z m -2.7777529,-1.20779 c 0,-1.528858 1.2418136,-2.774098 2.7777529,-2.774098 1.5306879,0 2.7725006,1.24524 2.7725006,2.774098 0,1.536169 -1.2418127,2.779581 -2.7725006,2.779581 -1.5359393,0 -2.7777529,-1.24364 -2.7777529,-2.779581 z" id="path9-0-5" inkscape:connector-curvature="0" stroke="#000000" stroke-width="0.319"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/106-2.svg b/htdocs/public/symbols/svgicons/106-2.svg deleted file mode 100755 index 72563dc..0000000 --- a/htdocs/public/symbols/svgicons/106-2.svg +++ /dev/null @@ -1,32 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" version="1.1" width="24" height="24"> - <defs id="defs5962"> - <linearGradient id="linearGradient7499-4"> - <stop id="stop7501-1" stop-color="#6f6f6f"/> - <stop id="stop7503-6" offset="0.143" stop-color="#868686"/> - <stop id="stop7505-4" offset="0.407" stop-color="#a0a0a0"/> - <stop id="stop7507-6" offset="0.638" stop-color="#ebebeb"/> - <stop id="stop7509-45" offset="0.869" stop-color="#cfcfcf"/> - <stop id="stop7511-3" offset="1" stop-color="#aaaaaa"/> - </linearGradient> - <linearGradient id="linearGradient7069-4"> - <stop id="stop7071-13" stop-color="#ffcb05"/> - <stop id="stop7073-0" offset="1" stop-color="#cca111"/> - </linearGradient> - </defs> - <g id="layer1" inkscape:label="Calque 1" inkscape:groupmode="layer" transform="translate(-21.451,-697.80301)"> - <path inkscape:connector-curvature="0" sodipodi:nodetypes="cccsscc" d="m 43.681028,714.25418 -6.766915,-10.07764 -0.524206,-0.95153 c 0.0083,-0.75691 0.07198,-1.51382 0.142961,-2.27071 0.09304,-0.99196 0.794441,-0.77411 1.096043,-0.21626 l 6.933439,12.82417 c 0.354441,0.5572 0.02043,1.16472 -0.881605,0.69202 z" id="path7035" stroke="#000000" stroke-width="0.034"/> - <path inkscape:connector-curvature="0" sodipodi:nodetypes="ssccssss" d="m 43.834539,713.63701 c -0.297107,-0.38351 -1.351861,-0.97532 -1.852204,-0.50443 -0.838518,0.78916 -2.300849,1.5219 -3.948667,1.36352 l -0.504431,0.74088 c 1.78335,1.54714 3.586468,2.83815 6.202942,0.74876 0.224445,-0.17924 0.42854,-0.37473 0.535959,-0.63842 0.08262,-0.20282 0.09969,-0.40214 -0.02365,-0.81969 -0.08489,-0.2874 -0.15742,-0.56481 -0.409843,-0.89062 z" id="path6705"/> - <path inkscape:connector-curvature="0" d="m 38.034673,714.49811 -0.283741,-0.45715 -1.749744,-0.23645 1.529041,1.43448 z" id="path6713" stroke="#000000" stroke-width="0.034"/> - <path inkscape:connector-curvature="0" sodipodi:nodetypes="cssccc" d="m 32.070628,715.40947 c 0.608902,-5.02052 3.643428,-9.6517 5.514731,-14.11066 0.30419,-0.72477 -0.116764,-0.56943 -0.978237,-0.49917 -0.296187,0.0242 -0.665862,0.37389 -0.665862,0.37389 -3.350587,4.22342 -6.496453,8.51552 -9.678506,12.79522 z" id="path7677"/> - <g transform="matrix(-0.02812885,0,0,0.02812885,-19.094846,670.95925)" id="g7047" stroke="#000000"> - <circle r="12.142" cy="1121.56" cx="-2319.47" transform="matrix(1.1569,0,0,1.1569,689.23,-228.12)" id="path7049" color="#000000" stroke-width="0.8"/> - <path d="m -2005.3,1064.9 c 3.2045,-9.62 17.065,-13.506 23.523,2.47 -9.2702,-11.147 -15.601,-10.329 -23.523,-2.47 z" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" id="path7051"/> - </g> - <path d="m 27.472082,707.06943 3.756911,0.0677 1.319995,1.28615 1.049228,2.43691 0.50769,3.04614 -0.50769,1.52308 -7.581513,-2.30153 0.135384,-4.46768 0.676921,-1.32 z" id="path4677" inkscape:connector-curvature="0" fill="#b3b3b3" fill-rule="evenodd" stroke="#000000" stroke-width="0.034"/> - <path d="m 27.828115,706.74921 2.591478,0.0157 c 1.864199,0.0113 2.538103,1.97252 3.136987,3.41123 0.570437,1.37046 0.882712,2.87373 0.683721,5.27919 l -8.407963,-1.2994 -0.04712,-5.30867 c 0.197932,-1.42799 1.137658,-2.10376 2.042819,-2.0983 z m 0.09319,0.60729 c -0.553383,-0.004 -1.551791,0.31065 -1.564322,2.24909 l -0.01152,1.71613 2.203011,0.23245 -0.07748,-4.1745 -0.4984,-0.022 c -0.01687,-7.4e-4 -0.03345,-9e-4 -0.0513,-10e-4 z m 1.469032,10e-4 -0.06701,4.29613 4.263622,0.5319 c -0.238086,-0.88854 -1.23898,-4.81647 -3.344322,-4.81647 l -0.852288,-0.0115 z m 0.233492,5.03426 c -0.12549,-0.002 -0.245012,0.0442 -0.245012,0.20313 l 0,0.52038 c 0,0.20805 0.129641,0.47749 0.343436,0.5424 l 2.845921,0.86381 c 0.2634,0.0799 1.182188,0.17958 1.162252,-0.39892 l -0.02199,-0.64184 c -0.01324,-0.38404 -0.290053,-0.64371 -0.841835,-0.70885 l -3.188284,-0.3759 c -0.01784,-0.002 -0.03652,-0.004 -0.05445,-0.004 z" inkscape:connector-curvature="0" id="path7755" stroke="#000000" stroke-width="0.221"/> - <path inkscape:connector-curvature="0" sodipodi:nodetypes="ccssssccc" d="m 34.214997,715.3691 -7.772357,-2.45796 0,-0.93006 c 0,-0.4019 -0.22021,-0.59787 -0.775024,-0.59787 l -1.70508,0 c -0.654671,0 -0.642173,0.376 -0.642173,0.73073 l 0,3.96374 10.916882,0 z" id="path7867" fill="#ff6600" stroke="#000000" stroke-width="0.436"/> - <rect id="rect8131" height="4.31" width="14.371" y="716.69" x="-35.822" transform="scale(-1,1)" color="#000000" rx="2.155"/> - </g> - <metadata id="metadata244"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/107-1.svg b/htdocs/public/symbols/svgicons/107-1.svg deleted file mode 100755 index 745533b..0000000 --- a/htdocs/public/symbols/svgicons/107-1.svg +++ /dev/null @@ -1,125 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="-0.258 -0.548 24.000001 24" - id="svg4618" - inkscape:version="0.91 r13725" - sodipodi:docname="107-1.svg"> - <defs - id="defs4633" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="640" - inkscape:window-height="480" - id="namedview4631" - showgrid="false" - inkscape:zoom="19.666667" - inkscape:cx="10.675699" - inkscape:cy="13.645399" - inkscape:window-x="445" - inkscape:window-y="357" - inkscape:window-maximized="0" - inkscape:current-layer="svg4618" /> - <metadata - id="metadata19"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g3339-8" - transform="matrix(1.0958316,0,0,1.0958316,13.068522,-1.4329655)"> - <circle - r="1.188" - cy="14.952" - cx="5.523" - id="path3341-5" - fill="#666666" - fill-rule="evenodd" /> - <path - sodipodi:nodetypes="ssscssssss" - d="m 5.4550981,16.158002 c 0.6654362,0 1.2007092,-0.540525 1.2007092,-1.20779 0,-0.660182 -0.535273,-1.200707 -1.2007092,-1.200707 -0.6672637,0 -1.2025361,0.540525 -1.2025361,1.200707 2.256e-4,0.667265 0.5355008,1.20779 1.2025361,1.20779 z m -2.7777529,-1.20779 c 0,-1.528858 1.2418136,-2.774098 2.7777529,-2.774098 1.5306879,0 2.7725006,1.24524 2.7725006,2.774098 0,1.536169 -1.2418127,2.779581 -2.7725006,2.779581 -1.5359393,0 -2.7777529,-1.24364 -2.7777529,-2.779581 z" - id="path9-0-2" - inkscape:connector-curvature="0" - stroke="#000000" - stroke-width="0.319" /> - </g> - <circle - id="path3341-9" - cx="19.05" - cy="14.827" - r="1.188" - fill="#666666" - fill-rule="evenodd" /> - <g - id="g3339" - transform="matrix(1.0958316,0,0,1.0958316,-0.52251938,-1.4329662)"> - <circle - r="1.188" - cy="14.952" - cx="5.523" - id="path3341" - fill="#666666" - fill-rule="evenodd" /> - <path - sodipodi:nodetypes="ssscssssss" - d="m 5.4550981,16.158002 c 0.6654362,0 1.2007092,-0.540525 1.2007092,-1.20779 0,-0.660182 -0.535273,-1.200707 -1.2007092,-1.200707 -0.6672637,0 -1.2025361,0.540525 -1.2025361,1.200707 2.256e-4,0.667265 0.5355008,1.20779 1.2025361,1.20779 z m -2.7777529,-1.20779 c 0,-1.528858 1.2418136,-2.774098 2.7777529,-2.774098 1.5306879,0 2.7725006,1.24524 2.7725006,2.774098 0,1.536169 -1.2418127,2.779581 -2.7725006,2.779581 -1.5359393,0 -2.7777529,-1.24364 -2.7777529,-2.779581 z" - id="path9-0" - inkscape:connector-curvature="0" - stroke="#000000" - stroke-width="0.319" /> - </g> - <path - style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 8.768122,5.7866079 14.232681,5.5075598 17.164673,10.37949 8.5566171,10.611368 Z" - id="path4754" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <path - sodipodi:nodetypes="cccccccccccccsccsccsccc" - inkscape:connector-curvature="0" - id="path11" - d="m 22.75482,12.282904 -0.0047,-2.5137827 c 0,-1.0013709 -0.890836,-0.8955533 -0.890836,-0.8955533 l -5.037,0 -1.837659,-3.1000867 -1.081553,0 1.837657,3.1000867 -1.392239,1.136307 -3.173913,-0.0047 C 10.4849,8.9728233 7.8501235,9.1139135 7.8501235,9.1139135 l -8.10816334,0 0,5.3511715 2.00956154,0 c 0.115456,-1.820022 1.8632922,-3.26353 3.7105887,-3.26353 1.8472964,0 3.6000543,1.44679 3.7105886,3.26353 l 6.172428,0.0047 c 0.110535,-1.821662 1.863292,-3.268451 3.710588,-3.268451 1.847297,0 3.604772,1.446789 3.71059,3.271527 l 0.325245,0.0033 c 0.360518,0 0.650491,-0.293255 0.650491,-0.652132 l 0,-1.541328 -0.987221,0 z" - fill="#800000" - style="fill:#800000" /> - <rect - id="rect3336-6" - width="6.191" - height="1.527" - x="5.02" - y="-9.649" - transform="matrix(0,1,-1,0,0,0)" - fill="#800000" - fill-rule="evenodd" - style="fill:#800000" /> - <path - d="m 8.1231182,5.0144994 6.4302758,0 0.631319,1.1125532 -7.0381574,-0.00961 z" - id="path4156" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" - fill="#800000" - fill-rule="evenodd" - style="fill:#800000" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/107-2.svg b/htdocs/public/symbols/svgicons/107-2.svg deleted file mode 100755 index e6525a9..0000000 --- a/htdocs/public/symbols/svgicons/107-2.svg +++ /dev/null @@ -1,81 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - enable-background="new 0 0 1000 600" - height="24" - id="Shape_1_7_" - overflow="visible" - version="1.1" - viewBox="0 0 24 24" - width="24" - xml:space="preserve" - inkscape:version="0.91 r13725" - sodipodi:docname="107-2.svg" - style="overflow:visible"><metadata - id="metadata12"><rdf:RDF><cc:Work - rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /></cc:Work></rdf:RDF></metadata><defs - id="defs10" /><sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview8" - showgrid="false" - inkscape:zoom="28.963094" - inkscape:cx="6.8080044" - inkscape:cy="18.809498" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="Shape_1_7_" - showguides="false" /><path - style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 2.2905532,7.0474501 12.64907,7.0772571 17.545906,11.229782 0.9604041,10.550176 Z" - id="path4754" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /><g - id="Shape_1" - transform="matrix(0.03259342,0,0,0.03259342,-6.7040498,2.4819419)" - style="fill:#800000"><g - id="g4" - style="fill:#800000"><path - d="m 219.11831,311.436 c -0.022,0.005 -0.032,0.003 -0.056,0.009 0.024,0.139 0.043,0.128 0.056,-0.009 z M 941.987,332.575 c 1.476,-52.841 -33.835,-74.252 -32.12,-72.974 -8.865,-6.607 -20.691,-9.007 -32.965,-12.397 21.246,5.869 -30.112,-5.286 -143.693,-17.75 -2.16,-0.094 -4.32,-0.188 -6.48,-0.281 -22.21592,-15.3252 -26.194,-19.84328 -34.373,-25.61628 -24.20348,-20.55582 -65.04568,-54.59248 -73.69602,-60.576 -20.5372,-13.81947 -25.36669,-13.09519 -57.478,-17.186 0,0 -34.41662,-3.834 -69.20062,-5.042 -56.897,-1.977 -59.22177,-1.14794 -59.22177,-1.14794 0,0 -10.29628,-0.44906 -64.23328,1.77994 -32.192,1.331 -57.895,3.538 -57.895,3.538 0,0 -39.964,6.832 -38.318,6.224 -16.795,6.207 -4.993,7.6 -4.508,10.425 -9.25,9.972 -25.809,27.88228 -47.053,90.70028 -1.77,5.233 -1.238,11.699 -2.536,17.188 0,22.552 1.117,59.737 0.901,61.977 3.723,-0.819 -22.681,14.576 -9.917,58.612 1.274,4.397 7.411,17.749 10.153,14.138 -12.241,16.121 26.23477,24.601 82.84877,29.028 -2.35,-7.895 -3.617,-16.253 -3.617,-24.908 0,-58.84291 46.96623,-95.75377 95.43923,-95.75377 48.473,0 95.95709,34.01536 96.80881,95.75377 0.14307,10.37001 -1.815,20.317 -5.14,29.548 1.244,-0.013 1.904,-0.021 1.904,-0.021 l 207.10605,0.467 c -4.41,-10.433 -6.0455,-21.92293 -6.85,-33.927 -3.48821,-52.04824 44.40983,-95.00472 92.88283,-95.00472 48.473,0 97.86913,38.90097 95.7505,95.00472 -0.45698,12.10137 -2.471,23.645 -6.936,34.132 l 4.628,0.006 c 0,0 31.2835,2.535 36.8155,-12.115 1.754,-1.079 5.025,-0.462 7.044,-1.127 6.262,-2.064 16.019,-14.87 12.397,-12.679 7.087,-4.291 10.955,-38.623 11.552,-60.016 z M 399.50952,160.78231 353.02052,228.077 c 0,0 61.37379,0.282 -97.76121,-0.146 13.339,-45.461 46.34,-72.04469 46.34,-72.04469 l 91.43021,-8.005 c 0,0 7.981,-0.04 9.017,2.745 2.233,2.728 -2.537,10.156 -2.537,10.156 z m 22.08935,69.95369 c 0,0 -16.209,-15.43728 -18.878,-23.79728 -1.136,-3.561 -0.391,-8.308 0.521,-11.395 -0.005,0.007 0.008,-0.039 0.044,-0.157 -0.016,0.049 -0.029,0.107 -0.044,0.157 0.127,-0.175 13.628,-32.09641 24.274,-41.32141 13.686,-7.696 64.52812,-1.69 64.52812,-1.69 l 0.037,78.05869 z m 224.62854,-33.00196 c -11.544,14.993 0.82333,36.79096 0.82333,36.79096 l -125.45162,-0.048 c 0,0 0.265,-77.31869 0.265,-71.23869 0.839,-3.864 0.624,-7.521 2.536,-10.143 1.871,-2.565 25.43498,-2.26 28.86098,-3.381 0.707,0.027 16.02428,-0.88 37.83228,6.198 26.11437,11.24671 34.46442,26.75419 55.13403,41.82173 z" - id="path6" - inkscape:connector-curvature="0" - style="fill:#800000" - sodipodi:nodetypes="cccccccccccccccccccccccssscccssscccccccccccccccccccccccccccccc" /></g></g><path - style="overflow:visible;fill:#666666;stroke:#000000;stroke-width:1.88725293;stroke-miterlimit:4;stroke-dasharray:none" - id="path3514-1-1-5" - sodipodi:type="arc" - sodipodi:cx="6.1523438" - sodipodi:cy="15.137695" - sodipodi:rx="1.8765619" - sodipodi:ry="1.8765619" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - d="m 4.2757819,15.137695 a 1.8765619,1.8765619 0 0 1 1.8761116,-1.876562 1.8765619,1.8765619 0 0 1 1.8770119,1.875662 1.8765619,1.8765619 0 0 1 -1.8752106,1.877462 1.8765619,1.8765619 0 0 1 -1.8779121,-1.87476" - sodipodi:open="true" /><path - style="overflow:visible;fill:#666666;stroke:#000000;stroke-width:1.88725293;stroke-miterlimit:4;stroke-dasharray:none" - id="path3514-1-1-5-5" - sodipodi:type="arc" - sodipodi:cx="18.782524" - sodipodi:cy="15.057586" - sodipodi:rx="1.8765619" - sodipodi:ry="1.8765619" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - d="m 16.905962,15.057586 a 1.8765619,1.8765619 0 0 1 1.876112,-1.876562 1.8765619,1.8765619 0 0 1 1.877012,1.875661 1.8765619,1.8765619 0 0 1 -1.875211,1.877462 1.8765619,1.8765619 0 0 1 -1.877912,-1.87476" - sodipodi:open="true" /></svg> diff --git a/htdocs/public/symbols/svgicons/107-65.svg b/htdocs/public/symbols/svgicons/107-65.svg deleted file mode 100755 index 5f09ee8..0000000 --- a/htdocs/public/symbols/svgicons/107-65.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="-0.258 -0.548 24.000001 24"> - <metadata id="metadata25"/> - <path d="m 18.726837,7.1624246 0,-2.9805619 -0.274301,0 c -0.822901,0 -1.492036,0.6674961 -1.492036,1.490164 0,0.8245402 0.669135,1.4901639 1.492036,1.4901639 l 0.274301,0 z" id="path11" inkscape:connector-curvature="0"/> - <path d="M 16.479538,6.4839284 15.17778,3.8801788 C 14.887096,3.3463224 14.325623,2.9879996 13.672871,2.9879996 l -3.022456,0 c -0.283428,0 -0.508345,0.2267895 -0.508345,0.5102179 0,0.2834284 0.224917,0.5083456 0.508345,0.5083456 l 3.022456,-0.00187 c 0.246918,0 0.515601,0.1664059 0.625368,0.3967061 l 0.828285,1.6603146 1.353014,0.422217 z" id="path13" inkscape:connector-curvature="0"/> - <path d="m 23.04497,9.1623456 c 0.414529,0.1194237 0.722958,0.5031096 0.722958,0.9561304 l -2.320867,0.002 c -3.05345,0 -5.534454,2.482732 -5.534454,5.536428 l -7.5528137,0 c 0,-2.453863 -1.5961827,-4.535884 -3.8052758,-5.262542 L 0.39269753,9.0254029 1.0828386,7.9710686 c 0.2427955,-0.3681411 0.6689213,-0.6111832 1.143162,-0.6111832 0.1098008,0 0.2082513,0.00766 0.2988062,0.026895 l 9.2740942,2.87604 c 0.11375,0.03282 0.231447,0.05404 0.35852,0.05404 0.418229,0 0.782669,-0.211953 1.000543,-0.537901 l 2.108915,-3.0457999 7.778091,2.4291883 z" id="path15" inkscape:connector-curvature="0" fill="#550000" stroke-width="0.702"/> - <circle id="path4236-3" cx="20.15" cy="16.419" r="2.175" fill="#4d4d4d" stroke-width="3"/> - <path d="m 16.589305,16.33956 c 0,-1.980254 1.605314,-3.578313 3.57644,-3.578313 1.976509,0 3.57644,1.598059 3.57644,3.578313 0,1.972998 -1.599931,3.57644 -3.57644,3.57644 -1.971126,0 -3.57644,-1.603676 -3.57644,-3.57644 z m 3.57644,1.33663 c 0.742391,0 1.342014,-0.599623 1.342014,-1.33663 0,-0.742391 -0.599623,-1.338503 -1.342014,-1.338503 -0.73139,0 -1.331247,0.596112 -1.331247,1.338503 2.34e-4,0.736773 0.599857,1.33663 1.331247,1.33663 z" id="path17" inkscape:connector-curvature="0"/> - <circle id="path4236" cx="3.536" cy="15.864" r="2.175" fill="#4d4d4d" stroke-width="3"/> - <path d="m -0.25818392,15.955492 c 0,-2.16866 1.76071982,-3.933125 3.93476302,-3.933125 2.1777879,0 3.9312524,1.764465 3.9312524,3.933125 0,2.174043 -1.7534645,3.936635 -3.9312524,3.936635 -2.1740432,0 -3.93476302,-1.762592 -3.93476302,-3.936635 z m 3.94389082,1.475653 c 0.808157,0 1.4681637,-0.658134 1.4681637,-1.471908 0,-0.813775 -0.6600067,-1.471909 -1.4681637,-1.471909 -0.8172849,0 -1.4719085,0.658134 -1.4719085,1.471909 0,0.813774 0.6546236,1.471908 1.4719085,1.471908 z" id="path19" inkscape:connector-curvature="0"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/108-1.svg b/htdocs/public/symbols/svgicons/108-1.svg deleted file mode 100755 index efcae6d..0000000 --- a/htdocs/public/symbols/svgicons/108-1.svg +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" version="1.0" width="24" height="24"> - <defs id="defs7856"> - <linearGradient id="linearGradient5418" y2="18.14" gradientUnits="userSpaceOnUse" x2="25.17" gradientTransform="matrix(1.0625,0,0,0.93333,-1.5,0.51667)" y1="4.739" x1="21.09" inkscape:collect="always"> - <stop id="stop5414" stop-color="#ffffff"/> - <stop id="stop5416" offset="1" stop-color="#ffffff" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient5426" y2="8.24" gradientUnits="userSpaceOnUse" x2="0" gradientTransform="matrix(1.0452,0,0,0.97519,-0.83237,0.65789)" y1="26.933" inkscape:collect="always"> - <stop id="stop5422" stop-color="#3465a4"/> - <stop id="stop5424" offset="1" stop-color="#204a87"/> - </linearGradient> - <filter id="filter5450" height="1.203" width="1.076" y="-0.102" x="-0.038" inkscape:collect="always"> - <feGaussianBlur id="feGaussianBlur5452" stdDeviation="0.71466" inkscape:collect="always"/> - </filter> - <linearGradient id="linearGradient5741" y2="30.489" gradientUnits="userSpaceOnUse" x2="24" y1="2.01" x1="17.799" inkscape:collect="always"> - <stop id="stop5737" stop-color="#2e3436"/> - <stop id="stop5739" offset="1" stop-color="#080d19"/> - </linearGradient> - </defs> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" transform="translate(0,-24)"> - <g id="g3416" transform="matrix(0.48504583,0,0,0.48504583,0.3597217,23.888137)"> - <path d="M 4.8125,29.363 1.5,42.582 c -0.70396,1.954 0.0843,2.946 0.625,3.125 l 43.125,0 c 0.788,-0.629 1.614,-1.476 1.125,-3.25 l -2.5,-12.969 C 43.809,29.132 43.523,28.94 43.125,28.832 L 6.25,28.863 C 5.5292,28.82 5.1504,28.837 4.8125,29.363 Z" transform="matrix(1.0154,0,0,1.1259,-0.2403,-5.4628)" sodipodi:nodetypes="ccccccccc" id="path5428" inkscape:connector-curvature="0" filter="url(#filter5450)" fill-rule="evenodd" color="#000000"/> - <rect x="4.511" y="2.511" width="38.978" height="27.478" ry="0.492" rx="0.557" id="rect5139" fill="url(#linearGradient5741)" fill-rule="evenodd" stroke="#202526" stroke-linejoin="round" stroke-linecap="square" color="#000000"/> - <path d="M 4.8125,28.656 1.5,41.875 c -0.221,0.613 -0.4895,1.189 -0.2756,1.56 L 2.125,45 45.25,45 46.389,43.566 c 0.312,-0.392 0.194,-1.061 -0.014,-1.816 l -2.5,-12.969 c -0.066,-0.357 -0.352,-0.549 -0.75,-0.656 L 6.25,28.156 C 5.5292,28.113 5.1504,28.13 4.8125,28.656 Z" sodipodi:nodetypes="ccsccsccccc" id="path5147" inkscape:connector-curvature="0" fill="#2e3436" fill-rule="evenodd" stroke="#202526" stroke-linejoin="round" stroke-linecap="square" color="#000000"/> - <path d="m 6.7502,29.752 -0.9651,6.267 c -0.6372,0.926 0.0762,1.396 0.5656,1.481 l 27.679,0 0.088,1.061 8.259,0 c 0.713,-0.298 1.46,-0.7 1.018,-1.541 l -1.29,-7.209 c -0.06,-0.169 -0.319,-0.26 -0.679,-0.311 L 8.0507,29.515 C 7.3985,29.494 7.0557,29.502 6.7499,29.752 Z" sodipodi:nodetypes="ccccccccccc" id="path2787" inkscape:connector-curvature="0" opacity="0.85" fill="none" stroke="#171b1c" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.5"/> - <g transform="translate(-1.0607,-1.5581)" id="g5266" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"> - <rect x="7.745" y="33.12" width="2.928" height="1.511" id="rect5268"/> - <rect x="10.989" y="33.12" width="2.133" height="1.511" id="rect5270"/> - <rect x="13.475" y="33.12" width="2.133" height="1.511" id="rect5272"/> - <rect x="15.906" y="33.12" width="2.133" height="1.511" id="rect5274"/> - <rect x="18.513" y="33.12" width="2.133" height="1.511" id="rect5276"/> - <rect x="20.988" y="33.12" width="2.133" height="1.511" id="rect5278"/> - <rect x="23.463" y="33.12" width="2.133" height="1.511" id="rect5280"/> - <rect x="26.07" y="33.12" width="2.133" height="1.511" id="rect5282"/> - <rect x="28.59" y="33.12" width="2.133" height="1.511" id="rect5284"/> - <rect x="31.06" y="33.12" width="2.133" height="1.511" id="rect5286"/> - <rect x="33.495" y="33.12" width="2.133" height="1.511" id="rect5288"/> - <rect x="36.01" y="33.12" width="2.133" height="1.511" id="rect5290"/> - <rect x="38.489" y="33.12" width="2.133" height="1.511" id="rect5320"/> - <rect x="40.964" y="33.12" width="1.914" height="1.511" id="rect5324"/> - </g> - <rect x="6.596" y="33.12" width="4.077" height="1.511" id="rect5199" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="10.989" y="33.12" width="2.133" height="1.511" id="rect5203" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="13.475" y="33.12" width="2.133" height="1.511" id="rect5207" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="15.906" y="33.12" width="2.133" height="1.511" id="rect5211" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="18.513" y="33.12" width="2.133" height="1.511" id="rect5215" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="20.988" y="33.12" width="2.133" height="1.511" id="rect5219" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="23.463" y="33.12" width="2.133" height="1.511" id="rect5223" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="26.07" y="33.12" width="2.133" height="1.511" id="rect5227" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="28.59" y="33.12" width="2.133" height="1.511" id="rect5231" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="31.06" y="33.12" width="2.133" height="1.511" id="rect5235" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="33.495" y="33.12" width="2.133" height="1.511" id="rect5239" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="36.01" y="33.12" width="2.133" height="1.511" id="rect5243" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="38.31" y="33.12" width="3.724" height="1.511" id="rect5247" fill="#545755" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="6.484" y="5.484" width="35.03" height="21.03" ry="0.372" rx="0.361" id="rect5137" fill="url(#linearGradient5426)" fill-rule="evenodd" stroke="#204a87" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.968"/> - <rect x="11.373" y="35.24" width="2.133" height="1.511" id="rect5149" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="13.994" y="35.24" width="2.133" height="1.511" id="rect5159" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="16.623" y="35.24" width="12.414" height="1.511" id="rect5163" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="29.588" y="35.24" width="2.133" height="1.511" id="rect5167" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="32.21" y="35.24" width="2.133" height="1.511" id="rect5171" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="34.98" y="36.432" width="2.133" height="1.324" id="rect5175" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="37.37" y="35.18" width="2.133" height="1.199" id="rect5183" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="37.623" y="36.554" width="2.133" height="1.168" id="rect5179" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="40.24" y="36.526" width="2.133" height="1.23" id="rect5187" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="8.779" y="35.24" width="2.133" height="1.511" id="rect5191" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <rect x="6.154" y="35.24" width="2.133" height="1.511" id="rect5195" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"/> - <g transform="translate(-1.4982,-2.9331)" id="g5328" fill="#555753" fill-rule="evenodd" stroke="#222728" stroke-linejoin="round" stroke-linecap="square" color="#000000" stroke-width="0.489"> - <rect x="8.495" y="33.12" width="2.178" height="1.511" id="rect5330"/> - <rect x="10.989" y="33.12" width="2.133" height="1.511" id="rect5332"/> - <rect x="13.475" y="33.12" width="2.133" height="1.511" id="rect5334"/> - <rect x="15.906" y="33.12" width="2.133" height="1.511" id="rect5336"/> - <rect x="18.513" y="33.12" width="2.133" height="1.511" id="rect5338"/> - <rect x="20.988" y="33.12" width="2.133" height="1.511" id="rect5340"/> - <rect x="23.463" y="33.12" width="2.133" height="1.511" id="rect5342"/> - <rect x="26.07" y="33.12" width="2.133" height="1.511" id="rect5344"/> - <rect x="28.59" y="33.12" width="2.133" height="1.511" id="rect5346"/> - <rect x="31.06" y="33.12" width="2.133" height="1.511" id="rect5348"/> - <rect x="33.495" y="33.12" width="2.133" height="1.511" id="rect5350"/> - <rect x="36.01" y="33.12" width="2.133" height="1.511" id="rect5352"/> - <rect x="38.489" y="33.12" width="2.133" height="1.511" id="rect5354"/> - <rect x="40.964" y="33.12" width="2.133" height="1.511" id="rect5356"/> - </g> - <path d="M 18.143,39.34 18,41 29,41 28.929,39.462 C 28.913,39.15 28.727,39.006 28.5,39 l -10.071,0 c -0.144,0.009 -0.238,0.124 -0.286,0.34 z" sodipodi:nodetypes="ccccccc" id="path5386" inkscape:connector-curvature="0" opacity="0.75" fill="#555753" fill-rule="evenodd" color="#000000"/> - <path d="M 18.143,41.731 18,41 29,41 28.929,41.769 C 28.904,41.988 28.67,41.973 28.5,42 l -10.071,0 c -0.117,0.016 -0.217,-0.05 -0.286,-0.269 z" sodipodi:nodetypes="ccccccc" id="path5388" inkscape:connector-curvature="0" opacity="0.75" fill="#555753" fill-rule="evenodd" color="#000000"/> - <path d="m 1.591,43.05 c 0.0984,0.644 0.0034,1.371 0.8839,1.68 l 42.426,0 c 0.499,-0.476 0.927,-0.783 1.194,-1.724 L 1.5909,43.05 Z" sodipodi:nodetypes="ccccc" id="path5398" inkscape:connector-curvature="0" fill="#2e3436" fill-rule="evenodd" color="#000000"/> - <path d="m 7,6.1167 0.1255,13.883 c 7.1195,-4.224 26.594,-6.457 33.874,-6.65 l 0,-7.35 -34,0.1167 z" sodipodi:nodetypes="ccccc" id="path5410" inkscape:connector-curvature="0" opacity="0.218" fill="url(#linearGradient5418)" fill-rule="evenodd" color="#000000"/> - <path d="m 1.6661,43 44.396,0 c 0,0.619 -0.488,1 -0.937,1 L 2.8541,44 C 1.9356,44 1.6662,43 1.6662,43 Z" sodipodi:nodetypes="ccccc" id="rect5496" inkscape:connector-curvature="0" opacity="0.12" fill="#eeeeec" fill-rule="evenodd" color="#000000"/> - <path d="M 28.997,43.006 29,44.08 c 0,0.191 -0.154,0.345 -0.345,0.345 l -10.31,0 C 18.154,44.425 18,44.271 18,44.08 l 0,-1.082 10.997,0.008 z" sodipodi:nodetypes="ccccccc" id="rect5733" inkscape:connector-curvature="0" opacity="0.615" fill="#000000" fill-rule="evenodd" color="#000000"/> - <rect x="23.688" y="42.42" width="5.313" height="1" ry="0.345" rx="0.157" id="rect5466" opacity="0.273" fill="#808285" fill-rule="evenodd" color="#000000"/> - <rect x="18" y="42.42" width="5.438" height="1" ry="0.345" rx="0.157" id="rect3766" opacity="0.273" fill="#808285" fill-rule="evenodd" color="#000000"/> - <path d="m 18.501,37.265 -0.147,1.293 4.646,0 -0.031,-1.198 C 22.962,37.117 22.88,37.005 22.781,37 l -4.154,0 c -0.063,0.007 -0.104,0.097 -0.126,0.265 z" sodipodi:nodetypes="ccccccc" id="path4778" inkscape:connector-curvature="0" opacity="0.27" fill="#888a85" fill-rule="evenodd" color="#000000"/> - <path d="m 28.615,37.265 0.154,1.293 -4.813,0 0.032,-1.198 C 23.995,37.117 24.08,37.005 24.183,37 l 4.303,0 c 0.065,0.007 0.108,0.097 0.129,0.265 z" sodipodi:nodetypes="ccccccc" id="path4780" inkscape:connector-curvature="0" opacity="0.27" fill="#888a85" fill-rule="evenodd" color="#000000"/> - <ellipse transform="matrix(0.34811,0,0,0.2901,21.238,17.601)" id="path4782" cx="6.497" cy="59.977" rx="2.873" ry="1.724" fill="#555753" fill-rule="evenodd" stroke="#3465a4" fill-opacity="0.75" stroke-width="3.147"/> - <rect x="22.938" y="37" width="1.094" height="1.5" ry="0.345" rx="0.157" id="rect3781" opacity="0.619" fill="#808285" fill-rule="evenodd" color="#000000"/> - </g> - </g> - <metadata id="metadata88"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/108-2.svg b/htdocs/public/symbols/svgicons/108-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/108-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/109-1.svg b/htdocs/public/symbols/svgicons/109-1.svg deleted file mode 100755 index 9ca89f9..0000000 --- a/htdocs/public/symbols/svgicons/109-1.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" version="1.0" width="24" height="24"> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" transform="translate(0,-24)"> - <rect id="rect3508" width="24" height="24" y="24" rx="4" fill="#e6e6e6" fill-rule="evenodd"/> - <text x="1.346" y="32.758" id="text3510" sodipodi:linespacing="125%" font-family="sans-serif" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="10"><tspan sodipodi:role="line" id="tspan3512" x="1.346" y="32.758">MIC</tspan> - </text> - <text x="8.492" y="46.935" id="text3514" sodipodi:linespacing="125%" font-family="sans-serif" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="10"><tspan sodipodi:role="line" id="tspan3516" x="8.492" y="46.935">E</tspan> - </text> - <path sodipodi:type="arc" id="path5701" sodipodi:cx="12.000047" sodipodi:cy="36" sodipodi:rx="1.8725199" sodipodi:ry="1.8725199" d="m 10.127527,36 a 1.8725199,1.8725199 0 0 1 1.87207,-1.87252 1.8725199,1.8725199 0 0 1 1.872969,1.871621 1.8725199,1.8725199 0 0 1 -1.871171,1.873418 1.8725199,1.8725199 0 0 1 -1.873867,-1.870721" sodipodi:start="3.1415927" sodipodi:end="3.1406327" sodipodi:open="true" fill="#ff0000" stroke="#ff0000" stroke-linejoin="round" stroke-linecap="round" stroke-width="1.674"/> - </g> - <metadata id="metadata88"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/109-2.svg b/htdocs/public/symbols/svgicons/109-2.svg deleted file mode 100755 index e28599f..0000000 --- a/htdocs/public/symbols/svgicons/109-2.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata3740"/> - <path d="M 11.98987,1.6991642 12.01013,22.300836" id="path3744" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" fill="none" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="3.351"/> - <rect id="rect4546" width="22.811" height="11.37" x="0.595" y="2.679" rx="3.176" fill="#ffffff" stroke="#000000" stroke-linecap="round" stroke-width="1.189"/> - <text x="1.261" y="12.178" id="text4548" sodipodi:linespacing="125%" font-family="sans-serif" word-spacing="0" line-height="125%" letter-spacing="0" font-size="11.25"><tspan sodipodi:role="line" id="tspan4550" x="1.261" y="12.178">888</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/110-1.svg b/htdocs/public/symbols/svgicons/110-1.svg deleted file mode 100755 index c3bfee6..0000000 --- a/htdocs/public/symbols/svgicons/110-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3276"/> - <path sodipodi:type="arc" id="path3280" sodipodi:cx="11.898305" sodipodi:cy="12.101695" sodipodi:rx="12.20339" sodipodi:ry="12.20339" d="m 24.101695,12.101695 a 12.20339,12.20339 0 1 1 -24.40678018,0 12.20339,12.20339 0 1 1 24.40678018,0 z" transform="matrix(0.9201921,0,0,0.9201921,1.0512738,0.86411581)" fill="#cccccc" stroke="#000000" stroke-width="1.675"/> - <path sodipodi:type="arc" id="path3282" sodipodi:cx="12" sodipodi:cy="11.898305" sodipodi:rx="7.2203388" sodipodi:ry="7.2203388" d="m 19.220339,11.898305 a 7.2203388,7.2203388 0 1 1 -14.4406778,0 7.2203388,7.2203388 0 1 1 14.4406778,0 z" transform="matrix(0.93617311,0,0,0.93617311,0.76592268,0.86112686)" fill="#999999" stroke="#000000" stroke-width="1.582"/> - <path sodipodi:type="arc" id="path3284" sodipodi:cx="11.79661" sodipodi:cy="12" sodipodi:rx="1.2203389" sodipodi:ry="1.2203389" d="m 13.016949,12 a 1.2203389,1.2203389 0 1 1 -2.440678,0 1.2203389,1.2203389 0 1 1 2.440678,0 z" transform="translate(0.20339012,0)" fill="#0000ff" stroke="#0000ff" stroke-width="1.582"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/110-2.svg b/htdocs/public/symbols/svgicons/110-2.svg deleted file mode 100755 index f0c31d3..0000000 --- a/htdocs/public/symbols/svgicons/110-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3070"/> - <path sodipodi:type="star" id="path3879" sodipodi:sides="3" sodipodi:cx="11.186441" sodipodi:cy="12.610169" sodipodi:r1="12.604427" sodipodi:r2="6.3022137" sodipodi:arg1="0.52359878" sodipodi:arg2="1.5707963" inkscape:flatsided="false" inkscape:rounded="0" inkscape:randomized="0" d="m 22.102196,18.912383 -10.915754,0 -10.91575488,0 L 5.7285642,9.4590627 11.186441,0.00574207 16.644318,9.4590624 Z" inkscape:transform-center-y="-3.6355753" transform="matrix(1.0454529,0,0,1.1537455,0.3051024,1.0866167)" fill="#ff0000" stroke="#ff0000" stroke-linejoin="round" stroke-width="1.125"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/111-1.svg b/htdocs/public/symbols/svgicons/111-1.svg deleted file mode 100755 index 4580c64..0000000 --- a/htdocs/public/symbols/svgicons/111-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3957"/> - <path d="m 2.3225454,23.562785 19.2338326,0 0,-11.58873 2.006407,0 L 12.025945,0.43721472 0.43721467,12.025945 l 1.91992393,0 z" id="path3961" inkscape:connector-curvature="0" fill="#ff0000" stroke="#000000" stroke-linejoin="round" stroke-width="0.874"/> - <text x="4.925" y="16.972" id="text4509" sodipodi:linespacing="125%" transform="scale(0.80564602,1.2412399)" fill="#ffffff" font-family="Sans" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="8.689"><tspan sodipodi:role="line" id="tspan4511" x="4.925" y="16.972">EOC</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/111-2.svg b/htdocs/public/symbols/svgicons/111-2.svg deleted file mode 100755 index 6a51505..0000000 --- a/htdocs/public/symbols/svgicons/111-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3276"/> - <ellipse id="path3280" cx="12" cy="12" rx="9.95" ry="9.95" fill="#ffffff" stroke="#ff0000" stroke-width="4.1"/> - <circle id="path3282" cx="12" cy="12" r="3.419" fill="#ffffff" stroke="#ffff00" stroke-width="2.826"/> - <circle id="path3284" cx="12" cy="12" r="1.547" fill="#ff0000" stroke="#ff0000" stroke-width="2.01"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/112-1.svg b/htdocs/public/symbols/svgicons/112-1.svg deleted file mode 100755 index dd97456..0000000 --- a/htdocs/public/symbols/svgicons/112-1.svg +++ /dev/null @@ -1,72 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - id="svg3000" - version="1.1" - inkscape:version="0.48.4 r9939" - sodipodi:docname="Nytt dokument 2"> - <defs - id="defs3002" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="7.9195959" - inkscape:cx="25.766187" - inkscape:cy="25.439181" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - inkscape:window-width="1867" - inkscape:window-height="1056" - inkscape:window-x="53" - inkscape:window-y="24" - inkscape:window-maximized="1" /> - <metadata - id="metadata3005"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1028.3622)"> - <g - transform="matrix(-44.210088,0,0,44.210088,35.674396,1031.1014)" - id="g6547"> - <path - d="m 0.67499548,0.44929292 -0.002899,4.1666e-4 -0.002795,3.6458e-4 -0.002691,2.9514e-4 -0.002569,2.2569e-4 -0.0025,1.7361e-4 -0.002378,1.0417e-4 -0.002292,5.208e-5 -0.002205,0 -0.002101,-6.944e-5 -0.002014,-1.2153e-4 -0.001927,-1.7361e-4 -0.00184,-2.2569e-4 -0.001771,-2.9514e-4 -0.001667,-3.2986e-4 -0.001597,-3.8194e-4 -0.00151,-4.3402e-4 -0.001441,-4.8611e-4 -0.001372,-5.3819e-4 -0.001285,-5.9028e-4 -0.001233,-6.2499e-4 -0.001146,-6.7708e-4 -0.001094,-7.2916e-4 -0.001024,-7.6389e-4 -9.5485e-4,-8.1596e-4 -9.0277e-4,-8.5069e-4 -8.3333e-4,-9.0278e-4 -7.8125e-4,-9.3749e-4 -7.2916e-4,-9.7222e-4 -6.7708e-4,-0.001024 -6.2499e-4,-0.001059 -0.001094,-0.002222 -9.2013e-4,-0.002361 -7.4652e-4,-0.0025 -6.0764e-4,-0.002622 -4.6875e-4,-0.00276 -3.2985e-4,-0.002865 -2.4306e-4,-0.002969 -1.5625e-4,-0.003073 -8.68e-5,-0.003177 -1.736e-5,-0.003247 3.472e-5,-0.003333 3.472e-5,-0.003403 6.944e-5,-0.003455 8.681e-5,-0.007118 1.736e-5,-0.003611 -0.003802,-0.0803294 -0.0158332,0.0741662 c -0.003333,0.0137499 -0.007083,0.0266665 0.0129166,0.0370831 0.0141666,0.0125173 -0.001667,0.0296005 -0.0170832,0.0275172 -0.0462497,0.001649 -0.0395831,-0.0291665 -0.0354164,-0.0508504 l 0.0025,-0.0316665 0.0075,-0.0645829 -0.00625,-0.0162499 C 0.51582983,0.27137739 0.48166338,0.26179412 0.44291363,0.24096092 l -0.0274998,0.00375 c -0.0129166,0.002083 -0.009583,0.0166666 -0.0108333,0.0262498 l -0.004167,0.0262672 -0.0229165,0.059583 -0.001667,0.004983 c -0.001667,0.004167 -0.00125,0.0204165 0.004583,0.0287498 l 0.0124999,0.0250172 c 0.009167,0.0137326 0.0116666,0.0487323 -0.0141666,0.0374824 l 4.1666e-4,0 -0.0191665,-0.007917 c -0.0137499,-0.005816 -0.0249998,-0.0437324 -0.0299998,-0.0712322 l 8.3333e-4,-0.0391838 c -0.0120833,-0.003316 -0.0170832,0.0662496 -0.0120833,0.0808502 l 0.0120833,0.0362324 c 0.003333,0.0116666 -0.0104166,0.0158506 -0.0199999,0.0158506 -0.0224998,0 -0.0324998,-0.0229339 -0.0370831,-0.0421004 l -0.003333,-0.0145832 c -0.005833,-0.0220832 -0.002917,-0.055833 0.008333,-0.0754162 l 0.005833,-0.0120833 c 0.009583,-0.0241665 -0.002917,-0.0412497 -0.005833,-0.0537496 -0.009583,-0.0391664 -0.0174999,-0.0770828 0.009583,-0.1145826 l 0.0025,-0.002899 c -0.00125,-0.002934 -0.009167,-0.009167 -0.0137499,-0.0237672 C 0.26666352,0.0951289 0.25749692,0.04054591 0.27041312,0.04054591 l 0.00875,-4.1666e-4 c 0.0216665,0 0.0149999,0.08999943 0.0412497,0.08416613 l 0.1874988,0.002083 0.0333331,-0.009149 c 0.0116666,-0.003351 0.0220832,-0.0108506 0.0329164,-0.01751725 l 0.0216665,-0.01333325 c 0.0241665,0.02458318 0.045833,0.03999975 0.0812495,0.05291633 0.009583,0.0733329 -0.00125,0.0896001 -0.0104166,0.13333248 l -0.003333,0.0179166 c -0.007083,0.0312672 -0.009167,0.0637496 -0.0075,0.0962494 l 8.3332e-4,0.0149999 c -8.3332e-4,0.0154166 0.008333,0.0166839 0.0204165,0.0204339 0.007917,0.004149 0.0133333,0.0195658 -0.002083,0.0270658 l 4.1666e-4,0 -4.1666e-4,0 z" - id="path12" - inkscape:connector-curvature="0" - stroke-miterlimit="10.433" - style="fill:#1e1916;stroke:#1e1916;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10.43299961" /> - <path - d="m 0.71499522,1.29127e-4 9.375e-4,6.9444e-4 9.7221e-4,6.94443e-4 0.001962,0.0015104 0.002031,0.00161458 0.002066,0.00171874 0.002101,0.00180554 0.002118,0.00187499 0.002153,0.0019444 0.00217,0.0019965 0.00217,0.002066 0.00217,0.0020833 0.004288,0.0042708 0.002101,0.0021528 0.002083,0.0021528 0.002031,0.0021354 0.001979,0.0021354 0.0133332,0.01414922 c 0.008333,0.0087499 0.0212499,0.0074999 0.0324998,0.0099999 l 0.004583,4.1667e-4 c 0.0120832,0.006684 0.008333,0.02001723 0.004167,0.02999981 l -0.0025,0.0062673 c -0.0120832,0.02873245 -0.047083,0.03081577 -0.0720829,0.01748253 l -0.0108333,-0.005833 -0.00375,0 -0.007917,0.005 -0.0154166,0.0125173 C 0.65791226,0.10681247 0.63166242,0.09012855 0.61082922,0.06762869 l 0.048333,-0.06083294 0.0162499,-0.02333318 0.003333,-0.0079166 0.00375,-0.0087326 c 0,0 0.0149999,-0.01876724 0.0237498,-0.01501727 0.00875,0.0037673 0.0141666,0.01999987 0.0120833,0.02833316 l -0.0025,0.00999993 -8.3333e-4,0.009999937 4.1667e-4,0" - id="path14" - inkscape:connector-curvature="0" - stroke-miterlimit="10.433" - style="fill:#1e1916;stroke:#1e1916;stroke-width:0;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10.43299961" /> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/112-2.svg b/htdocs/public/symbols/svgicons/112-2.svg deleted file mode 100755 index 68d5c87..0000000 --- a/htdocs/public/symbols/svgicons/112-2.svg +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <switch id="switch3117" transform="matrix(0.04126034,0,0,0.04126034,-0.21995112,513.7136)"> - <g id="g3121"> - <path d="m 587.001,191.775 c 0,-34.867 -24.173,-64.178 -56.635,-72.094 -0.487,-0.119 -0.977,-0.23 -1.468,-0.34 -1.321,0.132 -2.625,-0.138 -3.761,-0.734 -4.019,-0.676 -8.14,-1.047 -12.347,-1.047 -14.877,0 -29.225,4.381 -41.491,12.671 -3.054,2.063 -7.2,1.261 -9.263,-1.792 -0.774,-1.146 -1.145,-2.447 -1.144,-3.735 0.002,-2.139 1.03,-4.239 2.936,-5.526 14.481,-9.786 31.411,-14.959 48.962,-14.959 1.654,0 3.297,0.051 4.928,0.142 C 499.864,65.46 460.832,40.014 417.312,40.014 c -46.851,0 -87.649,29.456 -103.479,71.663 -2.983,7.955 -5.083,16.361 -6.166,25.111 -0.418,3.378 -3.293,5.852 -6.612,5.852 -0.207,0 -0.417,-0.019 -0.627,-0.039 -0.067,-0.006 -0.133,-0.004 -0.2,-0.012 -3.656,-0.452 -6.253,-3.783 -5.801,-7.439 1.036,-8.369 2.905,-16.456 5.507,-24.189 -42.585,1.412 -76.817,35.727 -78.098,78.348 8.087,0.308 15.9,2.767 22.695,7.162 1.975,1.276 3.044,3.421 3.043,5.609 -0.001,1.24 -0.342,2.495 -1.065,3.614 -2,3.095 -6.129,3.979 -9.224,1.978 -4.437,-2.869 -9.495,-4.561 -14.755,-4.959 -0.804,-0.062 -1.611,-0.097 -2.423,-0.097 -14.922,0 -27.461,10.372 -30.804,24.284 11.929,-3.955 24.376,-6.65 37.163,-7.951 5.847,-0.594 11.765,-0.901 17.736,-0.901 5.979,0 11.893,0.314 17.732,0.909 11.826,1.203 23.331,3.594 34.384,7.062 20.481,6.429 39.406,16.55 55.945,29.621 6.605,5.221 12.835,10.904 18.624,17.02 h 135.23 c 44.668,0 80.877,-36.205 80.885,-80.871 0,-0.006 -10e-4,-0.01 -10e-4,-0.014 z" id="path3123" inkscape:connector-curvature="0" fill="#b3b3b3"/> - <path d="m 521.806,465.719 c -1.138,0 -2.266,0.055 -3.387,0.139 -14.255,1.062 -27.023,8.777 -34.622,21.114 -2.721,4.414 -8.506,5.79 -12.921,3.07 -2.88,-1.773 -4.455,-4.852 -4.456,-8.002 0,-1.681 0.439,-3.382 1.385,-4.918 11.22,-18.215 30.377,-29.352 51.597,-30.136 -1.799,-60.006 -50.021,-108.336 -109.977,-110.315 3.667,10.895 6.302,22.287 7.761,34.077 0.637,5.147 -3.02,9.836 -8.166,10.473 -0.094,0.012 -0.187,0.009 -0.281,0.018 -0.296,0.027 -0.592,0.055 -0.884,0.055 -4.672,0 -8.72,-3.482 -9.308,-8.238 -1.525,-12.323 -4.483,-24.163 -8.688,-35.367 -9.626,-25.658 -25.811,-47.963 -46.402,-65.029 -2.799,-2.319 -5.68,-4.541 -8.637,-6.662 -25.652,-18.406 -57.028,-29.169 -90.619,-29.169 -2.87,0 -5.725,0.084 -8.565,0.239 -15.718,0.86 -30.94,4.069 -45.253,9.344 -38.31,14.117 -70.116,42.994 -87.554,81 2.307,-0.129 4.63,-0.201 6.969,-0.201 24.705,0 48.537,7.281 68.921,21.057 2.683,1.812 4.13,4.769 4.133,7.779 0.002,1.812 -0.52,3.645 -1.61,5.259 -2.904,4.298 -8.741,5.427 -13.038,2.522 -17.267,-11.669 -37.463,-17.836 -58.405,-17.836 -5.904,0 -11.693,0.5 -17.333,1.446 -1.631,0.87 -3.511,1.261 -5.415,1.056 -0.665,0.148 -1.328,0.304 -1.988,0.465 -45.703,11.139 -79.73,52.417 -79.73,101.501 0,0.011 -0.001,0.021 -0.001,0.031 0.017,62.868 50.986,113.828 113.86,113.828 H 405.6 512.417 c 29.816,0 53.992,-24.176 53.992,-53.997 0,-24.594 -20.009,-44.603 -44.603,-44.603 z" id="path3125" inkscape:connector-curvature="0" fill="#b3b3b3"/> - </g> - </switch> - <switch transform="matrix(0.04099584,0,0,0.04099584,-0.41974494,1028.2304)" id="switch4024"> - <g id="g4028"> - <g id="g4030"> - <path inkscape:connector-curvature="0" d="m 259.145,407.478 c 17.73,-46.855 62.652,-78.06 113.067,-78.06 19.159,0 37.393,4.506 53.622,12.558 8.705,-21.276 13.515,-44.558 13.515,-68.967 0,-100.664 -81.604,-182.267 -182.268,-182.267 -100.663,0 -182.266,81.603 -182.266,182.267 0,82.6 54.95,152.352 130.283,174.73 11.605,-19.933 31.027,-34.761 54.047,-40.261 z" id="path4032" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 294.336,76.668 c -0.122,0 -0.245,-0.011 -0.367,-0.034 -12.121,-2.262 -24.531,-3.409 -36.888,-3.409 -11.317,0 -22.722,0.969 -33.895,2.88 -0.113,0.02 -0.226,0.029 -0.338,0.029 -0.647,0 -1.263,-0.314 -1.641,-0.857 -0.443,-0.636 -0.479,-1.472 -0.091,-2.143 l 23.761,-41.157 c 3.607,-6.248 8.423,-9.688 13.56,-9.688 5.137,0 9.953,3.44 13.561,9.688 l 24.07,41.69 c 0.391,0.676 0.352,1.518 -0.099,2.155 -0.38,0.537 -0.991,0.846 -1.633,0.846 z" id="path4034" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 103.03,144.698 c -0.174,0 -0.349,-0.022 -0.521,-0.069 -0.749,-0.202 -1.313,-0.819 -1.448,-1.583 L 92.804,96.214 C 91.729,90.115 92.71,84.88 95.568,81.473 c 2.333,-2.78 5.779,-4.25 9.966,-4.25 2.499,0 5.206,0.524 8.045,1.558 l 45.236,16.465 c 0.734,0.267 1.245,0.937 1.309,1.716 0.064,0.778 -0.331,1.523 -1.012,1.906 -20.767,11.696 -39.122,26.877 -54.555,45.121 -0.386,0.457 -0.948,0.709 -1.527,0.709 z" id="path4036" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 55.301,274.2 c -0.462,0 -0.919,-0.16 -1.286,-0.468 l -36.419,-30.56 c -5.526,-4.638 -8.078,-9.978 -7.186,-15.037 0.892,-5.059 5.117,-9.204 11.896,-11.671 l 45.213,-16.457 c 0.223,-0.081 0.455,-0.121 0.684,-0.121 0.525,0 1.041,0.207 1.423,0.594 0.549,0.556 0.725,1.381 0.449,2.112 -8.382,22.233 -12.68,45.655 -12.774,69.615 -0.003,0.776 -0.455,1.48 -1.158,1.807 -0.269,0.125 -0.557,0.186 -0.842,0.186 z" id="path4038" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 54.448,404.091 c -7.214,0 -12.602,-2.45 -15.17,-6.898 -2.568,-4.449 -1.997,-10.341 1.61,-16.589 l 24.06,-41.67 c 0.359,-0.622 1.022,-1 1.731,-1 0.062,0 0.124,0.003 0.187,0.009 0.778,0.072 1.442,0.592 1.701,1.329 7.889,22.476 19.65,43.181 34.958,61.539 0.497,0.597 0.604,1.427 0.275,2.129 -0.329,0.703 -1.035,1.152 -1.811,1.152 l -47.541,-10e-4 z" id="path4040" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 174.05,508.828 c -6.811,0 -11.828,-5.395 -13.421,-14.431 l -8.36,-47.413 c -0.136,-0.771 0.189,-1.549 0.833,-1.993 0.341,-0.235 0.739,-0.354 1.137,-0.354 0.353,0 0.706,0.093 1.021,0.28 12.801,7.597 26.484,13.76 40.669,18.317 1.05,0.338 1.629,1.462 1.293,2.513 -2.481,7.765 -4.133,14.701 -4.133,23.319 0,1.573 0.304,4.142 0.548,6.204 l 0.054,0.453 c 0.076,0.646 -0.166,1.288 -0.649,1.723 l -6.928,6.226 c -4.04,3.389 -8.193,5.156 -12.064,5.156 z" id="path4042" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 457.351,363.719 c -0.501,0 -1,-0.188 -1.385,-0.557 -4.231,-4.062 -8.809,-7.854 -13.604,-11.272 -0.759,-0.542 -1.044,-1.535 -0.686,-2.396 1.022,-2.462 1.996,-4.938 2.892,-7.36 0.27,-0.727 0.935,-1.233 1.707,-1.299 0.057,-0.005 0.113,-0.007 0.17,-0.007 0.71,0 1.372,0.378 1.731,1 l 10.906,18.892 c 0.497,0.862 0.285,1.96 -0.499,2.574 -0.362,0.284 -0.798,0.425 -1.232,0.425 z" id="path4044" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 458.85,277.275 c -0.291,0 -0.584,-0.063 -0.857,-0.193 -0.707,-0.335 -1.153,-1.052 -1.143,-1.834 0.011,-0.772 0.016,-1.513 0.016,-2.239 0,-23.188 -3.945,-45.919 -11.726,-67.56 -0.263,-0.73 -0.079,-1.546 0.471,-2.094 0.381,-0.38 0.892,-0.583 1.411,-0.583 0.229,0 0.461,0.04 0.685,0.121 l 44.62,16.243 c 6.778,2.467 11.003,6.612 11.896,11.671 0.892,5.059 -1.66,10.399 -7.186,15.037 l -36.901,30.964 c -0.368,0.307 -0.825,0.467 -1.286,0.467 z" id="path4046" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 413.104,147.04 c -0.59,0 -1.161,-0.262 -1.546,-0.731 -15.14,-18.452 -33.266,-33.903 -53.873,-45.926 -0.67,-0.391 -1.054,-1.134 -0.984,-1.906 0.07,-0.772 0.579,-1.436 1.309,-1.701 l 44.652,-16.25 c 2.841,-1.034 5.547,-1.558 8.044,-1.558 4.188,0 7.636,1.47 9.968,4.251 2.857,3.405 3.839,8.64 2.763,14.739 l -8.362,47.428 c -0.136,0.77 -0.707,1.39 -1.463,1.587 -0.17,0.046 -0.34,0.067 -0.508,0.067 z" id="path4048" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 595.627,530.521 c -0.834,-16.318 -14.371,-29.338 -30.894,-29.338 -0.795,0 -1.583,0.039 -2.366,0.098 -9.877,0.741 -18.727,6.09 -23.994,14.643 -1.887,3.061 -5.897,4.017 -8.961,2.129 -1.996,-1.23 -3.089,-3.364 -3.09,-5.549 0,-1.166 0.305,-2.347 0.961,-3.412 7.777,-12.625 21.057,-20.328 35.763,-20.88 -1.24,-41.618 -34.663,-75.128 -76.243,-76.507 2.54,7.55 4.365,15.445 5.376,23.615 0.442,3.569 -2.094,6.821 -5.663,7.263 -0.065,0.008 -0.129,0.006 -0.194,0.012 -0.206,0.02 -0.411,0.038 -0.614,0.038 -3.239,0 -6.047,-2.415 -6.454,-5.713 -1.058,-8.541 -3.106,-16.748 -6.02,-24.515 -1.118,-2.981 -2.362,-5.899 -3.729,-8.744 -7.823,-16.288 -19.604,-30.232 -34.023,-40.684 -4.734,-3.432 -9.754,-6.486 -15.012,-9.122 -14.585,-7.312 -30.999,-11.411 -48.257,-11.411 -42.489,0 -80.596,24.844 -98.026,62.824 1.596,-0.089 3.199,-0.144 4.815,-0.144 17.132,0 33.66,5.05 47.798,14.604 1.86,1.257 2.864,3.308 2.866,5.396 10e-4,1.257 -0.36,2.526 -1.116,3.646 -2.014,2.979 -6.063,3.764 -9.043,1.749 -11.976,-8.092 -25.982,-12.369 -40.505,-12.369 -4.108,0 -8.132,0.361 -12.056,1.022 -1.109,0.582 -2.381,0.845 -3.67,0.717 -0.479,0.106 -0.957,0.216 -1.434,0.331 -18.139,4.424 -33.616,15.69 -43.544,30.905 -3.263,5 -5.92,10.425 -7.879,16.174 -2.063,6.056 -3.355,12.464 -3.736,19.115 -0.08,1.387 -0.13,2.78 -0.13,4.187 0,0.004 0,0.009 0,0.013 0.007,43.604 35.357,78.95 78.963,78.95 h 198.628 74.08 c 20.677,0 37.443,-16.766 37.443,-37.447 0,-0.536 -0.019,-1.067 -0.04,-1.596 z" id="path4050" fill="#b3b3b3"/> - </g> - </g> - </switch> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/112-2.svg~ b/htdocs/public/symbols/svgicons/112-2.svg~ deleted file mode 100755 index 68d5c87..0000000 --- a/htdocs/public/symbols/svgicons/112-2.svg~ +++ /dev/null @@ -1,28 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <switch id="switch3117" transform="matrix(0.04126034,0,0,0.04126034,-0.21995112,513.7136)"> - <g id="g3121"> - <path d="m 587.001,191.775 c 0,-34.867 -24.173,-64.178 -56.635,-72.094 -0.487,-0.119 -0.977,-0.23 -1.468,-0.34 -1.321,0.132 -2.625,-0.138 -3.761,-0.734 -4.019,-0.676 -8.14,-1.047 -12.347,-1.047 -14.877,0 -29.225,4.381 -41.491,12.671 -3.054,2.063 -7.2,1.261 -9.263,-1.792 -0.774,-1.146 -1.145,-2.447 -1.144,-3.735 0.002,-2.139 1.03,-4.239 2.936,-5.526 14.481,-9.786 31.411,-14.959 48.962,-14.959 1.654,0 3.297,0.051 4.928,0.142 C 499.864,65.46 460.832,40.014 417.312,40.014 c -46.851,0 -87.649,29.456 -103.479,71.663 -2.983,7.955 -5.083,16.361 -6.166,25.111 -0.418,3.378 -3.293,5.852 -6.612,5.852 -0.207,0 -0.417,-0.019 -0.627,-0.039 -0.067,-0.006 -0.133,-0.004 -0.2,-0.012 -3.656,-0.452 -6.253,-3.783 -5.801,-7.439 1.036,-8.369 2.905,-16.456 5.507,-24.189 -42.585,1.412 -76.817,35.727 -78.098,78.348 8.087,0.308 15.9,2.767 22.695,7.162 1.975,1.276 3.044,3.421 3.043,5.609 -0.001,1.24 -0.342,2.495 -1.065,3.614 -2,3.095 -6.129,3.979 -9.224,1.978 -4.437,-2.869 -9.495,-4.561 -14.755,-4.959 -0.804,-0.062 -1.611,-0.097 -2.423,-0.097 -14.922,0 -27.461,10.372 -30.804,24.284 11.929,-3.955 24.376,-6.65 37.163,-7.951 5.847,-0.594 11.765,-0.901 17.736,-0.901 5.979,0 11.893,0.314 17.732,0.909 11.826,1.203 23.331,3.594 34.384,7.062 20.481,6.429 39.406,16.55 55.945,29.621 6.605,5.221 12.835,10.904 18.624,17.02 h 135.23 c 44.668,0 80.877,-36.205 80.885,-80.871 0,-0.006 -10e-4,-0.01 -10e-4,-0.014 z" id="path3123" inkscape:connector-curvature="0" fill="#b3b3b3"/> - <path d="m 521.806,465.719 c -1.138,0 -2.266,0.055 -3.387,0.139 -14.255,1.062 -27.023,8.777 -34.622,21.114 -2.721,4.414 -8.506,5.79 -12.921,3.07 -2.88,-1.773 -4.455,-4.852 -4.456,-8.002 0,-1.681 0.439,-3.382 1.385,-4.918 11.22,-18.215 30.377,-29.352 51.597,-30.136 -1.799,-60.006 -50.021,-108.336 -109.977,-110.315 3.667,10.895 6.302,22.287 7.761,34.077 0.637,5.147 -3.02,9.836 -8.166,10.473 -0.094,0.012 -0.187,0.009 -0.281,0.018 -0.296,0.027 -0.592,0.055 -0.884,0.055 -4.672,0 -8.72,-3.482 -9.308,-8.238 -1.525,-12.323 -4.483,-24.163 -8.688,-35.367 -9.626,-25.658 -25.811,-47.963 -46.402,-65.029 -2.799,-2.319 -5.68,-4.541 -8.637,-6.662 -25.652,-18.406 -57.028,-29.169 -90.619,-29.169 -2.87,0 -5.725,0.084 -8.565,0.239 -15.718,0.86 -30.94,4.069 -45.253,9.344 -38.31,14.117 -70.116,42.994 -87.554,81 2.307,-0.129 4.63,-0.201 6.969,-0.201 24.705,0 48.537,7.281 68.921,21.057 2.683,1.812 4.13,4.769 4.133,7.779 0.002,1.812 -0.52,3.645 -1.61,5.259 -2.904,4.298 -8.741,5.427 -13.038,2.522 -17.267,-11.669 -37.463,-17.836 -58.405,-17.836 -5.904,0 -11.693,0.5 -17.333,1.446 -1.631,0.87 -3.511,1.261 -5.415,1.056 -0.665,0.148 -1.328,0.304 -1.988,0.465 -45.703,11.139 -79.73,52.417 -79.73,101.501 0,0.011 -0.001,0.021 -0.001,0.031 0.017,62.868 50.986,113.828 113.86,113.828 H 405.6 512.417 c 29.816,0 53.992,-24.176 53.992,-53.997 0,-24.594 -20.009,-44.603 -44.603,-44.603 z" id="path3125" inkscape:connector-curvature="0" fill="#b3b3b3"/> - </g> - </switch> - <switch transform="matrix(0.04099584,0,0,0.04099584,-0.41974494,1028.2304)" id="switch4024"> - <g id="g4028"> - <g id="g4030"> - <path inkscape:connector-curvature="0" d="m 259.145,407.478 c 17.73,-46.855 62.652,-78.06 113.067,-78.06 19.159,0 37.393,4.506 53.622,12.558 8.705,-21.276 13.515,-44.558 13.515,-68.967 0,-100.664 -81.604,-182.267 -182.268,-182.267 -100.663,0 -182.266,81.603 -182.266,182.267 0,82.6 54.95,152.352 130.283,174.73 11.605,-19.933 31.027,-34.761 54.047,-40.261 z" id="path4032" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 294.336,76.668 c -0.122,0 -0.245,-0.011 -0.367,-0.034 -12.121,-2.262 -24.531,-3.409 -36.888,-3.409 -11.317,0 -22.722,0.969 -33.895,2.88 -0.113,0.02 -0.226,0.029 -0.338,0.029 -0.647,0 -1.263,-0.314 -1.641,-0.857 -0.443,-0.636 -0.479,-1.472 -0.091,-2.143 l 23.761,-41.157 c 3.607,-6.248 8.423,-9.688 13.56,-9.688 5.137,0 9.953,3.44 13.561,9.688 l 24.07,41.69 c 0.391,0.676 0.352,1.518 -0.099,2.155 -0.38,0.537 -0.991,0.846 -1.633,0.846 z" id="path4034" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 103.03,144.698 c -0.174,0 -0.349,-0.022 -0.521,-0.069 -0.749,-0.202 -1.313,-0.819 -1.448,-1.583 L 92.804,96.214 C 91.729,90.115 92.71,84.88 95.568,81.473 c 2.333,-2.78 5.779,-4.25 9.966,-4.25 2.499,0 5.206,0.524 8.045,1.558 l 45.236,16.465 c 0.734,0.267 1.245,0.937 1.309,1.716 0.064,0.778 -0.331,1.523 -1.012,1.906 -20.767,11.696 -39.122,26.877 -54.555,45.121 -0.386,0.457 -0.948,0.709 -1.527,0.709 z" id="path4036" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 55.301,274.2 c -0.462,0 -0.919,-0.16 -1.286,-0.468 l -36.419,-30.56 c -5.526,-4.638 -8.078,-9.978 -7.186,-15.037 0.892,-5.059 5.117,-9.204 11.896,-11.671 l 45.213,-16.457 c 0.223,-0.081 0.455,-0.121 0.684,-0.121 0.525,0 1.041,0.207 1.423,0.594 0.549,0.556 0.725,1.381 0.449,2.112 -8.382,22.233 -12.68,45.655 -12.774,69.615 -0.003,0.776 -0.455,1.48 -1.158,1.807 -0.269,0.125 -0.557,0.186 -0.842,0.186 z" id="path4038" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 54.448,404.091 c -7.214,0 -12.602,-2.45 -15.17,-6.898 -2.568,-4.449 -1.997,-10.341 1.61,-16.589 l 24.06,-41.67 c 0.359,-0.622 1.022,-1 1.731,-1 0.062,0 0.124,0.003 0.187,0.009 0.778,0.072 1.442,0.592 1.701,1.329 7.889,22.476 19.65,43.181 34.958,61.539 0.497,0.597 0.604,1.427 0.275,2.129 -0.329,0.703 -1.035,1.152 -1.811,1.152 l -47.541,-10e-4 z" id="path4040" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 174.05,508.828 c -6.811,0 -11.828,-5.395 -13.421,-14.431 l -8.36,-47.413 c -0.136,-0.771 0.189,-1.549 0.833,-1.993 0.341,-0.235 0.739,-0.354 1.137,-0.354 0.353,0 0.706,0.093 1.021,0.28 12.801,7.597 26.484,13.76 40.669,18.317 1.05,0.338 1.629,1.462 1.293,2.513 -2.481,7.765 -4.133,14.701 -4.133,23.319 0,1.573 0.304,4.142 0.548,6.204 l 0.054,0.453 c 0.076,0.646 -0.166,1.288 -0.649,1.723 l -6.928,6.226 c -4.04,3.389 -8.193,5.156 -12.064,5.156 z" id="path4042" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 457.351,363.719 c -0.501,0 -1,-0.188 -1.385,-0.557 -4.231,-4.062 -8.809,-7.854 -13.604,-11.272 -0.759,-0.542 -1.044,-1.535 -0.686,-2.396 1.022,-2.462 1.996,-4.938 2.892,-7.36 0.27,-0.727 0.935,-1.233 1.707,-1.299 0.057,-0.005 0.113,-0.007 0.17,-0.007 0.71,0 1.372,0.378 1.731,1 l 10.906,18.892 c 0.497,0.862 0.285,1.96 -0.499,2.574 -0.362,0.284 -0.798,0.425 -1.232,0.425 z" id="path4044" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 458.85,277.275 c -0.291,0 -0.584,-0.063 -0.857,-0.193 -0.707,-0.335 -1.153,-1.052 -1.143,-1.834 0.011,-0.772 0.016,-1.513 0.016,-2.239 0,-23.188 -3.945,-45.919 -11.726,-67.56 -0.263,-0.73 -0.079,-1.546 0.471,-2.094 0.381,-0.38 0.892,-0.583 1.411,-0.583 0.229,0 0.461,0.04 0.685,0.121 l 44.62,16.243 c 6.778,2.467 11.003,6.612 11.896,11.671 0.892,5.059 -1.66,10.399 -7.186,15.037 l -36.901,30.964 c -0.368,0.307 -0.825,0.467 -1.286,0.467 z" id="path4046" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 413.104,147.04 c -0.59,0 -1.161,-0.262 -1.546,-0.731 -15.14,-18.452 -33.266,-33.903 -53.873,-45.926 -0.67,-0.391 -1.054,-1.134 -0.984,-1.906 0.07,-0.772 0.579,-1.436 1.309,-1.701 l 44.652,-16.25 c 2.841,-1.034 5.547,-1.558 8.044,-1.558 4.188,0 7.636,1.47 9.968,4.251 2.857,3.405 3.839,8.64 2.763,14.739 l -8.362,47.428 c -0.136,0.77 -0.707,1.39 -1.463,1.587 -0.17,0.046 -0.34,0.067 -0.508,0.067 z" id="path4048" fill="#ffaa00"/> - <path inkscape:connector-curvature="0" d="m 595.627,530.521 c -0.834,-16.318 -14.371,-29.338 -30.894,-29.338 -0.795,0 -1.583,0.039 -2.366,0.098 -9.877,0.741 -18.727,6.09 -23.994,14.643 -1.887,3.061 -5.897,4.017 -8.961,2.129 -1.996,-1.23 -3.089,-3.364 -3.09,-5.549 0,-1.166 0.305,-2.347 0.961,-3.412 7.777,-12.625 21.057,-20.328 35.763,-20.88 -1.24,-41.618 -34.663,-75.128 -76.243,-76.507 2.54,7.55 4.365,15.445 5.376,23.615 0.442,3.569 -2.094,6.821 -5.663,7.263 -0.065,0.008 -0.129,0.006 -0.194,0.012 -0.206,0.02 -0.411,0.038 -0.614,0.038 -3.239,0 -6.047,-2.415 -6.454,-5.713 -1.058,-8.541 -3.106,-16.748 -6.02,-24.515 -1.118,-2.981 -2.362,-5.899 -3.729,-8.744 -7.823,-16.288 -19.604,-30.232 -34.023,-40.684 -4.734,-3.432 -9.754,-6.486 -15.012,-9.122 -14.585,-7.312 -30.999,-11.411 -48.257,-11.411 -42.489,0 -80.596,24.844 -98.026,62.824 1.596,-0.089 3.199,-0.144 4.815,-0.144 17.132,0 33.66,5.05 47.798,14.604 1.86,1.257 2.864,3.308 2.866,5.396 10e-4,1.257 -0.36,2.526 -1.116,3.646 -2.014,2.979 -6.063,3.764 -9.043,1.749 -11.976,-8.092 -25.982,-12.369 -40.505,-12.369 -4.108,0 -8.132,0.361 -12.056,1.022 -1.109,0.582 -2.381,0.845 -3.67,0.717 -0.479,0.106 -0.957,0.216 -1.434,0.331 -18.139,4.424 -33.616,15.69 -43.544,30.905 -3.263,5 -5.92,10.425 -7.879,16.174 -2.063,6.056 -3.355,12.464 -3.736,19.115 -0.08,1.387 -0.13,2.78 -0.13,4.187 0,0.004 0,0.009 0,0.013 0.007,43.604 35.357,78.95 78.963,78.95 h 198.628 74.08 c 20.677,0 37.443,-16.766 37.443,-37.447 0,-0.536 -0.019,-1.067 -0.04,-1.596 z" id="path4050" fill="#b3b3b3"/> - </g> - </g> - </switch> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/113-1.svg b/htdocs/public/symbols/svgicons/113-1.svg deleted file mode 100755 index 6df0241..0000000 --- a/htdocs/public/symbols/svgicons/113-1.svg +++ /dev/null @@ -1,73 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="113-1.svg"> - <defs - id="defs10" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="653" - inkscape:window-height="480" - id="namedview8" - showgrid="false" - inkscape:zoom="7.8666667" - inkscape:cx="15" - inkscape:cy="15" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="0" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4249"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g3338" - transform="matrix(0.80286981,0,0,0.80286981,-0.04344836,-0.04264536)"> - <rect - rx="0.5" - y="3.5039999" - x="3.552" - height="22.990999" - width="22.896999" - id="rect4255" - style="fill:#cccccc;stroke:#1a1a1a;stroke-width:2.15799999" /> - <path - inkscape:connector-curvature="0" - id="path4797" - d="m 15,3.3135594 0,22.3728816 0,0" - style="fill:#1a1a1a;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:2" /> - <path - inkscape:connector-curvature="0" - id="path4797-9" - d="m 26.18644,15 -22.3728805,0 0,0" - style="fill:#1a1a1a;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:2" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/113-2.svg b/htdocs/public/symbols/svgicons/113-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/113-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/114-1.svg b/htdocs/public/symbols/svgicons/114-1.svg deleted file mode 100755 index 77a4222..0000000 --- a/htdocs/public/symbols/svgicons/114-1.svg +++ /dev/null @@ -1,23 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.0"> - <metadata id="metadata7599"/> - <g inkscape:label="Calque 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-30)"> - <g id="g4285-3" transform="matrix(1.1781391,0,0,0.98623438,-312.96944,-269.49239)" stroke="#000000"> - <path inkscape:connector-curvature="0" d="m 275.82023,322.78012 -0.11743,0.0587 -4.69724,2.34862 -0.11787,0.40315 4.81511,2.35648 0.11743,0.0587 0.10275,-0.0587 4.69724,-2.34862 0,-0.41101 -4.69724,-2.34862 -0.10275,-0.0587 z m 0,0.52844 4.1688,2.0844 -4.1688,2.0844 -4.18348,-2.0844 4.18348,-2.0844 z" id="path13409-3-5" sodipodi:nodetypes="cccccccccccccccc" fill-rule="evenodd" stroke-width="0.07"/> - <path inkscape:connector-curvature="0" d="m 275.58537,306.54529 c 0,0 0,0.0294 0,0.0294 -1e-5,5e-5 -0.007,0.25759 -4.69724,19.01891 l 0.33761,0.005 4.69724,-2.34862 0.13211,-0.0587 0,-0.14679 0,-16.44034 -0.46972,-0.0587 z m 0,1.93761 0,14.41465 -4.12477,2.05505 c 2.2092,-8.83676 3.42326,-13.66369 3.99266,-15.94126 0.0755,-0.30197 0.0748,-0.29913 0.13211,-0.52844 z" id="path13411-2-9" sodipodi:nodetypes="ccccccccccccsc" fill-rule="evenodd" stroke-width="0.07"/> - <path inkscape:connector-curvature="0" d="m 276.04041,306.54529 -0.45504,0.0587 0,0.0587 0,21.07886 0.33761,0.20551 4.69724,-2.34862 0.16147,-0.0734 -0.044,-0.19082 -4.68256,-18.73025 -0.0147,-0.0587 z m 0.0147,1.99632 4.18348,16.73392 -4.18348,2.0844 0,-18.81832 z" id="path13413-7-0" sodipodi:nodetypes="cccccccccccccc" fill-rule="evenodd" stroke-width="0.07"/> - <path inkscape:connector-curvature="0" d="m 275.64341,309.26123 -0.93909,0.97507 0.0587,0.38089 0.64564,0.33517 -0.96845,0.97507 0.044,0.38089 0.90975,0.54847 -1.59941,1.24931 0.0294,0.41136 1.54071,0.79224 -2.28906,1.7216 0.0294,0.41136 2.25972,1.27978 -3.0961,2.20914 0.0146,0.41136 2.9934,1.70636 -4.0442,2.15425 0.21442,0.0549 4.46075,-1.95014 0.44019,-0.19805 -0.42552,-0.24378 -3.08144,-1.76731 3.11078,-2.20913 0.30815,-0.22854 -0.33749,-0.18282 -2.2744,-1.27978 2.30374,-1.7216 0.30815,-0.22853 -0.33749,-0.18283 -1.54073,-0.80747 1.57007,-1.21884 0.27885,-0.22853 -0.29347,-0.18283 -0.93911,-0.57895 0.98313,-0.97506 0.23477,-0.24377 -0.29347,-0.15236 -0.66031,-0.33517 0.71901,-0.74654 -0.3375,-0.33518 z" id="path13415-7-8" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" fill-rule="evenodd" stroke-width="0.071"/> - <path inkscape:connector-curvature="0" d="m 275.98235,309.26123 -0.3375,0.33482 0.71901,0.74576 -0.66031,0.33483 -0.29348,0.15219 0.24945,0.24351 0.96847,0.97405 -0.92444,0.57835 -0.30815,0.18264 0.2788,0.22829 1.57008,1.21756 -1.54073,0.80663 -0.3375,0.18264 0.30815,0.22829 2.30376,1.7198 -2.27441,1.27844 -0.3375,0.18263 0.32282,0.2283 3.09614,2.22205 -3.08146,1.75024 -0.42554,0.24352 0.44021,0.19785 4.47547,1.9481 0.15935,-0.0384 -4.00385,-2.16846 2.99342,-1.70458 0.0147,-0.41093 -3.09615,-2.20684 2.25975,-1.27844 0.0294,-0.41093 -2.2891,-1.7198 1.54073,-0.79141 0.0294,-0.41093 -1.58476,-1.23278 0.90977,-0.56313 0.044,-0.38048 -0.98315,-0.97405 0.64565,-0.33483 0.0587,-0.38048 -0.93911,-0.97405 z" id="path13417-3-1" sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccc" fill-rule="evenodd" stroke-width="0.071"/> - </g> - <g id="g3005" transform="translate(0.04031641,0)"> - <path inkscape:connector-curvature="0" id="path3012" d="m 5.2748532,32.118719 c 13.3696608,0 13.3696608,0 13.3696608,0" fill="#333333" stroke="#333333" stroke-width="0.347"/> - <path inkscape:connector-curvature="0" id="path3782" d="m 5.2904294,30.045199 0,4.24156" fill="#333333" stroke="#333333" stroke-width="0.378"/> - <path inkscape:connector-curvature="0" id="path3782-5" d="m 7.6909752,30.045199 0,4.24156" fill="#333333" stroke="#333333" stroke-width="0.378"/> - <path inkscape:connector-curvature="0" id="path3782-7" d="m 10.09152,30.0452 0,4.241558" fill="#333333" stroke="#333333" stroke-width="0.378"/> - <path inkscape:connector-curvature="0" id="path3782-6" d="m 18.487833,30.103136 0,4.24156" fill="#333333" stroke="#333333" stroke-width="0.378"/> - <path inkscape:connector-curvature="0" id="path3782-0" d="m 16.135838,30.103136 0,4.24156" fill="#333333" stroke="#333333" stroke-width="0.378"/> - <path inkscape:connector-curvature="0" id="path3782-59" d="m 13.783847,30.103136 0,4.24156" fill="#333333" stroke="#333333" stroke-width="0.378"/> - <path transform="translate(0,29.53069)" d="m 12.177967,2.5423729 c 0,0.1263703 -0.102444,0.2288136 -0.228814,0.2288136 -0.12637,0 -0.228814,-0.1024433 -0.228814,-0.2288136 0,-0.1263702 0.102444,-0.2288135 0.228814,-0.2288135 0.12637,0 0.228814,0.1024433 0.228814,0.2288135 z" sodipodi:ry="0.22881356" sodipodi:rx="0.22881356" sodipodi:cy="2.5423729" sodipodi:cx="11.949153" id="path3832" sodipodi:type="arc" fill="#333333" stroke="#333333" stroke-width="0.5"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/114-2.svg b/htdocs/public/symbols/svgicons/114-2.svg deleted file mode 100755 index 32924b7..0000000 --- a/htdocs/public/symbols/svgicons/114-2.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" viewBox="0 0 24 24" version="1.0"> - <metadata id="metadata4"/> - <rect id="rect3411" width="20.379" height="21.849" x="1.847" y="1.119" fill="#ffffff"/> - <g transform="matrix(0.04136539,0,0,0.04136539,-1.4461831,-1.267893)" id="g8" fill="#000080"> - <path d="m 81.553493,609.68121 c -23.478786,-4.36846 -38.026716,-17.69952 -44.23322,-40.5333 -1.666124,-6.12969 -1.76678,-20.20156 -1.76678,-247 l 0,-240.499996 2.233155,-8.373779 c 5.725822,-21.470413 19.780719,-35.211978 41.766845,-40.83572 6.631125,-1.696148 19.594455,-1.790501 245.999997,-1.790501 223.52273,0 239.43669,0.112295 245.7433,1.734056 16.60649,4.270396 29.36707,14.086266 36.09557,27.765944 7.75705,15.770794 7.16113,-5.990182 7.16113,261.499996 0,227.0761 -0.0902,239.38457 -1.8089,246.70814 -4.92962,21.0063 -17.56825,34.06696 -39.1911,40.49976 -5.67908,1.68953 -18.81014,1.79417 -245.5,1.95641 -193.0645,0.13817 -240.857193,-0.0811 -246.499997,-1.13101 z m 99.648477,-94.63903 c 5.92937,-4.22208 5.85152,-3.32583 5.85152,-67.36215 l 0,-58.53212 4.5,0 4.5,0 0,58.7656 c 0,66.74815 -0.36956,63.63344 8.07399,68.04897 7.47759,3.91038 14.99459,1.99127 20.36422,-5.19902 2.02074,-2.7059 2.06723,-3.94405 2.33484,-62.18821 l 0.27305,-59.42734 19.97695,0 c 10.98732,0 19.97695,-0.27385 19.97695,-0.60856 0,-0.3347 -9.675,-33.85244 -21.5,-74.48386 -11.825,-40.63142 -21.5,-74.10757 -21.5,-74.39144 0,-0.28388 1.54468,-0.51614 3.43261,-0.51614 2.4037,0 3.58903,0.52456 3.95444,1.75 0.287,0.9625 6.20184,20.854 13.14408,44.20334 6.94224,23.34933 13.48194,43.66065 14.53267,45.13626 2.8155,3.95401 9.11875,6.20761 13.82101,4.94142 6.07042,-1.6346 10.11519,-7.14266 10.11519,-13.77462 0,-5.09778 -29.1129,-101.06697 -32.3189,-106.53759 -6.13905,-10.4755 -18.89204,-19.53452 -30.56759,-21.71353 -7.03332,-1.31263 -50.28136,-1.30097 -57.22269,0.0154 -12.59805,2.38917 -25.40548,11.71042 -30.72495,22.36162 -2.94595,5.8987 -32.16587,102.06675 -32.16587,105.86372 0,8.06714 5.92419,13.74372 14.35,13.75021 4.15703,0.003 5.32197,-0.46823 8.15325,-3.29951 3.75233,-3.75233 3.69318,-3.57876 19.578,-57.44675 l 10.39467,-35.25 3.32943,0 c 2.70585,0 3.23029,0.32776 2.80014,1.75 -2.25569,7.45809 -42.60549,147.41352 -42.60549,147.77942 0,0.25882 9,0.47058 20,0.47058 l 20,0 0,57.2566 c 0,34.24599 0.39229,58.62443 0.97612,60.66013 1.17576,4.09965 4.454,7.84185 8.52388,9.73025 4.04465,1.87669 11.766,1.01186 15.64848,-1.75271 z m 262.39289,0.22607 c 5.46787,-2.48371 9.0604,-7.03621 10.3695,-13.14037 0.7299,-3.4034 1.08913,-29.46955 1.08913,-79.02919 l 0,-73.95078 3,0 3,0 0,76.9349 c 0,52.06692 0.34477,77.84484 1.06661,79.75 5.17311,13.65333 26.21636,15.19519 33.69752,2.46905 l 2.73587,-4.65395 0.26467,-129.75 0.26468,-129.75 2.98532,0 2.98533,0 0.002,47.75 c 10e-4,43.45693 0.15876,48.06468 1.75,51.25 4.58907,9.18628 19.48162,9.14868 24.42118,-0.0617 1.70573,-3.18051 1.82727,-7.03595 1.82727,-57.96264 0,-59.30802 -0.13002,-60.93195 -5.69773,-71.16166 -3.50091,-6.43232 -12.013,-14.33444 -18.77628,-17.43077 -8.78679,-4.02273 -15.6615,-4.53932 -55.69793,-4.18539 -35.41726,0.31309 -37.62367,0.44102 -43.10284,2.49908 -11.2885,4.24012 -20.39716,13.16752 -25.083,24.58384 -2.09219,5.09731 -2.14864,6.56211 -2.41718,62.7192 -0.25998,54.36819 -0.17407,57.68642 1.57727,60.92273 4.79424,8.85933 18.99389,9.38064 24.17206,0.88745 1.95044,-3.19912 2.01828,-4.92908 2.02189,-51.56018 l 0.004,-48.25 3.5,0 3.5,0 0,129.4349 c 0,89.02006 0.3321,130.31389 1.06362,132.25 1.40532,3.7195 5.70967,8.23429 9.43638,9.89774 4.24127,1.89313 11.30401,1.68958 16.04137,-0.4623 z m -98.04137,-196.12034 0,-196.5 -18.75,-0.27207 -18.75,-0.27206 0,196.3554 c 0,107.99547 0.30982,196.66522 0.6885,197.04389 0.37867,0.37868 8.81617,0.56618 18.75,0.41667 l 18.0615,-0.27183 0,-196.5 z m -146,-136.35609 c 7.48349,-1.99414 10.69414,-3.98175 16.24814,-10.05871 5.98478,-6.54831 8.24999,-12.45035 8.25681,-21.51334 0.007,-9.73191 -2.39611,-15.46761 -9.49547,-22.6606 -6.98516,-7.07728 -13.15174,-9.67387 -22.89386,-9.64 -12.71415,0.0442 -24.01473,7.35234 -29.39274,19.0084 -6.72112,14.56707 -1.08243,32.94399 12.56187,40.94008 8.4767,4.96768 16.19833,6.19368 24.71525,3.92417 z m 265.78946,-0.13109 c 22.72524,-5.91917 31.93438,-31.7694 18.10284,-50.81504 -11.77397,-16.21242 -36.44442,-17.44384 -49.88903,-2.49019 -11.15873,12.4112 -11.26723,31.49906 -0.247,43.45461 5.05046,5.4791 9.00592,7.91593 15.8251,9.74933 7.01655,1.88646 9.29958,1.90073 16.20809,0.10129 z" id="path10" inkscape:connector-curvature="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/115-1.svg b/htdocs/public/symbols/svgicons/115-1.svg deleted file mode 100755 index b7ea475..0000000 --- a/htdocs/public/symbols/svgicons/115-1.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24" viewBox="0 0 24 24" enable-background="new 0 0 99.988 49.124"> - <metadata id="metadata15"/> - <path d="M -3.5754934e-8,17.89555 C 0.48989565,17.89555 0.96298942,17.784177 1.3801568,17.595036 1.8088456,17.394613 2.2929806,17.27772 2.7941575,17.27772 c 0.5062176,0 0.9905926,0.116893 1.4190413,0.317316 0.4231681,0.189141 0.8907413,0.300514 1.3803969,0.300514 0.4843751,0 0.9574688,-0.111373 1.3748763,-0.300514 0.4284487,-0.200423 0.9128237,-0.317316 1.4192813,-0.317316 0.5009369,0 0.9850719,0.116893 1.4137606,0.317316 0.4229281,0.189141 0.8905011,0.300514 1.3801571,0.300514 0.489895,0 0.957469,-0.111373 1.375116,-0.300514 0.428449,-0.200423 0.912824,-0.317316 1.419041,-0.317316 0.506458,0 0.985312,0.116893 1.413761,0.317316 0.422928,0.189141 0.890501,0.300514 1.380157,0.300514 0.489656,0 0.951708,-0.111373 1.369356,-0.300514 0.434209,-0.200423 0.912823,-0.317316 1.419281,-0.317316 0.506457,0 0.985072,0.116893 1.419281,0.317316 0.417408,0.189141 0.884981,0.300514 1.374876,0.300514 v -2.064955 c -0.489895,0 -0.957228,-0.111372 -1.374876,-0.300754 -0.434209,-0.194662 -0.912824,-0.311555 -1.419281,-0.311555 -0.506458,0 -0.985072,0.116893 -1.419281,0.311555 -0.417408,0.189382 -0.87946,0.300754 -1.369356,0.300754 -0.489896,0 -0.957229,-0.111372 -1.380157,-0.300754 -0.428449,-0.194662 -0.907303,-0.311555 -1.413761,-0.311555 -0.506217,0 -0.990592,0.116893 -1.419041,0.311555 -0.417407,0.189382 -0.885221,0.300754 -1.375116,0.300754 -0.489656,0 -0.957229,-0.111372 -1.3801571,-0.300754 -0.4284486,-0.194662 -0.9128237,-0.311555 -1.4137606,-0.311555 -0.5064576,0 -0.9908326,0.116893 -1.4192813,0.311555 -0.4171675,0.189382 -0.8905012,0.300754 -1.3748763,0.300754 -0.4896556,0 -0.9572288,-0.111372 -1.3803969,-0.300754 -0.4284487,-0.194662 -0.9128237,-0.311555 -1.4190413,-0.311555 -0.5011769,0 -0.9850719,0.116893 -1.4140007,0.311555 C 0.96298942,15.719223 0.48989565,15.830595 -3.5754935e-8,15.830595 v 2.064955 z" id="path3" inkscape:connector-curvature="0" fill="#333333"/> - <path d="m 5.6214389,9.2713698 -4.0631818,0.3170761 0.3060348,-2.075996 2.983539,-0.211464 c 0.8067317,-0.038884 0.6900785,0.7680873 0.6900785,0.7680873 l 0.08353,1.2022966 z" id="path5" inkscape:connector-curvature="0" fill="#1a1a1a"/> - <path d="m 12.986123,8.7982761 c -0.745764,0 -1.346793,-0.6010283 -1.346793,-1.3467931 0,-0.7457648 0.601029,-1.3470331 1.346793,-1.3470331 0.745765,0 1.346793,0.6012683 1.346793,1.3470331 0,0.7457648 -0.600788,1.3467931 -1.346793,1.3467931 z" id="path7" inkscape:connector-curvature="0" fill="#1a1a1a"/> - <path d="m 21.4726,13.988386 c -0.172579,-0.04993 -0.339638,-0.116653 -0.495416,-0.189142 -0.434209,-0.200422 -0.912824,-0.317316 -1.419281,-0.317316 -0.506458,0 -0.985072,0.116894 -1.419282,0.317316 -0.417407,0.189142 -0.879459,0.300515 -1.369355,0.300515 -0.489896,0 -0.957229,-0.111373 -1.380157,-0.300515 -0.428449,-0.200422 -0.907303,-0.317316 -1.413761,-0.317316 -0.506217,0 -0.990592,0.116894 -1.419041,0.317316 -0.417407,0.189142 -0.885221,0.300515 -1.375116,0.300515 -0.489656,0 -0.957229,-0.111373 -1.3801571,-0.300515 -0.4284487,-0.200422 -0.9128238,-0.317316 -1.4137607,-0.317316 -0.5064575,0 -0.9908326,0.116894 -1.4192813,0.317316 -0.4171674,0.189142 -0.8905012,0.300515 -1.3748763,0.300515 -0.4896556,0 -0.9572287,-0.111373 -1.3803968,-0.300515 -0.4284487,-0.200422 -0.9128238,-0.317316 -1.4190413,-0.317316 -0.501177,0 -0.985072,0.116894 -1.4140007,0.317316 -0.41716744,0.189142 -0.88498061,0.300515 -1.37463626,0.300515 L 0.4613324,10.41798 17.353252,9.0042195 14.804163,6.4328072 15.92293,6.3327158 18.467219,8.9096487 23.999608,8.4533569 C 24.03297,10.339971 21.929132,13.476408 21.4726,13.988386 l 0,0 z" id="path9" inkscape:connector-curvature="0" fill="#165016"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/115-2.svg b/htdocs/public/symbols/svgicons/115-2.svg deleted file mode 100755 index 0cbedb5..0000000 --- a/htdocs/public/symbols/svgicons/115-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata2570"/> - <path d="m 3,11.74468 0,12.25527 18,0 0,-12.25527 C 21,7.65959 18.000005,3.74471 12,5e-5 5.9999946,4.08514 3,8.00002 3,11.74468" id="path2565" inkscape:connector-curvature="0" sodipodi:nodetypes="cccscc" fill="#005500" stroke-width="10"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/116-1.svg b/htdocs/public/symbols/svgicons/116-1.svg deleted file mode 100755 index 4e0ef71..0000000 --- a/htdocs/public/symbols/svgicons/116-1.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <rect id="rect3370" width="24" height="24" y="1028.36" rx="4" fill="#330080"/> - <g id="g3446" transform="translate(-0.06313467,1.0100882)"> - <text sodipodi:linespacing="125%" id="text3391" y="1043.78" x="1.72" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="16.25"><tspan dy="0" id="tspan3414" y="1043.78" x="1.72" sodipodi:role="line">T</tspan> - </text> - <text sodipodi:linespacing="125%" id="text3391-9" y="1046.54" x="11.813" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="16.25"><tspan id="tspan3414-4" y="1046.54" x="11.813" sodipodi:role="line">S</tspan> - </text> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/116-2.svg b/htdocs/public/symbols/svgicons/116-2.svg deleted file mode 100755 index ffcccdd..0000000 --- a/htdocs/public/symbols/svgicons/116-2.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g transform="matrix(0.12955143,0,0,0.13637681,-4.7984412e-5,1030.9522)" id="g3405" fill="#4d4d4d"> - <g id="g3509"> - <path inkscape:connector-curvature="0" d="m 61.254807,4.999999 0,2 c -12.621002,1.629901 -27.061005,4.7024 -38,11.4684 -11.507004,7.117199 -9.490997,16.063301 2,21.531601 -2.535995,-13.834801 24.475998,-21.2733 35,-19 -7.85701,4.938299 -37.820007,12.626499 -16.001999,23.621899 2.25499,1.136002 4.563004,1.798603 7.001999,2.378101 -8.223999,-11.623299 13.093002,-14.979 21,-16 -3.404999,4.229698 -14.292999,3.501999 -15.218002,10.039398 -0.899002,6.361401 10.871002,8.882801 15.218002,9.699802 13.065994,2.4557 29.030703,2.5117 42.000003,-0.638901 4.61149,-1.1203 17.0063,-5.137302 13.91359,-12.006901 -1.41739,-3.148399 -5.4102,-4.907799 -7.91359,-7.093399 8.3441,-1.2341 18.63359,4.719498 16,14 2.10899,-0.921898 4.0885,-1.860199 5.96449,-3.223801 18.70981,-13.5991 -11.95689,-18.598499 -16.96449,-25.7762 12.94209,1.6713 34.612,5.9484 35,22.000001 2.1483,-1.917702 4.48039,-3.7542 6.19749,-6.091 C 177.6577,16.659798 148.58,6.909198 138.25481,4.155098 c -3.668,-0.978399 -7.6133,-1.0165 -10,-4.155099 15.2339,1.203899 32.7129,5.132899 46,12.876499 6.28795,3.6646 13.32872,10.0522 10.25772,18.123501 -2.76161,7.258099 -11.49953,11.5462 -18.25772,14.188301 -16.82201,6.5765 -35.98741,9.983597 -54,10.772297 C 84.948807,57.156299 56.663804,56.2877 30.254807,48.709098 21.236802,46.121101 10.155808,43.918998 3.387803,36.895099 c -7.645004,-7.935501 -1.042999,-15.4701 6.867004,-19.632 14.806,-7.7901 34.358002,-11.5485 51,-12.263101 z" id="path1365"/> - <path inkscape:connector-curvature="0" d="m 70.254807,42 c 5.369003,-1.971802 10.352997,-2.606598 16,-3.168999 4.231995,-0.421501 7.767998,-0.421501 12,0 l 7.000003,0.607998 c 2.17399,0.344101 11.19619,1.819798 8.10959,5.851902 -1.90999,2.495098 -7.2558,2.824299 -10.10959,3.2701 C 95.077607,49.838101 73.358811,51.857201 70.254807,42 Z" id="path1605"/> - <path inkscape:connector-curvature="0" d="m 177.99594,40.912319 c -2.26642,12.892502 -16.72382,17.374199 -28,19.789402 -28.3129,6.064102 -55.64762,3.871994 -84.000014,0.210598 9.261002,-3.886002 22.1464,0.392101 32,-0.0394 28.575794,-1.251202 56.046294,-3.301403 80.000014,-19.960602 z" id="path1609"/> - <path inkscape:connector-curvature="0" d="m 173.25481,59 c -4.2818,14.376198 -22.65641,14.798904 -35,16.4244 -28.04901,3.693703 -59.458011,-2.149002 -86.000003,-11.091805 -10.475998,-3.529896 -24.57901,-8.821396 -28,-20.332596 8.263992,3.475399 15.481003,9.102398 24,12.315598 38.215996,14.414398 87.339703,20.267502 125.000003,2.684402 z" id="path1627"/> - <path inkscape:connector-curvature="0" d="m 164.25481,74 c -1.5712,15.199005 -22.54,14 -34,14 -28.863,0 -74.668002,-1.978104 -93.000003,-28 9.51799,1.8353 18.641998,8.528 28,11.645096 C 94.757805,81.471802 135.80611,89.602997 164.25481,74 Z" id="path1699"/> - <path inkscape:connector-curvature="0" d="m 151.25481,82 -1,1 1,-1 z" id="path1775"/> - <path inkscape:connector-curvature="0" d="m 137.25481,93 c -15.87451,14.72299 -56.256,7.877 -70.000003,-7 10.156998,-0.596405 22.635994,5.794006 33.000003,7.410004 12.30829,1.917999 24.7016,-0.376007 37,-0.410004 z" id="path1797"/> - <path inkscape:connector-curvature="0" d="m 71.254807,95 c 17.209999,9.79401 35.089603,9.013 54.000003,9 -9.73851,10.34 -32.788005,9.522 -44.000003,2.3 -3.865997,-2.49 -10.106003,-6.298 -10,-11.3 z" id="path1819"/> - <path inkscape:connector-curvature="0" d="m 72.254807,107 c 14.245995,8.313 23.916,5.653 39.000003,7 -7.16851,8.588 -21.832004,9.218 -31.000003,3.44099 C 76.6418,115.164 71.311799,111.698 72.254807,107 Z" id="path1855"/> - <path inkscape:connector-curvature="0" d="m 94.254807,124 c -3.297302,5.44 -9.484009,7.22501 -10,14 -6.074997,-3.64999 -12.81601,-10.162 -15,-17 9.421997,2.713 15.110992,3.78 25,3 z" id="path1887"/> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/117-1.svg b/htdocs/public/symbols/svgicons/117-1.svg deleted file mode 100755 index bbb73cb..0000000 --- a/htdocs/public/symbols/svgicons/117-1.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <circle id="path4202-7-41" cx="20.848" cy="15.639" r="1.167" fill="#999999" stroke="#000000" stroke-width="0.869"/> - <circle id="path4202-7-4" cx="14.889" cy="15.639" r="1.167" fill="#999999" stroke="#000000" stroke-width="0.869"/> - <circle id="path4202-7-3" cx="5.902" cy="15.639" r="1.167" fill="#999999" stroke="#000000" stroke-width="0.869"/> - <circle id="path4202-7" cx="2.566" cy="15.639" r="1.167" fill="#999999" stroke="#000000" stroke-width="0.869"/> - <metadata id="metadata16"/> - <path inkscape:connector-curvature="0" id="path1999" d="m 18.973354,8.2340634 3.694442,0.058906 1.332271,3.5694771 0,3.393518 c 0,0.236478 -0.153395,0.45247 -0.427332,0.45247 l -0.754115,0 C 22.246471,13.4291 20.049359,13.090386 19.073181,15.004593 l -2.413168,0 c -1.075877,-1.819269 -3.54604,-1.482708 -3.670026,0.68158 l -0.678704,0 c 0,-0.915452 0.928708,-2.566867 1.960699,-2.566867 l 4.725789,0 z" sodipodi:nodetypes="cccsscccccscc" color="#000000" stroke-linecap="round" fill="#330080"/> - <path inkscape:connector-curvature="0" id="path2003" d="m 6.4246942,13.128203 c 1.0319917,0 1.9606895,1.65139 1.9606901,2.566841 l -0.680552,0 C 7.5843514,13.591945 5.2490251,13.353691 4.5296521,14.290175 l 0.00219,0.08534 -0.680552,0 0.00219,-0.08534 C 3.1341043,13.353691 0.79877799,13.591945 0.67829706,15.695044 l -0.678363787946,0 C -6.6064736e-5,14.779593 0.92863167,13.128203 1.9606235,13.128203 l 4.4640713,0 z" color="#000000" stroke-linecap="round" fill="#330080"/> - <path inkscape:connector-curvature="0" id="path2018" d="m 17.408213,6.8489999 0.0041,5.9776541 -17.36951172,-0.0044 0,-5.952824 L 17.408186,6.849041 Z" color="#000000" stroke-linecap="round" fill="#330080"/> - <path inkscape:connector-curvature="0" id="path2020" d="m 20.388457,9.1247404 -0.0071,2.1916766 2.751974,0.335393 -0.897406,-2.5199873 -1.847486,-0.00704 z" sodipodi:nodetypes="cccccc" color="#000000" stroke-linecap="round" fill="#7f2aff"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/117-2.svg b/htdocs/public/symbols/svgicons/117-2.svg deleted file mode 100755 index de2be48..0000000 --- a/htdocs/public/symbols/svgicons/117-2.svg +++ /dev/null @@ -1,80 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="117-2.svg"> - <defs - id="defs11" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview9" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="15.953885" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata16"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g3339" - transform="translate(0,1.0174495)"> - <circle - transform="scale(-1,1)" - id="circle10-3" - cy="16.049999" - cx="-20.650999" - r="1.635" - style="fill:#333333;stroke:#000000;stroke-width:1.09000003" /> - <circle - transform="scale(-1,1)" - id="circle10" - cy="16.049999" - cx="-5.6350002" - r="1.635" - style="fill:#333333;stroke:#000000;stroke-width:1.09000003" /> - <path - inkscape:connector-curvature="0" - id="path4" - d="m 17.26232,7.6891224 0,6.3834376 -10.0774084,0.0082 c 0.5913728,0.483153 0.9605772,1.149103 0.9557512,2.02316 l 10.0037082,-0.006 c 0.09583,-3.390997 4.906818,-3.37946 5.011357,-0.0196 0.722585,-0.0054 0.822815,-0.169504 0.829782,-0.835121 l 0,-2.545501 c 0.0091,-1.13756 0.151137,-0.386643 -0.69094,-2.543823 C 22.428121,7.854439 22.666986,8.0669874 21.883288,8.0076409 L 17.26232,7.6891224 Z m 2.001574,3.7638116 -0.03988,-2.7120946 2.572501,0.159535 c 0.468981,0.031418 0.472884,0.034362 0.63814,0.5783144 l 0.658082,1.7548852 c 0.221079,0.538264 0.185891,0.696873 -0.418779,0.618198 l -3.410061,-0.398838 z m -19.25057607,2.632693 -0.00490022,1.43415 1.66119649,0.588034 1.4585622,-9.33e-4 c -0.00594,-0.831595 0.3396583,-1.531015 0.9524182,-2.022327 l -4.06727667,0.0011 z" - style="fill:#550000;fill-rule:evenodd" /> - <rect - style="fill:#550000" - transform="scale(-1,1)" - id="rect6" - width="16.966" - height="9.999898" - y="3.7351017" - x="-16.966" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/118-1.svg b/htdocs/public/symbols/svgicons/118-1.svg deleted file mode 100755 index 3ed29df..0000000 --- a/htdocs/public/symbols/svgicons/118-1.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.0"> - <metadata id="metadata3205"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-73)"> - <text x="-35.536" y="68.786" id="text3301" font-family="RoadSign" font-size="72"><tspan sodipodi:role="line" id="tspan3303" x="-35.536" y="68.786"/> - </text> - <text x="-14.286" y="63.25" id="text3305" font-family="RoadSign" font-size="72"><tspan sodipodi:role="line" id="tspan3307" x="-14.286" y="63.25"/> - </text> - <text x="-10.536" y="52.54" id="text3309" font-family="RoadSign" font-size="72"><tspan sodipodi:role="line" id="tspan3311" x="-10.536" y="52.54"/> - </text> - <circle id="path3374-9" cx="18.796" cy="89.89" r="1.74" fill="#cccccc" stroke="#000000" stroke-width="1.602"/> - <circle id="path3374" cx="4.28" cy="89.89" r="1.74" fill="#cccccc" stroke="#000000" stroke-width="1.602"/> - <g id="g4295" fill="#007ad4"> - <path sodipodi:nodetypes="cccccccccccccccscc" id="path3678" d="m 21.808672,89.618143 1.369448,0 c 0.547753,8e-6 0.821643,-0.273881 0.821669,-0.821669 l 0,-1.369448 -0.821669,0 0,-1.917228 c -2.5e-5,-0.547766 -0.25109,-0.890127 -0.753196,-1.027086 l -0.280954,-0.546148 -1.780283,-5.83048 c -0.182615,-0.296697 -2.992157,-0.512983 -3.266025,-0.513 l -0.374425,9.90187 -10.6974543,-0.06793 c 0.753188,0.547789 1.1754341,1.278161 1.2667394,2.191117 l 8.4905779,0 c 0.06846,-0.776012 0.387992,-1.426499 0.958614,-1.951464 0.593408,-0.524944 1.278132,-0.787422 2.054172,-0.787433 0.798823,1.1e-5 1.472135,0.262489 2.019936,0.787433 0.57058,0.502141 0.901529,1.152628 0.99285,1.951464" inkscape:connector-curvature="0"/> - <path sodipodi:nodetypes="ccsccccsc" id="path3676" d="m 17.556318,77.567 -15.7415879,0 c -0.4564861,2e-5 -0.84449594,0.159789 -1.16403114,0.479306 -0.31954015,0.319558 -0.4793087,0.707568 -0.4793068,1.164031 l 0,7.668909 17.29688984,0.03261 0.540171,-6.605956 c 0.27387,1.7e-5 0.410814,-0.136927 0.410835,-0.410835 -2.1e-5,-0.09128 -0.03426,-0.171162 -0.102709,-0.239653" inkscape:connector-curvature="0"/> - <path id="path3666" d="m 2.5336903,87.427026 -2.53347913634,0 0,1.232503 C 2.0926165e-4,89.298613 0.31974675,89.618151 0.95882476,89.618143 l 0.30812584,0 c 0.091293,-0.93578 0.5135395,-1.666152 1.2667397,-2.191117" inkscape:connector-curvature="0"/> - </g> - <path inkscape:connector-curvature="0" d="m 20.877773,83.188801 c 0.0228,0.06849 0.03421,0.136959 0.03424,0.205417 -2.2e-5,0.273903 -0.136966,0.410848 -0.410834,0.410835 l -2.3373,0 c -0.273908,1.3e-5 -0.410853,-0.136932 -0.410835,-0.410835 l 0,-3.712725 c -1.8e-5,-0.273874 0.136927,-0.410819 0.410835,-0.410835 l 0.728198,0 c 0.296694,1.6e-5 0.524935,0.125549 0.684724,0.376599 l 1.300976,3.541544" id="path3662" sodipodi:nodetypes="cscccccccc" fill="#cccccc"/> - <path d="m 15.492906,79.628566 0,3.962045 c -6.4e-5,0.122847 -0.337431,0.184274 -1.012083,0.184282 l -10.1207902,0 c -0.6747747,-8e-6 -1.0121442,-0.06144 -1.0120848,-0.184282 l 0,-3.962045 c -5.94e-5,-0.122858 0.3373101,-0.184284 1.0120848,-0.184281 l 10.1207902,0 c 0.674652,-3e-6 1.012019,0.06142 1.012083,0.184281" id="path3700-4" inkscape:connector-curvature="0" fill="#cccccc"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/118-2.svg b/htdocs/public/symbols/svgicons/118-2.svg deleted file mode 100755 index dbb1786..0000000 --- a/htdocs/public/symbols/svgicons/118-2.svg +++ /dev/null @@ -1,132 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - version="1.0" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="118-2.svg"> - <defs - id="defs21" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview19" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-0.76271186" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" /> - <metadata - id="metadata3205"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-73)"> - <text - x="-35.536" - y="68.786" - id="text3301" - font-family="RoadSign" - font-size="72"> - <tspan - sodipodi:role="line" - id="tspan3303" - x="-35.536" - y="68.786" /> - </text> - <text - x="-14.286" - y="63.25" - id="text3305" - font-family="RoadSign" - font-size="72"> - <tspan - sodipodi:role="line" - id="tspan3307" - x="-14.286" - y="63.25" /> - </text> - <text - x="-10.536" - y="52.54" - id="text3309" - font-family="RoadSign" - font-size="72"> - <tspan - sodipodi:role="line" - id="tspan3311" - x="-10.536" - y="52.54" /> - </text> - <g - id="g3349" - transform="translate(0,0.86540701)"> - <circle - r="1.74" - cy="89.889999" - cx="18.796" - id="path3374-9" - style="fill:#cccccc;stroke:#000000;stroke-width:1.602" /> - <circle - r="1.74" - cy="89.889999" - cx="4.2800002" - id="path3374" - style="fill:#cccccc;stroke:#000000;stroke-width:1.602" /> - <g - style="fill:#007ad4" - transform="matrix(1,0,0,1.1434564,0,-12.856296)" - id="g3363"> - <path - inkscape:connector-curvature="0" - d="m 21.808672,89.618143 1.369448,0 c 0.547753,8e-6 0.821643,-0.273881 0.821669,-0.821669 l 0,-1.369448 -0.821669,0 0,-1.917228 c -2.5e-5,-0.547766 -0.25109,-0.890127 -0.753196,-1.027086 l -0.280954,-0.546148 -1.780283,-5.83048 c -0.182615,-0.296697 -2.992157,-0.512983 -3.266025,-0.513 l -0.374425,9.90187 -10.6974543,-0.06793 c 0.753188,0.547789 1.1754341,1.278161 1.2667394,2.191117 l 8.4905779,0 c 0.06846,-0.776012 0.387992,-1.426499 0.958614,-1.951464 0.593408,-0.524944 1.278132,-0.787422 2.054172,-0.787433 0.798823,1.1e-5 1.472135,0.262489 2.019936,0.787433 0.57058,0.502141 0.901529,1.152628 0.99285,1.951464" - id="path3678" - sodipodi:nodetypes="cccccccccccccccscc" /> - <path - inkscape:connector-curvature="0" - d="m 17.556318,77.567 -15.7415879,0 c -0.4564861,2e-5 -0.84449594,0.159789 -1.16403114,0.479306 -0.31954015,0.319558 -0.4793087,0.707568 -0.4793068,1.164031 l 0,7.668909 17.29688984,0.03261 0.540171,-6.605956 c 0.27387,1.7e-5 0.410814,-0.136927 0.410835,-0.410835 -2.1e-5,-0.09128 -0.03426,-0.171162 -0.102709,-0.239653" - id="path3676" - sodipodi:nodetypes="ccsccccsc" /> - <path - inkscape:connector-curvature="0" - d="m 2.5336903,87.427026 -2.53347913634,0 0,1.232503 C 2.0926165e-4,89.298613 0.31974675,89.618151 0.95882476,89.618143 l 0.30812584,0 c 0.091293,-0.93578 0.5135395,-1.666152 1.2667397,-2.191117" - id="path3666" /> - </g> - <path - style="fill:#cccccc" - sodipodi:nodetypes="cscccccccc" - id="path3662" - d="m 20.877773,82.953845 c 0.0228,0.0946 0.03421,0.189177 0.03424,0.283735 -2.2e-5,0.378333 -0.136966,0.567491 -0.410834,0.567473 l -2.3373,0 c -0.273908,1.8e-5 -0.410853,-0.18914 -0.410835,-0.567473 l 0,-5.128263 c -1.8e-5,-0.378293 0.136927,-0.56745 0.410835,-0.567473 l 0.728198,0 c 0.296694,2.3e-5 0.524935,0.173417 0.684724,0.520184 l 1.300976,4.891817" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/119-1.svg b/htdocs/public/symbols/svgicons/119-1.svg deleted file mode 100755 index 9945291..0000000 --- a/htdocs/public/symbols/svgicons/119-1.svg +++ /dev/null @@ -1,19 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <rect id="rect3370" width="24" height="24" y="1028.36" rx="4" fill="#330080"/> - <g id="g3565" transform="translate(0,1.4520842)"> - <text transform="scale(0.90797253,1.1013549)" sodipodi:linespacing="125%" id="text3391-4" y="948.63" x="9.561" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="10.625"><tspan id="tspan3414-3" y="948.63" x="9.561" sodipodi:role="line">2</tspan> - </text> - <g transform="translate(-0.63089896,-0.05619343)" id="g3539"> - <text x="1.457" y="945.91" id="text3391" sodipodi:linespacing="125%" transform="scale(0.90797253,1.1013549)" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="10.625"><tspan sodipodi:role="line" x="1.457" y="945.91" id="tspan3414">H</tspan> - </text> - <text x="16.891" y="945.91" id="text3391-3" sodipodi:linespacing="125%" transform="scale(0.90797253,1.1013549)" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="10.625"><tspan sodipodi:role="line" x="16.891" y="945.91" id="tspan3414-9">O</tspan> - </text> - </g> - </g> - <text x="-76.27" y="1019.03" id="text3554" sodipodi:linespacing="125%" font-family="sans-serif" fill="#000000" word-spacing="0" line-height="125%" font-weight="normal" letter-spacing="0" font-size="15"><tspan sodipodi:role="line" id="tspan3556" x="-76.27" y="1019.03"/> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/119-2.svg b/htdocs/public/symbols/svgicons/119-2.svg deleted file mode 100755 index 3cfd67a..0000000 --- a/htdocs/public/symbols/svgicons/119-2.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata18081">image/svg+xmlPublic Domainclker.comMohamed Ibrahimmap symbolsmap symbols</metadata> - <g id="g3363" transform="matrix(0.1260878,0,0,0.1260878,-20.426648,35.46397)"> - <path sodipodi:nodetypes="csccccscc" id="path6712" d="m 251.64044,-204.39984 c -6.83786,6.62585 -16.06195,9.22351 -26.29251,9.22351 -12.98724,0 -24.80786,-5.30078 -31.59329,-15.31989 -6.73184,10.23114 -18.60602,15.31989 -31.75229,15.31989 l 0,-29.10217 c 13.14627,0 25.02045,-6.51984 31.75229,-16.7504 6.78543,10.01855 18.60605,16.7504 31.59329,16.7504 13.25226,0 24.96744,-6.83786 31.6463,-17.17441 z" inkscape:connector-curvature="0" fill="#2948cc"/> - <path sodipodi:nodetypes="ccscsccscsccc" d="m 352.34793,-194.17633 c -12.98724,0 -24.80786,-5.30078 -31.59329,-15.31989 -6.73184,10.23114 -18.60602,15.31989 -31.75229,15.31989 -12.98666,0 -24.70184,-5.4068 -31.48669,-15.4259 -6.73243,10.33715 -18.60605,15.4259 -31.91129,15.4259 -9.59454,0 -18.39404,-2.17365 -25.02045,-8.05747 l -5.03578,-36.04602 c 6.89144,9.1175 17.81099,15.00132 30.05623,15.00132 13.30524,0 25.17886,-6.51984 31.91129,-16.85639 6.78485,10.01853 18.50003,16.85639 31.48669,16.85639 13.14627,0 25.02045,-6.51984 31.75229,-16.7504 6.78543,10.01855 18.60605,16.7504 31.59329,16.7504 z" id="svg_1" inkscape:connector-curvature="0" fill="#2948cc"/> - </g> - <rect id="rect3367" width="24" height="15.333" y="8.667" fill="#2948cc" fill-rule="evenodd"/> - <text x="-0.018" y="22.762" id="text3369" sodipodi:linespacing="125%" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" letter-spacing="-0.3" font-size="7.25"><tspan sodipodi:role="line" id="tspan3371" x="-0.018" y="22.762">FLOOD</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/120-1.svg b/htdocs/public/symbols/svgicons/120-1.svg deleted file mode 100755 index d774dd4..0000000 --- a/htdocs/public/symbols/svgicons/120-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata8"/> - <g transform="matrix(0.08790013,0,0,0.08790013,-26.032503,-29.850322)" id="layer1"> - <path d="m 296.78571,612.63003 c 0,0 104.06285,-132.7859 104.06285,-132.7859 0,0 -104.06285,-140.24982 -104.06285,-140.24982 l 67.30299,0 c 0,0 83.34749,113.48826 83.34749,113.48826 l -126.86477,159.54746 -23.78571,0 z M 417.28794,500.06578 544.11662,339.59431 c 0,0 24.45481,0 24.45481,0 L 464.47749,471.26578 c 0,0 104.09394,141.36425 104.09394,141.36425 l -67.30357,0 c 0,0 -83.97992,-112.56425 -83.97992,-112.56425 z" id="path2830" inkscape:connector-curvature="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/120-2.svg b/htdocs/public/symbols/svgicons/120-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/120-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/121-1.svg b/htdocs/public/symbols/svgicons/121-1.svg deleted file mode 100755 index dc8aba6..0000000 --- a/htdocs/public/symbols/svgicons/121-1.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3029"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g transform="translate(0.00101871,1028.5055)" id="g2991"> - <path sodipodi:nodetypes="cccsscsssscssc" id="rect2391" d="m 20.265448,16.462473 -8.264431,-6.266405 -8.2684999,6.269014 0,5.886696 c 0,0.231639 0.2182565,0.417208 0.4882882,0.417208 l 5.9228317,0 0,-3.927855 c 0,-0.231202 0.216733,-0.418082 0.487275,-0.418082 l 2.735628,0 c 0.270543,0 0.487286,0.18688 0.487286,0.418082 l 0,3.927855 5.924345,0 c 0.270032,0 0.487277,-0.185569 0.487277,-0.417208 z" inkscape:connector-curvature="0" fill="#ffff00" stroke="#000000" stroke-width="1.879"/> - <path id="path2399" d="M 11.9536,5.5543978 0.22594157,14.44575 1.4612949,15.638705 12.001217,7.6473983 22.539115,15.638705 23.772021,14.44575 12.046899,5.5543978 12.0012,5.5996202 11.95349,5.5543978 z" inkscape:connector-curvature="0" stroke="#000000" stroke-linejoin="round" stroke-width="0.47"/> - <path id="rect2404" d="m 3.7328178,6.8342717 2.9729061,0 -0.025857,1.5076098 -2.9470184,2.2794445 0,-3.7870543 z" inkscape:connector-curvature="0"/> - <path sodipodi:nodetypes="ccccc" id="rect2404-4" d="m 18.098343,2.2763645 -0.954846,0 0.0083,6.0962772 0.946533,0.8746216 z" inkscape:connector-curvature="0"/> - <path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3336" d="M 22.021206,2.453667 10.079193,2.4094135" fill="none" stroke="#000000" stroke-linecap="square" stroke-width="0.796"/> - <path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4138" d="m 9.5054813,0.35498487 0,4.24235173" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="0.7"/> - <path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4138-0" d="m 12.353087,0.35498487 0,4.24235173" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="0.7"/> - <path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4138-2" d="m 15.200692,0.35498487 0,4.24235173" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="0.7"/> - <path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4138-7" d="m 19.881322,0.35498487 0,4.24235173" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="0.7"/> - <path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path4138-3" d="m 22.438356,0.35498487 0,4.24235173" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="0.7"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/121-2.svg b/htdocs/public/symbols/svgicons/121-2.svg deleted file mode 100755 index 8ebb972..0000000 --- a/htdocs/public/symbols/svgicons/121-2.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <rect id="rect3370" width="24" height="24" y="1028.36" rx="4" fill="#d45500"/> - <g transform="matrix(0.11875777,0,0,0.12501449,0.99974367,1031.7362)" id="g3405"> - <g id="g3509"> - <path inkscape:connector-curvature="0" d="m 61.254807,4.999999 0,2 c -12.621002,1.629901 -27.061005,4.7024 -38,11.4684 -11.507004,7.117199 -9.490997,16.063301 2,21.531601 -2.535995,-13.834801 24.475998,-21.2733 35,-19 -7.85701,4.938299 -37.820007,12.626499 -16.001999,23.621899 2.25499,1.136002 4.563004,1.798603 7.001999,2.378101 -8.223999,-11.623299 13.093002,-14.979 21,-16 -3.404999,4.229698 -14.292999,3.501999 -15.218002,10.039398 -0.899002,6.361401 10.871002,8.882801 15.218002,9.699802 13.065994,2.4557 29.030703,2.5117 42.000003,-0.638901 4.61149,-1.1203 17.0063,-5.137302 13.91359,-12.006901 -1.41739,-3.148399 -5.4102,-4.907799 -7.91359,-7.093399 8.3441,-1.2341 18.63359,4.719498 16,14 2.10899,-0.921898 4.0885,-1.860199 5.96449,-3.223801 18.70981,-13.5991 -11.95689,-18.598499 -16.96449,-25.7762 12.94209,1.6713 34.612,5.9484 35,22.000001 2.1483,-1.917702 4.48039,-3.7542 6.19749,-6.091 C 177.6577,16.659798 148.58,6.909198 138.25481,4.155098 c -3.668,-0.978399 -7.6133,-1.0165 -10,-4.155099 15.2339,1.203899 32.7129,5.132899 46,12.876499 6.28795,3.6646 13.32872,10.0522 10.25772,18.123501 -2.76161,7.258099 -11.49953,11.5462 -18.25772,14.188301 -16.82201,6.5765 -35.98741,9.983597 -54,10.772297 C 84.948807,57.156299 56.663804,56.2877 30.254807,48.709098 21.236802,46.121101 10.155808,43.918998 3.387803,36.895099 c -7.645004,-7.935501 -1.042999,-15.4701 6.867004,-19.632 14.806,-7.7901 34.358002,-11.5485 51,-12.263101 z" id="path1365"/> - <path inkscape:connector-curvature="0" d="m 70.254807,42 c 5.369003,-1.971802 10.352997,-2.606598 16,-3.168999 4.231995,-0.421501 7.767998,-0.421501 12,0 l 7.000003,0.607998 c 2.17399,0.344101 11.19619,1.819798 8.10959,5.851902 -1.90999,2.495098 -7.2558,2.824299 -10.10959,3.2701 C 95.077607,49.838101 73.358811,51.857201 70.254807,42 Z" id="path1605"/> - <path inkscape:connector-curvature="0" d="m 177.99594,40.912319 c -2.26642,12.892502 -16.72382,17.374199 -28,19.789402 -28.3129,6.064102 -55.64762,3.871994 -84.000014,0.210598 9.261002,-3.886002 22.1464,0.392101 32,-0.0394 28.575794,-1.251202 56.046294,-3.301403 80.000014,-19.960602 z" id="path1609"/> - <path inkscape:connector-curvature="0" d="m 173.25481,59 c -4.2818,14.376198 -22.65641,14.798904 -35,16.4244 -28.04901,3.693703 -59.458011,-2.149002 -86.000003,-11.091805 -10.475998,-3.529896 -24.57901,-8.821396 -28,-20.332596 8.263992,3.475399 15.481003,9.102398 24,12.315598 38.215996,14.414398 87.339703,20.267502 125.000003,2.684402 z" id="path1627"/> - <path inkscape:connector-curvature="0" d="m 164.25481,74 c -1.5712,15.199005 -22.54,14 -34,14 -28.863,0 -74.668002,-1.978104 -93.000003,-28 9.51799,1.8353 18.641998,8.528 28,11.645096 C 94.757805,81.471802 135.80611,89.602997 164.25481,74 Z" id="path1699"/> - <path inkscape:connector-curvature="0" d="m 151.25481,82 -1,1 1,-1 z" id="path1775"/> - <path inkscape:connector-curvature="0" d="m 137.25481,93 c -15.87451,14.72299 -56.256,7.877 -70.000003,-7 10.156998,-0.596405 22.635994,5.794006 33.000003,7.410004 12.30829,1.917999 24.7016,-0.376007 37,-0.410004 z" id="path1797"/> - <path inkscape:connector-curvature="0" d="m 71.254807,95 c 17.209999,9.79401 35.089603,9.013 54.000003,9 -9.73851,10.34 -32.788005,9.522 -44.000003,2.3 -3.865997,-2.49 -10.106003,-6.298 -10,-11.3 z" id="path1819"/> - <path inkscape:connector-curvature="0" d="m 72.254807,107 c 14.245995,8.313 23.916,5.653 39.000003,7 -7.16851,8.588 -21.832004,9.218 -31.000003,3.44099 C 76.6418,115.164 71.311799,111.698 72.254807,107 Z" id="path1855"/> - <path inkscape:connector-curvature="0" d="m 94.254807,124 c -3.297302,5.44 -9.484009,7.22501 -10,14 -6.074997,-3.64999 -12.81601,-10.162 -15,-17 9.421997,2.713 15.110992,3.78 25,3 z" id="path1887"/> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/122-1.svg b/htdocs/public/symbols/svgicons/122-1.svg deleted file mode 100755 index 700aecd..0000000 --- a/htdocs/public/symbols/svgicons/122-1.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3957"/> - <path d="m 2.1612884,23.755458 19.5543286,0 0,-11.781835 2.039841,0 L 12.026377,0.24454219 0.24454209,12.026377 l 1.95191591,0 z" id="path3961" inkscape:connector-curvature="0" fill="#ff0000" stroke="#ff0000" stroke-linejoin="round" stroke-width="0.489"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/122-2.svg b/htdocs/public/symbols/svgicons/122-2.svg deleted file mode 100755 index 700aecd..0000000 --- a/htdocs/public/symbols/svgicons/122-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3957"/> - <path d="m 2.1612884,23.755458 19.5543286,0 0,-11.781835 2.039841,0 L 12.026377,0.24454219 0.24454209,12.026377 l 1.95191591,0 z" id="path3961" inkscape:connector-curvature="0" fill="#ff0000" stroke="#ff0000" stroke-linejoin="round" stroke-width="0.489"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/123-1.svg b/htdocs/public/symbols/svgicons/123-1.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/123-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/123-2.svg b/htdocs/public/symbols/svgicons/123-2.svg deleted file mode 100755 index 5675e6f..0000000 --- a/htdocs/public/symbols/svgicons/123-2.svg +++ /dev/null @@ -1,35 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g3121"> - <path d="m 587.001,191.775 c 0,-34.867 -24.173,-64.178 -56.635,-72.094 -0.487,-0.119 -0.977,-0.23 -1.468,-0.34 -1.321,0.132 -2.625,-0.138 -3.761,-0.734 -4.019,-0.676 -8.14,-1.047 -12.347,-1.047 -14.877,0 -29.225,4.381 -41.491,12.671 -3.054,2.063 -7.2,1.261 -9.263,-1.792 -0.774,-1.146 -1.145,-2.447 -1.144,-3.735 0.002,-2.139 1.03,-4.239 2.936,-5.526 14.481,-9.786 31.411,-14.959 48.962,-14.959 1.654,0 3.297,0.051 4.928,0.142 C 499.864,65.46 460.832,40.014 417.312,40.014 c -46.851,0 -87.649,29.456 -103.479,71.663 -2.983,7.955 -5.083,16.361 -6.166,25.111 -0.418,3.378 -3.293,5.852 -6.612,5.852 -0.207,0 -0.417,-0.019 -0.627,-0.039 -0.067,-0.006 -0.133,-0.004 -0.2,-0.012 -3.656,-0.452 -6.253,-3.783 -5.801,-7.439 1.036,-8.369 2.905,-16.456 5.507,-24.189 -42.585,1.412 -76.817,35.727 -78.098,78.348 8.087,0.308 15.9,2.767 22.695,7.162 1.975,1.276 3.044,3.421 3.043,5.609 -0.001,1.24 -0.342,2.495 -1.065,3.614 -2,3.095 -6.129,3.979 -9.224,1.978 -4.437,-2.869 -9.495,-4.561 -14.755,-4.959 -0.804,-0.062 -1.611,-0.097 -2.423,-0.097 -14.922,0 -27.461,10.372 -30.804,24.284 11.929,-3.955 24.376,-6.65 37.163,-7.951 5.847,-0.594 11.765,-0.901 17.736,-0.901 5.979,0 11.893,0.314 17.732,0.909 11.826,1.203 23.331,3.594 34.384,7.062 20.481,6.429 39.406,16.55 55.945,29.621 6.605,5.221 12.835,10.904 18.624,17.02 h 135.23 c 44.668,0 80.877,-36.205 80.885,-80.871 0,-0.006 -10e-4,-0.01 -10e-4,-0.014 z" id="path3123" inkscape:connector-curvature="0" fill="#b3b3b3"/> - <path d="m 521.806,465.719 c -1.138,0 -2.266,0.055 -3.387,0.139 -14.255,1.062 -27.023,8.777 -34.622,21.114 -2.721,4.414 -8.506,5.79 -12.921,3.07 -2.88,-1.773 -4.455,-4.852 -4.456,-8.002 0,-1.681 0.439,-3.382 1.385,-4.918 11.22,-18.215 30.377,-29.352 51.597,-30.136 -1.799,-60.006 -50.021,-108.336 -109.977,-110.315 3.667,10.895 6.302,22.287 7.761,34.077 0.637,5.147 -3.02,9.836 -8.166,10.473 -0.094,0.012 -0.187,0.009 -0.281,0.018 -0.296,0.027 -0.592,0.055 -0.884,0.055 -4.672,0 -8.72,-3.482 -9.308,-8.238 -1.525,-12.323 -4.483,-24.163 -8.688,-35.367 -9.626,-25.658 -25.811,-47.963 -46.402,-65.029 -2.799,-2.319 -5.68,-4.541 -8.637,-6.662 -25.652,-18.406 -57.028,-29.169 -90.619,-29.169 -2.87,0 -5.725,0.084 -8.565,0.239 -15.718,0.86 -30.94,4.069 -45.253,9.344 -38.31,14.117 -70.116,42.994 -87.554,81 2.307,-0.129 4.63,-0.201 6.969,-0.201 24.705,0 48.537,7.281 68.921,21.057 2.683,1.812 4.13,4.769 4.133,7.779 0.002,1.812 -0.52,3.645 -1.61,5.259 -2.904,4.298 -8.741,5.427 -13.038,2.522 -17.267,-11.669 -37.463,-17.836 -58.405,-17.836 -5.904,0 -11.693,0.5 -17.333,1.446 -1.631,0.87 -3.511,1.261 -5.415,1.056 -0.665,0.148 -1.328,0.304 -1.988,0.465 -45.703,11.139 -79.73,52.417 -79.73,101.501 0,0.011 -0.001,0.021 -0.001,0.031 0.017,62.868 50.986,113.828 113.86,113.828 H 405.6 512.417 c 29.816,0 53.992,-24.176 53.992,-53.997 0,-24.594 -20.009,-44.603 -44.603,-44.603 z" id="path3125" inkscape:connector-curvature="0" fill="#b3b3b3"/> - </g> - <g id="g3046" transform="translate(-0.03373486,-0.89285714)"> - <path inkscape:connector-curvature="0" id="path3903" d="m 0.74157708,1045.7667 c 20.84821392,0 20.84821392,0 20.84821392,0" stroke="#b3b1b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-6" d="m 2.2817553,1047.4801 c 20.8482147,0 20.8482147,0 20.8482147,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-0" d="m 0.67857143,1049.1935 c 7.98315367,0 7.98315367,0 7.98315367,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-0-4" d="m 10.499999,1049.1506 c 7.983154,0 7.983154,0 7.983154,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-6-6" d="m 2.1924695,1050.9068 c 20.8482145,0 20.8482145,0 20.8482145,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - </g> - <text x="2.5" y="11.143" id="text4818" sodipodi:linespacing="0%" transform="translate(0,1028.3622)" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" letter-spacing="0" font-size="6"><tspan sodipodi:role="line" id="tspan4820"/> - </text> - <g id="g3053" transform="translate(-0.04910686,1.0267857)"> - <path inkscape:connector-curvature="0" id="path3903-3" d="m 0.75694943,1029.8814 c 20.84821357,0 20.84821357,0 20.84821357,0" stroke="#b3b1b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-6-5" d="m 2.2971274,1031.5948 c 20.8482146,0 20.8482146,0 20.8482146,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-0-0" d="m 0.69394343,1033.3082 c 7.98315397,0 7.98315397,0 7.98315397,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-0-4-6" d="m 10.515371,1033.2653 c 7.983154,0 7.983154,0 7.983154,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-6-6-5" d="m 2.2078414,1035.0215 c 20.8482146,0 20.8482146,0 20.8482146,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - </g> - <g id="g3046-8" transform="translate(-0.03373486,-7.9388357)"> - <path inkscape:connector-curvature="0" id="path3903-67" d="m 0.74157708,1045.7667 c 20.84821392,0 20.84821392,0 20.84821392,0" stroke="#b3b1b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-6-58" d="m 2.2817553,1047.4801 c 20.8482147,0 20.8482147,0 20.8482147,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-0-01" d="m 0.67857143,1049.1935 c 7.98315367,0 7.98315367,0 7.98315367,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-0-4-1" d="m 10.499999,1049.1506 c 7.983154,0 7.983154,0 7.983154,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - <path inkscape:connector-curvature="0" id="path3903-6-6-3" d="m 2.1924695,1050.9068 c 20.8482145,0 20.8482145,0 20.8482145,0" stroke="#b3b3b3" fill-opacity="0" stroke-linecap="round"/> - </g> - <text x="11.917" y="1043.64" id="text4818-9" sodipodi:linespacing="0%" fill="#1a1a1a" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="9"><tspan sodipodi:role="line" id="tspan4820-2" x="11.917" y="1043.64">FOG</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/124-1.svg b/htdocs/public/symbols/svgicons/124-1.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/124-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/124-2.svg b/htdocs/public/symbols/svgicons/124-2.svg deleted file mode 100755 index ea1c71c..0000000 --- a/htdocs/public/symbols/svgicons/124-2.svg +++ /dev/null @@ -1,58 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - viewBox="0 0 24 24" - height="24" - width="24" - version="1.1" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="124-2.svg"> - <defs - id="defs8" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview6" - showgrid="false" - inkscape:zoom="7.8666667" - inkscape:cx="-16.90678" - inkscape:cy="15" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata3432"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <rect - rx="1.9170001" - y="1.2583904" - x="8.1230001" - height="21.483219" - width="7.7540002" - id="rect3436" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/125-1.svg b/htdocs/public/symbols/svgicons/125-1.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/125-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/125-2.svg b/htdocs/public/symbols/svgicons/125-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/125-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/126-1.svg b/htdocs/public/symbols/svgicons/126-1.svg deleted file mode 100755 index c061896..0000000 --- a/htdocs/public/symbols/svgicons/126-1.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="30" height="30" viewBox="0 0 30 30"> - <metadata id="metadata3516"/> - <text x="-4.337" y="29.2" id="text3528" sodipodi:linespacing="125%" transform="scale(0.84923707,1.1775275)" font-family="sans-serif" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="52.51"><tspan sodipodi:role="line" id="tspan3530" x="-4.337" y="29.2">~</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/126-2.svg b/htdocs/public/symbols/svgicons/126-2.svg deleted file mode 100755 index c061896..0000000 --- a/htdocs/public/symbols/svgicons/126-2.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="30" height="30" viewBox="0 0 30 30"> - <metadata id="metadata3516"/> - <text x="-4.337" y="29.2" id="text3528" sodipodi:linespacing="125%" transform="scale(0.84923707,1.1775275)" font-family="sans-serif" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="52.51"><tspan sodipodi:role="line" id="tspan3530" x="-4.337" y="29.2">~</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/32-1.svg b/htdocs/public/symbols/svgicons/32-1.svg deleted file mode 100755 index 712d15a..0000000 --- a/htdocs/public/symbols/svgicons/32-1.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4183"/> - <text x="11.563" y="8.596" id="text4187" sodipodi:linespacing="125%" font-family="sans-serif" text-anchor="middle" text-align="center" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="10"><tspan sodipodi:role="line" id="tspan4189" x="11.563" y="8.596">REV</tspan> - </text> - <text x="4.677" y="23.06" id="text4191" sodipodi:linespacing="125%" font-family="sans-serif" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="17.5"><tspan sodipodi:role="line" id="tspan4193" x="4.677" y="23.06">H</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/32-2.svg b/htdocs/public/symbols/svgicons/32-2.svg deleted file mode 100755 index 712d15a..0000000 --- a/htdocs/public/symbols/svgicons/32-2.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4183"/> - <text x="11.563" y="8.596" id="text4187" sodipodi:linespacing="125%" font-family="sans-serif" text-anchor="middle" text-align="center" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="10"><tspan sodipodi:role="line" id="tspan4189" x="11.563" y="8.596">REV</tspan> - </text> - <text x="4.677" y="23.06" id="text4191" sodipodi:linespacing="125%" font-family="sans-serif" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="17.5"><tspan sodipodi:role="line" id="tspan4193" x="4.677" y="23.06">H</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/33-1.svg b/htdocs/public/symbols/svgicons/33-1.svg deleted file mode 100755 index 3460dc9..0000000 --- a/htdocs/public/symbols/svgicons/33-1.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4298"/> - <g inkscape:groupmode="layer" id="layer1" inkscape:label="Layer 1"> - <path sodipodi:type="star" id="path4304" sodipodi:sides="6" sodipodi:cx="11.986943" sodipodi:cy="13.815016" sodipodi:r1="13.818669" sodipodi:r2="7.8766413" sodipodi:arg1="0.52453753" sodipodi:arg2="1.0481363" inkscape:flatsided="false" inkscape:rounded="0" inkscape:randomized="0" d="m 23.94777,20.735582 -8.028911,-0.0955 -3.944888,6.993598 -3.9317502,-7.000992 -8.02907713,0.08043 4.09716173,-6.905491 -4.08418939,-6.9131722 8.02891189,0.0955 3.9448881,-6.99359774 3.93175,7.00099194 8.029077,-0.080426 -4.097162,6.9054915 z" transform="matrix(1.0010906,0,0,0.8695997,-1.6205237e-5,-0.01353359)" fill="#0000d0" stroke="#1a1a1a" stroke-linecap="round" stroke-width="0"/> - </g> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 2"> - <text x="13.13" y="14.347" id="text4323" sodipodi:linespacing="125%" transform="scale(0.9004394,1.1105689)" fill="#d8d81f" font-family="sans-serif" text-anchor="middle" text-align="center" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="9.717"><tspan sodipodi:role="line" id="tspan4325" x="13.13" y="14.347">PD</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/33-2.svg b/htdocs/public/symbols/svgicons/33-2.svg deleted file mode 100755 index 455d424..0000000 --- a/htdocs/public/symbols/svgicons/33-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" viewBox="0 0 24 24" width="24" height="24"> - <path inkscape:connector-curvature="0" d="M 11.926935,5.4192426 20.327446,19.51052 3.6845254,19.564516 11.926935,5.4192426 Z" id="white_bg" fill="#ffff00"/> - <path inkscape:connector-curvature="0" d="M 11.977044,2.0093618 C 11.566241,1.9828259 11.146799,2.1767499 10.883729,2.5250469 L 0.0572775,20.713555 c -0.07304604,0.274732 -0.07581064,0.44968 -0.01066964,0.70843 0.0623332,0.247518 0.3058344,0.502812 0.53862277,0.564584 l 22.54621637,0.0065 c 0.140822,-0.02549 0.335208,-0.09158 0.430673,-0.146869 0.347304,-0.201298 0.582295,-0.737372 0.336073,-1.144719 L 12.938262,2.5587406 C 12.778002,2.2935977 12.455321,2.1025808 12.15251,2.034848 12.095058,2.0218889 12.035878,2.0129903 11.97713,2.009189 Z m -0.05011,3.4098808 8.400511,14.0912774 -16.6429206,0.054 8.2424096,-14.1452734 z" id="foo"/> - <path inkscape:connector-curvature="0" id="path8" d="m 11.627581,18.593621 c -0.380134,-0.181859 -0.669553,-0.619876 -0.669553,-1.012968 0,-0.731325 0.764154,-1.282518 1.487271,-1.072149 0.487693,0.141686 0.819014,0.581863 0.815126,1.082516 -0.0035,0.42549 -0.187474,0.738668 -0.563288,0.958972 -0.28726,0.168468 -0.768474,0.187907 -1.069556,0.04363 z m 0.08639,-2.88858 C 11.666458,15.679123 11.554578,15.587977 11.46516,15.502879 11.15371,15.206116 11.15371,15.208708 10.950684,12.029413 10.770121,9.2034682 10.768393,9.1594073 10.846148,8.9563817 11.020231,8.4997899 11.409004,8.299788 12.056094,8.3334816 c 0.411235,0.021598 0.728301,0.1663083 0.933918,0.4263539 0.176244,0.2220324 0.214257,0.3477355 0.214257,0.7023824 -4.32e-4,0.3853168 -0.246654,5.1132231 -0.281644,5.4030741 -0.04579,0.37927 -0.266957,0.687264 -0.591798,0.822902 -0.185315,0.07732 -0.491581,0.08596 -0.616853,0.01685 z"/> - <metadata id="metadata10"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/34-1.svg b/htdocs/public/symbols/svgicons/34-1.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/34-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/34-2.svg b/htdocs/public/symbols/svgicons/34-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/34-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/35-1.svg b/htdocs/public/symbols/svgicons/35-1.svg deleted file mode 100644 index 5cd64ee..0000000 --- a/htdocs/public/symbols/svgicons/35-1.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg width="24" height="24" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> - <path d="m23.993 17.993-8.046-.076L12 23.987l-3.948-6.07-8.046.076L4.106 12l-4.1-5.994 8.046.077L12 .013l3.947 6.07 8.046-.077-4.1 5.994Z" fill="green"/> - <path d="M6.803 12a5.197 5.197 0 0 1 5.196-5.197 5.197 5.197 0 0 1 5.198 5.195 5.197 5.197 0 0 1-5.193 5.199 5.197 5.197 0 0 1-5.201-5.192" fill="#f9f9f9"/> - <text x="12" y="14.5" word-spacing="0" font-weight="bold" letter-spacing="0" font-size="7.5" style="font-weight:700;font-size:7.5px;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#000" transform="translate(.052 .234)"><tspan x="12" y="14.5">D</tspan></text> -</svg> diff --git a/htdocs/public/symbols/svgicons/35-1.svg.orig b/htdocs/public/symbols/svgicons/35-1.svg.orig deleted file mode 100755 index 7c21b5d..0000000 --- a/htdocs/public/symbols/svgicons/35-1.svg.orig +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:dc="http://purl.org/dc/elements/1.1/"> - <defs - id="defs13" /> - <metadata - id="metadata4228"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="layer1"> - <path - id="path4232" - d="M 23.196655,18.425219 15.684703,18.34292 12,24.88961 8.3152966,18.34292 0.80334509,18.425219 4.6305938,11.960827 0.80334515,5.4964351 8.3152972,5.5787337 12,-0.96795654 15.684703,5.5787341 23.196655,5.4964352 19.369406,11.960827 Z" - transform="matrix(1.071125,0,0,0.92715745,-0.8535,0.91043026)" - fill="#008000" - stroke-linejoin="round" - stroke-width="1.124" /> - </g> - <g - id="layer2"> - <path - id="path4253" - d="m 6.8030467,12 a 5.1969533,5.1969533 0 0 1 5.1957063,-5.1969531 5.1969533,5.1969533 0 0 1 5.1982,5.1944591 5.1969533,5.1969533 0 0 1 -5.193211,5.199446 5.1969533,5.1969533 0 0 1 -5.2006929,-5.191963" - fill="#f9f9f9" - stroke-linejoin="round" - stroke-width="1.124" /> - </g> - <g - id="text" - transform="translate(0.05168457,0.23376465)"> - <text - x="12" - y="14.5" - id="text3339" - text-align="center" - word-spacing="0" - line-height="0%" - font-weight="bold" - letter-spacing="0" - font-size="7.5px" - style="font-weight:bold;font-size:7.5px;line-height:0%;font-family:sans-serif;text-align:center;letter-spacing:0;word-spacing:0;text-anchor:middle;fill:#000000"><tspan - id="tspan2930" - x="12" - y="14.5">D</tspan></text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/35-2.svg b/htdocs/public/symbols/svgicons/35-2.svg deleted file mode 100644 index 97cae2a..0000000 --- a/htdocs/public/symbols/svgicons/35-2.svg +++ /dev/null @@ -1,4 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24"> - <path d="m24.001 18.003-8.046-.076-3.947 6.07-3.948-6.07-8.046.076 4.1-5.993-4.1-5.994 8.046.077 3.948-6.07 3.947 6.07L24 6.016l-4.1 5.994Z" fill="green"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/35-2.svg.orig b/htdocs/public/symbols/svgicons/35-2.svg.orig deleted file mode 100755 index 82d9794..0000000 --- a/htdocs/public/symbols/svgicons/35-2.svg.orig +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4228"/> - <g inkscape:groupmode="layer" id="layer1" inkscape:label="Layer 1"> - <path sodipodi:type="star" id="path4232" sodipodi:sides="6" sodipodi:cx="12" sodipodi:cy="11.960827" sodipodi:r1="12.928783" sodipodi:r2="7.3694062" sodipodi:arg1="0.52359878" sodipodi:arg2="1.0471976" inkscape:flatsided="false" inkscape:rounded="0" inkscape:randomized="0" d="M 23.196655,18.425219 15.684703,18.34292 12,24.88961 8.3152966,18.34292 0.80334509,18.425219 4.6305938,11.960827 0.80334515,5.4964351 8.3152972,5.5787337 12,-0.96795654 15.684703,5.5787341 23.196655,5.4964352 19.369406,11.960827 Z" transform="matrix(1.071125,0,0,0.92715745,-0.84619502,0.91977284)" fill="#008000" stroke-linejoin="round" stroke-width="1.124"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/36-1.svg b/htdocs/public/symbols/svgicons/36-1.svg deleted file mode 100755 index ad3fee2..0000000 --- a/htdocs/public/symbols/svgicons/36-1.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4363"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Layer 1"> - <rect id="rect4368" width="24" height="24" y="0.013" rx="3" fill="#0000cc" stroke-linejoin="round" stroke-width="1.124"/> - </g> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Lager 3"> - <path d="m 2.5688082,17.036813 c 0.01627,0.36089 0.04177,0.71077 0.07367,1.07539 0.152993,0.75716 0.4477841,1.50192 0.8625371,2.15964 0.693847,0.87314 1.596347,1.56473 2.626656,2.0257 0.662705,0.28393 1.398155,0.29103 2.052647,0.0143 6.6681927,-2.75725 11.5729997,-8.5802 13.1773497,-15.6146809 0.17485,-0.80116 0.0185,-1.65498 -0.45328,-2.32302 -0.35456,-0.49458 -0.736833,-0.95613 -1.173679,-1.34146 -1.032497,-0.89456 -2.302869,-1.4161599 -3.640831,-1.5440499 -0.16011,-0.0217 -0.337085,0.055 -0.447991,0.18718 -0.05547,0.0661 -0.09261,0.1663 -0.100274,0.2537199 l -0.847367,5.30468 c -0.04786,0.26954 0.133502,0.53433 0.408548,0.58682 l 1.656695,0.32963 c 0.09842,0.0169 0.173763,0.0613 0.23985,0.1168 0.225798,0.18946 0.244029,0.51446 0.05456,0.74026 l 0,0 -7.1027073,8.4646709 c -0.189462,0.22579 -0.5126894,0.26428 -0.7384874,0.0748 -0.0771,-0.0647 -0.131063,-0.15697 -0.164818,-0.25096 l -0.273771,-0.97113 c -0.08292,-0.2479 -0.315305,-0.39596 -0.558393,-0.37469 l -5.181511,0.56049 c -0.130783,0.0216 -0.2478891,0.0829 -0.3356941,0.18756 -0.07855,0.0936 -0.118561,0.2196 -0.133697,0.33829 z" id="path4" inkscape:connector-curvature="0" fill="none" stroke="#ffffff" stroke-width="1.2"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/36-2.svg b/htdocs/public/symbols/svgicons/36-2.svg deleted file mode 100755 index 2808185..0000000 --- a/htdocs/public/symbols/svgicons/36-2.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4457"/> - <g inkscape:groupmode="layer" id="layer7" inkscape:label="Layer 2"> - <rect id="rect4137" width="24" height="24" rx="3" fill="#008000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.3"/> - <g transform="matrix(0.00379319,0,0,-0.00362069,0.62155767,22.86207)" id="g4" fill="#ffffff"> - <path inkscape:connector-curvature="0" d="m 2568,5643 -3,-258 -27,-3 c -16,-2 -28,-7 -28,-11 0,-4 -45,-16 -100,-26 -55,-10 -100,-22 -100,-27 0,-4 -7,-8 -17,-8 -20,0 -126,-32 -133,-40 -3,-4 -32,-15 -65,-25 -33,-10 -62,-21 -65,-24 -3,-4 -25,-15 -50,-26 -25,-11 -51,-25 -58,-32 -7,-7 -19,-13 -26,-13 -7,0 -21,-8 -32,-18 -10,-10 -34,-27 -53,-38 -19,-10 -53,-38 -76,-61 -23,-24 -46,-43 -51,-43 -5,0 -31,-26 -59,-56 -27,-31 -64,-71 -82,-89 -17,-19 -34,-43 -38,-55 -4,-11 -17,-32 -31,-47 -13,-14 -24,-34 -24,-44 0,-11 -4,-19 -8,-19 -5,0 -17,-25 -27,-55 -11,-30 -22,-55 -25,-55 -4,0 -15,-26 -26,-57 -10,-32 -22,-61 -27,-64 -9,-7 -37,-134 -37,-171 0,-16 -4,-28 -9,-28 -15,0 -27,-260 -17,-407 5,-79 13,-143 17,-143 4,0 16,-36 25,-80 10,-44 21,-80 25,-80 4,0 10,-12 13,-27 10,-40 30,-83 38,-83 4,0 14,-16 22,-35 8,-19 19,-35 23,-35 5,0 17,-17 28,-37 11,-21 28,-44 37,-51 10,-7 18,-19 18,-27 0,-8 9,-19 20,-25 11,-6 20,-16 20,-22 0,-14 72,-88 85,-88 6,0 16,-9 23,-20 7,-11 19,-20 27,-20 8,0 19,-9 25,-20 6,-11 17,-20 25,-20 8,0 20,-8 27,-17 15,-20 44,-41 71,-49 9,-4 17,-10 17,-15 0,-4 16,-16 35,-25 19,-9 35,-20 35,-24 0,-5 20,-16 45,-26 25,-9 45,-20 45,-23 0,-4 20,-15 45,-26 25,-11 45,-23 45,-26 0,-4 23,-15 50,-25 28,-10 50,-21 50,-25 0,-4 23,-15 50,-25 28,-10 50,-21 50,-25 0,-3 21,-14 47,-24 27,-10 53,-24 59,-30 7,-6 37,-17 68,-24 31,-7 56,-17 56,-22 0,-5 7,-9 15,-9 13,0 15,-103 15,-865 l 0,-866 -62,7 c -35,4 -65,10 -68,14 -3,4 -30,10 -60,14 -74,9 -150,28 -150,38 0,4 -13,8 -28,8 -29,0 -123,28 -132,40 -3,3 -25,12 -49,20 -24,8 -49,19 -55,25 -6,6 -32,20 -59,30 -26,10 -47,22 -47,26 0,5 -6,9 -12,9 -15,0 -98,82 -98,96 0,5 -9,15 -20,22 -11,7 -20,19 -20,27 0,8 -6,15 -14,15 -13,0 -34,38 -24,44 1,1 30,7 62,14 34,7 67,20 78,32 10,11 24,20 31,20 16,0 117,107 117,124 0,7 8,21 18,32 29,30 42,103 42,226 0,111 -12,188 -30,188 -5,0 -14,17 -21,37 -13,40 -96,129 -141,152 -16,8 -28,18 -28,23 0,4 -6,8 -14,8 -7,0 -27,7 -42,15 -16,8 -48,15 -71,15 -24,0 -43,5 -43,10 0,6 -25,10 -55,10 -30,0 -55,-4 -55,-8 0,-4 -34,-16 -74,-25 -86,-20 -119,-44 -211,-151 -16,-19 -37,-43 -46,-53 -9,-10 -23,-36 -30,-58 -8,-22 -16,-42 -19,-45 -19,-18 -30,-72 -30,-142 0,-77 18,-207 29,-218 4,-3 15,-31 25,-62 11,-32 22,-58 26,-58 4,0 15,-16 26,-35 10,-19 22,-35 26,-35 4,0 14,-16 22,-35 8,-19 19,-35 25,-35 5,0 12,-8 15,-18 9,-27 119,-152 135,-152 4,0 19,-13 33,-29 15,-16 42,-34 62,-41 20,-6 36,-15 36,-20 0,-5 17,-17 38,-27 20,-9 43,-25 50,-35 7,-10 22,-18 32,-18 10,0 25,-6 33,-14 8,-8 39,-23 68,-32 30,-10 56,-21 59,-25 3,-4 32,-15 65,-24 33,-10 62,-21 65,-24 3,-4 34,-16 70,-26 36,-10 67,-22 70,-26 6,-8 148,-39 179,-39 11,0 21,-4 23,-10 2,-5 57,-16 123,-22 l 120,-13 3,-273 2,-272 270,0 0,520 320,0 0,-520 270,0 0,546 132,12 c 72,6 134,15 137,20 3,4 53,15 111,25 57,9 106,21 110,25 3,4 39,16 80,26 41,11 77,22 80,25 3,4 31,15 63,24 31,10 57,22 57,26 0,4 18,14 40,21 23,8 44,18 48,24 4,6 23,20 42,30 19,11 44,28 54,38 11,10 26,18 33,18 7,0 17,9 23,20 6,11 16,20 23,20 17,0 173,162 181,188 4,12 11,22 16,22 5,0 17,16 26,35 9,19 20,35 24,35 5,0 16,20 26,45 9,25 20,45 24,45 8,0 40,94 40,116 0,8 4,14 9,14 5,0 17,35 26,78 10,42 21,80 27,83 38,24 36,799 -3,799 -4,0 -13,25 -20,56 -7,31 -18,61 -24,68 -6,6 -20,32 -30,59 -10,26 -21,47 -24,47 -4,0 -15,17 -26,38 -11,20 -28,43 -37,50 -10,7 -18,18 -18,23 0,6 -36,46 -79,90 -44,43 -84,79 -90,79 -5,0 -16,8 -23,18 -7,9 -29,26 -48,36 -19,11 -44,28 -54,38 -11,10 -25,18 -32,18 -7,0 -17,6 -21,13 -4,7 -25,21 -45,32 -21,11 -38,23 -38,26 0,4 -22,15 -50,25 -27,10 -50,21 -50,25 0,4 -22,15 -50,25 -27,10 -50,21 -50,25 0,4 -22,15 -50,25 -27,10 -50,21 -50,25 0,3 -27,14 -60,23 -33,9 -60,21 -60,25 0,4 -28,16 -62,27 -35,10 -68,23 -74,29 -7,6 -37,17 -68,25 -31,7 -56,16 -56,20 0,3 -22,14 -50,24 -27,10 -50,22 -50,27 0,5 -9,9 -20,9 -20,0 -20,7 -20,810 l 0,810 50,0 c 28,0 50,-4 50,-10 0,-5 17,-10 37,-10 43,0 196,-31 203,-41 3,-3 31,-14 63,-23 31,-9 57,-21 57,-26 0,-6 8,-10 19,-10 10,0 24,-7 31,-15 7,-8 16,-15 21,-15 4,0 19,-10 33,-22 13,-13 31,-29 40,-36 9,-7 16,-28 16,-47 0,-31 -3,-35 -35,-41 -19,-3 -35,-10 -35,-15 0,-5 -7,-9 -15,-9 -9,0 -29,-7 -46,-15 -42,-22 -139,-117 -139,-136 0,-9 -9,-26 -20,-39 -18,-21 -40,-79 -40,-107 0,-7 -4,-13 -10,-13 -6,0 -10,-42 -10,-105 0,-58 3,-105 8,-105 4,0 16,-27 26,-60 11,-33 23,-60 27,-60 4,0 10,-8 14,-19 9,-28 88,-106 124,-122 17,-8 31,-17 31,-21 0,-8 59,-38 76,-38 7,0 14,-6 16,-12 6,-17 266,-18 276,-1 4,6 21,13 37,17 17,4 44,18 59,31 16,14 32,25 36,25 11,0 70,62 70,73 0,5 11,18 25,29 14,11 25,25 25,33 0,7 6,15 14,18 8,3 20,32 26,64 22,105 -2,473 -31,473 -4,0 -15,20 -25,45 -9,25 -20,45 -23,45 -4,0 -13,17 -20,37 -9,25 -53,76 -130,151 -134,131 -136,133 -176,152 -16,8 -32,18 -35,21 -3,3 -22,14 -42,24 -21,9 -38,21 -38,25 0,3 -26,15 -57,26 -32,10 -60,22 -63,25 -3,4 -33,15 -67,24 -35,10 -63,21 -63,25 0,9 -88,28 -167,36 -35,4 -63,10 -63,15 0,4 -36,11 -80,15 l -80,7 0,507 -270,0 0,-490 -102,0 c -57,0 -120,-3 -140,-6 l -38,-7 0,503 -310,0 -2,-257 z m 592,-1243 c 0,-461 -4,-760 -9,-760 -5,0 -16,7 -25,15 -8,8 -19,15 -25,15 -16,0 -105,32 -111,39 -3,4 -27,15 -55,26 -27,10 -56,24 -62,31 -10,10 -13,162 -13,693 l 0,680 33,6 c 29,5 60,6 220,13 l 47,2 0,-760 z m -590,95 c 0,-571 -1,-604 -17,-598 -10,4 -24,13 -31,20 -7,7 -20,13 -27,13 -8,0 -20,8 -27,18 -13,17 -39,36 -68,49 -8,4 -21,15 -28,25 -7,10 -18,18 -23,18 -18,0 -165,157 -179,191 -7,19 -18,39 -25,44 -19,16 -32,47 -40,95 -4,25 -12,48 -18,52 -13,8 -11,162 3,166 5,2 10,17 10,33 0,33 30,151 41,159 3,3 9,14 13,25 3,11 19,36 36,55 17,19 33,43 36,53 3,9 9,17 14,17 5,0 16,13 24,29 8,15 30,34 48,42 18,7 42,21 52,31 11,10 25,18 32,18 7,0 19,6 27,14 14,14 81,33 125,35 l 22,1 0,-605 z m 365,-2038 c 11,-14 147,-47 195,-47 l 30,0 0,-1590 -73,0 c -41,0 -108,-3 -150,-6 l -77,-7 0,1682 33,-10 c 17,-5 37,-15 42,-22 z m 542,-199 c 15,-7 37,-21 47,-30 11,-10 26,-18 33,-18 7,0 17,-9 23,-20 6,-11 17,-20 25,-20 8,0 20,-8 27,-18 7,-10 20,-21 28,-25 53,-24 166,-139 180,-183 7,-19 15,-34 19,-34 4,0 14,-19 21,-41 8,-23 20,-48 27,-55 22,-21 33,-108 33,-251 0,-129 -15,-273 -29,-283 -4,-3 -15,-27 -26,-55 -10,-27 -29,-58 -42,-68 -13,-10 -23,-25 -23,-33 0,-8 -4,-14 -8,-14 -5,0 -14,-11 -20,-25 -7,-14 -20,-28 -29,-32 -10,-4 -34,-23 -54,-43 -19,-20 -49,-42 -67,-49 -17,-7 -41,-21 -52,-31 -11,-10 -41,-24 -65,-31 -25,-7 -45,-16 -45,-20 0,-4 -11,-9 -25,-11 l -25,-5 0,703 c 0,440 4,704 10,704 5,0 22,-6 37,-12 z" id="path6"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/37-1.svg b/htdocs/public/symbols/svgicons/37-1.svg deleted file mode 100755 index a982ac0..0000000 --- a/htdocs/public/symbols/svgicons/37-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4641"/> - <rect id="rect3334" width="23.04" height="23.04" x="0.48" y="0.48" rx="2.88" fill="#ffffff" fill-rule="evenodd" stroke="#333333" stroke-width="0.96"/> - <text x="1.805" y="15.846" id="text4645" sodipodi:linespacing="125%" transform="scale(0.77898225,1.2837263)" font-family="sans-serif" fill="#000080" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="-1.951" font-size="17.827"><tspan sodipodi:role="line" id="tspan4647" x="1.805" y="15.846">DX</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/37-2.svg b/htdocs/public/symbols/svgicons/37-2.svg deleted file mode 100755 index d6aad82..0000000 --- a/htdocs/public/symbols/svgicons/37-2.svg +++ /dev/null @@ -1,84 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg4231" - version="1.1" - inkscape:version="0.91 r13725" - sodipodi:docname="37-2.svg"> - <defs - id="defs4233" /> - <sodipodi:namedview - id="base" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageopacity="0.0" - inkscape:pageshadow="2" - inkscape:zoom="7.9195959" - inkscape:cx="-10.192552" - inkscape:cy="13.794823" - inkscape:document-units="px" - inkscape:current-layer="layer1" - showgrid="false" - units="px" - inkscape:window-width="1875" - inkscape:window-height="1056" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" /> - <metadata - id="metadata4236"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1028.3622)"> - <g - id="g4251" - transform="translate(-210.85714,662.28571)" - style="fill:#1a1a1a"> - <path - sodipodi:nodetypes="csccc" - id="path5796" - style="fill:#1a1a1a" - d="m 212.15962,373.77571 c 0.1561,14.84097 4.97586,14.40251 10.69011,14.40251 5.71386,0 10.69168,-0.1021 10.70494,-14.40251 l -21.39456,0 z" - inkscape:connector-curvature="0" /> - <path - id="rect5801" - style="fill:#1a1a1a" - d="m 216.96298,366.07659 c 0.66663,0 1.20317,0.53605 1.20317,1.20317 l 0,6.73766 c 0,0.66663 -0.53703,1.20317 -1.20317,1.20317 -0.66663,0 -1.20317,-0.53703 -1.20317,-1.20317 l 0,-6.73766 c 0,-0.66663 0.53703,-1.20317 1.20317,-1.20317 z" - inkscape:connector-curvature="0" /> - <path - id="rect5803" - style="fill:#1a1a1a" - d="m 228.39639,366.07659 c 0.66663,0 1.20318,0.53703 1.20318,1.20317 l 0,6.73766 c 0,0.66663 -0.53704,1.20317 -1.20318,1.20317 -0.66662,0 -1.20317,-0.53703 -1.20317,-1.20317 l 0,-6.73766 c 0,-0.66663 0.53605,-1.20317 1.20317,-1.20317 z" - inkscape:connector-curvature="0" /> - <path - id="rect5805" - style="fill:#1a1a1a" - d="m 217.97362,380.63177 9.76704,0 c 0.92484,0 1.66972,0.53703 1.66972,1.20317 l 0,7.03828 c 0,0.66663 -0.74517,1.20317 -1.66972,1.20317 l -9.76704,0 c -0.92483,0 -1.66971,-0.53703 -1.66971,-1.20317 l 0,-7.03828 c 0,-0.66663 0.74419,-1.20317 1.66971,-1.20317 z" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/38-1.svg b/htdocs/public/symbols/svgicons/38-1.svg deleted file mode 100755 index 8a64e97..0000000 --- a/htdocs/public/symbols/svgicons/38-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"><metadata id="metadata4733"/><g><g><g><g> - - <g inkscape:groupmode="layer" id="layer9" inkscape:label="Layer 1"> - <path sodipodi:type="star" id="path4741" sodipodi:sides="4" sodipodi:cx="12" sodipodi:cy="12" sodipodi:r1="11.990243" sodipodi:r2="8.4783821" sodipodi:arg1="0" sodipodi:arg2="0.78539816" inkscape:flatsided="true" inkscape:rounded="-3.469447e-18" inkscape:randomized="0" d="M 23.990243,12 12,23.990243 0.00975704,12 12,0.00975704 Z" transform="matrix(0.88484358,0,0,0.8847113,1.381877,1.3834644)" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="3.145"/> - </g> -<text id="textoverlay"><tspan id="tspanoverlay" font-family="Sans-Serif" text-anchor="middle" text-align="center" word-spacing="0" letter-spacing="0" font-weight="bold" x="12" y="12" fill="#ffff00" font-size="14" dy="4.7" dx="-0.2">G</tspan></text></g></g></g></g></svg> diff --git a/htdocs/public/symbols/svgicons/38-2.svg b/htdocs/public/symbols/svgicons/38-2.svg deleted file mode 100755 index c70d6b9..0000000 --- a/htdocs/public/symbols/svgicons/38-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4733"/> - <g inkscape:groupmode="layer" id="layer9" inkscape:label="Layer 1"> - <path sodipodi:type="star" id="path4741" sodipodi:sides="4" sodipodi:cx="12" sodipodi:cy="12" sodipodi:r1="11.990243" sodipodi:r2="8.4783821" sodipodi:arg1="0" sodipodi:arg2="0.78539816" inkscape:flatsided="true" inkscape:rounded="-3.469447e-18" inkscape:randomized="0" d="M 23.990243,12 12,23.990243 0.00975704,12 12,0.00975704 Z" transform="matrix(0.88484358,0,0,0.8847113,1.381877,1.3834644)" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="3.145"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/39-1.svg b/htdocs/public/symbols/svgicons/39-1.svg deleted file mode 100755 index a1b2250..0000000 --- a/htdocs/public/symbols/svgicons/39-1.svg +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="39-1.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview7" - showgrid="false" - inkscape:zoom="2.4583333" - inkscape:cx="-172.29272" - inkscape:cy="47.937368" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <path - inkscape:connector-curvature="0" - style="fill:#333333;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 2.4083407e-4,8.1162722 C -0.01838917,9.6764723 1.0466148,10.484411 2.4035078,10.73719 c 2.700071,0.37144 6.117916,0.07016 8.7605222,0.343954 0.12819,3.287784 0.20839,5.023295 0.348354,7.747571 -3.3678522,0.01565 -4.0829152,0.246165 -4.1373382,1.257336 -0.05361,0.996037 0.782894,1.165189 1.611365,1.193297 0.828467,0.02811 1.7426692,0.01809 2.6429532,0.03655 -4e-6,-4e-6 0.0043,0.494225 0.162466,0.591807 0.146984,0.09071 0.460239,0.106085 0.625114,0.03034 0.152246,-0.06993 0.205754,-0.637342 0.205758,-0.637338 0,0 1.697258,-0.0067 2.534782,0.01743 0.914595,0.02794 1.780169,-0.03316 1.803993,-1.237044 0.0238,-1.203501 -1.867308,-1.241138 -4.185258,-1.252397 0.227213,-3.628941 0.26379,-3.830654 0.453975,-7.747572 2.631603,-0.255168 5.568176,0.02749 7.851383,-0.343954 1.826305,-0.297106 2.968643,-1.0612513 2.916725,-2.6156021 -0.05192,-1.5543509 -0.935194,-2.1069768 -2.930505,-2.1096095 -3.52709,-0.00455 -7.503174,-0.3191949 -7.503174,-0.3191949 -0.03419,-1.5374531 0.351454,-3.6732247 -1.17103,-3.6792188 -1.522493,-0.006 -1.245886,2.1306675 -1.295288,3.6826712 0,0 -6.0155202,0.3410105 -8.7344712,0.3257934 -1.272077,-0.00741 -2.34478297,0.5187641 -2.36359296593,2.0942433 z" - id="path3241" - sodipodi:nodetypes="cccczzczzcczccszsczcszc" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/39-2.svg b/htdocs/public/symbols/svgicons/39-2.svg deleted file mode 100755 index ce75666..0000000 --- a/htdocs/public/symbols/svgicons/39-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" viewBox="0 0 24 24" width="24" height="24"> - <path inkscape:connector-curvature="0" d="M 11.926935,5.4192426 20.327446,19.51052 3.6845254,19.564516 11.926935,5.4192426 Z" id="white_bg" fill="#ffff00"/> - <path inkscape:connector-curvature="0" d="M 11.977044,2.0093618 C 11.566241,1.9828259 11.146799,2.1767499 10.883729,2.5250469 L 0.0572775,20.713555 c -0.07304604,0.274732 -0.07581064,0.44968 -0.01066964,0.70843 0.0623332,0.247518 0.3058344,0.502812 0.53862277,0.564584 l 22.54621637,0.0065 c 0.140822,-0.02549 0.335208,-0.09158 0.430673,-0.146869 0.347304,-0.201298 0.582295,-0.737372 0.336073,-1.144719 L 12.938262,2.5587406 C 12.778002,2.2935977 12.455321,2.1025808 12.15251,2.034848 12.095058,2.0218889 12.035878,2.0129903 11.97713,2.009189 Z m -0.05011,3.4098808 8.400511,14.0912774 -16.6429206,0.054 8.2424096,-14.1452734 z" id="foo"/> - <metadata id="metadata10"/> - <path d="m 15.351913,18.201835 -2.342899,-1.117795 -0.337372,2.000901 -1.7871,-1.825512 -2.3108271,1.262611 1.2808018,-2.461453 -1.6007975,-0.455922 1.4995009,-1.060977 -1.4848918,-1.584709 2.3132657,0.584318 0.781932,-1.719343 1.194351,1.469863 2.755388,-1.144062 -1.265982,2.046527 2.119454,0.781933 -2.062616,0.838701 1.247792,2.384919 z" id="path2816" sodipodi:nodetypes="ccccccccccccccccc" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-width="0.104" stroke-miterlimit="8.8"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/40-1.svg b/htdocs/public/symbols/svgicons/40-1.svg deleted file mode 100755 index 2e2fafd..0000000 --- a/htdocs/public/symbols/svgicons/40-1.svg +++ /dev/null @@ -1,145 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - id="svg4853" - inkscape:version="0.91 r13725" - sodipodi:docname="40-1.svg"> - <defs - id="defs4874" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview4872" - showgrid="false" - inkscape:zoom="13.906433" - inkscape:cx="30.299655" - inkscape:cy="28.647355" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="layer2" /> - <metadata - id="metadata3051"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:groupmode="layer" - id="layer1" - inkscape:label="Lager"> - <rect - id="rect4211" - width="4.8" - height="4.8" - x="18.02" - y="1.092" - opacity="0.4" - stroke-linejoin="round" - stroke-linecap="round" - stroke-width="0.4" /> - <rect - id="rect4215" - width="2.981" - height="2.981" - x="18.932" - y="2" - opacity="0.5" - stroke-linejoin="round" - stroke-linecap="round" - stroke-width="0.4" /> - <path - d="m 17.655966,3.4924092 c 5.532952,0 5.532952,0 5.532952,0" - id="path4199" - inkscape:connector-curvature="0" - fill-rule="evenodd" - stroke="#000000" - stroke-linecap="round" - stroke-width="0.994" /> - <path - d="m 20.422442,0.88666139 c 0,5.21149571 0,5.21149571 0,5.21149571" - id="path4197" - inkscape:connector-curvature="0" - fill-rule="evenodd" - stroke="#000000" - stroke-linecap="round" - stroke-width="0.932" /> - </g> - <g - inkscape:groupmode="layer" - id="layer3" - inkscape:label="Lager#2" /> - <g - inkscape:groupmode="layer" - id="layer2" - inkscape:label="Lager#1"> - <path - style="fill:#1a1a1a;fill-rule:evenodd;stroke:#1a1a1a;stroke-width:0.37599999;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 12.012265,5.6055669 10.869091,1.2079924" - id="path4894" - inkscape:connector-curvature="0" - sodipodi:nodetypes="cc" /> - <g - id="g5513" - transform="translate(-7.1997469,-0.06307911)"> - <path - inkscape:connector-curvature="0" - id="path4754" - d="M 12.120566,6.1199094 19.924108,5.9425562 24.889998,10.509402 10.790417,9.6226353 Z" - style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - sodipodi:nodetypes="ccccscccccccccccccccccccsssccssscccccccccccccccccc" - style="fill:#aa0000;stroke:none;stroke-width:0.29631296;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - inkscape:connector-curvature="0" - id="path6-9" - d="m 30.925122,14.715807 c 0.150421,-0.941042 -0.0056,-1.022202 -0.62861,-2.409677 C 30.127356,11.929418 29.680225,11.700118 29.318658,11.502877 27.428887,10.472062 25.430189,9.8329837 25.123551,9.8265709 24.162926,8.8699239 22.590339,7.0707393 20.479805,5.6315388 20.086098,5.3630672 18.697693,5.3214637 18.697693,5.3214637 c 0,0 -3.645845,-0.4365462 -6.362043,0.2095624 -0.234324,0.055703 -0.397184,0.036273 -0.593689,0.1396825 -0.03202,0.016842 -0.596586,0.6001015 -0.62861,0.6635303 -0.03129,0.061961 -0.216168,0.2637975 -0.279364,0.3492447 C 10.414823,7.2500554 9.9010187,7.8094032 9.5418084,8.429631 9.384085,8.7020427 9.3109994,8.9612817 9.1576426,9.2328822 9.0100403,9.4943226 8.4730195,9.6954636 8.3893496,10.175778 c -0.04018,0.23046 -0.3022728,0.144318 -0.3143248,0.488927 0.1197104,0.03696 0.1341586,0.0807 0.2793638,0.104764 -0.2099861,0.76358 -0.3388526,2.126644 -0.3499781,2.270266 2.716e-4,-7.8e-5 5.027e-4,-1.93e-4 7.733e-4,-2.71e-4 -0.00178,0.01742 -0.00197,0.01645 -7.733e-4,2.71e-4 -0.6570394,0.206279 -0.5960454,1.386859 -0.6574256,1.172931 0.078997,0.314208 0.296632,0.723481 0.3787956,1.061873 0.070374,0.28991 -0.1633238,0.413561 -0.1746419,0.698451 0.050995,0.02978 0.1001182,0.342638 0.1396829,0.384126 0.1661051,0.457213 1.4659312,0.871007 1.4659312,0.871007 l 0.1287895,1.55e-4 c -0.1106719,-0.328232 -0.170702,-0.679833 -0.170702,-1.045418 0,-1.806061 1.4640788,-3.270137 3.2701388,-3.270137 1.806059,0 3.270139,1.464076 3.270139,3.270137 0,0.368444 -0.061,0.722671 -0.173329,1.053144 l 6.640748,0.02127 c -0.155443,-0.380998 -0.241353,-0.797728 -0.241353,-1.234662 0,-1.80602 1.464077,-3.270099 3.270099,-3.270099 1.806061,0 3.270139,1.464079 3.270139,3.270099 0,0.439794 -0.08704,0.859149 -0.244445,1.242156 l 0.26855,3.47e-4 c 0,0 2.007472,0.186616 2.270032,-0.454006 0.107774,-0.120252 0.147717,-0.728581 0.139682,-1.082578 0.0039,-0.364155 0.07741,-0.29389 0.174642,-0.523887 0.09445,-0.223353 -0.139567,-0.386754 -0.104761,-0.488837 z M 16.151586,9.4894943 c -0.06405,0.044889 -0.0598,0.068728 -0.139721,0.1047968 -0.254372,0.1927587 -0.336931,-0.069877 -3.711136,-0.069877 0.0574,0.081895 -0.394981,0.01124 -0.03493,-0.7683307 0.489429,-1.0596329 1.235858,-2.0237737 1.194756,-2.0386846 0.947192,-0.2821227 1.247996,-0.3717956 2.69106,-0.3348663 -0.02928,0.8381727 -0.01734,1.7798619 -3.3e-5,3.1069623 z m 1.48938,0.232315 C 17.4963,6.9730081 17.366547,6.8829639 17.675896,6.439078 c 2.779918,0 1.837221,0.00942 1.837221,0.00942 1.271994,0.026081 3.482374,2.7540307 4.141432,3.657518 -1.85567,-0.1400534 -2.978847,-0.2327808 -6.013583,-0.3842067 z" /> - <path - sodipodi:open="true" - d="m 10.520695,16.172659 a 1.8473057,1.8473057 0 0 1 1.846863,-1.847306 1.8473057,1.8473057 0 0 1 1.847748,1.846419 1.8473057,1.8473057 0 0 1 -1.845975,1.848192 1.8473057,1.8473057 0 0 1 -1.848635,-1.845532" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - sodipodi:ry="1.8473057" - sodipodi:rx="1.8473057" - sodipodi:cy="16.172659" - sodipodi:cx="12.368001" - sodipodi:type="arc" - id="path3514-1-1" - style="fill:#666666;stroke:#000000;stroke-width:1.85782993;stroke-miterlimit:4;stroke-dasharray:none" /> - <path - sodipodi:open="true" - d="m 23.308721,16.051691 a 1.8473057,1.8473057 0 0 1 1.846863,-1.847306 1.8473057,1.8473057 0 0 1 1.847748,1.846419 1.8473057,1.8473057 0 0 1 -1.845975,1.848192 1.8473057,1.8473057 0 0 1 -1.848635,-1.845532" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - sodipodi:ry="1.8473057" - sodipodi:rx="1.8473057" - sodipodi:cy="16.051691" - sodipodi:cx="25.156027" - sodipodi:type="arc" - id="path3514-1-1-1" - style="fill:#666666;stroke:#000000;stroke-width:1.85782993;stroke-miterlimit:4;stroke-dasharray:none" /> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/40-2.svg b/htdocs/public/symbols/svgicons/40-2.svg deleted file mode 100755 index d91b55c..0000000 --- a/htdocs/public/symbols/svgicons/40-2.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3007"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-427)"> - <g id="g2984" transform="matrix(0.04041772,0,0,0.04041772,0.02960512,426.78712)"> - <path inkscape:connector-curvature="0" id="path3123" d="m 587.001,191.775 c 0,-34.867 -24.173,-64.178 -56.635,-72.094 -0.487,-0.119 -0.977,-0.23 -1.468,-0.34 -1.321,0.132 -2.625,-0.138 -3.761,-0.734 -4.019,-0.676 -8.14,-1.047 -12.347,-1.047 -14.877,0 -29.225,4.381 -41.491,12.671 -3.054,2.063 -7.2,1.261 -9.263,-1.792 -0.774,-1.146 -1.145,-2.447 -1.144,-3.735 0.002,-2.139 1.03,-4.239 2.936,-5.526 14.481,-9.786 31.411,-14.959 48.962,-14.959 1.654,0 3.297,0.051 4.928,0.142 C 499.864,65.46 460.832,40.014 417.312,40.014 c -46.851,0 -87.649,29.456 -103.479,71.663 -2.983,7.955 -5.083,16.361 -6.166,25.111 -0.418,3.378 -3.293,5.852 -6.612,5.852 -0.207,0 -0.417,-0.019 -0.627,-0.039 -0.067,-0.006 -0.133,-0.004 -0.2,-0.012 -3.656,-0.452 -6.253,-3.783 -5.801,-7.439 1.036,-8.369 2.905,-16.456 5.507,-24.189 -42.585,1.412 -76.817,35.727 -78.098,78.348 8.087,0.308 15.9,2.767 22.695,7.162 1.975,1.276 3.044,3.421 3.043,5.609 -0.001,1.24 -0.342,2.495 -1.065,3.614 -2,3.095 -6.129,3.979 -9.224,1.978 -4.437,-2.869 -9.495,-4.561 -14.755,-4.959 -0.804,-0.062 -1.611,-0.097 -2.423,-0.097 -14.922,0 -27.461,10.372 -30.804,24.284 11.929,-3.955 24.376,-6.65 37.163,-7.951 5.847,-0.594 11.765,-0.901 17.736,-0.901 5.979,0 11.893,0.314 17.732,0.909 11.826,1.203 23.331,3.594 34.384,7.062 20.481,6.429 39.406,16.55 55.945,29.621 6.605,5.221 12.835,10.904 18.624,17.02 l 135.23,0 c 44.668,0 80.877,-36.205 80.885,-80.871 0,-0.006 -10e-4,-0.01 -10e-4,-0.014 z" fill="#b3b3b3" stroke="#808080" stroke-width="12.12"/> - <path inkscape:connector-curvature="0" id="path3125" d="m 521.806,465.719 c -1.138,0 -2.266,0.055 -3.387,0.139 -14.255,1.062 -27.023,8.777 -34.622,21.114 -2.721,4.414 -8.506,5.79 -12.921,3.07 -2.88,-1.773 -4.455,-4.852 -4.456,-8.002 0,-1.681 0.439,-3.382 1.385,-4.918 11.22,-18.215 30.377,-29.352 51.597,-30.136 -1.799,-60.006 -50.021,-108.336 -109.977,-110.315 3.667,10.895 6.302,22.287 7.761,34.077 0.637,5.147 -3.02,9.836 -8.166,10.473 -0.094,0.012 -0.187,0.009 -0.281,0.018 -0.296,0.027 -0.592,0.055 -0.884,0.055 -4.672,0 -8.72,-3.482 -9.308,-8.238 -1.525,-12.323 -4.483,-24.163 -8.688,-35.367 -9.626,-25.658 -25.811,-47.963 -46.402,-65.029 -2.799,-2.319 -5.68,-4.541 -8.637,-6.662 -25.652,-18.406 -57.028,-29.169 -90.619,-29.169 -2.87,0 -5.725,0.084 -8.565,0.239 -15.718,0.86 -30.94,4.069 -45.253,9.344 -38.31,14.117 -70.116,42.994 -87.554,81 2.307,-0.129 4.63,-0.201 6.969,-0.201 24.705,0 48.537,7.281 68.921,21.057 2.683,1.812 4.13,4.769 4.133,7.779 0.002,1.812 -0.52,3.645 -1.61,5.259 -2.904,4.298 -8.741,5.427 -13.038,2.522 -17.267,-11.669 -37.463,-17.836 -58.405,-17.836 -5.904,0 -11.693,0.5 -17.333,1.446 -1.631,0.87 -3.511,1.261 -5.415,1.056 -0.665,0.148 -1.328,0.304 -1.988,0.465 -45.703,11.139 -79.73,52.417 -79.73,101.501 0,0.011 -0.001,0.021 -0.001,0.031 0.017,62.868 50.986,113.828 113.86,113.828 l 286.408,0 106.817,0 c 29.816,0 53.992,-24.176 53.992,-53.997 0,-24.594 -20.009,-44.603 -44.603,-44.603 z" fill="#b3b3b3" stroke="#808080" stroke-width="12.12"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/41-1.svg b/htdocs/public/symbols/svgicons/41-1.svg deleted file mode 100755 index 01d72c3..0000000 --- a/htdocs/public/symbols/svgicons/41-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.0"> - <metadata id="metadata7"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-427)"> - <path d="m 2.02217,427.02661 19.95566,0 c 1.10554,0 1.99556,0.89002 1.99556,1.99556 l 0,19.95566 c 0,1.10554 -0.89002,1.99556 -1.99556,1.99556 l -19.95566,0 c -1.10554,0 -1.99556,-0.89002 -1.99556,-1.99556 l 0,-19.95566 c 0,-1.10554 0.89002,-1.99556 1.99556,-1.99556 z" id="rect1872" inkscape:connector-curvature="0" fill="#ffffff" stroke="#000000" color="#000000" stroke-width="0.053"/> - <path d="m 2.02217,427.6918 19.95566,0 c 0.73703,0 1.33037,0.59334 1.33037,1.33037 l 0,19.95566 c 0,0.73703 -0.59334,1.33037 -1.33037,1.33037 l -19.95566,0 c -0.73703,0 -1.33037,-0.59334 -1.33037,-1.33037 l 0,-19.95566 c 0,-0.73703 0.59334,-1.33037 1.33037,-1.33037 z" id="rect2760" inkscape:connector-curvature="0" fill="#003f87" color="#000000" stroke-width="0.874"/> - <path d="m 9.3994964,448.96892 c -0.55432,-0.0491 -1.0531,-0.15264 -1.54365,-0.32051 -2.24285,-0.76753 -3.90777,-2.75864 -4.29589,-5.13754 -0.0227,-0.1391 -0.0497,-0.33168 -0.0601,-0.42796 -0.0254,-0.23544 -0.0253,-1.06434 1.6e-4,-1.2983 0.0844,-0.7763 0.28718,-1.49841 0.61462,-2.18815 0.62044,-1.30697 1.64696,-2.3749 2.90333,-3.02041 l 0.1815,-0.0933 0.008,0.0762 c 0.009,0.0799 0.13589,1.79645 0.13589,1.83443 0,0.012 -0.0528,0.0579 -0.11737,0.1019 -0.27345,0.18636 -0.60334,0.48288 -0.82746,0.74375 -0.6264,0.72911 -1.00129,1.55758 -1.14858,2.53826 -0.0272,0.18088 -0.0319,0.27279 -0.0327,0.63456 -9.1e-4,0.43481 0.0101,0.58496 0.065,0.88255 0.17981,0.97628 0.61247,1.81457 1.29901,2.51689 0.2386,0.24407 0.43905,0.41171 0.72347,0.60501 1.09616,0.74502 2.45454,0.97295 3.7336096,0.62648 0.31166,-0.0844 0.55719,-0.18331 0.92177,-0.37126 0.97597,-0.50315 1.78791,-1.40988 2.20111,-2.4581 0.12308,-0.31223 0.23107,-0.70745 0.27735,-1.01506 0.0138,-0.0916 0.0284,-0.16647 0.0324,-0.16638 0.004,9e-5 0.25818,0.52688 0.56475,1.17066 l 0.55741,1.1705 -0.0722,0.1379 c -0.74906,1.4311 -2.04845,2.56179 -3.56796,3.10474 -0.47439,0.16951 -0.88808,0.26665 -1.41561,0.33241 -0.21605,0.0269 -0.9226896,0.0398 -1.1381796,0.0207 z m 7.6796396,-2.17573 c -0.0148,-0.0349 -0.60256,-1.44683 -1.30615,-3.13772 l -1.27925,-3.07434 -3.18379,0 c -1.7510796,0 -3.1843596,-0.002 -3.1850696,-0.004 -7.1e-4,-0.002 -0.14103,-2.00908 -0.31182,-4.46017 l -0.31052,-4.45653 -0.05,-0.11157 c -0.10052,-0.22448 -0.15059,-0.43902 -0.1612,-0.69074 -0.0366,-0.86881 0.5664,-1.64103 1.41419,-1.81093 0.18205,-0.0365 0.46676,-0.0329 0.65837,0.008 0.51817,0.11126 0.9531896,0.45123 1.1925796,0.93199 0.134,0.26912 0.19062,0.50783 0.19095,0.80508 6.4e-4,0.56696 -0.25428,1.08325 -0.70774,1.43339 -0.2076796,0.16036 -0.5416896,0.30223 -0.7673996,0.32594 l -0.0909,0.01 0.006,0.0747 c 0.008,0.0899 0.19028,3.43538 0.19028,3.48791 l 0,0.0368 2.2265596,0 2.22656,0 0,0.8315 0,0.83149 -2.14328,0 -2.1432796,0 0.008,0.10576 c 0.005,0.0582 0.0228,0.31436 0.0405,0.56932 l 0.0323,0.46355 0.5910996,-0.008 c 1.33284,-0.0181 5.32569,-0.0381 5.33571,-0.0268 0.006,0.007 0.5766,1.35289 1.26814,2.99154 0.69154,1.63865 1.26241,2.97944 1.2686,2.97953 0.006,8e-5 0.43764,-0.15757 0.95876,-0.35035 0.52113,-0.19277 0.95082,-0.3471 0.95488,-0.34293 0.0188,0.0193 0.52465,1.27073 0.51683,1.27867 -0.009,0.009 -3.34455,1.35253 -3.39014,1.36552 -0.017,0.005 -0.0311,-0.011 -0.0506,-0.0566 z" id="path1938" inkscape:connector-curvature="0" fill="#ffffff"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/41-2.svg b/htdocs/public/symbols/svgicons/41-2.svg deleted file mode 100755 index a50534a..0000000 --- a/htdocs/public/symbols/svgicons/41-2.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata5621"/> - <g inkscape:groupmode="layer" id="layer1" inkscape:label="Lager"> - <rect id="rect5627" width="19.622" height="19.622" x="2.189" y="2.189" fill="#ff0000" stroke="#ff0000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.904" rx="5.293"/> - </g> - <g inkscape:groupmode="layer" id="layer3" inkscape:label="Lager#2"> - <path d="M 12,4.3728815 C 12,19.627118 12,19.627118 12,19.627118" id="path6162" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="1.5"/> - <path d="M 18.864407,5.1864406 C 5.237288,18.813559 5.237288,18.813559 5.237288,18.813559 l -0.1016949,0" id="path6168" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="1.5"/> - <path d="M 5.135593,5.1864412 C 18.762712,18.813559 18.762712,18.813559 18.762712,18.813559 l 0.101695,0" id="path6168-7" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="1.5"/> - <path d="M 19.627118,12 C 4.372882,12 4.372882,12 4.372882,12" id="path6162-2" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="1.5"/> - </g> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Lager#1" opacity="0.94"> - <rect id="rect6157" width="3.751" height="3.675" x="10.124" y="10.163" rx="0" ry="1.837" fill="#ffff00" stroke="#ffff00" stroke-linejoin="round" stroke-linecap="round" stroke-width="1.28"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/42-1.svg b/htdocs/public/symbols/svgicons/42-1.svg deleted file mode 100755 index d24e1cb..0000000 --- a/htdocs/public/symbols/svgicons/42-1.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="-0.258 -0.548 24.000001 24"> - <metadata id="metadata6439"/> - <g id="g6421" transform="matrix(0.20244323,0,0,0.20244323,-0.93762632,-0.95857977)"> - <path d="m 45.91646,26.082576 c 5.296144,0 9.570144,-4.273999 9.570144,-9.596798 0,-5.260218 -4.274,-9.5608715 -9.570144,-9.5608715 -5.286872,0 -9.570142,4.3006535 -9.570142,9.5608715 0,5.322799 4.28327,9.596798 9.570142,9.596798 z" id="path6427" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 57.189018,103.42945 h 45.550312 c 0,0 2.94243,0.19933 8.80064,-4.490712 l 9.98618,-7.61393 v 8.601312 l -10.18551,7.61393 c 0,0 -3.02355,2.46265 -8.12153,3.02355 H 53.368146 l 3.820872,-7.13415 z" id="path6429" inkscape:connector-curvature="0" fill="#1a1a1a" stroke="#1a1a1a" stroke-linejoin="round" stroke-width="1.156"/> - <polygon points="50.359,97.504 11.039,97.504 7.758,103.66 8.086,103.66 47.406,103.66 50.688,97.504 " id="polygon6431" transform="matrix(0.92339056,0,0,1.1777069,-3.0934674,-11.459588)" fill="#1a1a1a" stroke="#1a1a1a" stroke-linejoin="round" stroke-width="0.998"/> - <path d="m 50.841758,37.734093 c 0,-5.286874 -4.282112,-9.587527 -9.587527,-9.587527 -5.296143,0 -9.596797,4.300653 -9.596797,9.587527 l 0,23.458323 c 0,2.969086 1.457887,5.74 3.594888,7.496883 11.151042,0 26.275536,0.0012 31.189303,0.0012 l -15.599867,-5.93933 0,-5.830393 12.313245,0 c 0.597989,0.02665 1.222632,-0.05447 1.810192,-0.308266 2.353712,-0.878441 3.512605,-3.512607 2.60751,-5.830393 -0.679113,-1.810192 -2.381527,-2.887964 -4.165064,-2.915776 l -12.576314,-0.02665 0.01047,-10.105551" id="path6433" inkscape:connector-curvature="0" sodipodi:nodetypes="cssscccccccccc" fill="#1a1a1a"/> - <path d="m 39.820287,68.439774 -21.459232,0 -11.5970425,21.050138 c -0.253798,0.479794 -0.370846,1.014032 -0.370846,1.584207 0,1.928411 1.566824,3.503336 3.495223,3.503336 l 79.1130345,0 c 0,0 3.395546,0.543556 8.520178,-3.476681 L 118.0653,75.989967 110.30651,62.436707 c 0,0 -1.74761,-3.277351 -8.31158,-4.264728 L 86.485455,55.564468 78.162282,41.677447 78.081159,41.532585 c -1.213362,-1.384876 -3.313277,-1.529738 -4.699314,-0.334921 l 0,0.02667 c -0.987377,0.905075 -1.358223,2.372233 -0.814702,3.675989 l 6.193128,10.294451 0,0.0904 -7.750669,13.155757" id="path6433-2" inkscape:connector-curvature="0" sodipodi:nodetypes="cccsscccccccccccccc" fill="#aa0000"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/42-2.svg b/htdocs/public/symbols/svgicons/42-2.svg deleted file mode 100755 index d0c494b..0000000 --- a/htdocs/public/symbols/svgicons/42-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24"> - <metadata id="metadata4746"/> - <path d="m 10.85495,-4.55e-4 0,2.98997 -2.24649,-1.29879 -1.14046,1.96884 3.38695,1.96195 0,4.41268 -3.80458,-2.19831 -0.007,-3.93079 -2.27632,0.005 0.005,2.61135 -2.59759,-1.50073 -1.13816,1.97114 2.5907,1.49613 -2.24879,1.2942 1.13357,1.97343 3.39384,-1.95277 3.81835,2.20519 -3.80458,2.19601 -3.40761,-1.95966 -1.13357,1.97343 2.26256,1.30338 -2.59759,1.49843 1.13817,1.97113 2.5907,-1.49613 -0.005,2.59528 2.27632,0.005 0.007,-3.91473 3.81835,-2.20289 0,4.39202 -3.40072,1.97113 1.14046,1.96884 2.26026,-1.30797 0,2.99915 2.27633,0 0,-2.98997 2.24649,1.29879 1.14046,-1.96884 -3.38695,-1.96195 0,-4.41268 3.80458,2.19831 0.007,3.93079 2.27632,-0.005 -0.005,-2.61135 2.59759,1.50073 1.13816,-1.97114 -2.5907,-1.49613 2.24879,-1.2942 -1.13357,-1.97343 -3.39154,1.95277 -3.82065,-2.20519 3.80688,-2.1983 3.40531,1.96195 1.13357,-1.97343 -2.26256,-1.30338 2.59759,-1.49843 -1.13817,-1.97113 -2.5907,1.49613 0.005,-2.59528 -2.27632,-0.005 -0.007,3.91473 -3.81835,2.20289 0,-4.39202 3.40072,-1.97113 -1.14046,-1.96884 -2.26026,1.30797 0,-2.99915 -2.27633,0 z" id="rect2991" inkscape:connector-curvature="0" fill="#3d7dab"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/43-1.svg b/htdocs/public/symbols/svgicons/43-1.svg deleted file mode 100755 index cb7e9ef..0000000 --- a/htdocs/public/symbols/svgicons/43-1.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata7115"/> - <path d="M 12,-0.00134109 C 12,24.001341 12,24.001341 12,24.001341" id="path7119" inkscape:connector-curvature="0" fill="#cc0000" stroke="#cc0000" stroke-width="6.3"/> - <path d="M 24.001341,12 C -0.001341,12 -0.001341,12 -0.001341,12" id="path7119-9" inkscape:connector-curvature="0" fill="#cc0000" stroke="#cc0000" stroke-width="6.3"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/43-2.svg b/htdocs/public/symbols/svgicons/43-2.svg deleted file mode 100755 index b24a842..0000000 --- a/htdocs/public/symbols/svgicons/43-2.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3042"/> - <path d="m 12,3.0113814 0,19.0069396 0,0" id="path3046" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-width="6"/> - <path d="m 4.9636962,10.29703 14.0726078,0" id="path3816" inkscape:connector-curvature="0" sodipodi:nodetypes="cc" fill="none" stroke="#000000" stroke-width="6"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/44-1.svg b/htdocs/public/symbols/svgicons/44-1.svg deleted file mode 100755 index 0dead5e..0000000 --- a/htdocs/public/symbols/svgicons/44-1.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3204"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g4148"> - <path id="path26" d="m 17.032497,1049.0732 c -1.35161,-0.044 -2.33959,-2.0678 -2.6015,-3.4568 l 1.54127,-0.3248 c 0.29019,1.1075 1.03171,1.7138 1.61281,1.8612 0.58133,0.1478 0.93023,0 1.32261,-0.1922 0.14546,1.0044 -0.5521,1.9794 -1.87519,2.1126" inkscape:connector-curvature="0" fill="#ff0000" fill-rule="evenodd"/> - <path sodipodi:nodetypes="cccccccccccc" id="path28" d="m 20.241957,1043.2306 c 0.2486,-0.657 0.29827,-1.651 -0.72988,-2.2415 -0.62982,-0.337 -1.37585,-0.3027 -1.95671,0.085 -0.66309,0.5392 -1.04431,1.2978 -1.29338,2.0897 l -1.72522,-0.017 c 0,-0.4546 0.0829,-0.9434 0.14949,-1.281 0.16613,-1.0112 0.99535,-3.1849 1.55885,-3.9771 0.61414,-0.8934 1.29362,-1.8879 3.2173,-2.1238 1.12749,-0.1343 2.75313,0.2866 3.48229,1.2477 0.74652,1.0111 0.99535,1.9884 0.84586,3.3364 -0.33154,1.3656 -1.75826,3.2022 -3.5486,2.8817 z" inkscape:connector-curvature="0" fill="#ff0000" fill-rule="evenodd"/> - <path id="path102" d="m 11.786527,1052.3619 c 1.33707,-0.8274 2.55796,-1.6106 3.42972,-2.9844 -0.61009,-0.724 -1.2929,-3.6336 -1.32214,-3.8697 l -1.46783,0.088 -0.4513,4.21 c -0.0289,0.029 -0.13034,0.015 -0.17416,0.015 l -0.26125,-4.3129 -1.52608,-0.059 c -0.3200194,1.4922 -1.1051494,3.2203 -1.4240494,3.7961 0.24629,0.6058 1.4240494,1.9357 3.1970894,3.1175" inkscape:connector-curvature="0" fill="#ff0000" fill-rule="evenodd"/> - <path id="path112" d="m 6.8843676,1048.8709 c 1.3521801,-0.044 2.3399001,-2.068 2.60188,-3.4569 l -1.54084,-0.3246 c -0.29067,1.1077 -1.03197,1.7135 -1.61288,1.8613 -0.5817096,0.1479 -0.9303196,0 -1.3233996,-0.1921 -0.14512,1.0047 0.55229,1.9794 1.8752396,2.1123" inkscape:connector-curvature="0" fill="#ff0000" fill-rule="evenodd"/> - <path id="path128" d="m 13.857277,1043.1636 c 0.029,0 0.11645,0 0.13119,-0.045 0.0582,-0.3696 0.0582,-0.7977 0.20344,-1.1961 0.029,-0.2809 0.14474,-0.591 0.18871,-0.8418 0.26143,-0.7539 0.43612,-1.3295 0.72631,-2.0384 0.97443,-2.0685 1.73021,-3.7968 1.11988,-6.0567 -0.30564,-1.0931 -1.55553,-2.4371 -1.99069,-2.7332 -0.4221,-0.2797 -1.8466,-1.3143 -2.00601,-1.8754 -0.0587,-0.015 -0.14557,-0.015 -0.18977,-0.015 -0.36309,0.7831 -1.42415,1.3886 -1.91833,1.8317 -0.4797793,0.4137 -1.3520893,1.078 -1.9625993,2.7621 -0.59603,1.6544 0.0728,4.4316 0.77037,6.0864 0.34899,0.8563 0.71245,1.7573 0.88709,2.6733 0.0725,0.4873 0.1883493,0.9599 0.2332893,1.4625 l 1.43808,0.029 0.63937,-11.5212 0.17454,0.014 0.11596,11.4782 1.43917,-0.015" inkscape:connector-curvature="0" fill="#ff0000" fill-rule="evenodd"/> - <path sodipodi:nodetypes="cccccccccccc" id="path182" d="m 3.7584081,1043.2478 c -0.24919,-0.6573 -0.2982901,-1.6518 0.7295199,-2.242 0.63046,-0.3365 1.37604,-0.3028 1.9571096,0.085 0.66307,0.5393 1.04417,1.2979 1.29334,2.0906 l 1.7243901,-0.017 c 0,-0.4716 -0.0825,-0.9439 -0.14937,-1.2806 -0.14909,-1.0117 -0.97814,-3.1857 -1.55867,-3.9778 -0.6304601,-0.8597 -1.29333,-1.8876 -3.2169596,-2.1238 -1.12733,-0.134 -2.75275,0.2869 -3.48291,1.2473 -0.74578007,1.011 -0.99469007,1.9885 -0.84560007,3.3373 0.33209,1.3649 1.75810007,3.2021 3.54915007,2.8818 z" inkscape:connector-curvature="0" fill="#ff0000" fill-rule="evenodd"/> - <path id="path184" d="m 11.900347,1043.5337 c 1.27696,0 2.45412,0.1019 3.28382,0.2195 0.84514,0.1348 1.40936,0.169 1.37609,0.5398 -0.0328,0.3703 -0.53095,0.3878 -1.37609,0.5225 -0.8297,0.1344 -2.00686,0.2362 -3.28382,0.2362 -1.19373,0 -2.3214293,-0.1018 -3.1343193,-0.2026 -0.92859,-0.1185 -1.44255,-0.1683 -1.54196,-0.5561 -0.0998,-0.3878 0.59676,-0.4552 1.54196,-0.5732 0.79654,-0.1014 1.9405893,-0.1861 3.1343193,-0.1861 z m 0,0.3209 c 1.09503,0 2.12282,0.051 2.83582,0.1179 0.74627,0.068 1.22731,0.1015 1.19404,0.3205 -0.0164,0.2183 -0.44777,0.2356 -1.19404,0.3201 -0.713,0.084 -1.74079,0.1344 -2.83582,0.1344 -1.04426,0 -2.0223993,-0.05 -2.7193293,-0.1344 -0.81216,-0.067 -1.2604,-0.085 -1.34358,-0.3201 -0.0827,-0.2365 0.51433,-0.2527 1.34358,-0.3375 0.67975,-0.068 1.6750693,-0.1009 2.7193293,-0.1009" inkscape:connector-curvature="0" fill="#ff0000" fill-rule="evenodd"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/44-2.svg b/htdocs/public/symbols/svgicons/44-2.svg deleted file mode 100755 index 928409b..0000000 --- a/htdocs/public/symbols/svgicons/44-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3408"/> - <path d="m 11.98881,23.244115 c 3.22297,-1.26105 5.49011,-3.61614 5.63141,-6.09914 0.53801,0.75934 6.35191,1.92593 6.37978,-5.66883 -0.1154,-3.8627 -2.07478,-6.47315 -5.96851,-5.25496 0.49363,-4.76376 -2.77008,-5.27331 -6.00526,-5.4653 -3.4952,0.14196 -6.46711,0.88196 -6.06172,5.48174 C 3.09054,5.045855 0.11669,6.723545 0,11.274775 c 0.041,8.24728 6.12254,6.38075 6.37611,5.87956 0.21597,3.8362 5.1276,5.95378 5.6127,6.08978 z" id="path4245" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccc" fill="#01a850"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/45-1.svg b/htdocs/public/symbols/svgicons/45-1.svg deleted file mode 100755 index c106a47..0000000 --- a/htdocs/public/symbols/svgicons/45-1.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" version="1.1" width="24" height="24"> - <metadata id="metadata3031"/> - <g transform="translate(0,-1028.3622)" id="layer1"> - <g transform="translate(-922.28571,-6.2856999)" id="g3047"> - <path d="m 942.53375,1050.0898 -8.24601,-7.3025 -8.25007,7.3055 0,6.86 c 0,0.27 0.21777,0.4862 0.4872,0.4862 l 5.90963,0 0,-4.5773 c 0,-0.2694 0.21625,-0.4872 0.48619,-0.4872 l 2.72953,0 c 0.26994,0 0.4862,0.2178 0.4862,0.4872 l 0,4.5773 5.91114,0 c 0.26943,0 0.48619,-0.2162 0.48619,-0.4862 z" id="rect2391" fill="#ffff00" stroke="#000000" stroke-width="2.026"/> - <path d="m 934.24043,1037.3781 -11.70152,10.3615 1.2326,1.3902 10.51643,-9.3126 10.51441,9.3126 1.23016,-1.3902 -11.69899,-10.3615 -0.0456,0.053 -0.0476,-0.053 z" id="path2399" stroke="#000000" stroke-linejoin="round" stroke-width="0.506"/> - <path d="m 926.03797,1038.8696 2.96628,0 -0.0258,1.7569 -2.94045,2.6563 0,-4.4132 z" id="rect2404"/> - <path d="m 940.37148,1034.8439 -0.95272,0 0.008,5.9798 0.94442,0.8579 z" id="rect2404-4"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/45-2.svg b/htdocs/public/symbols/svgicons/45-2.svg deleted file mode 100755 index 89a49c3..0000000 --- a/htdocs/public/symbols/svgicons/45-2.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3010"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g3032" transform="translate(469.14286,673.7143)"> - <path sodipodi:nodetypes="cccsscsssscssc" id="rect2391" d="m -448.83166,372.26523 -8.30915,-5.39133 -8.31324,5.39358 0,5.06465 c 0,0.19929 0.21944,0.35894 0.49093,0.35894 l 5.95488,0 0,-3.37934 c 0,-0.19892 0.2179,-0.3597 0.48991,-0.3597 l 2.75043,0 c 0.27201,0 0.48992,0.16078 0.48992,0.3597 l 0,3.37934 5.9564,0 c 0.2715,0 0.48992,-0.15965 0.48992,-0.35894 z" inkscape:connector-curvature="0" fill="#00ffff" stroke="#000000" stroke-width="1.747"/> - <path id="path2399" d="m -457.18848,362.88042 -11.79112,7.64972 1.24204,1.02636 10.59695,-6.87536 10.59492,6.87536 1.23958,-1.02636 -11.78857,-7.64972 -0.046,0.0389 -0.048,-0.0389 z" inkscape:connector-curvature="0" stroke="#000000" stroke-linejoin="round" stroke-width="0.437"/> - <path id="rect2404" d="m -465.45375,363.98157 h 2.98899 l -0.026,1.29708 -2.96297,1.96113 v -3.25821 z" inkscape:connector-curvature="0"/> - <path sodipodi:nodetypes="cccccc" id="rect2404-6" d="m -454.94958,359.09746 -1.74869,-0.0219 0.0221,3.249 1.65285,1.02305 0.0247,-4.2361 z" inkscape:connector-curvature="0"/> - <path inkscape:connector-curvature="0" id="path5724" d="m -461.04865,358.36317 c 11.01724,-0.0285 11.01724,-0.0285 11.01724,-0.0285 l 0,0" fill="none" stroke="#000000" stroke-width="1.021"/> - <path inkscape:connector-curvature="0" id="path5744" d="m -458.37699,355.42708 c -5.53612,5.61787 -5.56503,5.64721 -5.56503,5.64721" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="1.392"/> - <path inkscape:connector-curvature="0" id="path5744-7" d="m -447.04557,355.42708 c -5.53612,5.61787 -5.56503,5.64721 -5.56503,5.64721" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="1.392"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/45-3.svg b/htdocs/public/symbols/svgicons/45-3.svg deleted file mode 100755 index 7890b44..0000000 --- a/htdocs/public/symbols/svgicons/45-3.svg +++ /dev/null @@ -1,75 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - version="1.1" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="45-3.svg"> - <defs - id="defs16" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview14" - showgrid="false" - inkscape:zoom="6.9532167" - inkscape:cx="-13.752296" - inkscape:cy="17.943936" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" /> - <metadata - id="metadata3010"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1028.3622)"> - <g - id="g3351" - transform="translate(0,-7.9875566)"> - <path - sodipodi:nodetypes="cccsccsc" - id="rect2391" - d="m 20.3112,1045.9795 -8.30915,-5.3913 -8.31324,5.3936 0,13.0985 c 0,0.1993 0.21944,0.359 0.49093,0.359 l 15.64154,0 c 0.2715,0 0.48992,-0.1597 0.48992,-0.359 z" - inkscape:connector-curvature="0" - style="fill:#00ffff;stroke:#000000;stroke-width:1.74699998" /> - <path - id="path2399" - d="m 11.95438,1036.5947 -11.79112,7.6497 1.24204,1.0264 10.59695,-6.8754 10.59492,6.8754 1.23958,-1.0264 -11.78857,-7.6497 -0.046,0.039 -0.048,-0.039 z" - inkscape:connector-curvature="0" - style="stroke:#000000;stroke-width:0.43700001;stroke-linejoin:round" /> - <path - id="rect2404" - d="m 3.68911,1037.6959 2.98899,0 -0.026,1.297 -2.96297,1.9612 0,-3.2582 z" - inkscape:connector-curvature="0" /> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/46-1.svg b/htdocs/public/symbols/svgicons/46-1.svg deleted file mode 100755 index 0411387..0000000 --- a/htdocs/public/symbols/svgicons/46-1.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata5085"/> - <path d="M 21.661017,2.338983 C 2.338983,21.661017 2.338983,21.661017 2.338983,21.661017" id="path5089" inkscape:connector-curvature="0" stroke="#ff0000" fill-opacity="0" stroke-linecap="round" stroke-width="3"/> - <path d="M 2.3389831,2.3389831 C 21.661017,21.661017 21.661017,21.661017 21.661017,21.661017" id="path5089-8" inkscape:connector-curvature="0" stroke="#ff0000" fill-opacity="0" stroke-linecap="round" stroke-width="3"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/46-2.svg b/htdocs/public/symbols/svgicons/46-2.svg deleted file mode 100755 index dfc2bf6..0000000 --- a/htdocs/public/symbols/svgicons/46-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata4472"/> - <g inkscape:groupmode="layer" id="layer3" inkscape:label="Lager"> - <path sodipodi:type="arc" id="path4476" sodipodi:cx="11.505466" sodipodi:cy="12.458579" sodipodi:rx="11.397602" sodipodi:ry="11.397602" d="m 0.10786438,12.458579 a 11.397602,11.397602 0 1 1 5.25e-6,0.01094" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" transform="translate(0.49453354,-0.45857906)" fill="#cccccc" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="1.2"/> - <text x="11.984" y="20.16" id="text5005" sodipodi:linespacing="0%" fill="#ff0000" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" letter-spacing="0" font-size="22"><tspan sodipodi:role="line" id="tspan5007" x="11.984" y="20.16">?</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/47-1.svg b/htdocs/public/symbols/svgicons/47-1.svg deleted file mode 100755 index 6084f49..0000000 --- a/htdocs/public/symbols/svgicons/47-1.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata5697"/> - <defs id="defs5695"> - <linearGradient inkscape:collect="always" id="linearGradient4480"> - <stop id="stop4482" stop-color="#ff8080"/> - <stop offset="1" id="stop4484" stop-color="#ff8080" stop-opacity="0"/> - </linearGradient> - <radialGradient inkscape:collect="always" xlink:href="#linearGradient4480" id="radialGradient4488" cx="10.525" cy="10.169" r="4.856" gradientTransform="matrix(-0.00522198,0.93192464,-0.9999843,-0.00560335,20.74972,0.41757067)" gradientUnits="userSpaceOnUse"/> - </defs> - <path sodipodi:type="arc" id="path5701" sodipodi:cx="12" sodipodi:cy="12" sodipodi:rx="3.3559322" sodipodi:ry="3.3559322" d="m 8.6440678,12 a 3.3559322,3.3559322 0 1 1 1.5e-6,0.0032" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" fill="#ff0000" stroke="#ff0000" stroke-linejoin="round" stroke-linecap="round" stroke-width="3"/> - <path sodipodi:type="arc" id="path5701-9" sodipodi:cx="12" sodipodi:cy="12" sodipodi:rx="4.8559928" sodipodi:ry="4.8559937" d="m 7.1440072,12 a 4.8559928,4.8559937 0 0 1 4.8548278,-4.8559936 4.8559928,4.8559937 0 0 1 4.857157,4.8536626 4.8559928,4.8559937 0 0 1 -4.852496,4.858323 4.8559928,4.8559937 0 0 1 -4.8594866,-4.85133" sodipodi:start="3.1415927" sodipodi:end="3.1406327" sodipodi:open="true" fill="url(#radialGradient4488)" stroke="#ff6600" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/47-2.svg b/htdocs/public/symbols/svgicons/47-2.svg deleted file mode 100755 index 3ca935a..0000000 --- a/htdocs/public/symbols/svgicons/47-2.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata5697"/> - <defs id="defs5695"> - <linearGradient inkscape:collect="always" id="linearGradient4184"> - <stop id="stop4186" stop-color="#d45500"/> - <stop offset="1" id="stop4188" stop-color="#d45500" stop-opacity="0"/> - </linearGradient> - <radialGradient inkscape:collect="always" xlink:href="#linearGradient4184" id="radialGradient4190" cx="-0.467" cy="8.03" r="4.856" gradientTransform="matrix(-0.00522206,0.92145355,-0.99998394,-0.0056671,19.547066,11.382745)" gradientUnits="userSpaceOnUse"/> - </defs> - <path sodipodi:type="arc" id="path5701" sodipodi:cx="12" sodipodi:cy="12" sodipodi:rx="3.3559322" sodipodi:ry="3.3559322" d="m 8.6440678,12 a 3.3559322,3.3559322 0 1 1 1.5e-6,0.0032" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="3"/> - <path sodipodi:type="arc" id="path5701-9" sodipodi:cx="12" sodipodi:cy="12" sodipodi:rx="4.8559928" sodipodi:ry="4.8559937" d="m 7.1440072,12 a 4.8559928,4.8559937 0 0 1 4.8548278,-4.8559936 4.8559928,4.8559937 0 0 1 4.857157,4.8536626 4.8559928,4.8559937 0 0 1 -4.852496,4.858323 4.8559928,4.8559937 0 0 1 -4.8594866,-4.85133" sodipodi:start="3.1415927" sodipodi:end="3.1406327" sodipodi:open="true" fill="url(#radialGradient4190)" stroke="#ff6600" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/48-1.svg b/htdocs/public/symbols/svgicons/48-1.svg deleted file mode 100755 index e2ec2e7..0000000 --- a/htdocs/public/symbols/svgicons/48-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="11.994" y="20.372" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="11.994" y="20.372">0</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/48-2.svg b/htdocs/public/symbols/svgicons/48-2.svg deleted file mode 100755 index 6c87131..0000000 --- a/htdocs/public/symbols/svgicons/48-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3116"/> - <path sodipodi:type="arc" id="path3120" sodipodi:cx="11.694915" sodipodi:cy="12.101695" sodipodi:rx="11.288136" sodipodi:ry="11.288136" d="m 0.40677929,12.101695 a 11.288136,11.288136 0 1 1 5.2e-6,0.01084" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" transform="matrix(1.0191414,0,0,1.0191414,0.08122772,-0.33333887)" fill="#ccd5cc" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.973"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/49-1.svg b/htdocs/public/symbols/svgicons/49-1.svg deleted file mode 100755 index 04796fa..0000000 --- a/htdocs/public/symbols/svgicons/49-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#552200" stroke="#552200" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="11.489" y="20.384" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="11.489" y="20.384">1</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/49-2.svg b/htdocs/public/symbols/svgicons/49-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/49-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/50-1.svg b/htdocs/public/symbols/svgicons/50-1.svg deleted file mode 100755 index 61d4e65..0000000 --- a/htdocs/public/symbols/svgicons/50-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#d40000" stroke="#d40000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.08" y="20.535" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.08" y="20.535">2</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/50-2.svg b/htdocs/public/symbols/svgicons/50-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/50-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/51-1.svg b/htdocs/public/symbols/svgicons/51-1.svg deleted file mode 100755 index a39c7f4..0000000 --- a/htdocs/public/symbols/svgicons/51-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#ff6600" stroke="#ff6600" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.14" y="20.372" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.14" y="20.372">3</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/51-2.svg b/htdocs/public/symbols/svgicons/51-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/51-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/52-1.svg b/htdocs/public/symbols/svgicons/52-1.svg deleted file mode 100755 index 348670d..0000000 --- a/htdocs/public/symbols/svgicons/52-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#ffff00" stroke="#ffff00" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.14" y="20.372" id="text6841" sodipodi:linespacing="0%" fill="#808080" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.14" y="20.372">4</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/52-2.svg b/htdocs/public/symbols/svgicons/52-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/52-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/53-1.svg b/htdocs/public/symbols/svgicons/53-1.svg deleted file mode 100755 index 913c938..0000000 --- a/htdocs/public/symbols/svgicons/53-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#00d400" stroke="#00d400" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.14" y="20.372" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.14" y="20.372">5</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/53-2.svg b/htdocs/public/symbols/svgicons/53-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/53-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/54-1.svg b/htdocs/public/symbols/svgicons/54-1.svg deleted file mode 100755 index 176dfaa..0000000 --- a/htdocs/public/symbols/svgicons/54-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#0000ff" stroke="#0000ff" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.14" y="20.372" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.14" y="20.372">6</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/54-2.svg b/htdocs/public/symbols/svgicons/54-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/54-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/55-1.svg b/htdocs/public/symbols/svgicons/55-1.svg deleted file mode 100755 index 57a21ce..0000000 --- a/htdocs/public/symbols/svgicons/55-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#ff00ff" stroke="#ff00ff" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.14" y="20.372" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.14" y="20.372">7</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/55-2.svg b/htdocs/public/symbols/svgicons/55-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/55-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/56-1.svg b/htdocs/public/symbols/svgicons/56-1.svg deleted file mode 100755 index e84f620..0000000 --- a/htdocs/public/symbols/svgicons/56-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#0000ff" stroke="#0000ff" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.14" y="20.372" id="text6841" sodipodi:linespacing="0%" fill="#ffffff" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.14" y="20.372">8</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/56-2.svg b/htdocs/public/symbols/svgicons/56-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/56-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/57-1.svg b/htdocs/public/symbols/svgicons/57-1.svg deleted file mode 100755 index aa1d4ea..0000000 --- a/htdocs/public/symbols/svgicons/57-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata6326"/> - <g inkscape:groupmode="layer" id="layer4" inkscape:label="Lager"> - <rect id="rect6331" width="23.551" height="23.552" x="0.224" y="0.224" fill="#ffffff" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.449" rx="5.885"/> - <text x="12.14" y="20.372" id="text6841" sodipodi:linespacing="0%" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="23"><tspan sodipodi:role="line" id="tspan6843" x="12.14" y="20.372">9</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/57-2.svg b/htdocs/public/symbols/svgicons/57-2.svg deleted file mode 100755 index 804c3f8..0000000 --- a/htdocs/public/symbols/svgicons/57-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="-0.258 -0.548 24.000001 24"> - <metadata id="metadata7316"/> - <path inkscape:connector-curvature="0" id="path7310" d="m 11.279486,6.517982 c 0,0.315832 -0.249759,0.561627 -0.567706,0.561627 H 4.7712145 c -0.320062,0 -0.567707,-0.245795 -0.567707,-0.561627 V 1.508528 c 0,-0.315833 0.247909,-0.561628 0.567707,-0.561628 H 10.71178 c 0.317947,0 0.567706,0.245795 0.567706,0.561628 v 5.009454 z m 6.925331,0.639859 C 17.453161,6.992656 17.180672,6.60652 17.180672,6.251308 V 4.956789 c 0,0 0.499783,0.111533 0.619509,0.142455 0.24368,0.06396 0.398557,0.437673 0.404636,0.764078 0.0082,0.32614 0,1.294519 0,1.294519 z m 1.513355,7.8649 c 0,-0.01242 -0.208529,-1.590001 -0.208529,-1.590001 V 6.148232 c 0,-0.780464 -0.256102,-1.414508 -0.784693,-1.947063 L 15.35122,0.843825 c -0.233373,0 -0.87746,0.642238 -0.87746,0.642238 0,0.233372 1.674575,1.895526 1.674575,1.895526 l -0.04969,2.826638 c 0,1.00353 0.815616,1.817031 1.82311,1.817031 l 0.452209,0.0061 -0.160956,5.401668 0.22518,1.852181 1.013837,5.465628 c 0.03727,0.887768 -0.774386,1.416359 -1.414509,1.416359 -0.59255,0 -1.280247,-0.489475 -1.280247,-1.121141 l 0.01242,-9.578592 c 0,-1.164485 -0.945649,-2.110134 -2.110134,-2.110134 0,0 -2.025559,0 -2.035867,0 0.142455,-0.0082 0.148534,-6.272785 0.148534,-7.602719 0,-0.156992 0,-0.245795 0,-0.245795 0,-1.133563 -0.925033,-2.056482 -2.060711,-2.056482 H 4.7712105 c -1.135678,0 -2.060711,0.922919 -2.060711,2.056482 v 21.711333 l 10.0617225,0.167299 0.01031,-12.684062 h 1.899755 c 0.435558,0 0.790771,0.355213 0.790771,0.790772 v 9.551898 c 0,1.282361 1.197522,2.405616 2.564458,2.405616 1.290554,0 2.735985,-1.026259 2.735985,-2.405616 -0.02273,-0.318212 -1.055331,-6.023291 -1.055331,-6.023291 z" fill="#000080"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/58-1.svg b/htdocs/public/symbols/svgicons/58-1.svg deleted file mode 100755 index d6a9fec..0000000 --- a/htdocs/public/symbols/svgicons/58-1.svg +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" height="24" width="24" version="1.1"> - <metadata id="metadata3"/> - <defs id="defs3"> - <linearGradient id="linearGradient19763"> - <stop id="stop19764" stop-opacity="0.741"/> - <stop id="stop19765" offset="1" stop-color="#ffffff" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient29186"> - <stop id="stop29187" stop-color="#ffffff"/> - <stop id="stop29188" offset="1" stop-color="#ffffff" stop-opacity="0"/> - </linearGradient> - <linearGradient gradientTransform="matrix(-0.345461,-1.103135,0.825546,-0.25853,-265.0855,1483.115)" gradientUnits="userSpaceOnUse" id="linearGradient30536" inkscape:collect="always" x1="78.65" x2="122.42" xlink:href="#linearGradient29186" y1="743.14" y2="713.55"/> - <linearGradient gradientTransform="matrix(1.100206,-1.253837,0.450605,0.395393,-311.0192,864.0529)" gradientUnits="userSpaceOnUse" id="linearGradient30535" inkscape:collect="always" x1="82.56" x2="94.62" xlink:href="#linearGradient29186" y1="1126.68" y2="1102.49"/> - <linearGradient id="linearGradient17250"> - <stop id="stop17251" stop-color="#dc0000"/> - <stop id="stop17252" offset="1" stop-color="#ffb200"/> - </linearGradient> - <linearGradient id="linearGradient26051"> - <stop id="stop26052" stop-color="#ffffff" stop-opacity="0.449"/> - <stop id="stop26053" offset="1" stop-color="#ffffff" stop-opacity="0"/> - </linearGradient> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient29186" id="linearGradient4463" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.04580023,0,0,0.07975769,-1.6635904,480.27262)" x1="198.88" y1="246.21" x2="342.54" y2="403.09"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient4466" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.03648159,0,0,0.10013055,-3.162027,482.08065)" x1="349.43" x2="390.32"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient4470" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.0533835,0,0,0.09296341,72.273472,478.53617)" x1="-1131.03" y1="404.58" x2="-1102.73" y2="306.76"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient4473" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.04039753,0,0,0.09042433,-3.162027,481.96995)" x1="533.78" x2="572.41"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient29186" id="linearGradient4476" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.05330894,0,0,0.06852355,-1.5727754,480.53091)" x1="501.4" y1="384.4" x2="317.14" y2="485.78"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient4479" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.06213546,0,0,0.07986921,72.273472,478.53617)" x1="-916.9" y1="438.47" x2="-857.96" y2="362.16"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient29186" id="linearGradient4498" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.05403741,0,0,0.06759984,-1.9814393,481.34268)" x1="9.655" y1="256.78" x2="323.1" y2="500.8"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient4501" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.04069374,0,0,0.08976607,-3.162027,482.08065)" x1="468.41" x2="502.45"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient29186" id="linearGradient4504" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.0403567,0,0,0.09051581,-1.4250417,481.04359)" x1="110.45" y1="244.05" x2="239.46" y2="376.9"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient4512" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.04703865,0,0,0.10550269,72.273472,478.53617)" x1="-1308.2" y1="330.2" x2="-1335.04" y2="272.82"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient4515" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.06298454,0,0,0.07879257,72.273472,478.53617)" x1="-1006.61" y1="448.68" x2="-953.88" y2="299.89"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient3037" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.0547431,0,0,0.13541198,-47.754626,481.62834)" x1="349.43" x2="390.32"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient3041" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.08010556,0,0,0.12571947,65.441451,476.83495)" x1="-1131.03" y1="404.58" x2="-1102.73" y2="306.76"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient3044" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.06061923,0,0,0.12228573,-47.754626,481.47863)" x1="533.78" x2="572.41"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient3050" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.09323846,0,0,0.10801147,65.441451,476.83495)" x1="-916.9" y1="438.47" x2="-857.96" y2="362.16"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient3054" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.06106371,0,0,0.12139553,-47.754626,481.62834)" x1="468.41" x2="502.45"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient3058" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.07058468,0,0,0.14267702,65.441451,476.83495)" x1="-1308.2" y1="330.2" x2="-1335.04" y2="272.82"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient3064" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.09451257,0,0,0.10655547,100.83342,471.1867)" x1="-1006.61" y1="448.68" x2="-953.88" y2="299.89"/> - <linearGradient y2="299.89" x2="-953.88" y1="448.68" x1="-1006.61" gradientTransform="matrix(0.09451257,0,0,0.10655547,65.441451,476.83495)" gradientUnits="userSpaceOnUse" id="linearGradient3129" xlink:href="#linearGradient17250" inkscape:collect="always"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient3037-6" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.0547431,0,0,0.13541198,-74.716956,479.69588)" x1="349.43" x2="390.32"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient3041-8" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.08010556,0,0,0.12571947,38.479121,474.90249)" x1="-1131.03" y1="404.58" x2="-1102.73" y2="306.76"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient3044-9" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.06061923,0,0,0.12228573,-74.716956,479.54617)" x1="533.78" x2="572.41"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient3050-1" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.09323846,0,0,0.10801147,38.479121,474.90249)" x1="-916.9" y1="438.47" x2="-857.96" y2="362.16"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient26051" id="linearGradient3054-3" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.06106371,0,0,0.12139553,-74.716956,479.69588)" x1="468.41" x2="502.45"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient17250" id="linearGradient3058-8" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.07058468,0,0,0.14267702,38.479121,474.90249)" x1="-1308.2" y1="330.2" x2="-1335.04" y2="272.82"/> - <linearGradient y2="299.89" x2="-953.88" y1="448.68" x1="-1006.61" gradientTransform="matrix(0.09451257,0,0,0.10655547,38.479121,474.90249)" gradientUnits="userSpaceOnUse" id="linearGradient3129-0" xlink:href="#linearGradient17250" inkscape:collect="always"/> - </defs> - <g id="layer1" inkscape:groupmode="layer" inkscape:label="Layer 1" transform="translate(0,-497.11258)"> - <g id="g4065" transform="translate(62.335816,-3.7180513)"> - <path d="m -61.143517,517.67383 c 1.946549,4.21283 5.026163,6.4469 10.546224,6.70223 6.07207,1.42555 11.708343,-1.48938 10.110431,-6.06392 -0.726325,0.97874 -1.19117,1.51066 -2.44045,1.78726 0.493901,-2.53196 -2.672871,-2.95749 -1.133064,-5.68094 1.074961,-1.68087 1.714124,-3.74474 -0.174318,-5.42561 -0.784429,1.91492 -1.743176,3.19154 -3.660672,4.59581 0.20337,-2.34046 1.88844,-4.23411 0.871588,-6.4469 0.14527,-1.48939 -3.195826,-1.44683 -3.224879,-6.0001 -2.120865,1.95748 -3.021507,3.46814 -2.701925,6.44691 -0.784431,2.40429 -2.701924,3.27666 -2.353289,5.87243 -0.290529,-1.44683 -0.4939,-2.70216 -0.08716,-3.76601 -0.232423,-1.31916 -0.464847,-2.44685 -2.26613,-3.38303 0.552007,1.63832 1.191172,4.10645 -0.697271,4.72347 -0.522953,0.78725 -3.13772,3.48942 -0.261477,7.72353 -0.842535,-0.36172 -1.685073,-0.46811 -2.527608,-1.08513 z" id="path15991-0" inkscape:connector-curvature="0" stroke-opacity="0.504" fill="url(#linearGradient3129-0)" fill-rule="evenodd" stroke="#ffff00" stroke-width="0.186"/> - <path d="m -51.207404,523.73776 c -4.619421,-3.57453 -5.403851,-6.06393 -2.35329,-8.42567 3.428249,-4.46815 2.585713,-7.27671 0.08715,-9.9576 2.35329,5.93627 -2.789085,9.76611 -4.445103,11.48953 -0.987799,-2.23407 -0.145265,-3.19152 1.220225,-5.93625 -2.672873,2.12769 -4.299839,4.7022 -3.312038,7.14905 1.801284,3.6809 6.043015,4.48942 8.803047,5.68094 z" id="path15990-3" inkscape:connector-curvature="0" stroke-opacity="0.504" fill="url(#linearGradient3058-8)" fill-rule="evenodd" stroke="#ffff00" stroke-width="0.186"/> - <path d="m -45.601295,510.23227 c -0.619226,-1.31895 -0.113908,-1.6014 0.428512,-2.17763 0.559547,-0.15959 0.388044,-0.71607 0.693378,-1.95535 0.462312,1.38324 1.703436,2.01216 -1.12189,4.13298 z" id="path15994-8" inkscape:connector-curvature="0" stroke-opacity="0.504" fill="#ffd700" fill-rule="evenodd" stroke="#ffff00" stroke-width="0.186"/> - <path d="m -44.905453,505.88237 c -0.18828,0.58799 -0.103164,1.236 -0.452738,1.78444 -0.819061,0.45825 -1.17621,1.30976 -0.817056,2.03238 0.111507,0.60563 0.370172,0.71013 0.828717,0.15707 0.979108,-0.73786 1.895208,-1.79505 1.337706,-2.85229 -0.251547,-0.53926 -0.471814,-1.08672 -0.752006,-1.61894 -0.04821,0.16578 -0.09641,0.33155 -0.144625,0.49734 z" id="path28563-9" inkscape:connector-curvature="0" fill="url(#linearGradient3054-3)" fill-rule="evenodd"/> - <path d="m -41.619927,518.31214 c 1.597912,-1.12767 1.27833,-1.61705 1.133065,-2.42557 -0.464848,-0.38299 0.116219,-0.89363 0.69727,-2.29791 -1.481701,1.25534 -3.224879,1.42556 -1.830335,4.72348 z" id="path15993-42" inkscape:connector-curvature="0" stroke-opacity="0.504" fill="#ffd700" fill-rule="evenodd" stroke="#ffff00" stroke-width="0.186"/> - <path d="m -49.115592,523.73776 c 1.801283,-0.7447 2.295183,-3.08517 2.527609,-5.68094 0.435793,-2.51068 1.307383,-5.02136 7.059868,-5.42562 -2.353291,1.38301 -4.270784,3.08515 -3.399197,6.25542 -0.232423,4.61709 -4.909949,4.44687 -6.18828,4.85114 z" id="path15992-7" inkscape:connector-curvature="0" stroke-opacity="0.504" fill="url(#linearGradient3050-1)" fill-rule="evenodd" stroke="#ffff00" stroke-width="0.186"/> - <path d="m -40.161143,513.13986 c -0.988473,0.76628 -2.422497,1.48341 -2.3879,2.66159 -0.07306,0.84412 0.337391,1.64894 0.59267,2.45919 0.858055,-0.59964 1.833394,-1.38076 1.519084,-2.32643 -0.0023,-0.41668 -0.431066,-0.7812 -0.09442,-1.1872 0.323344,-0.6429 0.661588,-1.28263 0.886172,-1.95023 -0.171872,0.11441 -0.343745,0.22872 -0.515618,0.34308 z" id="path28562-2" inkscape:connector-curvature="0" fill="url(#linearGradient3044-9)" fill-rule="evenodd"/> - <path d="m -52.25331,522.01432 c -0.232425,-2.04258 -0.552007,-3.51069 2.963402,-5.36178 5.955855,-3.0426 3.021507,-4.80859 -0.697272,-7.97884 1.104013,3.14898 -0.668218,5.65965 -2.178973,7.34053 -0.9878,1.04257 -4.416048,3.17026 -0.08715,6.00009 z" id="path15989-6" inkscape:connector-curvature="0" stroke-opacity="0.504" fill="url(#linearGradient3041-8)" fill-rule="evenodd" stroke="#ffff00" stroke-width="0.186"/> - <path d="m -54.525194,507.0314 c 1.60857,-1.35648 1.195445,-1.91484 0.932717,-2.84879 -0.558868,-0.43055 0.0132,-1.04054 0.471015,-2.68762 -1.464775,1.50117 -3.355122,1.75087 -1.403732,5.53641 z" id="path15995-9" inkscape:connector-curvature="0" stroke-opacity="0.504" fill="#ffd700" fill-rule="evenodd" stroke="#ffff00" stroke-width="0.186"/> - <path d="m -53.507465,501.20597 c -0.936634,0.897 -2.356998,1.72471 -2.282552,2.96793 -0.01008,1.0337 0.546212,1.9981 0.962067,2.96794 0.849161,-0.70989 1.752609,-1.61138 1.37467,-2.61168 0.0025,-0.39578 -0.375973,-0.70305 -0.386884,-1.07686 0.206939,-0.88235 0.635105,-1.73465 0.8043,-2.62495 -0.157201,0.1259 -0.314402,0.25174 -0.471601,0.37762 z" id="path28564-1" inkscape:connector-curvature="0" fill="url(#linearGradient3037-6)" fill-rule="evenodd"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/58-2.svg b/htdocs/public/symbols/svgicons/58-2.svg deleted file mode 100755 index d0f70a0..0000000 --- a/htdocs/public/symbols/svgicons/58-2.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3063"/> - <path d="m 1.513309,9.830772 20.973382,0 -10.506219,-9.2530367 z" id="path3073" inkscape:connector-curvature="0" fill="#ffffff" stroke="#000000" stroke-linejoin="round" stroke-width="1.155"/> - <path d="m 1.513309,14.169229 20.973382,0 -10.506219,9.253036 z" id="path3073-7" inkscape:connector-curvature="0" fill="#ffffff" stroke="#000000" stroke-linejoin="round" stroke-width="1.155"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/59-1.svg b/htdocs/public/symbols/svgicons/59-1.svg deleted file mode 100755 index 8704487..0000000 --- a/htdocs/public/symbols/svgicons/59-1.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24.000001 24" version="1.1" width="24" height="24"> - <g id="g3293" transform="translate(-0.84289,-88.891844)"> - <rect id="rect4140" width="23.04" height="23.04" x="1.322" y="89.37" rx="2.874" fill="#cccccc" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.958"/> - <path inkscape:connector-curvature="0" id="path2400" d="m 11.282037,91.475632 -0.388575,0.310588 1.631833,2.500758 -10.2781321,16.021082 7.6433279,0 0,-0.22604 0,-0.0495 0,-5.06481 5.9054792,0 0,5.06481 0,0.0495 0,0.22604 7.642649,0 -10.277453,-16.028089 1.539832,-2.465269 -0.381342,-0.311041 -1.476313,2.387735 -1.561306,-2.415764 z" fill-rule="evenodd"/> - </g> - <metadata id="metadata7"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/59-2.svg b/htdocs/public/symbols/svgicons/59-2.svg deleted file mode 100755 index 1bbaea5..0000000 --- a/htdocs/public/symbols/svgicons/59-2.svg +++ /dev/null @@ -1,16 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24" viewBox="0 0 24 23.999999" enable-background="new 0 0 100 73.649"> - <metadata id="metadata4391"/> - <rect id="rect4140" width="23.04" height="23.04" x="0.479" y="0.479" rx="2.874" fill="#cccccc" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.958"/> - <g id="g4145" transform="matrix(0.85275463,0,0,0.85275463,1.7669445,1.7669443)"> - <g id="g4139"> - <g id="g4375" transform="matrix(0.24000326,0,0,0.24000326,-1.62e-4,3.161999)" stroke-width="1.25"> - <rect x="19.818" width="61.23" height="7" id="rect4377"/> - <path d="M 50.438,3.489" id="path4379" inkscape:connector-curvature="0"/> - </g> - <polygon points="24.877,73.649 34.42,41.002 66.563,41.002 76.106,73.649 86.308,73.649 76.765,41.002 100,41.002 100,34.648 74.907,34.648 67.677,9.903 57.463,9.903 64.705,34.648 36.279,34.648 43.508,9.903 33.305,9.903 26.076,34.648 0,34.648 0,41.002 24.218,41.002 14.674,73.649 " id="polygon4381" transform="matrix(0.24000326,0,0,0.24000326,-1.62e-4,3.161999)" stroke-width="1.25"/> - </g> - <rect id="rect4383" height="1.338" width="4.44" y="8.946" stroke-width="0.3"/> - <rect id="rect4385" height="1.338" width="4.443" y="8.946" x="19.557" stroke-width="0.3"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/59-83.svg b/htdocs/public/symbols/svgicons/59-83.svg deleted file mode 100755 index ab9312f..0000000 --- a/htdocs/public/symbols/svgicons/59-83.svg +++ /dev/null @@ -1,77 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - id="svg869" - width="24" - height="24" - viewBox="0 0 24.000001 24.000001" - sodipodi:docname="59-83.svg" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> - <metadata - id="metadata875"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <defs - id="defs873" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1865" - inkscape:window-height="1025" - id="namedview871" - showgrid="false" - inkscape:zoom="8" - inkscape:cx="1.2886852" - inkscape:cy="22.876366" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="svg869" /> - <rect - style="fill:#fd0134;fill-opacity:1;stroke:#fd0134;stroke-width:4.81033421;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect887" - width="19.189665" - height="19.189665" - x="2.4051681" - y="2.4051681" /> - <path - style="fill:#60fe61;fill-opacity:1;stroke:#60fe61;stroke-width:1.06600618;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 4.3925127,12.449221 1.7774363,20.348234 22.222581,20.321454 12.624061,3.6665908 11.821709,4.4431037 9.7415332,1.7119202 5.4028832,12.984747 Z" - id="path881" - inkscape:connector-curvature="0" /> - <text - xml:space="preserve" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.02321291px;line-height:1.25;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#4d4d4d;fill-opacity:1;stroke:none;stroke-width:0.5646801" - x="3.2019567" - y="18.966843" - id="text909" - transform="scale(0.95198711,1.0504344)"><tspan - sodipodi:role="line" - id="tspan907" - x="3.2019567" - y="18.966843" - style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:6.02321291px;font-family:sans-serif;-inkscape-font-specification:'sans-serif, Bold';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#4d4d4d;fill-opacity:1;stroke-width:0.5646801">SOTA</tspan></text> -</svg> diff --git a/htdocs/public/symbols/svgicons/60-1.svg b/htdocs/public/symbols/svgicons/60-1.svg deleted file mode 100755 index 0f4f0a5..0000000 --- a/htdocs/public/symbols/svgicons/60-1.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24"> - <metadata id="metadata5140"/> - <g id="layer1" transform="matrix(-0.03993015,0,0,0.03993015,25.603209,2.0469741)"> - <path d="m 438.12826,429.16927 c -62.79839,-3.16426 -155.20224,7.89495 -186.20451,-31.3992 -14.20607,-74.76934 -54.80076,-112.40662 -124.50145,-113.18313 -42.795768,-82.64828 34.88862,-95.59972 87.99076,-116.8342 3.3733,38.41563 1.30629,78.34741 62.06817,100.7695 2.43911,-11.88771 7.42309,-21.59411 23.36684,-21.90641 l 89.81629,0.36511 63.52859,-49.65454 c 10.2664,16.32783 30.63852,37.24918 30.66898,48.92432 l 96.38822,0.36511 c 7.01925,5.97861 12.97283,21.84281 -1.09532,37.60601 -57.74129,-1.75276 -162.68681,4.55533 -142.02657,144.94743 z" id="path4749" inkscape:connector-curvature="0" fill-rule="evenodd"/> - <path d="m 281.45311,113.13794 0.25817,-34.043529 38.12235,-5.174139 0,-27.017909 -38.89686,6.464987 c 2.8605,-24.34011 18.51028,-41.939346 52.98479,-47.0361453 21.6463,1.5255947 44.34631,2.6992313 57.25914,43.1895493 3.78428,16.060343 1.42553,32.309362 -8.54869,46.305931 -32.28759,-17.699463 -56.45288,-5.617153 -78.49798,14.239165 l -22.68092,3.07209 z" id="path5636" inkscape:connector-curvature="0" fill-rule="evenodd"/> - <path d="m 215.04795,186.7383 113.54824,-85.80012 c 15.26233,-8.1407 32.0941,-9.689721 52.21028,2.55575 17.19617,15.62165 46.2444,58.89814 69.37031,88.35586 l -64.62391,48.37667 -62.06818,-86.34778 -98.21375,75.21202 c -7.55995,-13.19498 -9.32895,-28.68129 -10.22299,-42.3524 z" id="path6523" inkscape:connector-curvature="0" fill-rule="evenodd"/> - <path d="m 241.70075,414.19989 a 83.609474,83.609474 0 1 1 -167.218946,0 83.609474,83.609474 0 1 1 167.218946,0 z" transform="matrix(0.974466,0,0,0.974466,-15.37667,-10.08382)" id="path7410" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="35"/> - <path d="m 241.70075,414.19989 a 83.609474,83.609474 0 1 1 -167.218946,0 83.609474,83.609474 0 1 1 167.218946,0 z" transform="matrix(0.974466,0,0,0.974466,388.6178,-9.97323)" id="path8297" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="35"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/60-2.svg b/htdocs/public/symbols/svgicons/60-2.svg deleted file mode 100755 index df54d2e..0000000 --- a/htdocs/public/symbols/svgicons/60-2.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4230"/> - <path sodipodi:type="star" id="path4774" sodipodi:sides="3" sodipodi:cx="11.694916" sodipodi:cy="5.4915252" sodipodi:r1="5.8528838" sodipodi:r2="2.9264417" sodipodi:arg1="2.0943951" sodipodi:arg2="3.1415927" inkscape:flatsided="true" inkscape:rounded="0" inkscape:randomized="0" d="m 8.7684739,10.560271 0,-10.13749189 L 17.5478,5.4915252 Z" inkscape:transform-center-x="-1.5613875" transform="matrix(1.0670894,0,0,0.99791178,-0.99063412,0.06158974)" fill="#ce0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.969"/> - <path d="m 8.3389831,23.451316 c 0,-22.94192958 0,-22.94192958 0,-22.94192958" id="path4776" inkscape:connector-curvature="0" fill="none" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="0.997"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/61-1.svg b/htdocs/public/symbols/svgicons/61-1.svg deleted file mode 100755 index ee8dffc..0000000 --- a/htdocs/public/symbols/svgicons/61-1.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24"> - <metadata id="metadata4204"/> - <path d="m 22.510718,21.63724 1.46589,-0.0155 0.0193,-0.34619 c 0.0216,-0.38726 -0.0381,-0.48381 -0.26398,-0.42712 -0.21942,0.0551 -3.20443,0.0481 -3.25999,-0.007 -0.0274,-0.0274 0.0996,-0.11729 0.28817,-0.20385 0.41002,-0.1882 0.74555,-0.55019 0.89456,-0.96509 l 0.10746,-0.29923 0.68084,-0.0161 c 0.45689,-0.0108 0.69533,-0.0389 0.72488,-0.0855 0.0242,-0.0381 0.0444,-0.39614 0.0449,-0.79563 l 8.7e-4,-0.72632 -0.96592,0 -0.96593,0 -0.23823,-0.40792 c -0.34156,-0.58483 -0.34121,-0.58583 0.21819,-0.60554 0.54303,-0.0191 0.53728,-0.0137 0.70665,-0.66605 0.20711,-0.79771 0.19344,-1.93002 -0.0311,-2.57945 l -0.0736,-0.21295 -2.09649,-0.057 -0.0285,-0.65512 c -0.0264,-0.60729 -0.0368,-0.65518 -0.14242,-0.65594 -0.10492,-7.5e-4 -0.11242,-0.0326 -0.0948,-0.40302 0.0225,-0.47303 -0.0489,-0.78033 -0.24221,-1.04233 -0.13324,-0.18059 -0.13855,-0.21823 -0.10824,-0.7675503 0.0367,-0.66458 -0.012,-0.89871 -0.27949,-1.34473 -0.35742,-0.59596 -0.9847,-0.93219 -1.73944,-0.93235 l -0.41337,-1.1e-4 -0.0625,-0.23229 c -0.13802,-0.51256 -0.48689,-0.95659 -0.93365,-1.18831 -0.34616,-0.17954 -1.04631,-0.20268 -1.45129,-0.048 l -0.31195,0.11918 -0.26381,-0.25984 -0.26381,-0.25984 0.0279,-0.53383 c 0.047,-0.8981 -0.17119,-1.46326 -0.79028,-2.04728 -0.46814,-0.44162 -0.85054,-0.60511 -1.50591,-0.64382 -0.83481,-0.0493 -1.5062997,0.21659 -2.0885697,0.82704 -0.54262,0.56888 -0.74733,1.11194 -0.74429,1.97452 l 0.002,0.57094 -0.22946,0.25785 c -0.1262,0.14181 -0.29596,0.39884 -0.37725,0.57116 -0.19855,0.42093 -0.21119,1.19615 -0.0261,1.60205 0.16421,0.36015 0.49589,0.71251 0.84137,0.89384 0.25293,0.13274 0.3551,0.15149 0.82964,0.15223 0.47916,7.5e-4 0.57864,-0.0175 0.8679997,-0.15964 0.32103,-0.15765 0.44224,-0.16182 0.44224,-0.0153 0,0.14395 0.40534,0.60205 0.67076,0.75807 0.23728,0.13948 0.32659,0.15824 0.75341,0.15824 0.48164,0 0.61286,-0.0369 0.97211,-0.27338 0.14053,-0.0925 0.15351,-0.0907 0.34031,0.0471 0.27709,0.20444 0.58857,0.2731 1.05171,0.23184 l 0.39877,-0.0355 0.10565,0.2578503 c 0.26986,0.65862 1.15817,0.90259 1.75054,0.48079 0.0854,-0.0608 0.18111,-0.11054 0.21273,-0.11054 0.0668,0 1.03577,1.22587 1.03577,1.31042 0,0.0538 -0.0839,0.0808 -0.19113,0.0615 -0.1589,-0.0285 -0.20763,0.13956 -0.20763,0.7161 0,0.42441 -0.0203,0.59936 -0.0712,0.61545 -0.10983,0.0347 -3.08059,0.079 -3.16497,0.0473 -0.041,-0.0154 -0.13393,-0.1624 -0.20655,-0.32661 -0.21226,-0.47995 -0.63416,-0.68266 -1.19992,-0.57652 -0.2599,0.0488 -0.62844,0.37649 -0.71363,0.63461 -0.0356,0.10784 -0.11224,0.22151 -0.17033,0.2526 -0.1525,0.0816 -3.9111197,0.076 -3.9617497,-0.006 -0.0212,-0.0343 -0.0343,-0.32945 -0.0291,-0.65585 0.007,-0.4411 -0.01,-0.60068 -0.0645,-0.62163 l -6.04654,0.0581 -0.0162,0.58391 -0.0162,0.58391 1.07978,0 c 0.12007,0 0.23113,0.0539 0.34418,0.16691 l 0.1669,0.1669 -0.0322,0.81578 c -0.0177,0.44867 -0.0529,1.39988 -0.0784,2.11379 -0.0254,0.71391 -0.0645,1.31633 -0.0868,1.33872 -0.0223,0.0224 -0.58324,0.0535 -1.24651,0.0692 l -1.20593995,0.0285 0,1.5338 1.28695995,-0.0171 c 1.13724,-0.0151 1.29795,-0.006 1.38145,0.0774 0.052,0.052 0.0945,0.13213 0.0945,0.17814 0,0.29978 0.49195,0.88045 0.89818,1.06014 0.14938,0.0661 0.23231,0.13298 0.20218,0.16311 -0.0284,0.0283 -1.30518,0.0577 -2.86864,0.0659 l -1.81477995,0.0148 -0.017,0.35604 L -3.165134e-5,21.68015 9.5530283,21.66655 c 5.8057197,-0.007 11.6366697,-0.0206 12.9576697,-0.0291 z m -12.03256,-0.76773 c -0.0228,-0.0228 0.007,-0.0579 0.0664,-0.0781 0.53186,-0.18093 1.03368,-0.62708 1.16539,-1.03609 0.1147,-0.35619 0.10889,-0.35407 0.97298,-0.35407 l 0.79178,0 0.0618,0.15666 c 0.16732,0.4244 0.23202,0.53921 0.42295,0.75055 0.1136,0.12575 0.34907,0.29605 0.52326,0.37846 0.17419,0.0824 0.28947,0.1665 0.25617,0.18689 -0.0836,0.0512 -4.20925,0.047 -4.26067,-0.004 z m -4.8938197,0.0162 c -0.0182,-0.0295 0.0892,-0.10782 0.23875,-0.17396 0.14957,-0.0661 0.34588,-0.18937 0.43626,-0.27385 0.20979,-0.19612 0.4908,-0.63059 0.4908,-0.75884 0,-0.23615 0.14037,-0.27775 0.93705,-0.27775 0.82655,0 0.82501,-5.8e-4 0.93845,0.3518 0.12063,0.37469 0.42651,0.70687 0.83697,0.90894 0.30209,0.14872 0.35601,0.19403 0.27078,0.22753 -0.16079,0.0632 -4.10988,0.0595 -4.14906,-0.004 z m 9.9387197,-0.0525 c 0,-0.0271 0.11507,-0.0932 0.25572,-0.14689 0.33234,-0.12692 0.71099,-0.49929 0.87225,-0.85777 0.0705,-0.15666 0.14741,-0.31996 0.17098,-0.36288 0.0332,-0.0604 0.21498,-0.077 0.80515,-0.0736 0.41927,0.002 0.77964,0.0248 0.80083,0.0496 0.0212,0.0248 0.0819,0.163 0.13482,0.3071 0.13505,0.36745 0.44132,0.70164 0.80698,0.88054 0.17152,0.0839 0.31185,0.1752 0.31185,0.20286 0,0.0281 -0.91537,0.0503 -2.07929,0.0503 -1.14361,0 -2.07929,-0.0222 -2.07929,-0.0492 z" id="path2371" inkscape:connector-curvature="0"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/61-2.svg b/htdocs/public/symbols/svgicons/61-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/61-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/62-1.svg b/htdocs/public/symbols/svgicons/62-1.svg deleted file mode 100755 index 52f5fc3..0000000 --- a/htdocs/public/symbols/svgicons/62-1.svg +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg3445" - inkscape:version="0.91 r13725" - sodipodi:docname="62-1.svg"> - <defs - id="defs3458" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview3456" - showgrid="false" - inkscape:zoom="22.553862" - inkscape:cx="7.665445" - inkscape:cy="12.118826" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg3445" /> - <metadata - id="metadata4277"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <path - style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - d="M 4.9215517,6.1316637 12.725093,5.9543105 17.690983,10.521156 3.5914026,9.6343896 Z" - id="path4754" - inkscape:connector-curvature="0" /> - <path - d="m 23.726107,14.727561 c 0.150421,-0.941042 -0.0056,-1.022202 -0.62861,-2.409677 C 22.928341,11.941172 22.48121,11.711872 22.119643,11.514631 20.229872,10.483816 18.231174,9.844738 17.924536,9.8383252 16.963911,8.8816782 15.391324,7.0824936 13.28079,5.6432931 12.887083,5.3748215 11.498678,5.333218 11.498678,5.333218 c 0,0 -3.6458442,-0.4365462 -6.3620422,0.2095624 C 4.9023115,5.5984832 4.739452,5.579053 4.5429462,5.6824629 4.5109246,5.6993053 3.9463606,6.2825644 3.914337,6.3459932 3.8830464,6.4079542 3.6981688,6.6097907 3.6349722,6.6952379 3.2158089,7.2618097 2.7020042,7.8211575 2.3427939,8.4413853 2.1850705,8.713797 2.1119849,8.973036 1.9586281,9.2446365 1.8110258,9.5060769 1.274005,9.7072179 1.1903351,10.187532 c -0.04018,0.23046 -0.30227278,0.144318 -0.31432481,0.488927 0.11971043,0.03696 0.13415861,0.0807 0.27936381,0.104764 -0.20998609,0.76358 -0.33885259,2.126644 -0.34997815,2.270266 2.7162e-4,-7.8e-5 5.0275e-4,-1.93e-4 7.7338e-4,-2.71e-4 -0.001778,0.01742 -0.001975,0.01645 -7.7338e-4,2.71e-4 -0.65703938,0.206279 -0.59604534,1.386859 -0.65742557,1.172931 0.078997,0.314208 0.29663197,0.723481 0.3787956,1.061873 0.0703743,0.28991 -0.16332375,0.413561 -0.17464191,0.698451 0.0509954,0.02978 0.10011821,0.342638 0.13968291,0.384126 0.16610513,0.457213 1.46593122,0.871007 1.46593122,0.871007 l 0.1287895,1.55e-4 C 1.9758558,16.9118 1.9158257,16.560199 1.9158257,16.194614 c 0,-1.806061 1.4640793,-3.270137 3.2701393,-3.270137 1.806059,0 3.2701383,1.464076 3.2701383,3.270137 0,0.368444 -0.061001,0.722671 -0.1733292,1.053144 l 6.6407479,0.02127 C 14.768079,16.88803 14.682169,16.4713 14.682169,16.034366 c 0,-1.80602 1.464077,-3.270099 3.270099,-3.270099 1.806061,0 3.270139,1.464079 3.270139,3.270099 0,0.439794 -0.08704,0.859149 -0.244445,1.242156 l 0.26855,3.47e-4 c 0,0 2.007472,0.186616 2.270032,-0.454006 0.107774,-0.120252 0.147717,-0.728581 0.139682,-1.082578 0.0039,-0.364155 0.07741,-0.29389 0.174642,-0.523887 0.09445,-0.223353 -0.139567,-0.386754 -0.104761,-0.488837 z M 8.9525711,9.5012486 C 8.8885181,9.546138 8.8927751,9.5699764 8.8128506,9.6060454 8.5584788,9.7988041 8.4759197,9.5361679 5.1017144,9.5361679 5.15912,9.6180629 4.7067332,9.547408 5.0667889,8.7678372 5.5562179,7.7082043 6.302647,6.7440635 6.2615445,6.7291526 7.2087364,6.4470299 7.5095409,6.357357 8.9526047,6.3942863 8.923329,7.232459 8.9352605,8.1741482 8.9525711,9.5012486 Z m 1.4893799,0.232315 c -0.144666,-2.7488012 -0.274419,-2.8388454 0.03493,-3.2827313 2.779918,0 1.837221,0.00942 1.837221,0.00942 1.271994,0.026081 3.482374,2.7540307 4.141432,3.6575177 -1.85567,-0.1400531 -2.978847,-0.2327805 -6.013583,-0.3842064 z" - id="path6-9" - inkscape:connector-curvature="0" - style="fill:#aa0000;stroke:none;stroke-width:0.29631296;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - sodipodi:nodetypes="ccccscccccccccccccccccccsssccssscccccccccccccccccc" /> - <path - style="fill:#666666;stroke:#000000;stroke-width:1.85782993;stroke-miterlimit:4;stroke-dasharray:none" - id="path3514-1-1" - sodipodi:type="arc" - sodipodi:cx="5.1689858" - sodipodi:cy="16.184412" - sodipodi:rx="1.8473057" - sodipodi:ry="1.8473057" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - d="M 3.3216802,16.184412 A 1.8473057,1.8473057 0 0 1 5.1685426,14.337106 1.8473057,1.8473057 0 0 1 7.0162913,16.183525 1.8473057,1.8473057 0 0 1 5.1703158,18.031717 1.8473057,1.8473057 0 0 1 3.321681,16.186185" - sodipodi:open="true" /> - <path - style="fill:#666666;stroke:#000000;stroke-width:1.85782993;stroke-miterlimit:4;stroke-dasharray:none" - id="path3514-1-1-1" - sodipodi:type="arc" - sodipodi:cx="17.957012" - sodipodi:cy="16.063444" - sodipodi:rx="1.8473057" - sodipodi:ry="1.8473057" - sodipodi:start="3.1415927" - sodipodi:end="3.1406327" - d="m 16.109707,16.063444 a 1.8473057,1.8473057 0 0 1 1.846862,-1.847305 1.8473057,1.8473057 0 0 1 1.847749,1.846419 1.8473057,1.8473057 0 0 1 -1.845976,1.848191 1.8473057,1.8473057 0 0 1 -1.848635,-1.845532" - sodipodi:open="true" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/62-2.svg b/htdocs/public/symbols/svgicons/62-2.svg deleted file mode 100755 index 91b345b..0000000 --- a/htdocs/public/symbols/svgicons/62-2.svg +++ /dev/null @@ -1,38 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" version="1.1" width="24" height="24"> - <defs id="defs4"> - <linearGradient id="linearGradient3759"> - <stop id="stop3761" stop-color="#1a1a1a"/> - <stop id="stop3763" stop-color="#f30000" stop-opacity="0" offset="1"/> - </linearGradient> - <linearGradient id="linearGradient4149" y2="834.68" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="848.16" gradientTransform="translate(8.3085,-2.6518)" y1="842.3" x1="871.33"/> - <linearGradient id="linearGradient4153" y2="533.5" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="812.14" gradientTransform="matrix(0.89332,0,0,0.89332,80.349,365.15)" y1="537.5" x1="879.9"/> - <linearGradient id="linearGradient4155" y2="531.91" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="815.82" gradientTransform="translate(27.625,296.49)" y1="537.5" x1="879.9"/> - <linearGradient id="linearGradient4185" y2="834.68" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="848.16" gradientTransform="matrix(1,0,0,-1,8.3085,1452)" y1="842.3" x1="871.33"/> - <linearGradient id="linearGradient4187" y2="528.42" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="876.14" gradientTransform="matrix(1,0,0,-1,21.438,1151.5)" y1="528.36" x1="887.9"/> - <linearGradient id="linearGradient4189" y2="531.91" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="815.82" gradientTransform="matrix(1,0,0,-1,27.625,1152.9)" y1="537.5" x1="879.9"/> - <linearGradient id="linearGradient4191" y2="535.37" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="883.76" gradientTransform="matrix(1,0,0,-1,21.438,1151.5)" y1="542.4" x1="897.22"/> - <linearGradient id="linearGradient4193" y2="501.08" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="835.99" gradientTransform="matrix(1,0,0,-1,21.438,1151.5)" y1="552.05" x1="880.71"/> - <linearGradient id="linearGradient4195" y2="529.61" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="805.29" gradientTransform="matrix(0.89332,0,0,-0.89332,94.156,1087.8)" y1="528.36" x1="887.9"/> - <linearGradient id="linearGradient4197" y2="533.5" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="812.14" gradientTransform="matrix(0.89332,0,0,-0.89332,80.349,1084.2)" y1="537.5" x1="879.9"/> - <linearGradient id="linearGradient4199" y2="867.68" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="205.59" gradientTransform="matrix(0.99043,-0.13799,-0.13799,-0.99043,146.05,1483.3)" y1="873.14" x1="229.7"/> - <linearGradient id="linearGradient4201" y2="872.65" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="216.56" gradientTransform="matrix(0.99043,-0.13799,-0.13799,-0.99043,156.31,1482)" y1="873.06" x1="238.83"/> - <linearGradient id="linearGradient4203" y2="528.42" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="876.14" gradientTransform="translate(21.438,297.91)" y1="528.36" x1="887.9"/> - <linearGradient id="linearGradient4205" y2="535.37" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="883.76" gradientTransform="translate(21.438,297.91)" y1="542.4" x1="897.22"/> - <linearGradient id="linearGradient4207" y2="501.08" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="835.99" gradientTransform="translate(21.438,297.91)" y1="552.05" x1="880.71"/> - <linearGradient id="linearGradient4209" y2="529.61" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="805.29" gradientTransform="matrix(0.89332,0,0,0.89332,94.156,361.57)" y1="528.36" x1="887.9"/> - <linearGradient id="linearGradient4211" y2="867.68" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="205.59" gradientTransform="matrix(0.99043,0.13799,-0.13799,0.99043,146.05,-33.885)" y1="873.14" x1="229.7"/> - <linearGradient id="linearGradient4213" y2="872.65" xlink:href="#linearGradient3759" gradientUnits="userSpaceOnUse" x2="216.56" gradientTransform="matrix(0.99043,0.13799,-0.13799,0.99043,156.31,-32.603)" y1="873.06" x1="238.83"/> - </defs> - <metadata id="metadata60"/> - <rect id="rect4814" width="2.207" height="4.682" x="2.903" y="3.318" rx="0.943" fill="#1a1a1a" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.3"/> - <rect id="rect4814-1" width="2.207" height="4.682" x="18.829" y="3.318" rx="0.943" fill="#1a1a1a" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.3"/> - <rect id="rect4814-2" width="2.207" height="4.682" x="2.85" y="16.818" rx="0.943" fill="#1a1a1a" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.3"/> - <rect id="rect4814-7" width="2.207" height="4.682" x="18.918" y="16.818" rx="0.943" fill="#1a1a1a" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.3"/> - <g id="g4179" transform="matrix(1.0127361,0,0,1,-0.15244214,0)"> - <path inkscape:connector-curvature="0" d="m 2.9101531,10.06761 c 3.542e-4,0.03757 0.011999,0.117586 0.036894,0.161112 l 0.05903,0.08717 1.4142901,-0.215595 0.011068,3.108568 c 1.968e-4,0.06068 -5.51e-4,0.121732 -0.00123,0.182905 -0.00135,0.12234 -0.00411,0.245699 -0.00861,0.36971 -0.00658,0.181633 -0.016248,0.365352 -0.028285,0.549485 -6.454e-4,0.0099 -0.0018,0.01971 -0.00246,0.02958 -0.0248,0.371902 -0.058704,0.747366 -0.095924,1.12156 -0.050479,0.506247 -0.1065459,1.009207 -0.1524952,1.497472 -0.034053,0.36184 -0.062163,0.715611 -0.078707,1.055409 -0.011363,0.233353 -0.017967,0.459872 -0.015987,0.678699 9.72e-4,0.107491 0.00367,0.213393 0.00861,0.316785 0.00494,0.103381 0.013982,0.208718 0.025826,0.315215 0.00592,0.05325 0.012209,0.106545 0.019677,0.160333 0.022369,0.161117 0.052002,0.324904 0.086086,0.488016 3.93e-5,2.51e-4 -3.94e-5,5.25e-4 0,7.77e-4 0.022769,0.108903 0.048228,0.217146 0.075016,0.325327 0.026789,0.108191 0.055009,0.216023 0.084854,0.322214 0.029776,0.105945 0.061604,0.210967 0.093465,0.313672 7.87e-5,2.49e-4 -7.87e-5,5.28e-4 0,7.77e-4 0.015972,0.05147 0.031647,0.101361 0.047964,0.151772 0.048861,0.150967 0.099014,0.297233 0.1488039,0.435862 7.87e-5,2.51e-4 -7.87e-5,5.25e-4 0,7.77e-4 0.03325,0.09256 0.065925,0.181498 0.098384,0.266972 0.06487,0.170952 0.1272932,0.326647 0.1832383,0.46154 0.083922,0.20233 0.1545495,0.358204 0.196768,0.450656 0.028169,0.06161 0.044273,0.09496 0.044273,0.09496 l 0.1475761,0.340894 c 0.00979,0.02248 0.027268,0.04429 0.051652,0.06538 0.00828,0.0072 0.017155,0.01401 0.027056,0.02102 0.038551,0.02739 0.08936,0.05357 0.1512674,0.07861 2.755e-4,1.25e-4 9.563e-4,-1.24e-4 0.00123,0 0.030882,0.01246 0.06456,0.02547 0.1008437,0.03736 3.148e-4,10e-5 9.13e-4,-10e-5 0.00123,0 0.036351,0.01189 0.075331,0.02369 0.116833,0.03502 3.542e-4,10e-5 8.736e-4,-9.9e-5 0.00123,0 0.3348796,0.09133 0.8315812,0.164881 1.4253484,0.222599 3.936e-4,2.5e-5 8.343e-4,-2.5e-5 0.00123,0 0.00921,8.94e-4 0.019024,0.0014 0.028285,0.0023 0.1311065,0.01257 0.2675337,0.02471 0.4070737,0.0358 0.00955,7.6e-4 0.0187,0.0016 0.028285,0.0023 0.1591145,0.01249 0.322798,0.02358 0.4907002,0.03425 3.935e-4,2.4e-5 8.303e-4,-2.5e-5 0.00123,0 0.08376,0.0053 0.1690159,0.01069 0.2545706,0.01557 3.936e-4,2.3e-5 8.225e-4,-2.3e-5 0.00123,0 0.085567,0.0049 0.1711567,0.0096 0.258258,0.01401 3.936e-4,2.1e-5 8.225e-4,-2e-5 0.00123,0 0.1746355,0.0089 0.3520495,0.01689 0.5312737,0.02413 3.975e-4,1.7e-5 8.225e-4,-1.6e-5 0.00123,0 0.5385148,0.02173 1.093597,0.03635 1.635615,0.04436 4.09e-4,7e-6 8.14e-4,-5e-6 0.0012,0 0.361636,0.0053 0.716747,0.0078 1.058887,0.0078 0.03808,0 0.07725,-6.85e-4 0.115601,-7.77e-4 0.03835,10e-5 0.07752,7.77e-4 0.115602,7.77e-4 0.342108,0 0.697227,-0.0024 1.058848,-0.0078 4.13e-4,-6e-6 8.18e-4,6e-6 0.0012,0 0.542056,-0.008 1.0971,-0.02263 1.635614,-0.04436 4.06e-4,-1.7e-5 8.31e-4,1.6e-5 0.0012,0 0.179224,-0.0072 0.356638,-0.01522 0.531274,-0.02413 4.05e-4,-2.1e-5 8.3e-4,2.1e-5 0.0012,0 0.0871,-0.0044 0.172691,-0.0091 0.258258,-0.01401 4.05e-4,-2.3e-5 8.3e-4,2.3e-5 0.0012,0 0.08555,-0.0049 0.17081,-0.01025 0.25457,-0.01557 4.02e-4,-2.5e-5 8.31e-4,2.5e-5 0.0012,0 0.167894,-0.01067 0.331578,-0.02175 0.4907,-0.03425 0.0096,-7.52e-4 0.01874,-0.0016 0.02829,-0.0023 0.139532,-0.0111 0.275959,-0.02323 0.407073,-0.0358 0.0093,-8.87e-4 0.01907,-0.0014 0.02829,-0.0023 3.93e-4,-2.5e-5 8.46e-4,5e-5 0.0012,0 0.593728,-0.05772 1.090449,-0.131266 1.425348,-0.222598 3.54e-4,-10e-5 8.89e-4,9.9e-5 0.0012,0 0.0415,-0.01133 0.08048,-0.02313 0.116833,-0.03502 3.15e-4,-9.9e-5 9.09e-4,10e-5 0.0012,0 0.03628,-0.01189 0.06996,-0.0249 0.100843,-0.03736 2.76e-4,-1.25e-4 9.53e-4,1.24e-4 0.0012,0 0.06191,-0.02504 0.112717,-0.05122 0.151268,-0.07861 0.0099,-0.007 0.01877,-0.01385 0.02706,-0.02101 0.02438,-0.02109 0.04187,-0.0429 0.05165,-0.06538 l 0.147576,-0.340893 c 0,0 0.0161,-0.03335 0.04427,-0.09496 0.04222,-0.09243 0.112846,-0.248317 0.196768,-0.450656 0.05595,-0.134886 0.118368,-0.290583 0.183238,-0.461541 0.03246,-0.08546 0.06513,-0.1744 0.09838,-0.266972 7.9e-5,-2.54e-4 -7.9e-5,-5.25e-4 0,-7.77e-4 0.04979,-0.138631 0.09994,-0.284879 0.148804,-0.435862 0.01631,-0.05041 0.03199,-0.100305 0.04796,-0.151772 7.9e-5,-2.51e-4 -7.9e-5,-5.28e-4 0,-7.77e-4 0.03186,-0.102694 0.06369,-0.207717 0.09347,-0.313671 0.02985,-0.106201 0.05807,-0.214033 0.08485,-0.322214 0.02679,-0.108191 0.05225,-0.216432 0.07502,-0.325328 3.9e-5,-2.54e-4 -3.9e-5,-5.25e-4 0,-7.77e-4 0.03409,-0.163102 0.06372,-0.326896 0.08609,-0.488016 0.0075,-0.05379 0.01375,-0.107082 0.01968,-0.160332 0.01184,-0.1065 0.02089,-0.211837 0.02583,-0.315216 0.0049,-0.103381 0.0076,-0.209283 0.0086,-0.316784 0.002,-0.218825 -0.0046,-0.445351 -0.01599,-0.6787 -0.01655,-0.339773 -0.04465,-0.693568 -0.07871,-1.055408 -0.04595,-0.488265 -0.102017,-0.991225 -0.152496,-1.497473 -0.03722,-0.374193 -0.07112,-0.749632 -0.09592,-1.12156 -6.61e-4,-0.0099 -0.0018,-0.01972 -0.0025,-0.02958 -0.01204,-0.184143 -0.0217,-0.367868 -0.02829,-0.549485 -0.0045,-0.124002 -0.0073,-0.24736 -0.0086,-0.369711 -6.77e-4,-0.06117 -0.0014,-0.122223 -0.0012,-0.182905 l 0.01107,-3.108568 1.41429,0.215595 0.05903,-0.08717 c 0.0249,-0.04353 0.03654,-0.123538 0.03689,-0.161112 1.97e-4,-0.02114 -0.0029,-0.04371 -0.0098,-0.06694 -0.0023,-0.00774 -0.0056,-0.01553 -0.0086,-0.02335 -0.003,-0.00759 -0.0062,-0.015755 -0.0098,-0.02335 -0.0076,-0.015652 -0.01659,-0.031469 -0.02706,-0.0467 -0.03123,-0.045367 -0.07601,-0.088024 -0.130359,-0.1190825 -4.21e-4,-2.49e-4 -8.1e-4,-5.404e-4 -0.0012,-7.77e-4 -0.02746,-0.015562 -0.05711,-0.027703 -0.08977,-0.03658 l -1.23224,-0.3027622 0.0098,-2.7382096 c 0.01471,-0.018603 0.02932,-0.036764 0.04304,-0.05526 0.05508,-0.074201 0.102202,-0.1472217 0.142657,-0.2202622 0.02017,-0.036421 0.03839,-0.072672 0.05534,-0.1089655 0.05933,-0.1270227 0.100411,-0.2537464 0.127899,-0.3821638 0.01572,-0.073379 0.02731,-0.1475929 0.03567,-0.2225985 0.0042,-0.037502 0.0071,-0.075566 0.0098,-0.113633 0.0055,-0.076139 0.0084,-0.1528904 0.0098,-0.2319383 0.0029,-0.1580934 0,-0.3232602 0,-0.498128 0,-0.2592756 -0.02091,-0.5061479 -0.06149,-0.7417375 -0.01623,-0.094233 -0.03532,-0.1865764 -0.0578,-0.2770837 -0.04496,-0.1810098 -0.103063,-0.3543683 -0.172172,-0.5206932 -0.01728,-0.041579 -0.03537,-0.08308 -0.05411,-0.1237525 -0.05623,-0.1220164 -0.11906,-0.2394202 -0.188157,-0.353347 -0.02303,-0.037977 -0.04567,-0.075765 -0.0701,-0.1128559 -0.04885,-0.074179 -0.100627,-0.1464995 -0.154955,-0.217149 -0.02716,-0.035325 -0.05512,-0.070622 -0.08363,-0.1050726 -0.05701,-0.068901 -0.117274,-0.1361583 -0.179551,-0.2015849 -0.03114,-0.032715 -0.0635,-0.064659 -0.09592,-0.096512 -0.162141,-0.159259 -0.339445,-0.3079178 -0.532494,-0.445974 -0.154246,-0.1103005 -0.317969,-0.2142324 -0.4907,-0.31133 -2.36e-4,-1.246e-4 -0.001,1.245e-4 -0.0012,0 -0.04301,-0.02417 -0.08625,-0.048244 -0.130359,-0.071606 -2.36e-4,-1.246e-4 -9.88e-4,1.245e-4 -0.0012,0 -0.04411,-0.023355 -0.08885,-0.046717 -0.134046,-0.06927 -2.36e-4,-1.245e-4 -9.8e-4,1.245e-4 -0.0012,0 C 17.4713,1.1610661 17.331173,1.0966184 17.185561,1.035929 c -2.75e-4,-1.245e-4 -9.44e-4,1.245e-4 -0.0012,0 -0.04835,-0.020145 -0.09698,-0.04057 -0.146348,-0.0599298 -3.15e-4,-1.2453e-4 -9.37e-4,1.2453e-4 -0.0012,0 -0.148682,-0.0582934 -0.301153,-0.11374255 -0.458706,-0.16500241 -3.14e-4,-9.963e-5 -9.09e-4,9.962e-5 -0.0012,0 -0.05231,-0.0170108 -0.105393,-0.0335664 -0.158643,-0.0498128 -3.14e-4,-9.963e-5 -9.01e-4,9.962e-5 -0.0012,0 -0.05326,-0.01624 -0.10692,-0.0327768 -0.161106,-0.0482561 -3.54e-4,-9.963e-5 -8.94e-4,9.962e-5 -0.0012,0 -0.108714,-0.0310433 -0.21848,-0.0607218 -0.330814,-0.0887291 -3.55e-4,-9.963e-5 -8.82e-4,9.962e-5 -0.0012,0 -0.056,-0.0139533 -0.112843,-0.0272675 -0.169713,-0.0404729 -3.54e-4,-7.472e-5 -8.73e-4,7.472e-5 -0.0012,0 -0.05687,-0.0132009 -0.11444,-0.0264581 -0.172172,-0.0389162 -0.05774,-0.012453 -0.116053,-0.0248671 -0.174631,-0.03658 -3.54e-4,-7.472e-5 -8.66e-4,7.472e-5 -0.0012,0 -0.05858,-0.0117092 -0.117687,-0.0232713 -0.177091,-0.0342463 -3.94e-4,-7.472e-5 -8.54e-4,7.472e-5 -0.0012,0 -0.05941,-0.01097 -0.119336,-0.0216708 -0.179551,-0.0319101 -3.94e-4,-7.472e-5 -8.54e-4,7.472e-5 -0.0012,0 -0.181424,-0.0308366 -0.366225,-0.0589883 -0.55465,-0.08328 l -0.0012,0 c -0.06255,-0.00806 -0.126105,-0.0152228 -0.18939,-0.0225727 l -0.0012,0 c -0.445404,-0.0516733 -0.907572,-0.0862285 -1.385994,-0.10351598 -4.06e-4,-1.245e-5 -8.31e-4,1.494e-5 -0.0012,0 -0.068,-0.002441 -0.136782,-0.004451 -0.205379,-0.006227 -4.05e-4,-9.96e-6 -8.3e-4,9.96e-6 -0.0012,0 -0.137615,-0.003552 -0.275758,-0.006144 -0.415652,-0.007004 -4.06e-4,0 -8.31e-4,2.49e-6 -0.0012,0 -0.07017,-4.2341e-4 -0.140807,-2.4906e-4 -0.211526,0 -0.02502,0 -0.05003,5.4794e-4 -0.07502,7.721e-4 -0.02498,-2.4906e-4 -0.05,-7.721e-4 -0.07502,-7.721e-4 -0.07072,-2.4906e-4 -0.141358,-4.2341e-4 -0.211525,0 -4.02e-4,2.49e-6 -8.23e-4,0 -0.0012,0 -0.139914,8.4682e-4 -0.278057,0.003452 -0.415653,0.007004 -4.01e-4,9.96e-6 -8.22e-4,-9.96e-6 -0.0012,0 -0.0686,0.001768 -0.137375,0.003786 -0.205378,0.006227 -4.02e-4,1.494e-5 -8.23e-4,-1.245e-5 -0.0012,0 -0.478422,0.0172875 -0.940552,0.0518427 -1.3859949,0.10351598 l -0.00123,0 c -0.063284,0.00735 -0.1268406,0.014513 -0.1893892,0.0225727 l -0.00123,0 c -0.1884172,0.0242934 -0.3732139,0.0524434 -0.5546498,0.08328 -3.935e-4,7.472e-5 -8.382e-4,-7.472e-5 -0.00123,0 -0.060215,0.0102403 -0.1201427,0.0209411 -0.1795509,0.0319101 -3.935e-4,7.472e-5 -8.382e-4,-7.472e-5 -0.00123,0 -0.059404,0.0109745 -0.1185095,0.0225365 -0.1770913,0.0342463 -3.542e-4,7.472e-5 -8.776e-4,-7.472e-5 -0.00123,0 -0.058578,0.011714 -0.116896,0.0241281 -0.1746316,0.03658 -0.057732,0.0124574 -0.1152983,0.0257159 -0.1721721,0.0389162 -3.542e-4,7.472e-5 -8.776e-4,-7.472e-5 -0.00123,0 -0.05687,0.0132056 -0.1137162,0.0265203 -0.1697125,0.0404729 -3.541e-4,9.962e-5 -8.775e-4,-9.963e-5 -0.00123,0 -0.1123388,0.0280048 -0.2221039,0.0576857 -0.3308143,0.0887291 -3.148e-4,9.962e-5 -8.776e-4,-9.963e-5 -0.00123,0 -0.054182,0.0154788 -0.1078486,0.0320147 -0.1611059,0.0482561 -3.148e-4,9.962e-5 -9.169e-4,-9.963e-5 -0.00123,0 -0.053253,0.016245 -0.1063374,0.0328017 -0.1586423,0.0498128 -3.148e-4,9.962e-5 -9.169e-4,-9.963e-5 -0.00123,0 -0.157564,0.0512624 -0.3100356,0.10670898 -0.4587057,0.16500241 -2.754e-4,1.2453e-4 -9.169e-4,-1.2453e-4 -0.00123,0 -0.049361,0.0193605 -0.097998,0.0397855 -0.1463482,0.0599298 -2.755e-4,1.245e-4 -9.524e-4,-1.245e-4 -0.00123,0 -0.1456045,0.060689 -0.2857309,0.1251372 -0.4218314,0.1930221 -2.361e-4,1.245e-4 -9.956e-4,-1.245e-4 -0.00123,0 -0.045198,0.022552 -0.089935,0.045915 -0.1340463,0.06927 -2.361e-4,1.245e-4 -9.956e-4,-1.246e-4 -0.00123,0 -0.044111,0.023362 -0.087349,0.047434 -0.1303589,0.071606 -2.361e-4,1.245e-4 -9.956e-4,-1.246e-4 -0.00123,0 -0.172719,0.097093 -0.3364458,0.2010245 -0.4907001,0.31133 -0.193061,0.1380562 -0.3703647,0.2867225 -0.5324937,0.445974 -0.032428,0.031853 -0.064784,0.063798 -0.095925,0.096512 -0.062552,0.065425 -0.12281,0.1326822 -0.1798255,0.2015833 C 4.799052,2.4596769 4.7710988,2.4949743 4.743933,2.530299 4.6896014,2.600951 4.6378317,2.6732692 4.5889781,2.747448 4.5645509,2.7845386 4.5419112,2.8223266 4.5188815,2.8603039 4.4497844,2.9742407 4.3869485,3.091642 4.330724,3.2136509 4.3119814,3.2543231 4.2938902,3.2958246 4.2766128,3.3374034 4.2075039,3.5037208 4.1494022,3.6770769 4.1044407,3.8580966 4.0819596,3.9486015 4.0628755,4.0409444 4.0466382,4.1351803 4.0060016,4.37076 3.985097,4.6176422 3.985097,4.8769178 c 0,0.1748529 -0.00292,0.3400221 0,0.498128 0.00146,0.079048 0.00433,0.1557995 0.00984,0.2319383 0.00275,0.038069 0.00566,0.076134 0.00984,0.113633 0.00836,0.075006 0.01995,0.1492192 0.035664,0.2225985 0.027488,0.1284074 0.068574,0.2551411 0.1278992,0.3821638 0.016952,0.036294 0.035169,0.072545 0.055339,0.1089655 0.040456,0.073043 0.087581,0.1460635 0.1426568,0.2202622 0.01372,0.018497 0.028329,0.036657 0.043045,0.05526 l 0.00984,2.7382096 -1.2322402,0.3027622 c -0.032663,0.00888 -0.062313,0.021019 -0.089774,0.03658 -4.132e-4,2.49e-4 -8.107e-4,5.305e-4 -0.00123,7.77e-4 -0.054351,0.031058 -0.099132,0.073715 -0.1303589,0.1190825 -0.010466,0.015229 -0.019458,0.031046 -0.027056,0.0467 -0.00367,0.00759 -0.00686,0.015763 -0.00984,0.02335 -0.00306,0.00782 -0.00631,0.015613 -0.00861,0.023351 -0.00692,0.02322 -0.010035,0.0458 -0.00984,0.06694 z" id="path3855" stroke="#191919" fill-opacity="0.996" stroke-width="0.436"/> - <path inkscape:connector-curvature="0" d="m 2.9101531,10.06761 c 3.542e-4,0.03757 0.012047,0.117586 0.036894,0.161112 l 0.05903,0.08717 1.4105908,-0.215595 0.011068,3.108568 c 0.00651,1.941777 -0.4527239,4.147413 -0.3738592,5.801447 0.078853,1.654084 1.101901,3.788762 1.101901,3.788762 l 0.1488039,0.340894 c 0.2084285,0.479473 3.8317429,0.640543 6.5633944,0.640543 0.0438,0 0.08867,-6.65e-4 0.132819,-7.77e-4 0.04415,1.24e-4 0.08902,7.77e-4 0.132818,7.77e-4 2.731692,0 6.354821,-0.161077 6.563395,-0.640543 l 0.148804,-0.340894 c 0,0 1.023037,-2.134752 1.101901,-3.788762 0.07885,-1.654083 -0.380368,-3.859744 -0.373859,-5.801447 l 0.01107,-3.108568 1.410591,0.215595 0.05903,-0.08717 c 0.02485,-0.04353 0.03654,-0.123535 0.03689,-0.161112 1.97e-4,-0.02114 -0.0029,-0.04371 -0.0098,-0.06694 -0.0023,-0.00774 -0.0056,-0.015529 -0.0086,-0.023349 -0.003,-0.00759 -0.0062,-0.015755 -0.0098,-0.02335 -0.0076,-0.015652 -0.01661,-0.031469 -0.02706,-0.046699 -0.03117,-0.045367 -0.07488,-0.088024 -0.129127,-0.1190824 -4.21e-4,-2.491e-4 -8.18e-4,-5.405e-4 -0.0012,-7.771e-4 -0.02741,-0.015562 -0.05717,-0.027703 -0.08977,-0.03658 l -1.2298,-0.3027622 0.0098,-2.7382096 c 0.469961,-0.5952629 0.421831,-1.1335151 0.421831,-1.8329367 0,-3.3187778 -3.407471,-4.67318829 -7.92503,-4.65749726 -0.0307,0 -0.06161,4.7322e-4 -0.09224,7.721e-4 -0.03062,-2.9888e-4 -0.06153,-7.721e-4 -0.09224,-7.721e-4 C 7.3909335,0.20378424 3.9833044,1.558125 3.9833044,4.8769277 c 0,0.6994216 -0.048153,1.2376738 0.4218314,1.8329367 l 0.00984,2.7382096 -1.2298003,0.3027622 c -0.032602,0.00888 -0.062364,0.021019 -0.089774,0.03658 -4.093e-4,2.49e-4 -8.107e-4,5.305e-4 -0.00123,7.771e-4 -0.054249,0.031058 -0.097959,0.073715 -0.1291271,0.1190824 -0.010446,0.01523 -0.019473,0.031046 -0.027056,0.046699 -0.00366,0.00759 -0.00687,0.015763 -0.00984,0.02335 -0.00305,0.00782 -0.00631,0.015611 -0.00861,0.023349 -0.00691,0.02322 -0.010035,0.0458 -0.00984,0.06694 z" id="path2853" fill="#ca0000" fill-opacity="0.996"/> - <path inkscape:connector-curvature="0" d="m 16.046782,0.64053789 0.02337,0.12686573 C 16.169032,1.304012 17.092515,1.706076 18.21614,1.7457519 l 0.280394,0.00934 -0.190621,-0.1307561 C 17.728202,1.2285977 17.026645,0.91940962 16.23001,0.69268666 l -0.182994,-0.0520544 z" id="path3707" fill="#212121" stroke="#191919" color="#000000" stroke-width="0.156"/> - <path inkscape:connector-curvature="0" d="M 7.9552859,0.64053789 7.9319197,0.76740362 C 7.8330359,1.304012 6.9095523,1.706076 5.785928,1.7457519 L 5.5055335,1.7550916 5.6961546,1.6243355 C 6.2738656,1.2285977 6.9754224,0.91940962 7.7720575,0.69268666 l 0.1832383,-0.0521465 z" id="path4161" fill="#212121" stroke="#191919" color="#000000" stroke-width="0.156"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/63-1.svg b/htdocs/public/symbols/svgicons/63-1.svg deleted file mode 100755 index 0aa40f1..0000000 --- a/htdocs/public/symbols/svgicons/63-1.svg +++ /dev/null @@ -1,99 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns:i="http://ns.adobe.com/AdobeIllustrator/10.0/" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" version="1.1" width="24" height="24"> - <defs id="defs55"> - <linearGradient gradientTransform="matrix(0.07561054,0,0,0.07561054,418.95066,390.49482)" x2="0" y1="53.39" gradientUnits="userSpaceOnUse" y2="6.431" id="XMLID_3_"> - <stop id="stop4284" stop-color="#ffffff"/> - <stop id="stop4286" offset="0.386" stop-color="#fdfdfe"/> - <stop id="stop4288" offset="0.561" stop-color="#f6f8fb"/> - <stop id="stop4290" offset="0.693" stop-color="#e9edf5"/> - <stop id="stop4292" offset="0.804" stop-color="#d7dfee"/> - <stop id="stop4294" offset="0.901" stop-color="#bfcee4"/> - <stop id="stop4296" offset="0.988" stop-color="#a3bad9"/> - <stop id="stop4298" offset="1" stop-color="#9eb6d7"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.07561054,0,0,0.07561054,418.95066,390.49482)" x2="0" y1="93.1" gradientUnits="userSpaceOnUse" y2="2.985" id="XMLID_2_"> - <stop id="stop4276" stop-color="#4041c5"/> - <stop id="stop4278" offset="1" stop-color="#5f86a2"/> - </linearGradient> - <radialGradient id="XMLID_1_" gradientUnits="userSpaceOnUse" cy="126.75" cx="42.36" r="91.43" gradientTransform="matrix(-0.07561054,0,0,0.07561054,416.50935,390.49482)"> - <stop id="stop12" stop-color="#e3ebef"/> - <stop offset="1" id="stop14"/> - </radialGradient> - <linearGradient id="linearGradient4280" y2="2.985" gradientUnits="userSpaceOnUse" y1="93.1" x2="0" gradientTransform="matrix(0.07561054,0,0,0.07561054,418.95066,390.49482)"> - <stop id="stop21" stop-color="#e3ebef"/> - <stop offset="1" id="stop23" stop-color="#5f86a2"/> - </linearGradient> - <radialGradient id="radialGradient4205" gradientUnits="userSpaceOnUse" cy="126.75" cx="42.36" r="91.43"> - <stop id="stop4207" stop-color="#e3ebef"/> - <stop offset="1" id="stop4209"/> - </radialGradient> - <linearGradient id="linearGradient4213" y2="2.985" gradientUnits="userSpaceOnUse" y1="93.1" x2="0"> - <stop id="stop4215" stop-color="#e3ebef"/> - <stop offset="1" id="stop4217" stop-color="#5f86a2"/> - </linearGradient> - <linearGradient id="linearGradient4220" y2="6.431" gradientUnits="userSpaceOnUse" y1="53.39" x2="0"> - <stop id="stop4222" stop-color="#ffffff"/> - <stop offset="0.386" id="stop4224" stop-color="#fdfdfe"/> - <stop offset="0.561" id="stop4226" stop-color="#f6f8fb"/> - <stop offset="0.693" id="stop4228" stop-color="#e9edf5"/> - <stop offset="0.804" id="stop4230" stop-color="#d7dfee"/> - <stop offset="0.901" id="stop4232" stop-color="#bfcee4"/> - <stop offset="0.988" id="stop4234" stop-color="#a3bad9"/> - <stop offset="1" id="stop4236" stop-color="#9eb6d7"/> - </linearGradient> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_2_" id="linearGradient4358" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-0.07561054,0,0,0.07561054,416.50935,390.49482)" y1="93.1" x2="0" y2="2.985"/> - </defs> - <g id="layer1" inkscape:label="Capa 1" inkscape:groupmode="layer" transform="translate(-405.73,-376.36)"> - <g id="g4374" transform="matrix(0.98735242,0,0,0.98735242,5.2338987,4.8592025)"> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g14" fill="#c7c7c7" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 5903,2361 c 50,82 34,3995 -31,4149 -51,122 -1703,1495 -1789,1531 -1117,-7 -1870,-414 -1995,-629 -48,-270 -7,-4433 38,-4520 40,-76 2153,-833 2227,-851 67,-15 1493,229 1550,320 z" id="path16"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g18" fill="#000000" stroke="#000000" stroke-width="50.43"> - <path inkscape:connector-curvature="0" d="m 5881,2374 2,-1 -2,2 c 0,-1 -1,-1 -1,-1 l 0,-2 7,-3 -2,2 -5,1 5,-1 -2,2 -2,1 z m 2,-1 2,-2 2,-2 5,-2 -5,4 5,-4 1,0 -6,3 0,1 0,-1 -4,3 z m 10,-6 -1,0 1,0 -1,0 11,-6 -10,5 0,1 z m 11,-4 -11,4 0,-1 11,-3 z m 20,-15 c -2,-3 -4,-6 -7,-9 -2,-3 -5,-5 -8,-7 -5,-4 -12,-8 -20,-12 -7,-4 -15,-7 -24,-11 -9,-4 -19,-7 -30,-11 -21,-8 -47,-16 -75,-24 -29,-8 -61,-16 -95,-25 -136,-34 -313,-72 -494,-106 -181,-35 -364,-66 -511,-90 -73,-11 -138,-21 -189,-27 -25,-3 -47,-6 -65,-8 -9,-1 -17,-1 -24,-2 -4,0 -7,0 -10,-1 l -9,0 c -3,0 -5,0 -7,1 l -4,0 c -2,0 -3,0 -4,1 -2,0 -4,1 -7,2 -2,0 -5,1 -8,2 -3,1 -7,2 -11,3 -4,2 -8,3 -13,5 -10,3 -22,7 -35,12 -13,4 -28,9 -44,15 -33,11 -71,25 -115,40 -43,15 -91,32 -144,51 -209,75 -481,173 -753,274 -271,101 -542,203 -747,285 -51,21 -98,40 -140,57 -43,18 -80,34 -111,48 -16,7 -30,14 -42,20 -13,6 -24,12 -33,17 -5,2 -9,5 -13,7 -4,3 -8,5 -10,7 -4,3 -7,5 -9,7 -5,4 -7,8 -9,11 -1,2 -2,5 -4,9 0,3 -1,6 -1,9 -1,3 -1,7 -2,11 -1,4 -1,8 -2,13 0,9 -1,20 -3,32 0,13 -1,27 -2,42 -2,31 -4,69 -6,111 -2,43 -4,91 -5,144 -7,213 -14,504 -19,835 -11,662 -19,1482 -19,2144 0,308 2,583 5,791 1,52 2,100 3,143 1,43 3,82 4,115 1,34 3,62 4,85 1,12 2,22 3,30 1,5 1,9 1,13 1,3 2,7 2,10 l 1,4 2,4 c 9,15 20,30 33,46 14,16 30,32 48,49 35,32 80,66 135,101 107,70 249,142 423,207 173,65 377,124 608,167 231,43 489,70 769,72 l 6,0 5,-2 8,-4 c 2,-2 5,-3 8,-6 3,-2 6,-4 10,-6 l 12,-9 c 9,-6 19,-13 30,-22 11,-8 23,-17 37,-28 27,-20 58,-45 93,-73 35,-28 74,-59 116,-93 169,-136 385,-315 600,-497 215,-181 430,-366 593,-512 41,-37 79,-71 113,-103 34,-31 64,-59 89,-84 13,-13 24,-24 34,-35 11,-11 20,-20 28,-29 8,-9 14,-17 19,-23 3,-4 5,-8 7,-10 2,-4 4,-8 6,-11 0,-2 1,-5 2,-8 1,-3 2,-5 3,-9 1,-6 2,-13 3,-22 2,-8 3,-17 4,-28 1,-11 2,-22 3,-35 2,-25 4,-55 7,-89 1,-34 3,-72 5,-113 8,-166 14,-391 19,-648 10,-516 16,-1164 16,-1743 0,-389 -3,-747 -8,-1012 -1,-66 -2,-127 -4,-181 -1,-53 -3,-100 -5,-139 -1,-20 -2,-38 -3,-53 -1,-16 -2,-30 -3,-41 -1,-6 -1,-11 -2,-16 -1,-5 -1,-10 -2,-13 -1,-4 -1,-8 -2,-11 -1,-2 -1,-4 -2,-5 -1,-3 -2,-5 -3,-6 z m -37,21 12,-12 -12,12 z m -6,9 c 1,3 1,7 2,11 0,4 1,9 1,15 1,11 3,24 4,39 0,15 1,33 2,52 2,39 4,86 6,139 1,53 2,114 4,180 5,264 7,622 7,1011 0,578 -5,1227 -15,1742 -6,257 -12,481 -19,646 -2,42 -4,79 -6,113 -2,33 -4,63 -6,88 -1,12 -2,24 -4,34 0,10 -2,18 -3,26 -1,7 -2,14 -3,18 0,3 -1,4 -1,6 0,1 -1,2 -1,2 0,1 -1,2 -2,4 -1,1 -3,4 -4,6 -5,6 -10,13 -17,21 -7,7 -16,17 -26,27 l -34,34 c -25,24 -54,52 -88,83 -33,31 -71,66 -112,102 -163,146 -377,330 -592,512 -215,181 -431,360 -598,495 -42,34 -81,65 -116,93 -35,28 -66,52 -93,73 -13,10 -26,20 -37,28 -10,8 -20,15 -28,21 -4,3 -8,6 -12,8 -3,2 -6,4 -8,6 -2,1 -4,2 -5,3 -276,-2 -528,-29 -755,-71 -228,-42 -429,-100 -600,-164 -169,-64 -308,-134 -413,-202 -51,-33 -94,-66 -128,-97 -17,-15 -31,-30 -43,-44 -10,-12 -19,-23 -26,-34 l 0,-4 c -1,-3 -1,-7 -1,-11 -1,-8 -2,-18 -3,-28 -2,-23 -3,-51 -5,-84 -1,-33 -2,-71 -3,-115 -1,-42 -2,-90 -3,-142 -3,-208 -5,-482 -5,-790 0,-662 7,-1481 18,-2143 6,-330 12,-622 19,-834 2,-53 4,-101 6,-144 2,-42 3,-79 5,-109 1,-16 2,-30 3,-42 1,-12 2,-22 3,-31 0,-4 1,-8 1,-11 1,-4 1,-6 2,-9 l 0,-2 c 0,-1 1,-1 2,-2 2,-1 4,-3 7,-5 4,-1 7,-4 11,-6 9,-5 19,-10 31,-16 12,-6 26,-12 41,-19 31,-14 67,-29 109,-47 42,-17 89,-37 140,-57 205,-82 475,-184 746,-284 271,-101 543,-200 752,-274 52,-19 101,-36 144,-51 43,-16 82,-29 114,-40 17,-6 31,-11 44,-16 13,-4 25,-8 35,-11 4,-2 9,-3 13,-4 4,-2 7,-3 10,-4 3,-1 5,-1 8,-2 l 3,-1 -2,-8 1,8 1,0 4,0 7,0 c 2,0 5,0 8,1 7,0 14,1 23,2 17,1 39,4 64,7 50,6 114,16 187,27 147,23 329,55 509,89 180,35 357,72 492,106 34,9 65,17 92,25 28,8 53,15 73,23 10,3 20,7 28,10 7,3 15,6 20,9 5,3 10,5 13,8 0,0 1,0 1,1 0,1 1,3 1,4 z M 4075,8017 c 1,0 1,-1 2,-1 l 6,0 0,14 -8,-13 8,13 0,11 -10,-23 c 0,0 1,-1 2,-1 z M 2110,7400 c 1,1 1,3 2,4 1,1 1,3 1,4 l -25,4 21,-11 1,-1 -1,1 1,-1 2,0 -2,0 z m 39,-4498 0,3 c -1,0 -1,1 -2,1 l -5,-6 -17,-4 17,4 -2,-1 4,2 5,1 z m -7,-2 2,1 -2,-1 z m -16,-8 14,7 -14,-7 z m 14,7 -10,-11 10,11 z m 2217,-841 -2,-17 2,17 z m -4,-17 4,17 0,1 -4,-18 z" id="path20"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g22" stroke-opacity="0.541" fill="#ffffff" stroke="#ffffff" fill-opacity="0.541" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 5822,2442 -52,22 -52,23 -52,23 -53,25 -53,25 -53,26 -53,26 -54,27 -54,27 -54,28 -55,28 -54,29 -55,29 -55,29 -111,60 -112,60 -112,60 -113,61 -114,60 -114,60 -114,59 -57,29 -57,29 -58,28 -57,28 -27,-6 -28,-7 -56,-13 -58,-14 -59,-13 -60,-14 -61,-14 -61,-14 -63,-14 -62,-14 -63,-15 -127,-28 -127,-28 -64,-14 -63,-14 -62,-13 -62,-13 -61,-13 -60,-13 -60,-13 -58,-12 -57,-12 -28,-5 -28,-6 -27,-5 -27,-6 -27,-5 -26,-5 -26,-5 -25,-6 -25,-4 -24,-5 -24,-5 -24,-4 -23,-4 -22,-5 -22,-4 -21,-3 -21,-4 -20,-4 52,16 52,16 53,16 54,15 55,16 55,15 57,16 56,15 57,16 58,15 116,31 117,30 118,31 118,31 117,30 116,31 58,15 57,16 57,15 56,16 55,15 55,16 54,15 53,16 52,16 52,16 1,60 2,61 1,61 1,63 1,64 2,64 1,65 1,66 1,67 1,67 1,68 0,69 1,69 1,70 1,70 0,71 1,71 0,72 1,72 1,73 1,146 1,147 0,149 1,149 2,299 1,300 1,149 1,148 1,147 1,146 1,73 0,72 1,72 1,71 0,71 1,71 1,69 1,70 0,68 1,68 1,67 1,67 1,66 1,65 1,65 2,63 1,63 1,62 2,61 1,60 1,-61 1,-61 0,-63 1,-63 1,-64 1,-65 1,-66 1,-67 1,-67 1,-68 1,-69 2,-69 1,-70 1,-71 1,-71 1,-72 1,-72 2,-73 1,-73 1,-73 3,-148 3,-149 2,-151 3,-151 6,-303 5,-303 3,-151 3,-150 2,-149 3,-149 1,-73 2,-73 1,-73 1,-72 1,-71 1,-72 1,-70 2,-70 1,-70 1,-68 1,-68 1,-68 1,-66 1,-66 1,-65 1,-64 1,-64 0,-62 1,-62 1,-60 110,-59 109,-59 109,-57 109,-58 108,-57 107,-58 107,-57 107,-58 105,-58 105,-58 104,-60 103,-60 51,-30 50,-31 51,-31 50,-31 50,-31 50,-32 49,-32 50,-32 z" id="path24"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g32" stroke-opacity="0.161" fill="#000000" stroke="#ffffff" fill-opacity="0.161" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 2420,6628 10,14 10,13 11,13 12,13 12,12 12,12 14,12 13,12 14,12 15,11 15,11 16,11 15,11 17,10 16,10 17,11 18,9 18,10 18,9 18,8 19,9 19,8 19,8 19,8 40,15 40,14 41,12 41,11 42,10 41,9 42,8 41,6 41,6 41,3 21,2 20,1 19,1 20,0 20,0 19,0 19,-1 19,-1 18,-1 19,-1 17,-2 18,-3 17,-2 17,-3 17,-4 16,-4 15,-4 15,-4 15,-5 15,-5 -2,-1 -1,0 -5,-2 -6,-1 -7,-2 -8,-2 -10,-3 -10,-3 -12,-3 -13,-4 -14,-3 -15,-4 -16,-5 -16,-4 -18,-5 -18,-5 -19,-5 -20,-6 -20,-5 -21,-6 -22,-6 -22,-6 -22,-6 -23,-7 -24,-6 -48,-13 -49,-14 -50,-14 -50,-13 -50,-15 -50,-13 -49,-14 -49,-13 -23,-7 -24,-6 -23,-7 -22,-6 -22,-6 -21,-6 -21,-6 -20,-5 -19,-6 -19,-5 -18,-5 -17,-5 -16,-4 -15,-5 -15,-4 -13,-4 -12,-3 -12,-3 -10,-3 -9,-3 -7,-2 -7,-2 -5,-2 -2,0 -2,-1 z" id="path34"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g42" stroke-opacity="0.388" fill="#ffffff" stroke="#ffffff" fill-opacity="0.388" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 3454,6093 -936,-361 -9,4 -8,4 -8,4 -6,5 -6,6 -6,6 -5,7 -5,6 -4,7 -4,7 -3,7 -3,8 -3,8 -2,7 -3,15 -2,15 -2,14 0,6 0,7 0,5 0,6 0,5 0,4 0,4 1,4 0,2 0,2 0,1 0,1 146,51 1,1 1,1 1,1 1,2 2,2 1,3 3,3 2,3 3,4 3,4 3,4 4,5 4,4 4,6 5,4 10,12 10,11 13,12 13,12 14,13 15,12 17,13 17,12 19,12 19,11 21,11 22,10 11,4 11,5 12,4 12,4 13,3 12,3 13,3 13,3 13,2 13,1 14,2 14,1 14,0 15,0 15,0 15,-1 15,-2 15,-2 16,-2 16,-3 16,-4 16,-4 17,-5 17,-6 1,0 2,1 3,0 6,1 6,1 7,1 8,1 9,1 10,1 11,1 12,1 12,1 12,0 13,1 26,0 14,-1 13,-1 14,-1 13,-2 13,-2 12,-3 12,-3 12,-3 10,-5 11,-5 9,-6 8,-6 8,-8 3,-4 3,-4 3,-4 2,-4 2,-5 2,-5 z" id="path44"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g52" fill="#606060" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 3446,5971 c -311,-81 -622,-161 -933,-242 -12,44 -13,107 6,140 47,23 142,41 189,64 136,131 255,142 472,124 84,17 168,31 251,48 26,-51 33,-72 15,-134 z" id="path54"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g60" stroke-opacity="0.4" fill="#ffffff" stroke="#ffffff" fill-opacity="0.4" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 5856,2414 -1813,1017 7,4549 1775,-1494 31,-4072 z" id="path62"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g70" stroke-opacity="0.161" fill="#000000" stroke="#ffffff" fill-opacity="0.161" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 2525,6916 10,13 11,12 10,13 11,11 11,12 11,11 12,11 12,10 12,10 12,10 13,10 12,9 13,9 13,8 27,17 28,15 28,14 28,13 29,11 29,11 30,9 30,8 29,8 30,6 30,5 30,4 30,3 30,2 29,2 29,0 29,-1 27,-2 28,-2 27,-3 26,-5 25,-5 24,-6 24,-6 22,-8 -2,-1 -4,0 -4,-2 -5,-1 -6,-2 -8,-2 -8,-2 -9,-2 -10,-3 -10,-3 -11,-3 -12,-3 -13,-4 -13,-3 -14,-4 -15,-4 -15,-4 -15,-5 -16,-4 -16,-5 -17,-4 -18,-5 -35,-10 -36,-10 -38,-10 -38,-10 -38,-11 -76,-21 -37,-10 -37,-11 -36,-10 -17,-4 -17,-5 -17,-5 -16,-4 -16,-5 -15,-4 -15,-4 -14,-4 -14,-4 -13,-4 -12,-3 -11,-3 -12,-3 -10,-3 -9,-3 -8,-2 -8,-3 -7,-1 -6,-2 -5,-2 -4,-1 -3,-1 z" id="path72"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g80" stroke-opacity="0.161" fill="#000000" stroke="#ffffff" fill-opacity="0.161" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 2680,7199 12,15 12,14 13,14 14,12 14,13 14,11 15,11 16,11 15,9 17,9 16,9 17,7 18,7 17,7 18,5 18,5 18,5 19,3 18,4 19,2 18,2 19,1 19,0 19,0 18,-1 19,-2 18,-2 19,-3 18,-4 18,-4 18,-5 17,-6 -1,0 -2,-1 -3,0 -4,-1 -3,-1 -5,-2 -5,-1 -6,-2 -6,-1 -6,-2 -7,-2 -8,-2 -8,-2 -8,-3 -9,-2 -9,-2 -19,-6 -20,-5 -22,-6 -22,-6 -23,-6 -23,-7 -48,-13 -48,-13 -23,-7 -23,-6 -23,-6 -21,-6 -21,-6 -19,-6 -9,-2 -9,-3 -9,-2 -8,-2 -8,-2 -7,-2 -7,-2 -6,-2 -6,-2 -5,-2 -5,-1 -5,-1 -3,-1 -3,-1 -3,-1 -2,0 z" id="path82"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g90" stroke-opacity="0.439" fill="#fcfcfc" stroke="#ffffff" fill-opacity="0.439" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 2356,3259 -92,13 -17,2173 1425,399 35,-116 -1369,-365 18,-2104 z" id="path92"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g100" stroke-opacity="0.231" fill="#000000" stroke="#ffffff" fill-opacity="0.231" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 3700,4065 -2,61 -1340,-386 1342,325 z" id="path102"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g106" stroke-opacity="0.231" fill="#000000" stroke="#ffffff" fill-opacity="0.231" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 3720,4507 -3,61 -1339,-386 1342,325 z" id="path108"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g112" stroke-opacity="0.231" fill="#000000" stroke="#ffffff" fill-opacity="0.231" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 3700,4916 -2,61 -1340,-386 1342,325 z" id="path114"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g118" stroke-opacity="0.231" fill="#000000" stroke="#ffffff" fill-opacity="0.231" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 3700,5318 -2,61 -1340,-387 1342,326 z" id="path120"/> - </g> - <g transform="matrix(-0.0039657,0,0,0.0039657,435.9735,368.36892)" id="g124" fill="#9e9e9e" stroke-width="25.22"> - <path inkscape:connector-curvature="0" d="m 2361,3309 1332,333 -11,2197 11,0 11,0 11,-2205 0,-9 -8,-2 -1341,-335 -2,11 -3,10 z m 1340,335 -8,-2 0,-8 11,0 -3,10 z" id="path126"/> - </g> - <path id="path16-1" d="m 408.34342,399.31706 c 0,0.39 1.56241,0.7062 3.48972,0.7062 1.92732,0 3.48973,-0.3162 3.48973,-0.7062 0,-0.39008 -1.56241,-0.70628 -3.48973,-0.70628 -1.92731,0 -3.48972,0.31605 -3.48972,0.7062 z" i:knockout="Off" inkscape:connector-curvature="0" fill="url(#XMLID_1_)" stroke="#333333" stroke-width="0.227"/> - <path id="path18" i:knockout="Off" d="m 411.39528,399.24749 0.99708,0 0,-3.15696 -0.99708,0 0,3.15696 z" inkscape:connector-curvature="0" fill="#333333" stroke="#333333" stroke-width="0.227"/> - <path id="path25" d="m 407.80734,396.62646 c 0,0.50107 0.40625,0.90732 0.90732,0.90732 l 6.66054,0 c 0.50107,0 0.90732,-0.40625 0.90732,-0.90732 l 0,-4.99862 c 0,-0.50107 -0.40625,-0.90732 -0.90732,-0.90732 l -6.66039,0 c -0.50107,0 -0.90732,0.40625 -0.90732,0.90732 l 0,4.99862 z" i:knockout="Off" inkscape:connector-curvature="0" fill="url(#linearGradient4358)" stroke="#333333" stroke-width="0.454"/> - </g> - </g> - <metadata id="metadata53"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/63-2.svg b/htdocs/public/symbols/svgicons/63-2.svg deleted file mode 100755 index ea76685..0000000 --- a/htdocs/public/symbols/svgicons/63-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata5882"/> - <rect id="rect4202" width="24" height="24" rx="4" fill="#009bff" stroke-linejoin="round" stroke-linecap="round"/> - <text x="4.675" y="22.21" id="text4204" sodipodi:linespacing="125%" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="125%" letter-spacing="0" font-size="27.5"><tspan sodipodi:role="line" id="tspan4206" x="4.675" y="22.21">?</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/64-1.svg b/htdocs/public/symbols/svgicons/64-1.svg deleted file mode 100755 index 85c78f3..0000000 --- a/htdocs/public/symbols/svgicons/64-1.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" viewBox="0 0 24 24" width="24" height="24" shape-rendering="geometricPrecision" fill-rule="evenodd" image-rendering="optimizeQuality" clip-rule="evenodd"> - <defs id="defs4841"> - <linearGradient inkscape:collect="always" id="linearGradient4142"> - <stop id="stop4144" stop-color="#0000ff"/> - <stop offset="1" id="stop4146" stop-color="#0000ff" stop-opacity="0"/> - </linearGradient> - <radialGradient inkscape:collect="always" xlink:href="#linearGradient4142" id="radialGradient4150" cx="1070" cy="1447.5" r="1070" gradientTransform="matrix(2.6317987,2.4065414e-8,-2.5363448e-8,2.773752,-1746.0246,-2567.5061)" gradientUnits="userSpaceOnUse"/> - </defs> - <g id="Layer_x0020_1" transform="matrix(0,-0.00690846,0.00690846,0,2,19.392055)" fill="url(#radialGradient4150)"> - <path d="M 1633.2577,2021.4393 C 1198.0447,2456.6523 412.73502,2851.9645 0,2895 561,2620 790.30306,2335.9546 752.30306,2138.9546 268.30306,1952.9546 123,1408 424,988 797,402 1369,73 2140,0 c -564,276 -825,512 -785,710 305,128 505,483 505,739 2.3564,226.1977 -119.0281,482.4327 -226.7423,572.4393 z" id="path4835" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccc"/> - </g> - <metadata id="metadata4837"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/64-2.svg b/htdocs/public/symbols/svgicons/64-2.svg deleted file mode 100755 index 6ee944d..0000000 --- a/htdocs/public/symbols/svgicons/64-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" viewBox="0 0 24 24" width="24" height="24" shape-rendering="geometricPrecision" fill-rule="evenodd" image-rendering="optimizeQuality" clip-rule="evenodd"> - <g id="Layer_x0020_1" transform="matrix(0,-0.00829019,0.00829019,0,-5.0025e-5,20.870503)"> - <path d="M 1633.2577,2021.4393 C 1198.0447,2456.6523 412.73502,2851.9645 0,2895 561,2620 790.30306,2335.9546 752.30306,2138.9546 268.30306,1952.9546 123,1408 424,988 797,402 1369,73 2140,0 c -564,276 -825,512 -785,710 305,128 505,483 505,739 2.3564,226.1977 -119.0281,482.4327 -226.7423,572.4393 z" id="path4835" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccc" fill="#0000ff"/> - </g> - <metadata id="metadata4837"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/65-1.svg b/htdocs/public/symbols/svgicons/65-1.svg deleted file mode 100755 index 1a2ac56..0000000 --- a/htdocs/public/symbols/svgicons/65-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4228"/> - <rect id="rect4772" width="24" height="24" rx="2" fill="#009cff" stroke-linejoin="round" stroke-linecap="round"/> - <text x="0.27" y="20.777" id="text3010" sodipodi:linespacing="125%" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="28" fill="#ffffff" font-family="Sans"><tspan sodipodi:role="line" id="tspan3012" x="0.27" y="20.777" dx="-0.5" dy="-0.5">+</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/65-2.svg b/htdocs/public/symbols/svgicons/65-2.svg deleted file mode 100755 index 606c060..0000000 --- a/htdocs/public/symbols/svgicons/65-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4908"/> - <rect id="rect5452" width="21.493" height="21.493" x="1.254" y="1.254" fill="#ffffff" stroke="#000000" stroke-linecap="round" stroke-width="2.507"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/66-1.svg b/htdocs/public/symbols/svgicons/66-1.svg deleted file mode 100755 index 99fcda5..0000000 --- a/htdocs/public/symbols/svgicons/66-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata5545"/> - <rect id="rect4134" width="23.02" height="17.208" x="0.489" y="3.396" rx="3" fill="#cccccc" stroke="#4d4d4d" stroke-linejoin="round" stroke-linecap="round"/> - <text x="2.45" y="14.252" id="text6089" sodipodi:linespacing="125%" transform="scale(0.82782149,1.2079899)" font-family="sans-serif" fill="#330098" word-spacing="0" line-height="125%" letter-spacing="0" font-size="11.864"><tspan sodipodi:role="line" id="tspan6091" x="2.45" y="14.252">BBS</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/66-2.svg b/htdocs/public/symbols/svgicons/66-2.svg deleted file mode 100755 index b2f1694..0000000 --- a/htdocs/public/symbols/svgicons/66-2.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3937"/> - <rect id="rect3943" width="23" height="23" x="0.499" y="0.499" rx="1.917" fill="#cccccc" stroke="#000000" stroke-width="0.998"/> - <g id="g3337" transform="translate(0,-0.3249971)"> - <text transform="scale(0.82585399,1.2108678)" sodipodi:linespacing="0%" id="text4459-9" y="9.17" x="14.324" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="6.875"><tspan y="9.17" x="14.324" id="tspan4461-6" sodipodi:role="line">BLOW</tspan> - </text> - <text transform="scale(0.82585399,1.2108678)" sodipodi:linespacing="0%" id="text4459" y="16.193" x="14.386" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="0" font-size="6.875"><tspan y="16.193" x="14.386" id="tspan4461" sodipodi:role="line">SNOW</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/67-1.svg b/htdocs/public/symbols/svgicons/67-1.svg deleted file mode 100755 index f87b4e0..0000000 --- a/htdocs/public/symbols/svgicons/67-1.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata13"/> - <g id="g3197" transform="matrix(0.04229602,0,0,0.04229602,-2.7000875,-7.7034529)"> - <path d="m 377.53,372.82 c 20.564,0 37.18,-16.714 37.18,-37.278 0,-20.564 -16.617,-37.229 -37.18,-37.229 -20.564,0 -37.229,16.665 -37.229,37.229 0,20.564 16.665,37.278 37.229,37.278" id="path7088" inkscape:connector-curvature="0"/> - <path d="m 240.16,576.32 c 8.723,0 17.104,-1.998 24.609,-5.36 7.699,-3.557 16.421,-5.653 25.485,-5.653 9.015,0 17.737,2.096 25.388,5.653 7.553,3.362 15.983,5.311 24.803,5.311 8.771,0 17.152,-1.949 24.705,-5.311 7.651,-3.557 16.373,-5.653 25.437,-5.653 9.063,0 17.688,2.096 25.485,5.653 7.456,3.362 15.934,5.311 24.657,5.311 8.771,0 17.25,-1.949 24.706,-5.311 7.748,-3.557 16.421,-5.653 25.534,-5.653 9.014,0 17.688,2.096 25.387,5.653 7.553,3.362 15.984,5.311 24.755,5.311 8.82,0 17.201,-1.949 24.754,-5.311 7.651,-3.557 16.373,-5.653 25.388,-5.653 7.748,0 15.301,1.462 22.074,4.142 11.062,-12.084 17.932,-28.165 17.932,-45.805 0,-37.473 -30.358,-67.831 -67.83,-67.831 l -7.602,0.78 c -8.333,33.867 -42.151,35.28 -42.151,35.28 l -154.86,-0.049 -12.962,-7.602 31.235,-52.383 34.159,19.735 c 20.466,13.254 31.138,-5.36 31.138,-5.36 l 34.256,-55.844 c 14.863,-24.267 -16.714,-43.71 -31.527,-19.345 l -23.975,39.129 -57.013,-31.527 c -39.471,-22.026 -56.233,14.472 -56.233,14.472 l -44.782,76.699 c -7.602,15.935 -0.82898,22.806 -0.82898,22.806 l -22.123,-0.049 v 83.765 z" id="path7090" inkscape:connector-curvature="0"/> - <path d="m 620.45,633.38 c -12.136,0 -23.802,-1.949 -34.117,-5.311 -10.721,-3.606 -22.723,-5.702 -35.331,-5.702 -12.474,0 -24.542,2.096 -35.129,5.702 -10.451,3.362 -22.048,5.311 -34.252,5.311 -12.136,0 -23.802,-1.949 -34.253,-5.311 -10.653,-3.606 -22.655,-5.702 -35.128,-5.702 -12.609,0 -24.611,2.096 -35.331,5.702 -10.317,3.362 -22.049,5.311 -34.185,5.311 -12.07,0 -23.801,-1.949 -34.117,-5.311 -10.788,-3.606 -22.723,-5.702 -35.263,-5.702 -12.542,0 -24.61,2.096 -35.197,5.702 -10.451,3.362 -22.048,5.311 -34.184,5.311 -12.204,0 -23.868,-1.949 -34.319,-5.311 -10.586,-3.606 -22.655,-5.702 -35.129,-5.702 -12.542,0 -24.61,2.096 -35.263,5.702 -10.384,3.362 -22.049,5.311 -34.185,5.311 v -37.034 c 12.136,0 23.801,-1.998 34.185,-5.36 10.653,-3.557 22.721,-5.653 35.263,-5.653 12.474,0 24.542,2.096 35.129,5.653 10.451,3.362 22.115,5.36 34.319,5.36 12.136,0 23.733,-1.998 34.184,-5.36 10.586,-3.557 22.655,-5.653 35.197,-5.653 12.54,0 24.474,2.096 35.263,5.653 10.317,3.362 22.048,5.36 34.117,5.36 12.136,0 23.868,-1.998 34.185,-5.36 10.721,-3.557 22.721,-5.653 35.331,-5.653 12.472,0 24.474,2.096 35.128,5.653 10.451,3.362 22.117,5.36 34.253,5.36 12.204,0 23.801,-1.998 34.252,-5.36 10.586,-3.557 22.655,-5.653 35.129,-5.653 12.608,0 24.61,2.096 35.331,5.653 10.315,3.362 21.981,5.36 34.117,5.36 v 37.034 z" id="path7092" inkscape:connector-curvature="0" fill="#000080"/> - <path d="m 430.75,575.73 c -8.1834,0 -16.046,-1.998 -23.087,-5.36 -7.2227,-3.557 -15.405,-5.653 -23.908,-5.653 -8.4573,0 -16.64,2.096 -23.817,5.653 -7.0857,3.362 -14.994,5.311 -23.269,5.311 -8.2284,0 -16.091,-1.949 -23.177,-5.311 -7.1776,-3.557 -15.36,-5.653 -23.863,-5.653 -8.5024,0 -16.594,2.096 -23.908,5.653 -6.9947,3.362 -14.948,5.311 -23.132,5.311 -8.2284,0 -16.183,-1.949 -23.178,-5.311 -7.2687,-3.557 -15.405,-5.653 -23.954,-5.653 -8.4563,0 -16.594,2.096 -23.816,5.653 -7.0857,3.362 -14.995,5.311 -23.224,5.311 -8.2744,0 -16.137,-1.949 -23.223,-5.311 -7.1777,-3.557 -15.36,-5.653 -23.817,-5.653 -7.2687,0 -14.354,1.462 -20.708,4.142 -10.378,-12.084 -16.823,-28.165 -16.823,-45.805 0,-37.473 28.48,-67.831 63.634,-67.831 l 7.1317,0.78 c 7.8174,33.867 39.543,35.28 39.543,35.28 l 145.28,-0.049 12.16,-7.602 -9.3026,41.617 -22.046,-44.265 c -19.2,13.254 54.788,53.64 4.7884,28.64 l 47.863,-8.844 c -21.944,-5.267 83.68,46.29 38.577,43.655 l -63.508,-15.871 -2.5141,10.473 c 37.029,-22.026 -1.2459,86.472 37.754,-18.528 l 46.012,-5.301 c 7.1317,15.935 0.77768,22.806 0.77768,22.806 l 20.754,-46.049 v 83.765 z" id="svg_1" inkscape:connector-curvature="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/67-2.svg b/htdocs/public/symbols/svgicons/67-2.svg deleted file mode 100755 index 99db17e..0000000 --- a/htdocs/public/symbols/svgicons/67-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3069"/> - <path sodipodi:type="arc" id="path3073" sodipodi:cx="-3.5643563" sodipodi:cy="7.0759077" sodipodi:rx="6.1254125" sodipodi:ry="6.1254125" d="m 2.5610561,7.0759077 a 6.1254125,6.1254125 0 1 1 -12.2508249,0 6.1254125,6.1254125 0 1 1 12.2508249,0 z" transform="matrix(1.3587811,0,0,1.3587811,16.84318,2.3853903)" fill="none" stroke="#ff5b00" stroke-width="3.925"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/68-1.svg b/htdocs/public/symbols/svgicons/68-1.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/68-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/68-2.svg b/htdocs/public/symbols/svgicons/68-2.svg deleted file mode 100755 index a89d4bc..0000000 --- a/htdocs/public/symbols/svgicons/68-2.svg +++ /dev/null @@ -1,65 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="68-2.svg"> - <defs - id="defs14" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview12" - showgrid="false" - inkscape:zoom="8" - inkscape:cx="20.200219" - inkscape:cy="-2.8996853" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata3937"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <rect - id="rect3943" - width="23" - height="23" - x="0.5" - y="0.5" - rx="3.1373389" - style="fill:#217867;stroke:#ffffff;stroke-width:0;stroke-miterlimit:4;stroke-dasharray:none" /> - <rect - id="rect3943-9" - width="20.02396" - height="20.02396" - x="1.9880199" - y="1.9880199" - rx="2.7313888" - style="fill:#217867;stroke:#ffffff;stroke-width:0.97604084;stroke-miterlimit:4;stroke-dasharray:none" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/69-1.svg b/htdocs/public/symbols/svgicons/69-1.svg deleted file mode 100755 index bf919f4..0000000 --- a/htdocs/public/symbols/svgicons/69-1.svg +++ /dev/null @@ -1,36 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24" version="1.1"> - <metadata id="metadata57"/> - <defs id="defs55"> - <filter filterUnits="objectBoundingBox" id="AI_Shadow_1"> - <feGaussianBlur id="feGaussianBlur6" stdDeviation="4" in="SourceAlpha" result="blur"/> - <feOffset id="feOffset8" dx="4" in="blur" dy="4" result="offsetBlurredAlpha"/> - <feMerge id="feMerge10"> - <feMergeNode id="feMergeNode12" in="offsetBlurredAlpha"/> - <feMergeNode id="feMergeNode14" in="SourceGraphic"/> - </feMerge> - </filter> - <filter id="AI_GaussianBlur_4"> - <feGaussianBlur id="feGaussianBlur17" stdDeviation="4"/> - </filter> - <linearGradient gradientTransform="translate(279.44081,-282.1023)" y2="456.16" x2="432.1" y1="44.829" x1="71.43" gradientUnits="userSpaceOnUse" id="SVGID_1_"> - <stop id="stop26" stop-color="#ffffff"/> - <stop id="stop28" offset="1" stop-color="#e6e6e6"/> - </linearGradient> - <linearGradient y2="198.65" x2="250.74" y1="338.65" x1="251.45" gradientUnits="userSpaceOnUse" id="SVGID_2_"> - <stop id="stop35" stop-color="#ffffff"/> - <stop id="stop37" offset="1" stop-color="#4279cb"/> - </linearGradient> - </defs> - <g transform="matrix(0.08175062,0,0,0.08175062,-8.5298643,-6.8353428)" id="g4185"> - <path d="m 389.3,270.7 c 0,0 -62.5,86.1 -138.8,86.1 -76.3,0 -137.6,-86.1 -137.6,-86.1 0,0 61.3,-88.1 137.6,-88.1 76.3,0 138.8,88.1 138.8,88.1 z" id="path32" fill="#ffffff" stroke="#000000" stroke-width="14" stroke-miterlimit="10"/> - <circle cx="251.1" cy="269.7" r="70" id="circle39" fill="url(#SVGID_2_)" stroke="#000000" stroke-width="8" stroke-miterlimit="10"/> - <path d="m 251.1,298.7 c -16,0 -29,-13 -29,-29 0,-16 13,-29 29,-29 16,0 29,13 29,29 0,16 -13,29 -29,29 z" id="path41"/> - <g id="g43" filter="url(#AI_GaussianBlur_4)"> - <circle cx="225.3" cy="248.3" r="24.7" id="circle45" fill="#ffffff"/> - </g> - <line x1="250" y1="97" x2="250" y2="171" id="line47" fill="none" stroke="#000000" stroke-width="14" stroke-miterlimit="10"/> - <line x1="363.9" y1="130.6" x2="320.4" y2="190.5" id="line49" fill="none" stroke="#000000" stroke-width="14" stroke-miterlimit="10"/> - <line x1="136.6" y1="132" x2="180.1" y2="191.9" id="line51" fill="none" stroke="#000000" stroke-width="14" stroke-miterlimit="10"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/69-2.svg b/htdocs/public/symbols/svgicons/69-2.svg deleted file mode 100755 index 10611c9..0000000 --- a/htdocs/public/symbols/svgicons/69-2.svg +++ /dev/null @@ -1,114 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - height="24" - width="24" - version="1.0" - viewBox="-0.7 -0.596 24.478088 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="69-2.svg"> - <defs - id="defs13" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="861" - inkscape:window-height="534" - id="namedview11" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-0.76271186" - inkscape:cy="12" - inkscape:window-x="317" - inkscape:window-y="158" - inkscape:window-maximized="0" - inkscape:current-layer="svg2" /> - <metadata - id="metadata1952"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g3341" - transform="matrix(1,0,0,0.97809776,0.29016846,0.82007813)"> - <path - style="fill:#4d4d4d" - sodipodi:open="true" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - d="M 0.0690856,12.101988 A 4.3146133,3.6947634 0 0 1 4.3826636,8.4072245 4.3146133,3.6947634 0 0 1 8.6983118,12.100215 4.3146133,3.6947634 0 0 1 4.3868053,15.79675 4.3146133,3.6947634 0 0 1 0.06908759,12.105535" - sodipodi:ry="3.6947634" - sodipodi:rx="4.3146133" - sodipodi:cy="12.101988" - sodipodi:cx="4.3836989" - id="path3064" - sodipodi:type="arc" /> - <path - style="fill:#4d4d4d" - sodipodi:open="true" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - d="M -0.52747869,17.618847 A 6.8988371,5.2170744 0 0 1 6.369703,12.401773 6.8988371,5.2170744 0 0 1 13.270195,17.616343 6.8988371,5.2170744 0 0 1 6.3763252,22.83592 6.8988371,5.2170744 0 0 1 -0.52747552,17.623855" - sodipodi:ry="5.2170744" - sodipodi:rx="6.8988371" - sodipodi:cy="17.618847" - sodipodi:cx="6.3713584" - id="path3070" - sodipodi:type="arc" /> - <path - style="fill:#4d4d4d" - sodipodi:open="true" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - d="M 0.56472778,4.8770544 A 5.8142023,5.4726467 0 0 1 6.377535,-0.59559186 5.8142023,5.4726467 0 0 1 12.193132,4.8744281 5.8142023,5.4726467 0 0 1 6.383116,10.3497 5.8142023,5.4726467 0 0 1 0.56473046,4.8823082" - sodipodi:ry="5.4726467" - sodipodi:rx="5.8142023" - sodipodi:cy="4.8770547" - sodipodi:cx="6.3789301" - id="path3074" - sodipodi:type="arc" /> - <path - style="fill:#4d4d4d" - sodipodi:open="true" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - d="M 8.2794294,16.240707 A 7.2528496,6.6843758 0 0 1 15.530539,9.5563318 7.2528496,6.6843758 0 0 1 22.785128,16.237499 7.2528496,6.6843758 0 0 1 15.537501,22.925081 7.2528496,6.6843758 0 0 1 8.2794328,16.247124" - sodipodi:ry="6.6843758" - sodipodi:rx="7.2528496" - sodipodi:cy="16.240707" - sodipodi:cx="15.532279" - id="path3076" - sodipodi:type="arc" /> - <path - style="fill:#4d4d4d" - sodipodi:open="true" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - d="M 5.8055601,7.2356263 A 8.6098347,7.9886446 0 0 1 14.413329,-0.75301767 8.6098347,7.9886446 0 0 1 23.025228,7.2317925 8.6098347,7.9886446 0 0 1 14.421593,15.224269 8.6098347,7.9886446 0 0 1 5.8055641,7.2432954" - sodipodi:ry="7.9886446" - sodipodi:rx="8.6098347" - sodipodi:cy="7.2356267" - sodipodi:cx="14.415395" - id="path3084" - sodipodi:type="arc" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/70-1.svg b/htdocs/public/symbols/svgicons/70-1.svg deleted file mode 100755 index f4d71b3..0000000 --- a/htdocs/public/symbols/svgicons/70-1.svg +++ /dev/null @@ -1,14 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24"> - <metadata id="metadata18"/> - <path d="m 1.2088042,11.331373 -0.136115,0.168782 -0.13067037,0.179672 -0.11978117,0.179672 -0.11978116,0.185116 -0.1034474,0.190561 -0.10344739,0.196006 -0.0871136,0.20145 -0.0871136,0.20145 -0.0707798,0.212339 -0.0653352,0.21234 -0.054446,0.217784 -0.04900139,0.217784 -0.01633382,0.114336 -0.01633381,0.114337 -0.0163338,0.108892 -0.0108892,0.114336 -0.0108892,0.114337 -0.00544459,0.119781 -0.005444604,0.114337 0,0.114336 c 0,2.803969 2.286731704,5.090701 5.079811304,5.090701 2.2812869,0 4.2195644,-1.513599 4.8565822,-3.593436 l 0,0 0,0 5.9346134,0 0,0 0,0 c 0.234118,2.030836 1.960056,3.615214 4.050782,3.615214 2.24862,0 4.078005,-1.83483 4.078005,-4.083449 0,-1.056252 -0.397456,-2.019947 -1.061697,-2.749523 C 22.878309,12.556407 22.73675,12.022837 22.410074,11.63627 21.898282,11.021031 20.716803,10.68891 19.704108,10.3459 18.881973,10.068226 16.295789,9.5019872 14.466403,9.2515358 14.43918,8.8377462 14.341178,7.6344898 13.878387,6.5129023 13.36115,5.2660891 13.078031,4.9503024 13.197812,4.5855143 13.312148,4.220726 12.931026,4.3840642 12.843913,4.4820667 12.762244,4.5855143 12.566238,4.8522996 12.811245,5.3477581 13.050808,5.8268828 13.83483,7.5691546 13.938277,9.1862006 13.758605,9.1698667 13.600712,9.1535328 13.453708,9.1480882 13.399262,8.8377462 13.328482,8.5001811 13.301259,8.3477323 13.252258,8.0918361 12.707798,6.4257888 12.397456,5.7234354 12.092558,5.0265267 12.13067,5.1245295 12.13067,5.1245295 c 0,0 -0.163337,-0.6315735 -0.969139,-0.6696855 C 10.355731,4.4221762 9.1415853,4.3132844 8.3248954,4.2860612 7.5136501,4.258838 5.6951541,4.3078397 4.8675749,4.3895088 4.0508851,4.4820667 4.0889972,4.4439547 3.9365484,4.71074 3.7786551,4.9666361 3.7786551,4.9666361 3.7786551,4.9666361 c 0,0 -0.4410126,1.0671415 -0.6860196,1.83483 C 2.8530732,7.5691546 2.5753986,8.7669664 2.5481756,8.9684166 2.5155082,9.1589774 2.5862876,9.2950924 2.4229499,9.3658722 2.2541673,9.4420967 1.3666976,9.7959957 0.82768225,10.198896 0.29411153,10.596352 0.24511014,10.61813 0.23422094,10.667132 c -0.0217784,0.049 -0.0707798,0.098 0.12522578,0.179672 0.1796718,0.07078 0.52268153,0.245006 0.84935748,0.484569 l 0,0 0,0 0,0 0,0 z" id="path18" inkscape:connector-curvature="0" stroke-width="0" stroke-miterlimit="10.433"/> - <path d="m 14.482737,12.12084 0,-0.05445 0,-0.05989 0,-0.06534 0,-0.07078 0,-0.07622 0,-0.08167 0.0054,-0.08711 0,-0.08711 0,-0.098 0,-0.09256 0,-0.103447 0,-0.098 0,-0.206895 0,-0.212339 0,-0.206895 0,-0.103447 0,-0.098 0,-0.098 0,-0.098 0,-0.09256 -0.0054,-0.087114 0,-0.081669 0,-0.081669 0,-0.076224 0,-0.07078 0,-0.059891 0,-0.05989 -0.0054,-0.049001 0,-0.038112 c 1.252257,0.1633381 3.288537,0.4954586 5.194147,1.072586 0.914693,0.277675 1.70416,0.539015 2.166951,0.854802 0.653352,0.451902 0.827579,1.007251 0.892914,1.328483 -0.735021,-0.702354 -1.720493,-1.132477 -2.809413,-1.132477 -1.21959,0 -2.319399,0.539015 -3.070754,1.393817 l 0,0 0,0 -2.368401,-0.822134 0,0 0,0 z" id="path12" inkscape:connector-curvature="0" fill="#00ff00" stroke="#000000" stroke-width="0" stroke-miterlimit="10.433"/> - <path d="m 13.938277,9.354983 0,0.00544 0.0054,0 0,0.00544 0,0 0,0.00544 0,0 0,0.00544 0,0 0,0.00544 0,0.00544 0,0 0,0.00544 0,0 0,0.00544 0,0.00544 0,0 c 0.02722,1.274036 -0.0054,2.16695 -0.02722,2.520849 l 0,0 0,0 -0.41379,-0.147004 0,0 0,0 c 0.0054,-0.381122 0.01089,-1.9056095 0.01089,-2.1397275 0,-0.076224 -0.01089,-0.1960055 -0.03267,-0.3321205 0.114337,0.010889 0.266785,0.027223 0.457346,0.049001 l 0,0 0,0 0,0 0,0 z" id="path14" inkscape:connector-curvature="0" fill="#00ff00" stroke="#000000" stroke-width="0" stroke-miterlimit="10.433"/> - <path d="m 12.749933,10.66625 0,0 0,0 -0.02208,0.310468 -2.237731,0 0,0 0,0 C 9.4917681,9.7076835 7.6226321,9.0607444 6.3049492,8.8076023 l 0,0 0,0 0.8439126,-3.3275478 0,0 0,0 c 0,0 2.2159522,0.038643 3.1796462,0.098753 0.95825,0.055817 1.029029,0.055817 1.127032,0.077285 0.098,0.021468 0.223229,0.055817 0.326676,0.2447359 0.098,0.1846251 0.73725,1.5547825 0.971367,2.7398188 0,0 -0.01779,2.0293468 -0.0037,2.0256028 z" id="path16" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccccccscccc" fill="#b3b3b3" stroke="#000000" stroke-width="0" stroke-miterlimit="10.433"/> - <path d="m 19.921892,17.875781 -0.114337,-0.0054 -0.114336,-0.0054 -0.108892,-0.01633 -0.108892,-0.02178 -0.108892,-0.02178 -0.108892,-0.03267 -0.103448,-0.03267 -0.098,-0.04356 -0.103447,-0.04356 -0.09256,-0.049 -0.09256,-0.05445 -0.09256,-0.05989 -0.08711,-0.05989 -0.08711,-0.06533 -0.08167,-0.07078 -0.07623,-0.07622 -0.07622,-0.07622 -0.06534,-0.08167 -0.07078,-0.08711 -0.05989,-0.08711 -0.05989,-0.09256 -0.05445,-0.09256 -0.049,-0.098 -0.04356,-0.098 -0.03811,-0.098 -0.03811,-0.108892 -0.02722,-0.103447 -0.02722,-0.108892 -0.02178,-0.108892 -0.01089,-0.114336 -0.01089,-0.108893 0,-0.114336 c 0,-1.235924 1.001806,-2.243175 2.232285,-2.243175 1.23048,0 2.237731,1.007251 2.237731,2.243175 0,1.230479 -1.007251,2.23773 -2.237731,2.23773 l 0,0 0,0 0,0 z" id="path20" inkscape:connector-curvature="0" stroke-width="0" stroke-miterlimit="10.433" fill="#ffff00" stroke="#000000"/> - <path d="m 5.0799144,17.418435 -0.1415596,0 -0.1415597,-0.01089 -0.1415596,-0.02178 -0.136115,-0.02178 -0.1361149,-0.03267 -0.136115,-0.03811 -0.1306704,-0.04356 -0.1252258,-0.049 -0.1252257,-0.05989 -0.1197812,-0.05989 -0.1197812,-0.07078 -0.108892,-0.07078 -0.1143366,-0.07622 -0.1034474,-0.08711 -0.1034474,-0.08711 -0.098003,-0.09256 -0.092558,-0.098 -0.087114,-0.103447 -0.081669,-0.103447 -0.081669,-0.108892 -0.07078,-0.114337 -0.07078,-0.119781 -0.05989,-0.119782 -0.054446,-0.125225 -0.054446,-0.130671 -0.043557,-0.13067 -0.038112,-0.13067 -0.027223,-0.136115 -0.027223,-0.136115 -0.016334,-0.14156 -0.010889,-0.141559 -0.00544,-0.147005 c 0,-1.546266 1.2577024,-2.803968 2.8039689,-2.803968 1.546266,0 2.8094133,1.257702 2.8094133,2.803968 0,1.551711 -1.2631473,2.809414 -2.8094133,2.809414 l 0,0 0,0 0,0 z" id="path22" inkscape:connector-curvature="0" stroke-width="0" stroke-miterlimit="10.433" fill="#ffff00" stroke="#000000"/> - <path d="m 9.0708055,11.026475 -0.00544,-0.0054 -0.010889,-0.01633 -0.016334,-0.02178 -0.027223,-0.03267 -0.038112,-0.03811 -0.038112,-0.049 -0.054445,-0.049 -0.054446,-0.05989 -0.065335,-0.06533 -0.07078,-0.06533 -0.081669,-0.07623 -0.092558,-0.07622 -0.092558,-0.07622 L 8.3194508,10.313232 8.2051143,10.231564 8.0853332,10.14445 7.9601075,10.062781 7.8239925,9.981112 7.6824329,9.8939987 7.529984,9.8123296 7.3720905,9.7361052 7.2033082,9.6598807 7.0290808,9.5836563 6.8439645,9.5128765 6.6534036,9.4529859 6.4573981,9.3876508 6.2505033,9.3332049 6.0381639,9.2896478 5.8149352,9.2460907 5.5808172,9.2134229 5.3412551,9.1861997 5.0962483,9.1698658 C 2.4175053,9.0391964 0.70790109,10.443903 0.46833871,10.705244 l 0,0 0,0 0.45190176,0.239562 0,0 0,0 C 0.942019,10.955695 2.1724983,9.5292104 4.7913505,9.4529859 6.8112967,9.39854 8.3357847,10.384012 8.9728029,11.021031 c 0.098003,0.103447 0.098003,0.0054 0.098003,0.0054 l 0,0 0,0 0,0 z" id="path24" inkscape:connector-curvature="0" fill="#00ff00" stroke="#000000" stroke-width="0" stroke-miterlimit="10.433"/> - <path d="m 19.921892,16.460185 -0.04356,0 -0.04356,0 -0.03811,-0.0054 -0.04356,-0.01089 -0.03811,-0.0054 -0.03811,-0.01089 -0.03811,-0.01633 -0.03811,-0.01633 -0.03811,-0.01633 -0.03811,-0.01633 -0.03267,-0.02178 -0.03267,-0.02178 -0.03267,-0.02178 -0.03267,-0.02178 -0.03267,-0.02722 -0.02722,-0.02722 -0.02722,-0.03267 -0.02722,-0.02722 -0.02178,-0.03267 -0.02722,-0.03267 -0.01633,-0.03267 -0.02178,-0.03267 -0.02178,-0.03811 -0.01633,-0.03811 -0.01089,-0.03267 -0.01633,-0.04356 -0.01089,-0.03811 -0.0054,-0.03811 -0.01089,-0.04356 -0.0054,-0.03811 0,-0.04356 -0.0054,-0.03811 c 0,-0.46279 0.375677,-0.833023 0.833024,-0.833023 0.457346,0 0.827579,0.370233 0.827579,0.833023 0,0.451902 -0.370233,0.822135 -0.827579,0.822135 l 0,0 0,0 0,0 z" id="path28" inkscape:connector-curvature="0" stroke="#000000" stroke-width="0" stroke-miterlimit="10.433"/> - <path d="m 5.0799144,15.442045 -0.043557,-0.0054 -0.038112,0 -0.043557,-0.0054 -0.038113,-0.01089 -0.043557,-0.0054 -0.038113,-0.01089 -0.038112,-0.01633 -0.038112,-0.01089 -0.038113,-0.01633 -0.032668,-0.02178 -0.032668,-0.01633 -0.038112,-0.02178 -0.032668,-0.02722 -0.027223,-0.02178 -0.032668,-0.02722 -0.027223,-0.02722 -0.027223,-0.02722 -0.027223,-0.03267 -0.021779,-0.03267 -0.027223,-0.03267 -0.021779,-0.03267 -0.016334,-0.03267 -0.021778,-0.03811 -0.016334,-0.03811 -0.010889,-0.03267 -0.016334,-0.03811 -0.010889,-0.04356 -0.010889,-0.03811 -0.00544,-0.04356 -0.00544,-0.03811 0,-0.04356 -0.00544,-0.04356 c 0,-0.457346 0.3702329,-0.827579 0.8275791,-0.827579 0.4627909,0 0.8330238,0.370233 0.8330238,0.827579 0,0.457347 -0.3702329,0.833024 -0.8330238,0.833024 l 0,0 0,0 0,0 z" id="path30" inkscape:connector-curvature="0" stroke="#000000" stroke-width="0" stroke-miterlimit="10.433"/> - <path d="m 6.3669949,5.3998846 -0.8971328,3.4514683 0,0 0,0 c 0,0 -0.8205483,-0.087906 -2.1717178,0.064773 0,0 -0.1969315,0 -0.1586393,-0.2035717 0.038291,-0.203572 0.3282193,-1.9107996 1.0995347,-3.067458 0,0 0.043763,-0.1156657 0.3555709,-0.1526789 0.3063379,-0.02776 1.0885941,-0.078652 1.7723843,-0.092533 l 0,0 0,0 0,0 z" id="path26" inkscape:connector-curvature="0" fill="#b3b3b3" stroke="#000000" stroke-width="0.185" stroke-miterlimit="10.433"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/70-2.svg b/htdocs/public/symbols/svgicons/70-2.svg deleted file mode 100755 index 668c42e..0000000 --- a/htdocs/public/symbols/svgicons/70-2.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3937"/> - <rect id="rect3943" width="23" height="23" x="0.499" y="0.499" rx="1.917" fill="#cccccc" stroke="#000000" stroke-width="0.998"/> - <g id="g3338" transform="translate(0,-0.57361507)"> - <text transform="scale(0.99533893,1.0046829)" sodipodi:linespacing="0%" id="text4453" y="10.894" x="11.849" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="-0.184" font-size="7.5"><tspan y="10.894" x="11.757" id="tspan4455" sodipodi:role="line">FRZ</tspan><tspan id="tspan4457" y="10.894" x="11.849" sodipodi:role="line"/> - </text> - <text transform="scale(0.89906163,1.1122708)" sodipodi:linespacing="0%" id="text4459" y="17.708" x="13.351" font-family="Sans" text-anchor="middle" text-align="center" word-spacing="0" line-height="0%" font-weight="bold" letter-spacing="-0.252" font-size="7.5"><tspan y="17.708" x="13.225" id="tspan4461" sodipodi:role="line">RAIN</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/71-1.svg b/htdocs/public/symbols/svgicons/71-1.svg deleted file mode 100755 index 17f83b5..0000000 --- a/htdocs/public/symbols/svgicons/71-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3077"/> - <rect id="rect3923" width="22.31" height="22.31" x="0.845" y="0.845" fill="#cccccc" stroke="#000099" stroke-width="1.69"/> - <path d="M 8,0.66006602 8,22.943895" id="path3925" inkscape:connector-curvature="0" fill="none" stroke="#000099" stroke-width="1.6"/> - <path d="M 16,0.92409211 16,23.207922" id="path3925-1" inkscape:connector-curvature="0" fill="none" stroke="#000099" stroke-width="1.6"/> - <path d="M 23.075911,16 0.7920807,16" id="path3925-1-6" inkscape:connector-curvature="0" fill="none" stroke="#000099" stroke-width="1.6"/> - <path d="M 23.287129,8 1.0032995,8" id="path3925-1-6-5" inkscape:connector-curvature="0" fill="none" stroke="#000099" stroke-width="1.6"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/71-2.svg b/htdocs/public/symbols/svgicons/71-2.svg deleted file mode 100755 index 98e4c82..0000000 --- a/htdocs/public/symbols/svgicons/71-2.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata4038"/> - <path d="m 0.79240343,11.317982 22.41519257,0 -11.228467,11.939825 z" id="path3073-7" inkscape:connector-curvature="0" fill="#ffffff" stroke="#000000" stroke-linejoin="round" stroke-width="1.585"/> - <g transform="translate(-2e-7,0.4661015)" id="g4597"> - <path d="M 8.0847458,0.0847458 15.915254,7.915254" id="path4049" fill="none" stroke="#000000" stroke-linecap="round"/> - <path d="M 15.915255,0.084746 8.0847452,7.915254" id="path4049-3" fill="none" stroke="#000000" stroke-linecap="round"/> - <path d="m 7.5597724,3.898305 8.8804556,0" id="path4069" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="1.058"/> - <path d="M 12,0.0338985 12,7.966102" id="path4069-0" fill="none" stroke="#000000" stroke-linecap="round"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/72-1.svg b/htdocs/public/symbols/svgicons/72-1.svg deleted file mode 100755 index 4c83e26..0000000 --- a/htdocs/public/symbols/svgicons/72-1.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3012"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g3036" transform="translate(289.14285,1125.1429)"> - <rect rx="1.995" y="-96.78" x="-289.14" height="24" width="24" id="rect3284" fill="#0078ff" fill-rule="evenodd"/> - <g transform="matrix(0.0525723,0,0,0.0525723,-288.14285,-100.97938)" id="g1882" fill="#e2e3db"> - <g id="g1884"> - <path id="path1886" d="m 89.25,279.01 c 21.59,0 39.09,-17.5 39.09,-39.08 0,-21.59 -17.5,-39.09 -39.09,-39.09 -21.585,0 -39.085,17.5 -39.085,39.09 0,21.58 17.5,39.08 39.085,39.08 z" inkscape:connector-curvature="0"/> - <path id="path1888" d="M 89.25,239.93" inkscape:connector-curvature="0"/> - </g> - <path id="path1890" d="m 173.65,228.84 h 156.23 c 22.92,0 36.43,14.76 36.43,34.51 V 319.9 H 173.65 v -91.06 z" inkscape:connector-curvature="0"/> - <path id="path1892" d="M 131.12,249.08 V 283 H 71.054 c -29,0.1 -29.047,37.38 0,37.38 H 149.8 c 11.5,0 18.7,-9.28 18.7,-19.78 v -51.52 c 0,-28.22 -37.38,-28.22 -37.38,0 z" inkscape:connector-curvature="0"/> - <path id="path1894" d="M 42.702,196.26 C 42.702,165.48 0,165.48 0,196.26 v 246.81 h 43.651 v -63.74 h 332.12 v 63.26 h 42.7 V 251.96 c 0,-32.48 -43.17,-32.48 -43.17,0 v 76.09 h -332.6 l 0.002,-131.79 z" inkscape:connector-curvature="0"/> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/72-2.svg b/htdocs/public/symbols/svgicons/72-2.svg deleted file mode 100755 index 178ca43..0000000 --- a/htdocs/public/symbols/svgicons/72-2.svg +++ /dev/null @@ -1,63 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - version="1.1" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="72-2.svg"> - <defs - id="defs33" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1277" - inkscape:window-height="747" - id="namedview31" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="-16.830508" - inkscape:cy="12" - inkscape:window-x="212" - inkscape:window-y="418" - inkscape:window-maximized="0" - inkscape:current-layer="layer1" /> - <metadata - id="metadata3212"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1028.3622)"> - <rect - style="fill:#ff6600;fill-rule:evenodd;stroke:#000000;stroke-width:1.14321816px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" - id="rect3334" - width="21.856783" - height="21.856781" - x="1.0716085" - y="1029.4338" - ry="0" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/73-1.svg b/htdocs/public/symbols/svgicons/73-1.svg deleted file mode 100755 index 80b2d43..0000000 --- a/htdocs/public/symbols/svgicons/73-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata4744"/> - <path d="m 0,1.1917886 24,0 L 17.938828,24 6.104348,24 z" id="path4752" inkscape:connector-curvature="0" fill="#ffff00"/> - <text x="2.623" y="10.633" id="text5262" sodipodi:linespacing="125%" transform="scale(0.98919696,1.010921)" fill="#0e6600" font-family="Sans" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="9"><tspan sodipodi:role="line" id="tspan5264" x="2.623" y="10.633">TCP</tspan> - </text> - <text x="6.773" y="22.18" id="text5262-9" sodipodi:linespacing="125%" transform="scale(1.0579262,0.94524551)" fill="#0e6600" font-family="Sans" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="9"><tspan sodipodi:role="line" id="tspan5264-7" x="6.773" y="22.18">IP</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/73-2.svg b/htdocs/public/symbols/svgicons/73-2.svg deleted file mode 100755 index d1c7d5c..0000000 --- a/htdocs/public/symbols/svgicons/73-2.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata4038"/> - <path d="m 0.79240343,11.317982 22.41519257,0 -11.228467,11.939825 z" id="path3073-7" inkscape:connector-curvature="0" fill="#ffffff" stroke="#000000" stroke-linejoin="round" stroke-width="1.585"/> - <path sodipodi:type="arc" id="path3756" sodipodi:cx="-16.576271" sodipodi:cy="4.6779661" sodipodi:rx="4.1694913" sodipodi:ry="4.1694913" d="m -12.40678,4.6779661 a 4.1694913,4.1694913 0 1 1 -8.338982,0 4.1694913,4.1694913 0 1 1 8.338982,0 z" transform="matrix(1.2682927,0,0,1.2682927,33.023564,-0.64489491)" stroke-width="1.6"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/74-1.svg b/htdocs/public/symbols/svgicons/74-1.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/74-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/74-2.svg b/htdocs/public/symbols/svgicons/74-2.svg deleted file mode 100755 index 472fbb3..0000000 --- a/htdocs/public/symbols/svgicons/74-2.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g3612" transform="matrix(0.10386872,0,0,0.10386872,-31.118241,990.7961)" stroke="#d45500" stroke-width="6.657"> - <g id="g3620"> - <path inkscape:connector-curvature="0" d="m 480.641,428.896 c -0.08,0 -54.669,1.311 -54.669,1.311 l 43.71,-62.555 c 0.465,-0.676 1.057,-1.586 1.672,-2.652 l -79.879,0 -48.62,102.676 c -1.448,3.059 -1.251,6.643 0.524,9.525 1.776,2.881 4.89,4.67 8.273,4.75 l 42.475,1.021 -53.1,90.703 c -2.462,4.193 -1.66,9.635 1.91,12.945 1.936,1.793 4.455,2.779 7.092,2.779 2.898,-0.002 5.689,-1.221 7.649,-3.338 l 130.29,-140.363 c 2.735,-2.947 3.439,-7.246 1.788,-10.91 -1.617,-3.593 -5.19,-5.892 -9.115,-5.892 z" id="path3622" fill="#ffdc21"/> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/75-1.svg b/htdocs/public/symbols/svgicons/75-1.svg deleted file mode 100755 index c71b0bd..0000000 --- a/htdocs/public/symbols/svgicons/75-1.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3010"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g3032" transform="translate(614.85714,1462.2857)"> - <path sodipodi:nodetypes="cccsscsssscssc" id="rect2391" d="m -594.6091,-422.9064 -8.24601,-6.1895 -8.25007,6.19208 0,11.62589 c 0,0.2288 0.21777,0.41209 0.4872,0.41209 l 4.63803,0 0,-3.87965 c 0,-0.22837 0.21625,-0.41296 0.48619,-0.41296 l 5.30971,0 c 0.26994,0 0.4862,0.18459 0.4862,0.41296 l 0,3.87965 4.60256,0 c 0.26943,0 0.48619,-0.18329 0.48619,-0.41209 z" inkscape:connector-curvature="0" fill="#ff0000" stroke="#000000" stroke-width="1.865"/> - <path id="path2399-0" d="m -602.90242,-433.68061 -11.70152,8.78223 1.2326,1.17832 10.51643,-7.89324 10.51441,7.89324 1.23016,-1.17832 -11.69899,-8.78223 -0.0456,0.0447 -0.0476,-0.0447 z" inkscape:connector-curvature="0" stroke="#000000" stroke-linejoin="round" stroke-width="0.466"/> - <path id="rect2404" d="m -611.10488,-432.41644 2.96628,0 -0.0258,1.4891 -2.94045,2.25147 0,-3.74057 z" inkscape:connector-curvature="0"/> - <path transform="matrix(1.3354475,0,0,1.3354475,-572.93556,-438.8482)" d="m -19.929245,12.915094 c 0,1.367687 -1.108729,2.476416 -2.476416,2.476416 -1.367686,0 -2.476415,-1.108729 -2.476415,-2.476416 0,-1.367686 1.108729,-2.476415 2.476415,-2.476415 1.367687,0 2.476416,1.108729 2.476416,2.476415 z" sodipodi:ry="2.4764152" sodipodi:rx="2.4764152" sodipodi:cy="12.915094" sodipodi:cx="-22.405661" id="path3003" sodipodi:type="arc" fill="#ffffff" stroke="#000000" stroke-width="0.834"/> - <path inkscape:connector-curvature="0" id="path3793" d="m -602.85714,-422.35748 0,-1.58471" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="0.613"/> - <path inkscape:connector-curvature="0" id="path3793-6" d="m -603.60832,-421.60077 -0.99519,0" fill="none" stroke="#000000" stroke-linecap="round" stroke-width="0.562"/> - <path transform="matrix(16.977259,0,0,16.977259,51.188677,-608.51344)" d="m -38.480178,11.009591 c 0,0.02465 -0.01999,0.04464 -0.04464,0.04464 -0.02465,0 -0.04464,-0.01999 -0.04464,-0.04464 0,-0.02465 0.01999,-0.04464 0.04464,-0.04464 0.02465,0 0.04464,0.01999 0.04464,0.04464 z" sodipodi:ry="0.044640578" sodipodi:rx="0.044640578" sodipodi:cy="11.009591" sodipodi:cx="-38.524818" id="path3813" sodipodi:type="arc"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/75-2.svg b/htdocs/public/symbols/svgicons/75-2.svg deleted file mode 100755 index c84a79f..0000000 --- a/htdocs/public/symbols/svgicons/75-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24"> - <metadata id="metadata17"/> - <path sodipodi:nodetypes="cccc" d="m 8.97624,2.120499 6.94776,0 L 11.99999,8.890666 8.076,2.1205" id="path22355" inkscape:connector-curvature="0" fill="#ec1b24" fill-rule="evenodd"/> - <path d="M 11.999,15.922856 15.75,21.895125 24,2.104875 20.496008,2.136125 15.49975,13.955375 11.999,9.226959" id="path22353-6" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc" fill="#1a1a1a" fill-rule="evenodd"/> - <path d="M 12.001,15.922856 8.25,21.895125 0,2.104875 3.503992,2.136125 8.50025,13.955375 12.001,9.226959" id="path22353-6-1" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccc" fill="#1a1a1a" fill-rule="evenodd"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/76-1.svg b/htdocs/public/symbols/svgicons/76-1.svg deleted file mode 100755 index 5a32cf8..0000000 --- a/htdocs/public/symbols/svgicons/76-1.svg +++ /dev/null @@ -1,124 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <defs id="defs3"> - <linearGradient id="linearGradient2985" inkscape:collect="always"> - <stop id="stop2987" stop-color="#d8dfd6"/> - <stop id="stop2989" offset="1" stop-color="#d8dfd6" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient2752"> - <stop id="stop2754" stop-color="#9d9d9d"/> - <stop id="stop2756" offset="1" stop-color="#b9b9b9"/> - </linearGradient> - <linearGradient id="linearGradient2711"> - <stop id="stop2713" stop-color="#909090"/> - <stop id="stop2715" offset="1" stop-color="#bebebe" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient2701"> - <stop id="stop2703" stop-color="#585956"/> - <stop id="stop2705" offset="1" stop-color="#bbbeb8"/> - </linearGradient> - <linearGradient id="linearGradient2691"> - <stop id="stop2693" stop-color="#868686"/> - <stop id="stop2695" offset="1" stop-color="#e9e9e9"/> - </linearGradient> - <linearGradient id="linearGradient2683" inkscape:collect="always"> - <stop id="stop2685"/> - <stop id="stop2687" offset="1" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient2675"> - <stop id="stop2677" stop-color="#5b5b97"/> - <stop id="stop2679" offset="1" stop-color="#1b1b43"/> - </linearGradient> - <linearGradient id="linearGradient2667"> - <stop id="stop2669" stop-color="#ffffff"/> - <stop id="stop2671" offset="1" stop-color="#fcfcff" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient2635" inkscape:collect="always"> - <stop id="stop2637" stop-color="#f9fff5"/> - <stop id="stop2639" offset="1" stop-color="#f9fff5" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient2623"> - <stop id="stop2625" stop-color="#dfdfde"/> - <stop id="stop2627" offset="1" stop-color="#9d9f9a"/> - </linearGradient> - <linearGradient inkscape:collect="always" id="linearGradient2415"> - <stop id="stop2417" stop-color="#ffffff"/> - <stop offset="1" id="stop2419" stop-color="#ffffff" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient2379"> - <stop id="stop2381" stop-color="#1a4876"/> - <stop offset="1" id="stop2383" stop-color="#3f54a3" stop-opacity="0"/> - </linearGradient> - <linearGradient inkscape:collect="always" id="linearGradient2307"> - <stop id="stop2309" stop-color="#5a7aa4"/> - <stop offset="1" id="stop2311" stop-color="#5a7aa4" stop-opacity="0"/> - </linearGradient> - <linearGradient id="linearGradient2253"> - <stop id="stop2255" stop-color="#8f8f8f"/> - <stop offset="1" id="stop2257" stop-color="#494949"/> - </linearGradient> - <linearGradient id="linearGradient2245"> - <stop id="stop2247" stop-color="#dde1d9"/> - <stop offset="1" id="stop2249" stop-color="#cacdc6"/> - </linearGradient> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2245" id="linearGradient2251" gradientTransform="matrix(0.59023401,0,0,0.46235188,10.909502,10.860705)" x1="8.612" y1="7.229" x2="34.784" y2="33.34" gradientUnits="userSpaceOnUse"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2307" id="linearGradient2313" gradientTransform="matrix(1.208393,0,0,0.98441,-0.789284,-0.50338)" x1="16.852" y1="9.324" x2="24.419" y2="53.735" gradientUnits="userSpaceOnUse"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2415" id="linearGradient2334" gradientTransform="matrix(1.289166,0,0,0.922731,-0.789284,-0.50338)" x1="16.12" y1="10.842" x2="27.29" y2="39.03" gradientUnits="userSpaceOnUse"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2415" id="linearGradient2421" gradientTransform="matrix(0.57884895,0,0,0.47144572,12.280787,12.064496)" x1="17.698" y1="13" x2="34.975" y2="55.2" gradientUnits="userSpaceOnUse"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2379" id="linearGradient2445" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.02787,0,0,0.822296,1.523986,1.001198)" x1="21.356" y1="30.08" x2="19.995" y2="-1.322"/> - <radialGradient inkscape:collect="always" xlink:href="#linearGradient2683" id="radialGradient2460" gradientTransform="matrix(1.0060312,0,0,0.37133584,10.724808,4.4285903)" cx="12.576" cy="67.5" r="8.766" gradientUnits="userSpaceOnUse"/> - <radialGradient inkscape:collect="always" xlink:href="#linearGradient2683" id="radialGradient2464" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.0060312,0,0,0.37133584,10.724808,1.6055035)" cx="12.576" cy="67.5" r="8.766"/> - <linearGradient y2="92.57" x2="0" y1="84.03" gradientTransform="scale(1.983556,0.504145)" gradientUnits="userSpaceOnUse" id="linearGradient2653" xlink:href="#linearGradient2623" inkscape:collect="always"/> - <linearGradient y2="74.1" x2="8.649" y1="101.28" x1="13.629" gradientTransform="scale(2.143634,0.466498)" gradientUnits="userSpaceOnUse" id="linearGradient2655" xlink:href="#linearGradient2635" inkscape:collect="always"/> - <radialGradient r="8.766" cy="67.5" cx="12.576" gradientTransform="matrix(1.2720238,0,0,0.35026711,8.5110164,9.4523034)" gradientUnits="userSpaceOnUse" id="radialGradient2659" xlink:href="#linearGradient2683" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="26.729" x2="17.199" y1="1.654" x1="11.492" gradientTransform="matrix(0.64723455,0,0,0.4680418,12.066894,10.846521)" id="linearGradient2673" xlink:href="#linearGradient2667" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="8.867" x2="16.316" y1="32.622" x1="19.15" gradientTransform="matrix(0.61336354,0,0,0.49388778,12.13547,10.846521)" id="linearGradient2681" xlink:href="#linearGradient2675" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="162.45" x2="0" y1="171.29" gradientTransform="matrix(2.9803427,0,0,0.09156528,12.280787,11.187201)" id="linearGradient2689" xlink:href="#linearGradient2683" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="64.893" x2="12.13" y1="53.54" x1="12.207" gradientTransform="matrix(0.94884831,0,0,0.28760733,11.758393,11.542102)" id="linearGradient2707" xlink:href="#linearGradient2701" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="3.845" x2="35.521" y1="3.938" x1="34.3" id="linearGradient2717" xlink:href="#linearGradient2711" inkscape:collect="always" gradientTransform="matrix(0.69543065,0,0,0.34397002,6.3153941,13.032945)"/> - <linearGradient y2="3.845" x2="35.521" y1="3.938" x1="34.3" gradientUnits="userSpaceOnUse" id="linearGradient2721" xlink:href="#linearGradient2711" inkscape:collect="always" gradientTransform="matrix(0.69543065,0,0,0.34397002,6.3747381,14.132995)"/> - <linearGradient y2="3.845" x2="35.521" y1="3.938" x1="34.3" gradientUnits="userSpaceOnUse" id="linearGradient2725" xlink:href="#linearGradient2711" inkscape:collect="always" gradientTransform="matrix(0.69543065,0,0,0.34397002,6.4340821,15.177784)"/> - <linearGradient y2="3.845" x2="35.521" y1="3.938" x1="34.3" gradientUnits="userSpaceOnUse" id="linearGradient2729" xlink:href="#linearGradient2711" inkscape:collect="always" gradientTransform="matrix(0.69543065,0,0,0.34397002,6.4934261,16.222572)"/> - <linearGradient y2="3.845" x2="35.521" y1="3.938" x1="34.3" gradientUnits="userSpaceOnUse" id="linearGradient2733" xlink:href="#linearGradient2711" inkscape:collect="always" gradientTransform="matrix(0.69543065,0,0,0.34397002,6.5527701,17.267361)"/> - <linearGradient y2="74.1" x2="8.649" y1="101.28" x1="13.629" gradientTransform="matrix(1.1198222,0,0,0.24369591,12.280787,11.276294)" gradientUnits="userSpaceOnUse" id="linearGradient2741" xlink:href="#linearGradient2635" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="100.2" x2="0" y1="88.51" gradientTransform="matrix(1.206653,0,0,0.22615913,11.758393,11.542102)" id="linearGradient2758" xlink:href="#linearGradient2752" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="31.25" x2="32.537" y1="5.382" x1="10.391" gradientTransform="matrix(0.57693072,0,0,0.47301291,11.758393,11.542102)" id="linearGradient2979" xlink:href="#linearGradient2253" inkscape:collect="always"/> - <linearGradient y2="52.54" x2="18.18" y1="48.643" x1="18.317" gradientTransform="matrix(0.59023401,0,0,0.46235188,11.758393,11.542102)" gradientUnits="userSpaceOnUse" id="linearGradient2981" xlink:href="#linearGradient2245" inkscape:collect="always"/> - <linearGradient gradientUnits="userSpaceOnUse" y2="44.879" x2="0" y1="49.953" gradientTransform="matrix(0.73329015,0,0,0.32902483,40.700924,13.381553)" id="linearGradient2991" xlink:href="#linearGradient2985" inkscape:collect="always"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2752" id="linearGradient3096" gradientUnits="userSpaceOnUse" gradientTransform="matrix(1.206653,0,0,0.22615913,-0.861067,23.375509)" y1="88.51" x2="0" y2="100.2"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2245" id="linearGradient3108" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.59023401,0,0,0.46235188,-0.861067,23.375509)" x1="18.317" y1="48.643" x2="18.18" y2="52.54"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2667" id="linearGradient3112" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.64723455,0,0,0.4680418,-0.552566,22.679928)" x1="11.492" y1="1.654" x2="17.199" y2="26.729"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2683" id="linearGradient3116" gradientUnits="userSpaceOnUse" gradientTransform="matrix(2.9803427,0,0,0.09156528,-0.338673,23.020608)" y1="171.29" x2="0" y2="162.45"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2245" id="linearGradient3120" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.59023401,0,0,0.46235188,-1.709958,22.694112)" x1="8.612" y1="7.229" x2="34.784" y2="33.34"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient2701" id="linearGradient3123" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.94884831,0,0,0.28760733,-0.861067,23.375509)" x1="12.207" y1="53.54" x2="12.13" y2="64.893"/> - </defs> - <metadata id="metadata4"/> - <g id="layer1" inkscape:label="Layer 1" inkscape:groupmode="layer" transform="translate(0,-24)"> - <ellipse id="path2452" cx="23.376" cy="29.494" rx="8.819" ry="3.255" transform="translate(-12.61946,11.833407)" fill="url(#radialGradient2460)" fill-rule="evenodd" color="#000000"/> - <ellipse id="path2407" cx="23.19" cy="28.739" rx="4.908" ry="2.058" transform="translate(-12.61946,11.833407)" fill="#adb0aa" fill-rule="evenodd" stroke="#1a1a1a" color="#000000" stroke-width="0.522"/> - <ellipse id="path1825" cx="23.19" cy="28.37" rx="4.614" ry="1.935" transform="translate(-12.61946,11.833407)" fill="none" stroke="#7b7f7a" color="#000000" stroke-width="0.491"/> - <ellipse id="path2983" cx="23.19" cy="27.978" rx="4.614" ry="1.935" transform="translate(-12.61946,11.833407)" fill="none" stroke="url(#linearGradient2991)" color="#000000" stroke-width="0.334"/> - <path sodipodi:nodetypes="ccccccccccccccccc" d="m 12.557937,38.402831 -0.03265,0.522394 c 0,0 2.25889,1.880184 4.701549,2.195366 1.22133,0.15759 2.483293,0.366936 3.526162,0.620343 1.042869,0.253407 1.874537,0.584876 2.154876,0.865216 0.162157,0.162157 0.235633,0.299665 0.261198,0.40812 0.02556,0.108455 0.01996,0.185354 -0.04897,0.293847 -0.137877,0.216987 -0.564111,0.505496 -1.289661,0.734617 -1.451099,0.458242 -4.033105,0.750942 -7.607367,0.750942 l 0,0.522394 c 3.60243,0 6.197511,-0.275652 7.754291,-0.767267 0.778389,-0.245807 1.319015,-0.530589 1.583507,-0.946839 0.132247,-0.208125 0.186663,-0.464121 0.130599,-0.701968 -0.05606,-0.237846 -0.200889,-0.462086 -0.408121,-0.669317 -0.458437,-0.458438 -1.325229,-0.734717 -2.399749,-0.995814 -1.074519,-0.261098 -2.358994,-0.477641 -3.59146,-0.636669 -2.464932,-0.318055 -4.734199,-2.195365 -4.734199,-2.195365 z" id="path2411" inkscape:connector-curvature="0" fill="#d0d0d0" fill-rule="evenodd" stroke="#1a1a1a" stroke-linejoin="round" stroke-width="0.209"/> - <ellipse id="path2462" cx="23.376" cy="26.671" rx="8.819" ry="3.255" transform="translate(-12.61946,11.833407)" fill="url(#radialGradient2464)" fill-rule="evenodd" color="#000000"/> - <rect y="39.41" x="8.266" height="1.431" width="4.722" id="rect2699" fill="url(#linearGradient3123)" fill-rule="evenodd" color="#000000" stroke-width="0.609"/> - <path d="m 2.837956,24.261292 15.456705,0 c 0.47608,0 0.848445,0.304808 0.870702,0.732181 l 0.695852,13.361862 c 0.03041,0.583898 -0.470707,1.055395 -1.055396,1.055395 l -16.479021,0 c -0.584689,0 -1.085804,-0.471497 -1.055396,-1.055395 L 1.967254,24.993473 c 0.02104,-0.40409 0.286013,-0.732181 0.870702,-0.732181 z" id="rect2404" sodipodi:nodetypes="cssssssss" inkscape:connector-curvature="0" fill="url(#linearGradient3120)" fill-rule="evenodd" stroke="#1a1a1a" color="#000000" stroke-width="0.522"/> - <path sodipodi:nodetypes="ccccc" id="path2377" d="m 4.1898777,26.200665 -0.5840244,10.364714 12.9999657,0 -0.627665,-10.320787 -11.7882763,-0.04393 z" inkscape:connector-curvature="0" fill="#008000" fill-rule="evenodd" stroke="#000000" stroke-linejoin="round" stroke-width="0.535"/> - <path d="m 2.365989,38.386922 16.418058,0" id="path2393" inkscape:connector-curvature="0" stroke-opacity="0.248" fill="none" stroke="url(#linearGradient3116)" stroke-linecap="round" stroke-width="0.52"/> - <path sodipodi:nodetypes="cssssssss" id="path2397" d="m 2.75108,24.789285 15.591121,-0.01975 c 0.148202,-1.88e-4 0.292176,0.123938 0.304088,0.340885 l 0.711445,12.957076 c 0.03032,0.552187 -0.281962,0.932929 -0.83498,0.932929 l -15.945548,0 c -0.553018,0 -0.832182,-0.380716 -0.80233,-0.932929 L 2.466573,25.271882 c 0.02021,-0.373946 0.08692,-0.48235 0.284507,-0.4826 z" inkscape:connector-curvature="0" stroke-opacity="0.701" fill="none" stroke="#333333" color="#000000" stroke-width="0.522"/> - <path sodipodi:nodetypes="ccccc" d="m 3.68979,25.854982 -0.419237,9.335359 c 5.769656,-1.254076 5.966508,-5.481066 13.140324,-6.867788 l -0.08435,-2.43306 -12.636735,-0.03451 z" id="path2443" inkscape:connector-curvature="0" opacity="0.531" fill="url(#linearGradient3112)" fill-rule="evenodd"/> - <ellipse id="path2657" cx="24.508" cy="33.1" rx="11.151" ry="3.071" transform="translate(-12.61946,11.833407)" fill="url(#radialGradient2659)" fill-rule="evenodd" color="#000000"/> - <path sodipodi:nodetypes="cssssssss" id="path2409" d="m 2.514741,42.608736 16.195481,0 c 0.584689,0 0.510565,0.141798 0.570573,0.320148 l 1.480803,4.401073 c 0.06001,0.17835 0.01412,0.320147 -0.570573,0.320147 l -19.157087,0 c -0.584689,0 -0.630582,-0.141797 -0.570573,-0.320147 l 1.480803,-4.401073 c 0.06001,-0.17835 -0.01412,-0.320148 0.570573,-0.320148 z" inkscape:connector-curvature="0" fill="url(#linearGradient3108)" fill-rule="evenodd" stroke="#1a1a1a" color="#000000" stroke-width="0.522"/> - <path sodipodi:nodetypes="ccccccccc" id="path2611" d="m 2.477915,43.659617 -0.923471,2.678067 2.862761,0 0.277042,-1.061992 7.757159,0 0.287149,1.084028 3.222042,0 -0.877297,-2.700103 -12.605385,0 z" inkscape:connector-curvature="0" fill="#7a7d77" fill-rule="evenodd"/> - <path id="path2613" d="m 4.925114,45.460387 -0.230867,0.877298 7.710986,0 -0.230868,-0.923472 -7.249251,0.04617 z" inkscape:connector-curvature="0" fill="#777874" fill-rule="evenodd"/> - <path d="m 18.777186,43.659617 0.877298,2.631894 -2.862762,-0.04617 -0.784951,-2.539546 2.770415,-0.04617 z" id="path2619" inkscape:connector-curvature="0" fill="#777a75" fill-rule="evenodd" color="#000000" stroke-width="0.313"/> - <path id="path2615" d="m 18.777186,43.382577 0.877298,2.631894 -2.862762,-0.04617 -0.784951,-2.539547 2.770415,-0.04617 z" inkscape:connector-curvature="0" fill="url(#linearGradient3096)" fill-rule="evenodd" color="#000000" stroke-width="0.313"/> - <path d="m 2.477915,43.336403 -0.923471,2.678068 2.862761,0 0.277042,-1.061993 7.757159,0 0.287149,1.084028 3.222042,0 -0.877297,-2.700103 -12.605385,0 z" id="path2617" sodipodi:nodetypes="ccccccccc" inkscape:connector-curvature="0" fill="url(#linearGradient3096)" fill-rule="evenodd"/> - <path d="m 4.925114,45.183346 -0.230867,0.877299 7.710986,0 -0.230868,-0.923472 -7.249251,0.04617 z" id="path2621" inkscape:connector-curvature="0" fill="url(#linearGradient3096)" fill-rule="evenodd" color="#000000" stroke-width="0.313"/> - <path d="m 2.340071,43.006103 16.625625,0 1.377647,4.227509 -19.464971,0 1.461699,-4.227509 z" id="path2631" sodipodi:nodetypes="ccccc" inkscape:connector-curvature="0" fill="none" stroke="#b3b3b3" stroke-linejoin="round" color="#000000" stroke-width="0.261"/> - <ellipse id="path2709" cx="30.503" cy="14.388" rx="0.584" ry="0.289" transform="translate(-12.61946,11.833407)" fill="url(#linearGradient2717)" fill-rule="evenodd" color="#000000" stroke-width="0.5"/> - <ellipse id="path2719" cx="30.562" cy="15.488" rx="0.584" ry="0.289" transform="translate(-12.61946,11.833407)" fill="url(#linearGradient2721)" fill-rule="evenodd" color="#000000" stroke-width="0.5"/> - <ellipse id="path2723" cx="30.622" cy="16.532" rx="0.584" ry="0.289" transform="translate(-12.61946,11.833407)" fill="url(#linearGradient2725)" fill-rule="evenodd" color="#000000" stroke-width="0.5"/> - <ellipse id="path2727" cx="30.681" cy="17.577" rx="0.584" ry="0.289" transform="translate(-12.61946,11.833407)" fill="url(#linearGradient2729)" fill-rule="evenodd" color="#000000" stroke-width="0.5"/> - <ellipse id="path2731" cx="30.74" cy="18.622" rx="0.584" ry="0.289" transform="translate(-12.61946,11.833407)" fill="url(#linearGradient2733)" fill-rule="evenodd" color="#000000" stroke-width="0.5"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/76-2.svg b/htdocs/public/symbols/svgicons/76-2.svg deleted file mode 100755 index 9ae22bd..0000000 --- a/htdocs/public/symbols/svgicons/76-2.svg +++ /dev/null @@ -1,78 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" height="24" width="24" version="1.1"> - <metadata id="metadata3"/> - <defs id="defs1572"> - <linearGradient id="linearGradient1669"> - <stop id="stop1670" stop-color="#fd5a00"/> - <stop id="stop1671" offset="1" stop-color="#fffa7d"/> - </linearGradient> - <linearGradient id="linearGradient1655"> - <stop id="stop1656" stop-color="#fde700"/> - <stop id="stop1657" offset="1" stop-color="#fffaff"/> - </linearGradient> - <linearGradient id="linearGradient1651"> - <stop id="stop1652" stop-color="#6b6b6a"/> - <stop id="stop1653" offset="1" stop-color="#bdbdbd"/> - </linearGradient> - <linearGradient id="linearGradient1643"> - <stop id="stop1644" stop-color="#522722"/> - <stop id="stop1645" offset="1" stop-color="#975a00"/> - </linearGradient> - <linearGradient id="linearGradient1625"> - <stop id="stop1626"/> - <stop id="stop1627" offset="1" stop-color="#a7a6a6"/> - </linearGradient> - <linearGradient id="linearGradient1618"> - <stop id="stop1619" stop-color="#7f7f7f"/> - <stop id="stop1620" offset="1" stop-color="#f0f0f0"/> - </linearGradient> - <linearGradient id="linearGradient1607"> - <stop id="stop1608" stop-color="#870000"/> - <stop id="stop1609" offset="1" stop-color="#ff0000"/> - </linearGradient> - <linearGradient id="linearGradient1610" xlink:href="#linearGradient1625" gradientTransform="matrix(0.03846753,0,0,0.02113344,-1.1884015,-2.607463)" x1="281.43" x2="403.99" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1611" xlink:href="#linearGradient1625" gradientTransform="matrix(0.0520113,0,0,0.01563028,-1.1884015,-2.607463)" x1="208.15" x2="298.83" gradientUnits="userSpaceOnUse"/> - <radialGradient cx="173.15" cy="453.05" id="radialGradient1612" r="62.09" xlink:href="#linearGradient1625" gradientTransform="matrix(0.0638069,-0.00112233,2.2019652e-4,0.01251865,-1.0938389,-2.4122535)" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1617" x1="244.75" x2="383.17" xlink:href="#linearGradient1618" y1="826.31" y2="820.08" gradientTransform="matrix(0.04465307,0,0,0.02401902,-3.1582371,-4.0909887)" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1628" x1="311.75" x2="429.89" xlink:href="#linearGradient1625" y1="655.36" y2="643.29" gradientTransform="matrix(0.04372273,0,0,0.0245301,-3.1582371,-4.0909887)" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1629" x1="0" x2="1" xlink:href="#linearGradient1618"/> - <linearGradient id="linearGradient1638" x1="683.62" x2="620.93" xlink:href="#linearGradient1625" y1="479.49" y2="542.28" gradientTransform="matrix(0.02162252,0,0,0.04960209,-4.8715715,-3.8205162)" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1642" x1="555.12" x2="466.77" xlink:href="#linearGradient1643" y1="658.4" y2="743.48" gradientTransform="matrix(0.02975007,0,0,0.0360511,-4.8715715,-3.8205162)" gradientUnits="userSpaceOnUse"/> - <linearGradient gradientTransform="matrix(0.15406935,0,0,0.0069613,-3.1582371,-4.0909887)" id="linearGradient1647" x1="69.39" x2="127.7" xlink:href="#linearGradient1651" gradientUnits="userSpaceOnUse"/> - <linearGradient gradientTransform="matrix(0.16164309,0,0,0.00663513,-3.1582371,-4.0909887)" id="linearGradient1648" x1="63.19" x2="124.36" xlink:href="#linearGradient1651" gradientUnits="userSpaceOnUse"/> - <linearGradient gradientTransform="matrix(0.16850448,0,0,0.00636495,-3.1582371,-4.0909887)" id="linearGradient1649" x1="58.07" x2="121.84" xlink:href="#linearGradient1651" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1650" x1="504.56" x2="1035.09" xlink:href="#linearGradient1625" gradientTransform="matrix(0.02220578,0,0,0.04829925,-3.1582371,-4.0909887)" gradientUnits="userSpaceOnUse"/> - <radialGradient cx="410.12" cy="281.45" id="radialGradient1654" r="3.801" spreadMethod="reflect" xlink:href="#linearGradient1655" gradientTransform="scale(1.0187186,0.98162532)" gradientUnits="userSpaceOnUse"/> - <radialGradient cx="1070.94" cy="112.3" id="radialGradient1661" r="0.943" spreadMethod="reflect" xlink:href="#linearGradient1655" gradientTransform="scale(0.42008915,2.3804471)" gradientUnits="userSpaceOnUse"/> - <radialGradient cx="923.81" cy="109.91" id="radialGradient1662" r="0.901" spreadMethod="reflect" xlink:href="#linearGradient1655" gradientTransform="scale(0.41100851,2.4330396)" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1668" spreadMethod="reflect" x1="143.84" x2="151.66" xlink:href="#linearGradient1669" y1="647.74" y2="647.54" gradientTransform="scale(2.7026083,0.37001293)" gradientUnits="userSpaceOnUse"/> - <linearGradient gradientTransform="matrix(0.02248161,0,0,0.04770663,-3.1582371,-4.0909887)" id="linearGradient672" x1="665.93" x2="681.55" xlink:href="#linearGradient1625" gradientUnits="userSpaceOnUse"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient1618" id="linearGradient4235" x1="245.44" y1="542.1" x2="365.1" y2="536.72" gradientTransform="matrix(0.04619997,0,0,0.02321479,-3.1582371,-4.0909887)" gradientUnits="userSpaceOnUse"/> - <linearGradient gradientTransform="matrix(0.16850448,0,0,0.00654644,26.105757,-4.4799845)" id="linearGradient1649-2" x1="58.07" x2="121.84" xlink:href="#linearGradient1651" gradientUnits="userSpaceOnUse"/> - <linearGradient gradientTransform="matrix(0.16164309,0,0,0.00682433,26.105757,-4.4799845)" id="linearGradient1648-8" x1="63.19" x2="124.36" xlink:href="#linearGradient1651" gradientUnits="userSpaceOnUse"/> - <linearGradient gradientTransform="matrix(0.15406935,0,0,0.0071598,26.105757,-4.4799845)" id="linearGradient1647-9" x1="69.39" x2="127.7" xlink:href="#linearGradient1651" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1638-9" x1="683.62" x2="620.93" xlink:href="#linearGradient1625" y1="479.49" y2="542.28" gradientTransform="matrix(0.02162252,0,0,0.05101649,24.392423,-4.2017994)" gradientUnits="userSpaceOnUse"/> - <linearGradient id="linearGradient1650-0" x1="507.69" x2="859.37" xlink:href="#linearGradient1651" gradientTransform="matrix(0.02220578,0,0,0.04967651,26.105757,-4.4799845)" gradientUnits="userSpaceOnUse"/> - </defs> - <rect id="rect3405" width="4.564" height="3.867" x="9.685" y="2.748" fill="#cccccc"/> - <path sodipodi:nodetypes="cccc" id="path1578" d="m 14.483576,3.0641418 -4.9839696,0 c 0,-0.5184774 1.1156986,-0.9387874 2.4919836,-0.9387874 1.376287,0 2.491986,0.42031 2.491986,0.9387874 z" inkscape:connector-curvature="0" fill="url(#radialGradient1612)" fill-rule="evenodd" stroke="#000000" stroke-width="0.073"/> - <path id="path1586" d="m 9.6558587,3.0248651 0,2.5607126 4.6779183,0 0,-2.5607126 -4.6779183,0 z m 0.1503714,0.1089605 0,2.3698829 1.2028349,0 0,-2.3698829 -1.2028349,0 z m 1.3531869,0 0,2.3698804 1.672689,0 0,-2.3698804 -1.672689,0 z m 1.823042,0 0,2.3698829 1.202831,0 0,-2.3698829 -1.202831,0 z" inkscape:connector-curvature="0" fill="url(#linearGradient1610)" fill-rule="evenodd" stroke="#000000" stroke-width="0.073"/> - <rect y="5.568" x="9.656" width="4.68" id="rect1606" height="1.388" fill="url(#linearGradient1611)" fill-rule="evenodd" stroke="#000000" stroke-width="0.073"/> - <path inkscape:connector-curvature="0" d="M 8.9844364,6.7531278 8.1344467,23.70939 l 7.7713113,0 -0.971415,-16.9562622 -5.9499066,0 z" id="path1574" sodipodi:nodetypes="ccccc" fill="url(#linearGradient1650)" fill-rule="evenodd" stroke="#000000" stroke-width="0.089"/> - <path inkscape:connector-curvature="0" d="M 8.9464909,6.93346 8.8009459,10.104253 15.132273,10.084559 14.96247,6.953154 8.9464909,6.93346 Z" id="path1622" sodipodi:nodetypes="ccccc" fill="url(#linearGradient4235)" fill-rule="evenodd" stroke="#000000" stroke-width="0.089"/> - <path inkscape:connector-curvature="0" d="m 8.6311364,13.885562 -0.169806,3.80101 7.0833266,0 -0.218321,-3.80101 -6.6951996,0 z" id="path1623" sodipodi:nodetypes="ccccc" fill="#ffffff" fill-rule="evenodd" stroke="#000000" stroke-width="0.089"/> - <rect height="1.147" id="rect1613" width="0.291" x="12.173" y="7.386" fill="#3b3a3a" fill-rule="evenodd" stroke="#000000" stroke-width="0.033"/> - <rect height="1.185" id="rect1615" width="0.291" x="12.221" y="10.831" fill="#010000" fill-rule="evenodd" stroke="#000000" stroke-width="0.033"/> - <path inkscape:connector-curvature="0" d="m 10.351367,19.930301 c -0.6818126,0 -1.2307063,0.471152 -1.2307063,1.056397 l 0.036204,1.957452 2.4386113,0 -0.03619,-1.957452 c 0,-0.585245 -0.45371,-1.056397 -1.135515,-1.056397 l -0.07239,0 z" id="path1631" sodipodi:nodetypes="ccccccc" fill="url(#linearGradient1642)" fill-rule="evenodd" stroke="#000000" stroke-width="0.033"/> - <path inkscape:connector-curvature="0" d="m 10.351367,19.930301 c -0.6818126,0 -1.2307063,0.471152 -1.2307063,1.056397 l 0.036204,1.957452 0.2493497,0 -0.036197,-1.957452 c 0,-0.585245 0.5933257,-0.94048 1.0537476,-1.056397 l -0.0724,0 z" id="path1632" sodipodi:nodetypes="ccccccc" fill="url(#linearGradient1638)" fill-rule="evenodd" stroke="#000000" stroke-width="0.033"/> - <rect height="0.376" id="rect1639" width="8.947" x="7.55" y="22.925" fill="url(#linearGradient1647)" fill-rule="evenodd" stroke="#000000" stroke-width="0.089"/> - <rect height="0.376" id="rect1640" width="9.852" x="7.07" y="23.23" fill="url(#linearGradient1648)" fill-rule="evenodd" stroke="#000000" stroke-width="0.089"/> - <rect height="0.376" id="rect1641" width="10.71" x="6.645" y="23.582" fill="url(#linearGradient1649)" fill-rule="evenodd" stroke="#000000" stroke-width="0.089"/> - <path inkscape:connector-curvature="0" d="m 10.46374,20.002227 0.04763,2.861497" id="path1646" fill="none" fill-rule="evenodd" stroke="#000000" stroke-width="0.033"/> - <g id="g7546" transform="matrix(2.6057113,0,0,-2.6800134,0.00521142,6.4130072)" opacity="0.5" fill="#ffff00"> - <path inkscape:connector-curvature="0" d="M 0,0 -0.002,1.449 3.412,1.012 3.414,0.434 0,0 Z" id="path7548"/> - </g> - <g id="g7546-6" transform="matrix(-2.6057113,0,0,-2.6800134,23.994776,6.4130072)" opacity="0.5" fill="#ffff00" stroke="#000000" stroke-width="0"> - <path inkscape:connector-curvature="0" d="M 0,0 -0.002,1.449 3.412,1.012 3.414,0.434 0,0 Z" id="path7548-6"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/77-1.svg b/htdocs/public/symbols/svgicons/77-1.svg deleted file mode 100755 index 70a5f13..0000000 --- a/htdocs/public/symbols/svgicons/77-1.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 23.999999" overflow="visible" enable-background="new 0 0 499.524 554.546"> - <metadata id="metadata25"/> - <g id="g4149" transform="matrix(0.04378904,0,0,0.04378904,1.5563356,-0.04001019)"> - <path stroke-miterlimit="2.613" d="m 28.987206,199.7257 c 0.16383,-0.27056 0.337529,-0.53715 0.511228,-0.79879 28.075115,-43.40744 72.361496,-68.81326 114.007846,-68.81326 42.40727,0 69.06516,23.34442 104.11883,23.34442 34.01247,0 54.72906,-23.37812 103.75762,-23.37812 37.04333,0 76.31809,20.25628 104.29254,55.28232 -7.73455,4.25363 -14.71212,9.08306 -20.94852,14.39118 l -405.739544,-0.0277 0,0 z" id="path5" inkscape:connector-curvature="0" fill="#61bb46" fill-rule="evenodd" stroke="#61bb46" stroke-width="2.952"/> - <path stroke-miterlimit="2.613" d="M 314.19335,90.969749 C 331.98962,68.01779 345.52631,35.610127 340.62029,2.4760176 311.52371,4.4789499 277.4915,23.081147 257.6138,47.296707 c -18.03708,21.998559 -32.92783,54.624253 -27.13062,86.316373 31.76622,0.99205 64.62694,-18.05513 83.71017,-42.643331 l 0,0 z" id="path7" inkscape:connector-curvature="0" fill="#61bb46" fill-rule="evenodd" stroke="#61bb46" stroke-width="2.952"/> - <path stroke-miterlimit="2.613" d="m 27.538934,199.08608 c -12.090475,19.0213 -20.4561492,46.2843 -22.6761741,70.19718 l 392.2413601,-0.0101 c 4.24099,-26.16153 18.34267,-51.15586 40.69396,-70.15816 l -410.259146,-0.0289 0.02315,0 z" id="path9" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccc" fill="#fdb827" fill-rule="evenodd"/> - <path stroke-miterlimit="2.613" d="M 8.4245798,338.85665 C 4.6130673,314.43297 3.9962379,290.88638 6.390523,269.28424 l 389.185817,-0.01 c -3.80658,23.42668 -0.61189,47.80576 9.01657,69.59719 l -396.1683302,-0.0149 0,0 z" id="path11" inkscape:connector-curvature="0" fill="#f5821f" fill-rule="evenodd" stroke="#f5821f" stroke-width="2.952"/> - <path stroke-miterlimit="2.613" d="M 27.444639,408.42411 C 18.254374,385.05095 11.961727,361.57571 8.4245798,338.85665 l 396.1683302,0.0149 c 12.26454,27.76752 34.96189,51.35772 66.92155,63.48037 -0.94942,2.11988 -1.86529,4.14758 -2.74662,6.10195 l -441.323201,-0.0297 0,0 z" id="path13" inkscape:connector-curvature="0" fill="#e03a3e" fill-rule="evenodd" stroke="#e03a3e" stroke-width="2.952"/> - <path stroke-miterlimit="2.613" d="m 468.76686,408.45285 c -10.97266,24.22448 -17.3334,36.79707 -32.51826,60.00571 -2.04294,3.11689 -4.15398,6.30513 -6.35187,9.5231 l -365.683135,0.0337 c -1.171483,-1.7522 -2.332109,-3.5034 -3.47497,-5.24073 C 47.066723,451.86426 35.998336,430.18482 27.444639,408.42312 l 441.322221,0.0297 0,0 z" id="path15" inkscape:connector-curvature="0" fill="#963d97" fill-rule="evenodd" stroke="#963d97" stroke-width="2.952"/> - <path stroke-miterlimit="2.613" d="m 429.89673,477.98166 c -22.36969,32.90617 -52.40188,69.11752 -88.84318,69.46141 -35.55898,0.32408 -44.68115,-23.23738 -92.92412,-22.97178 -48.24297,0.27056 -58.31456,23.38307 -93.87354,23.04909 -38.01742,-0.35282 -67.538383,-35.91602 -90.042295,-69.50502 l 365.683135,-0.0337 0,0 z" id="path19" inkscape:connector-curvature="0" fill="#009ddc" fill-rule="evenodd" stroke="#009ddc" stroke-width="2.952"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/77-2.svg b/htdocs/public/symbols/svgicons/77-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/77-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/78-1.svg b/htdocs/public/symbols/svgicons/78-1.svg deleted file mode 100755 index 5b5351c..0000000 --- a/htdocs/public/symbols/svgicons/78-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4397"/> - <path d="m 7.2163337,1.7669242 9.5479813,0 5.468785,10.0789058 -5.63609,10.387246 -9.3499754,0 -5.480134,-10.099823 z" id="path4403" inkscape:connector-curvature="0" fill="#330099" fill-rule="evenodd" stroke="#330099" stroke-linejoin="round" stroke-width="3.534"/> - <text x="6.883" y="8.577" id="text4945" sodipodi:linespacing="100%" transform="scale(1.2019576,0.8319761)" font-family="sans-serif" fill="#ffffff" word-spacing="0" line-height="100%" font-weight="bold" letter-spacing="0" font-size="9.1"><tspan sodipodi:role="line" id="tspan4947" x="6.883" y="8.577" dx="-0.722">N</tspan><tspan sodipodi:role="line" x="6.883" y="17.676" id="tspan4949">T</tspan><tspan sodipodi:role="line" x="6.883" y="26.775" id="tspan4951">S</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/78-2.svg b/htdocs/public/symbols/svgicons/78-2.svg deleted file mode 100755 index 3f8a24f..0000000 --- a/htdocs/public/symbols/svgicons/78-2.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24"> - <metadata id="metadata7"/> - <path inkscape:connector-curvature="0" id="path6-9" d="m 1.6815843,20.853317 c 0.9502396,0.794117 1.9829631,1.409751 3.0796704,1.727888 1.8362904,0.636055 3.4796759,1.003464 5.3431013,1.17928 0.962716,0.09853 2.162599,0.122316 3.099463,0.104649 1.023669,0.03261 2.730414,0.135066 2.730414,0.135066 1.330419,-0.09803 2.691892,-0.126078 3.858106,-0.528673 1.037153,-0.504085 1.909223,-1.492041 2.658279,-2.5465 0.490411,-1.138307 -0.51139,-2.079014 -1.202219,-2.467056 -1.411688,-1.100026 -2.998531,-1.500455 -4.80136,-2.116441 -1.429824,-0.47595 -2.640232,-0.700866 -4.818916,-1.380938 -1.8601541,-0.248546 -3.5921275,0.271622 -4.7123163,0.664393 -1.7448241,0.784465 -1.2245414,0.703572 -3.2663106,1.716979 -0.9231758,0.594098 -2.0862461,1.325204 -2.2302008,2.84614 -0.00624,0.262978 0.086352,0.533494 0.262289,0.665219 z" sodipodi:nodetypes="cccccccccccccc" fill="#2a7fff" stroke-width="0.255"/> - <path d="m 5.6033084,19.634505 2.9053805,-8.939635 11.0069271,3.631726 -1.8438,5.475528 -4.078708,-0.111751 -0.558728,1.31193 -1.049428,0.515859 L 10.787316,21.378056 10.017253,20.530164 9.73789,19.6345 Z" id="path4215" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccccccccc" fill="#ff0000" fill-rule="evenodd"/> - <circle id="path3337" cx="11.625" cy="19.626" r="1.918" fill="#ffffff"/> - <path inkscape:connector-curvature="0" d="m 14.644279,8.2925329 -1.106472,3.4256831 -5.6136224,-1.7691029 -3.044358,9.1518289 -1.594068,0 0,1.131477 5.938686,0 c 0.2575161,1.106811 1.2469034,1.931634 2.4317364,1.931635 1.185227,0 2.174625,-0.824269 2.431736,-1.931635 l 5.969943,0 0,-1.131477 -1.537806,0 1.800358,-5.238547 -5.988696,-1.887878 1.106471,-3.4256833 -0.793908,-0.2563008 z m -5.7136424,3.3819241 9.4331354,3.19439 -1.444039,4.232095 -2.831816,0 c -0.257111,-1.107366 -1.246509,-1.931635 -2.431736,-1.931635 -1.184833,1e-6 -2.1742203,0.824824 -2.4317364,1.931635 l -2.744298,0 2.45049,-7.426485 z m 2.7255444,6.488798 c 0.828166,0 1.5003,0.672135 1.5003,1.5003 0,0.828166 -0.672134,1.500299 -1.5003,1.500299 -0.828165,0 -1.5003,-0.672133 -1.5003,-1.500299 0,-0.828165 0.672135,-1.5003 1.5003,-1.5003 z m 0.468844,-12.2174417 3.588217,-1.7878574 -1.787857,-3.58821749 0.895178,-0.45008993 1.855372,3.61322242 3.590717,-1.7928585 0.447589,0.90018 -3.65573,1.7678534 1.787857,3.5882177 -0.830166,0.4700941 -1.85537,-3.6132228 -3.588217,1.7903583 -0.44759,-0.8976798 z" id="path90440" fill="#000407" fill-rule="evenodd"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/79-1.svg b/htdocs/public/symbols/svgicons/79-1.svg deleted file mode 100755 index 1b45288..0000000 --- a/htdocs/public/symbols/svgicons/79-1.svg +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 24 24" height="24" width="24"> - <metadata id="metadata4411"/> - <g transform="translate(0,-1028.3622)" id="layer1"> - <g id="g4221" transform="matrix(0.08983967,0,0,0.08983967,3.0740715,1050.2035)"> - <path id="path3" d="m 118.63,-26.848002 c 15.074,-19.321 30.347,-38.382 44.727,-58.238 7.056,-9.743 13.26,-19.966998 19.409,-30.290998 5.39,-9.048 11.323,-20.028 13.408,-30.449 5.933,-29.642 -2.521,-64.016 -33.229,-75.906 -15.567,53.601 -31.135,107.2 -46.702,160.799998 -3.625,12.479 -7.249,24.96 -10.874,37.439 4.41,-1.12 8.83,-2.24 13.25,-3.36" fill="#ff7021"/> - <path id="path5" d="m 108.89,-24.498002 c 3.879,-19.206 7.882,-37.785 13.32,-56.565 9.576,-33.072998 19.152,-66.146998 28.729,-99.220998 4.001,-13.816 8.001,-27.633 12.002,-41.449 10.804,3.34 18.13,10.481 21.915,21.075 3.994,11.178 6.092,22.935 5.496,34.836 -1.217,24.32 -15.943,46.695 -27.798,67.213998 -7.764,13.438 -16.307,26.452 -24.586,39.575 -4.313,6.837 -8.61,13.686 -12.795,20.603 -2.252,3.724 -4.447,7.482 -6.67,11.223 -0.9,1.5 -8.2,2.77 -9.62,2.71" fill="#eb490c"/> - <path id="path7" d="m 105.53,-23.658002 c 7.811,-10.503 15.621,-21.005 23.431,-31.508 4.405,-5.924 8.811,-11.848 13.216,-17.771 2.489,-3.347 4.872,-4.609 9.012,-1.751 4.482,3.095 0.207,6.056 -2.236,9.415 -3.515,4.831 -7.318,9.487 -11.03,14.168 -3.6,4.538 -7.176,9.107 -10.885,13.557 -2.604,3.123 -5.896,10.055 -9.91,11.084 -3.51,0.89 -8.3,2.85 -11.6,2.8" fill="#ff0000"/> - <path id="path9" d="m 198.36,-160.465 c -2.91,-3.669 -6.505,-7.132 -11.985,-7.678 -2.199,-0.219 -1.919,0.025 -2.738,-2.018 -1.237,-3.083 -2.474,-6.166 -3.711,-9.248 -5.661,-14.108 -11.322,-28.217 -16.983,-42.326 12.712,5.262 20.685,13.15 27.757,24.833 6.51,10.776 7.26,24.235 7.65,36.437" fill="#ffd900"/> - <path id="path11" d="m 148.5,-75.868002 c -5.722,9.441 -11.751,18.685 -17.573,28.063 -2.942,4.738 -5.979,9.447 -8.766,14.277 -0.686,1.189 -2.879,6.407 -4.013,6.711 l -9.264,2.481 c 1.02,-5.265 2.479,-7.181 5.683,-11.488 5.308,-7.137 10.614,-14.272 15.922,-21.408 4.322,-5.812 8.645,-11.623 12.967,-17.435 1.48,-1.99 3.27,-1.74 5.04,-1.2" fill="#bf0000"/> - <path id="path13" d="m 178.55,-212.67 c 8.959,13.786 11.75,29.27 11.75,45.49 -1.117,-0.555 -5.741,-0.672 -6.039,-1.415 -2.179,-5.431 -4.358,-10.862 -6.538,-16.294 l -14.784,-36.846 c 5.51,1.704 12.06,5.581 15.61,9.065" fill="#ffa300"/> - <path id="path15" d="m 114.93,-26.848002 c 12.064,-21.341 25.105,-42.117 37.716,-63.139 6.388,-10.647998 12.223,-21.590998 17.978,-32.590998 5.198,-9.936 10.331,-21.109 12.269,-32.208 4.255,-24.375 -2.2,-49.595 -19.481,-67.477 -2.74,-2.834 -20.133,-14.417 -21.46,-6.954 -1.583,8.899 -3.165,17.798 -4.748,26.697 -10.49,58.955 -20.98,117.909998 -31.46,176.869998 -0.128,0.72 -0.256,1.438 -0.384,2.158 3.18,-1.12 6.37,-2.24 9.56,-3.36" fill="#ff7021"/> - <path id="path17" d="m 106.54,-25.508002 c 7.363,-54.338 18.51,-108.279998 28.072,-162.259998 l 6.426,-36.273 c 0.406,-2.293 0.813,-4.587 1.219,-6.88 0.434,-2.447 10.843,1.668 12.291,2.392 10.501,5.245 14.186,18.755 16.617,29.389 2.496,10.911 3.019,23.603 1.179,34.631 -4.021,24.107 -16.497,47.163 -26.669,69.158998 -10.192,22.042 -20.627,43.942 -30.337,66.207 -1.5,3.41 -5.11,3.91 -8.8,3.63" fill="#eb490c"/> - <path id="path19" d="m 143.8,-105.908 c 3.767,-2.278 9.362,-1.846 13.094,0.336 3.905,2.283 3.182,3.741 1.424,7.136998 -4.831,9.329 -9.974,18.437 -15.523,27.357 -5.344,8.59 -11.085,16.934 -16.545,25.452 -2.781,4.339 -5.641,8.657 -8.164,13.153 -1.133,2.02 -2.012,5.224 -4.286,6.021 -2.813,0.987 -5.626,1.975 -8.438,2.962 1.514,-8.483 3.026,-16.967 4.54,-25.45 1.016,-5.692 6.324,-12.913 9.131,-17.989 3.896,-7.047 7.875,-14.04 11.909,-21.009 3.34,-5.75 7.55,-13.879998 12.87,-17.969998" fill="#ff0000"/> - <path id="path21" d="m 150.18,-107.418 c -6.394,14.827998 -13.331,29.406998 -19.888,44.157998 -3.068,6.903 -6.078,13.835 -9.184,20.721 -1.83,4.06 -3.612,8.12 -5.33,12.228 -0.484,1.159 -0.826,3.511 -2.177,3.751 -2.299,0.408 -4.598,0.817 -6.896,1.226 0.613,-4.954 1.227,-9.907 1.84,-14.861 0.39,-3.144 0.329,-7.357 1.769,-10.129 4.222,-8.129 8.503,-16.213 12.936,-24.229 4.209,-7.613 8.617,-15.112 13.502,-22.313 3.67,-5.419998 6.4,-10.519998 13.43,-10.559998" fill="#bf0000"/> - <path id="path23" d="m 184.09,-168.354 c -3.42,-4.807 -10.932,-5.508 -16.213,-4.447 -2.85,0.572 -6.052,-11.322 -7.052,-13.728 -6.178,-14.869 -12.354,-29.738 -18.532,-44.606 7.312,0.188 12.541,1.951 18.351,6.518 5.877,4.619 10.353,10 14.296,16.308 3.31,5.294 6.396,12.573 7.327,18.782 0.87,5.869 3.46,15.595 1.81,21.173" fill="#ffd900"/> - <path id="path25" d="m 148.67,-230.967 c 11.84,2.759 17.198,13.519 20.516,24.214 1.832,5.908 2.765,11.81 3.549,17.932 0.365,2.857 1.717,14.308 -0.229,15.599 -1.279,0.849 -5.86,0.707 -6.343,-0.455 -2.428,-5.844 -4.856,-11.688 -7.284,-17.531 -5.499,-13.238 -10.999,-26.475 -16.499,-39.713 -0.029,-0.071 -0.06,-0.143 -0.089,-0.214 1.93,0.05 5.05,0.118 6.37,0.168" fill="#ffa300"/> - <path id="path27" d="m 110.23,-26.848002 c 9.29,-22.388 19.429,-44.345 29.203,-66.518 5.021,-11.390998 10.175,-22.738998 14.773,-34.307998 4.339,-10.914 9.518,-22.341 11.217,-34.034 3.163,-21.763 0.569,-52.576 -17.426,-67.913 -4.104,-3.497 -9.334,-6.483 -14.771,-7.051 -1.786,-0.187 -8.86,0.024 -9.115,2.51 -0.768,7.469 -1.535,14.938 -2.302,22.408 -6.231,60.654 -12.462,121.309998 -18.693,181.959998 -0.146,1.429 -0.294,2.858 -0.44,4.287 2.53,-0.45 5.05,-0.89 7.56,-1.34" fill="#ff7021"/> - <path id="path29" d="m 109.73,-26.848002 c -2.084,0.273 -4.674,-0.28 -6.881,-0.5 L 119.94,-193.558 c 1.181,-11.49 2.362,-22.98 3.544,-34.47 0.221,-2.145 0.441,-4.289 0.661,-6.434 0.276,-2.68 9.355,-2.349 11.016,-1.875 9.373,2.678 13.825,15.111 16.391,23.736 3.442,11.57 3.501,23.8 3.501,35.761 0,10.674 -3.781,22.104 -6.704,32.271 -3.565,12.4 -7.409,24.702 -11.337,36.991 -7.209,22.553998 -14.904,44.978998 -22.618,67.363998 -1.44,4.2 -2.97,9.89 -4.66,13.37" fill="#eb490c"/> - <path id="path31" d="m 102.68,-25.508002 c 0.695,-6.738 1.391,-13.477 2.087,-20.216 0.556,-5.387 2.11,-9.155 4.173,-14.201 4.487,-10.973 8.973,-22.03 13.985,-32.776 1.975,-4.232 3.846,-12.095998 8.794,-13.379998 1.543,-0.4 13.289,0.132 12.02,3.18 -4.54,10.902998 -9.343,21.694998 -14.248,32.437998 -3.897,8.536 -7.712,17.108 -11.595,25.65 -1.793,3.946 -3.552,7.912 -5.192,11.924 -0.37,0.904 -1.739,5.906 -2.645,6.067 -2.44,0.45 -4.9,0.88 -7.36,1.32" fill="#ff0000"/> - <path id="path33" d="m 109.73,-26.848002 c -2.084,0.273 -4.674,-0.28 -6.881,-0.5 0.438,-4.212 0.877,-8.424 1.315,-12.636 0.354,-3.404 -0.091,-8.529 1.271,-11.702 3.241,-7.557 6.24,-15.219 9.546,-22.747 3.35,-7.628 6.569,-15.317 10.092,-22.866 2.509,-5.378998 4.556,-10.521998 11.515,-8.942998 -4.268,13.105998 -8.819,26.116998 -13.178,39.192998 -2.442,7.329 -4.987,14.62 -7.385,21.964 -1.89,5.81 -3.89,13.23 -6.29,18.25" fill="#bf0000"/> - <path id="path35" d="m 135.75,-236.17 c 26.932,8.57 30.719,39.412 30.719,63.62 -2.412,-2.985 -6.776,-3.854 -10.39,-4.153 -1.105,-0.092 -7.426,1.242 -7.558,0.925 -3.324,-8.037 -6.647,-16.073 -9.972,-24.11 -4.215,-10.19 -8.43,-20.381 -12.645,-30.571 -0.633,-1.529 -2.688,-4.057 -0.646,-4.871 3.4,-1.353 6.96,-1.927 10.5,-0.84" fill="#ffd900"/> - <path id="path37" d="m 135.75,-236.17 c 3.534,0.334 6.646,4.67 8.646,7.47 3.595,5.032 5.656,10.714 7.404,16.59 1.553,5.219 2.481,11.038 2.783,16.469 0.159,2.867 0.472,5.767 0.472,8.638 0,1.857 1.146,8.993 0,10.257 -0.544,0.601 -6.468,1.126 -6.618,0.763 -2.209,-5.341 -4.418,-10.682 -6.627,-16.023 -5.767,-13.943 -11.533,-27.885 -17.301,-41.828 -1.32,-3.207 9.46,-2.885 11.25,-2.336" fill="#ffa300"/> - <path id="path39" d="m 105.53,-26.848002 c 15.168,-46.276 32.349,-92.581998 42.231,-140.349998 2.383,-11.52 0.677,-24.06 -0.589,-35.607 -1.205,-10.985 -6.014,-23.88 -14.448,-31.26 -4.167,-3.646 -9.2,-5.915 -14.772,-6.127 -2.479,-0.095 -4.997,0.316 -7.218,1.428 -3.129,1.565 -2.593,4.958 -2.993,8.084 -1.631,12.71 -1.8,25.842 -2.615,38.622 -3.044,47.65 -5.808,95.386998 -7.836,143.089998 -0.222,5.217 -0.363,10.443 -0.67,15.655 -0.12,2.042 -1.434,5.344 0.949,5.599 2.457,0.25 6.127,0.59 7.967,0.86" fill="#ff7021"/> - <path id="path41" d="m 98.986,-27.518002 c 1.78,-48.048 2.055,-96.081998 4.848,-144.099998 0.676,-11.61 1.494,-23.211 2.209,-34.818 0.367,-5.964 0.798,-11.92 1.222,-17.88 0.282,-3.961 -0.808,-13.319 4.06,-14.709 2.445,-0.699 4.364,-1.176 6.967,-1.176 2.564,0 5.06,3.894 6.45,5.71 3.482,4.55 5.336,10.411 6.447,15.97 2.37,11.86 2.849,23.946 2.493,36.024 -0.677,22.971 -4.314,46.571 -8.856,69.077 -4.899,24.282998 -10.216,48.465998 -16.679,72.385998 -1.088,4.025 -2.176,8.05 -3.263,12.075 -0.84,3.1 -2.84,1.71 -5.894,1.43" fill="#eb490c"/> - <path id="path43" d="m 105.53,-26.848002 c -2.294,-0.224 -4.587,-0.446 -6.881,-0.67 1.614,-10.52 3.862,-21.046 6.922,-31.249 1.583,-5.276 3.035,-10.587 4.829,-15.795 0.532,-1.543 1.321,-5.354 2.937,-6 2.146,-0.858 4.378,-0.794 6.63,-0.419 5.059,0.842 0.928,7.06 -0.026,10.24 -1.454,4.845 -3.12,9.622 -4.674,14.435 -1.528,4.734 -3.144,9.435 -4.627,14.185 -1.45,4.66 -2.6,11.31 -5.11,15.28" fill="#ff0000"/> - <path id="path45" d="m 104.19,-27.018002 c -1.735,-0.168 -3.47,-0.335 -5.205,-0.503 0.888,-4.311 1.16,-9.059 2.182,-13.526 1.386,-6.055 3.022,-12.049 4.603,-18.056 1.511,-5.743 3.144,-11.499 5.134,-17.098 1.543,-4.34 2.945,-5.035 7.219,-5.035 -2.084,8.923 -4.264,17.812 -6.421,26.715 -1.219,5.034 -2.593,10.021 -3.917,15.028 -0.94,3.57 -1.75,9.51 -3.59,12.48" fill="#bf0000"/> - <path id="path47" d="m 120.3,-240.031 c 27.469,5.782 28.299,42.466 28.369,64.625 -5.033,-4.205 -15.783,-6.076 -21.484,-2.18 -4.461,-11.89 -8.241,-24.079 -11.796,-36.269 -1.845,-6.325 -3.712,-12.65 -5.632,-18.952 -1.123,-3.687 -1.499,-5.351 2.654,-6.721 2.46,-0.808 6.09,-0.705 7.89,-0.503" fill="#ffd900"/> - <path id="path49" d="m 118.79,-240.199 c 12.12,7.795 13.899,25.745 14.602,38.857 0.34,6.331 0.338,12.632 0.338,18.971 0,2.308 0.081,2.285 -1.68,3.106 -1.582,0.738 -3.332,0.722 -4.865,1.679 -4.346,-11.582 -8.059,-23.453 -11.521,-35.327 -1.839,-6.306 -3.739,-12.594 -5.602,-18.894 -0.896,-3.033 -2.538,-5.242 0.67,-7.049 2.41,-1.353 5.39,-1.343 8.06,-1.343" fill="#ffa300"/> - <path id="path51" d="m 70.955,-29.538002 c -14.217,-20.137 -28.029,-40.467 -41.22,-61.291 C 17.59,-109.999 4.002,-132.999 1.107,-155.828 c -3.657,-28.835 9.525,-60.545 38.625,-69.936 12.529,54.446 25.059,108.89 37.588,163.339998 2.857,12.418 5.715,24.835 8.573,37.253 -4.66,-1.3 -10.896,-2.07 -14.938,-4.36" fill="#eb490c"/> - <path id="path53" d="m 49.636,-79.388002 c 6.009,9.279 12.018,18.558 18.027,27.837 3.949,6.098 7.898,12.195 11.847,18.293 1.75,2.702 3.318,6.613 6.383,8.087 -3.992,-1.121 -7.984,-2.243 -11.977,-3.364 -3.528,-0.991 -4.297,-2.748 -6.319,-5.784 -4.132,-6.203 -8.567,-12.249 -12.904,-18.315 -3.986,-5.577 -7.703,-11.336 -11.543,-17.011 -1.652,-2.441 -4.973,-4.959 -2.746,-7.729 1.967,-2.46 6.488,-2.46 9.232,-2.02" fill="#bf0000"/> - <path id="path55" d="m 39.565,-225.763 c -4.618,12.587 -10.611,24.742 -16.601,36.728 -1.409,2.82 -6.089,15.812 -8.982,15.521 -6.49,-0.653 -10.922,3.812 -13.527,9.188 1.151,-27.288 12.235,-51.58 39.11,-61.437" fill="#ffa300"/> - <path id="path57" d="m 74.982,-28.188002 c -10.59,-22.119 -22.398,-43.587 -33.458,-65.469 C 35.941,-104.704 30.649,-115.803 25.789,-127.185 c -4.454,-10.43 -8.899,-21.692 -10.139,-33.03 -2.656,-24.295 5.052,-49.185 23.373,-65.728 4.294,-3.877 9.798,-6.216 15.22,-7.959 2.641,-0.849 6.656,-1.018 7.011,1.959 1.049,8.805 2.098,17.61 3.147,26.416 7.078,59.392 14.155,118.779998 21.232,178.179998 0.086,0.728 0.173,1.454 0.26,2.182 -3.617,-1.02 -7.246,-2.24 -10.911,-3.02" fill="#eb490c"/> - <path id="path59" d="m 83.375,-27.858002 c -10.473,-22.18 -22.399,-43.581 -33.458,-65.468 C 44.314,-104.415 39.06,-115.596 34.182,-127.02 c -4.426,-10.366 -8.905,-21.596 -10.138,-32.865 -2.658,-24.29 5.039,-49.34 23.373,-65.894 4.295,-3.878 9.745,-6.236 15.22,-7.801 2.702,-0.772 6.648,-1.241 7.011,1.801 1.049,8.805 2.098,17.61 3.147,26.416 7.077,59.392 14.154,118.779998 21.231,178.179998 0.086,0.728 0.173,1.454 0.26,2.182 -3.619,-0.97 -7.249,-2.12 -10.911,-2.86" fill="#ff7021"/> - <path id="path61" d="m 36.544,-103.398 c -0.42,-4.696 13.913,-6.11 15.484,-2.546 3.796,8.612998 7.592,17.226998 11.389,25.839998 7.966,18.075 17.245,35.854 22.477,54.929 -1.924,-0.541 -10.063,-1.58 -10.84,-3.227 -1.921,-4.069 -3.923,-8.054 -6.02,-12.036 -3.735,-7.093 -7.438,-14.2 -11.209,-21.274 -3.544,-6.647 -7.124,-13.266 -10.548,-19.978 -3.465,-6.78 -6.212,-15.79 -10.733,-21.699998" fill="#bf0000"/> - <path id="path63" d="m 85.223,-27.518002 c -3.368,0.189 -8.938,-15.129 -10.634,-18.373 -3.348,-6.405 -6.531,-12.9 -9.967,-19.261 -7.528,-13.937 -14.729,-28.044 -21.7,-42.267998 2.428,-0.655 5.319,-0.421 7.637,0.505 1.84,0.733 2.005,2.195 2.804,4.008 4.089,9.276998 8.179,18.555998 12.268,27.833998 4.603,10.443 9.206,20.887 13.808,31.329 2.055,4.65 5.84,11.71 5.784,16.22" fill="#ff0000"/> - <path id="path65" d="m 54.503,-233.988 c 2.107,0.108 4.215,0.216 6.322,0.324 0.591,0.03 0.767,5.027 0.837,5.675 0.494,4.569 0.725,7.874 -0.334,12.375 -1.991,8.465 -3.988,16.89 -6.565,25.201 -1.193,3.846 -2.555,7.751 -3.532,11.652 -0.332,1.322 -12.082,1.458 -13.704,1.609 -7.858,0.734 -15.29,-1.414 -22.302,3.763 -1.207,-5.01 1.21,-13.271 2.267,-18.551 1.343,-6.711 4.311,-12.668 7.506,-18.659 6.083,-11.404 17.379,-19.657 29.505,-23.389" fill="#ffa300"/> - <path id="path67" d="m 61.05,-233.316 c 0.431,3.875 0.861,7.749 1.292,11.624 0.352,3.167 -1.362,7.563 -2.088,10.649 -1.709,7.265 -3.574,14.451 -5.786,21.582 -1.016,3.277 -1.896,6.585 -2.979,9.843 -0.86,2.583 -7.363,1.851 -9.861,2.084 -6.005,0.562 -11.98,-0.362 -17.842,0.62 2.005,-12.03 4.574,-23.314 10.911,-33.908 3.225,-5.391 7.122,-9.99 11.874,-14.063 4.467,-3.831 9.791,-5.531 14.479,-8.431" fill="#ffd900"/> - <path id="path69" d="m 79.683,-27.858002 c -7.629,-22.892 -16.476,-45.277 -24.663,-67.963 C 50.775,-107.584 46.327,-119.29 42.415,-131.167 c -3.695,-11.218 -7.82,-23.051 -8.915,-34.871 -2.038,-22.006 3.096,-52.358 21.842,-66.609 3.876,-2.947 10.683,-6.762 15.78,-6.126 1.958,0.244 8.155,0.708 8.254,3.375 0.297,7.906 0.594,15.813 0.891,23.719 2.277,60.676 4.554,121.349998 6.832,182.029998 0.046,1.213 0.091,2.425 0.137,3.638 -2.518,-0.62 -5.036,-1.23 -7.553,-1.85" fill="#eb490c"/> - <path id="path71" d="m 86.732,-27.688002 c -7.646,-22.934 -16.439,-45.387 -24.716,-68.09 C 53.743,-118.471 42.709,-142.537 40.462,-166.813 c -1.116,-12.06 0.704,-24.749 4.053,-36.372 3.057,-10.608 8.46,-23.136 18.119,-29.45 4.686,-3.063 10.375,-6.339 16.209,-5.885 2.02,0.157 7.493,0.869 7.59,3.452 0.304,8.104 0.608,16.208 0.913,24.312 2.272,60.53 4.544,121.059998 6.816,181.589998 0.042,1.108 0.083,2.216 0.125,3.323 -2.519,-0.61 -5.037,-1.22 -7.555,-1.84" fill="#ff7021"/> - <path id="path73" d="m 48.964,-112.458 c 7.533,-4.791 14.92,-1.439 20.982,3.526 2.248,1.841 3.741,2.542 4.258,5.313 0.88,4.716998 1.76,9.432998 2.641,14.148998 3.904,20.921 9.649,42.15 10.391,63.459 l -6.174,-1.509 c -2.139,-0.522 -2.014,-2.206 -2.716,-4.272 -1.447,-4.263 -2.957,-8.496 -4.481,-12.731 -2.768,-7.69 -5.67,-15.305 -8.649,-22.916 -2.947,-7.531 -5.914,-15.046 -8.753,-22.618 -2.669,-7.12 -4.395,-15.819998 -7.499,-22.399998" fill="#bf0000"/> - <path id="path75" d="m 87.068,-27.518002 c -1.896,-2.246 -2.539,-6.688 -3.524,-9.568 -1.19,-3.476 -2.36,-6.961 -3.621,-10.411 -2.854,-7.809 -5.752,-15.598 -8.706,-23.368 -5.516,-14.51 -11.213,-28.895 -16.209,-43.602998 7.183,-1.362 11.464,2.673 16.617,6.966 4.838,4.031 4.47,14.020998 5.577,19.951998 2.446,13.107 4.892,26.216 7.338,39.323 1.169,6.26 3.71,14.51 2.528,20.71" fill="#ff0000"/> - <path id="path77" d="m 67.765,-238.352 c 3.01,-0.919 7.438,-0.37 10.155,1.258 2.178,1.306 -1.97,8.585 -2.939,10.923 -3.285,7.923 -7.259,15.518 -10.958,23.25 -3.432,7.172 -7.193,14.371 -11.175,21.253 -0.507,0.875 -1.049,1.725 -1.448,2.654 -0.501,1.169 -0.791,0.023 -1.763,0.083 -1.809,0.113 -3.823,-0.572 -5.708,-0.503 -3.531,0.128 -7.891,0.829 -10.911,2.687 2.145,-23.286 7.508,-55.419 34.747,-61.605" fill="#ffa300"/> - <path id="path79" d="m 74.814,-238.184 c 1.147,0.307 2.284,0.722 3.357,1.258 1.778,0.889 -0.928,5.296 -1.639,7.011 -3.083,7.436 -6.577,14.591 -10.048,21.846 -3.431,7.171 -7.213,14.115 -10.864,21.171 -0.907,1.753 -1.785,3.521 -2.774,5.229 -1.039,1.795 -1.041,3.205 -2.96,2.821 -3.271,-0.652 -6.349,-0.621 -9.652,-0.25 1.536,-12.453 3.259,-24.487 8.717,-35.921 2.593,-5.431 5.943,-10.602 10.403,-14.704 4.782,-4.398 10.067,-6.347 15.46,-8.461" fill="#ffd900"/> - <path id="path81" d="M 84.215,-27.518002 C 72.5,-74.778002 58.023,-122.048 51.474,-170.378 c -1.589,-11.723 0.944,-23.916 2.843,-35.459 1.852,-11.264 7.931,-23.497 16.898,-30.592 4.083,-3.231 10.221,-5.523 15.519,-4.864 2.5,0.311 5.444,0.83 7.302,2.686 1.899,1.898 1.401,5.336 1.428,7.902 0.134,13.091 0.166,26.177 0.166,39.269 0,48.09 -0.523,96.244998 -1.558,144.319998 -0.109,5.077 -0.288,10.157 -0.288,15.236 0,2.995 0.909,3.983 -2.122,4.092 -2.483,0.1 -4.965,0.2 -7.447,0.27" fill="#eb490c"/> - <path id="path83" d="m 88.914,-27.688002 c -5.965,-24.06 -11.926,-48.117 -17.618,-72.243 C 65.775,-123.337 60.354,-146.954 57.875,-170.897 c -1.14,-11.008 0.023,-23.996 2.879,-34.7 3.109,-11.657 6.734,-24.599 17.25,-31.915 3.776,-2.627 9.251,-4.5 13.598,-2.518 4.639,2.116 3.827,5.945 3.875,10.651 0.132,12.845 0.188,25.687 0.152,38.532 -0.138,48.846 -0.568,97.735998 -1.619,146.579998 -0.078,3.595 -0.227,7.196 -0.227,10.792 0,0.952 0.61,5.004 0,5.623 -0.56,0.57 -3.969,0.14 -4.869,0.17" fill="#ff7021"/> - <path id="path85" d="m 91.938,-32.728002 c 0.154,0.626 1.247,3.912 1.006,4.366 -0.544,1.026 -3.065,0.619 -4.448,0.671 -2.471,0.094 -4.192,1.087 -4.883,-1.399 -2.242,-8.071 -4.201,-16.24 -6.194,-24.378 -3.876,-15.826 -7.833,-31.656 -12.005,-47.408998 1.658,-0.603 3.162,-1.773 5.204,-1.846 1.168,-0.041 3.527,0.213 4.533,0.839 1.598,0.993 1.484,2.252998 1.973,4.133998 1.849,7.126 3.627,14.291 5.292,21.462 1.796,7.735 3.676,15.452 5.502,23.181 1.387,5.88 4.668,14.69 4.02,20.39" fill="#bf0000"/> - <path id="path87" d="m 92.943,-27.858002 c -0.646,0.028 -3.772,0.5 -3.918,-0.052 -0.521,-1.979 -1.042,-3.959 -1.563,-5.938 -0.76,-2.888 -1.364,-5.817 -2.103,-8.711 -1.862,-7.29 -3.606,-14.606 -5.362,-21.923 -3.061,-12.759 -6.111,-25.531 -9.379,-38.239998 1.62,0.158 3.366,0.255 4.868,1.007 1.972,0.985 2.385,6.859998 2.941,9.194998 1.943,8.16 3.949,16.306 5.917,24.46 3.22,13.32 6.032,26.83 8.599,40.19" fill="#ff0000"/> - <path id="path89" d="m 83.375,-241.206 c 2.19,0.086 13.146,0.294 11.42,4.705 -2.343,5.988 -4.687,11.977 -7.03,17.966 -5.1,13.034 -10.201,26.068 -15.301,39.102 -5.71,-3.131 -16.424,-3.493 -21.486,1.008 0.259,-22.297 5.741,-58.334 32.397,-62.781" fill="#ffa300"/> - <path id="path91" d="m 57.526,-181.281 c 1.234,-11.389 1.548,-24.762 6.275,-35.398 4.62,-10.395 10.566,-22.814 23.379,-24.241 2.304,-0.257 6.42,1.028 7.274,2.736 0.994,1.988 -1.006,5.125 -2.005,7.677 -3.02,7.717 -6.04,15.435 -9.06,23.152 -3.642,9.307 -7.284,18.615 -10.926,27.922 -4.086,-2.497 -10.31,-2.405 -14.937,-1.848" fill="#ffd900"/> - <path id="path93" d="M 89.754,-27.188002 C 80.825,-75.345002 74.026,-123.247 72.469,-172.248 c -0.357,-11.231 0.404,-23.042 2.464,-34.077 2.238,-11.986 4.798,-24.591 14.424,-32.905 2.797,-2.416 12.048,-6.127 13.788,-0.91 1.794,5.376 1.549,11.233 1.549,16.84 0,12.122 -0.584,24.21 -1.176,36.313 -2.402,49.116 -5.198,98.219998 -7.869,147.319998 -0.263,4.829 -0.482,9.661 -0.692,14.493 -1.707,-0.68 -3.439,-1.49 -5.195,-2.01" fill="#eb490c"/> - <path id="path95" d="m 78.509,-186.148 c 0.997,-12.302 2.127,-24.353 6.054,-36.126 1.953,-5.854 4.72,-10.628 8.685,-15.339 1.491,-1.771 4.127,-3.167 6.3,-3.892 3.001,-1 3.922,0.659 4.36,3.872 1.55,11.36 1.122,23.466 0.407,34.896 -0.795,12.708 -1.281,25.441 -1.895,38.16 -2.174,45.079 -4.84,90.143998 -7.294,135.209998 C 86.428,-77.047002 78.34,-125.237 78.34,-173.857 c 0,-4.101 0.047,-8.187 0.169,-12.29" fill="#ff7021"/> - <path id="path97" d="m 94.622,-107.418 c 4.258,5.68 4.119,9.976998 3.81,16.992998 -0.335,7.637 -0.863,15.267 -1.232,22.903 -0.679,14.048 -2.305,28.298 -2.242,42.354 -0.842,-0.337 -4.906,-1.378 -5.066,-2.166 -0.566,-2.778 -1.132,-5.557 -1.699,-8.335 -0.853,-4.183 -1.636,-8.383 -2.364,-12.589 -1.634,-9.443 -3.119,-18.899 -4.727,-28.346 -1.521,-8.941 -2.586,-18.034 -3.686,-27.037998 -0.589,-4.828 0.878,-4.607 5.523,-5.537 3.499,-0.67 9.021,0.44 11.683,1.79" fill="#bf0000"/> - <path id="path99" d="m 98.818,-99.198002 c -0.843,23.293 -2.633,46.548 -3.692,69.83 -3.269,-17.64 -6.383,-35.276 -9.082,-53.014 -0.441,-2.901 -4.251,-26.612998 -2.92,-26.803998 3.042,-0.435 9.112,-0.215 11.665,1.763 2.159,1.67 3.214,5.77 4.029,8.219998" fill="#ff0000"/> - <path id="path101" d="m 72.634,-186.484 c 1.159,-11.986 2.486,-23.51 5.882,-35.098 2.729,-9.313 10.515,-23.456 22.402,-20.715 6.772,1.561 3.628,24.59 2.771,29.384 -2.004,11.21 -3.971,22.595 -6.715,33.648 -6.513,-2.87 -18.157,-4.043 -24.509,-0.169 -0.058,-2.307 0.228,-4.879 0.168,-7.05" fill="#ff0000"/> - <path id="path103" d="m 101.84,-242.213 c 3.518,3.955 2.855,11.431 2.855,16.376 0,5.54 -0.078,11.069 -0.204,16.608 -0.226,9.932 -1.703,20.076 -1.308,29.964 -4.991,-0.834 -10.003,-1.506 -15.064,-1.738 -4.723,-0.216 -11.367,-0.663 -15.654,1.569 -0.068,-11.209 1.609,-22.64 3.82,-33.706 2.543,-12.764 10.161,-32 25.548,-29.073" fill="#ffa300"/> - <path id="path105" d="m 78.509,-186.148 c 0.895,-11.037 1.506,-22.492 5.038,-33.081 1.83,-5.484 3.624,-11.164 7.414,-15.667 2.343,-2.784 8.992,-9.892 12.055,-5.639 2.714,3.769 1.68,12.071 1.68,16.45 0,5.655 -0.123,11.3 -0.252,16.953 -0.21,9.241 -1.628,18.664 -1.26,27.866 -7.795,-2.112 -16.852,-2.155 -24.843,-1.511 -0.007,-1.817 0.125,-3.578 0.162,-5.371" fill="#ffd900"/> - <path id="path107" d="m 99.994,-26.848002 c 12.418,-47.117 22.991,-94.877998 26.847,-143.549998 0.902,-11.387 0.923,-22.938 -0.272,-34.301 -1.282,-12.193 -3.398,-24.607 -12.143,-33.789 -1.852,-1.943 -4.554,-2.828 -7.049,-3.616 -1.109,-0.35 -2.603,-0.362 -3.751,-0.186 -2.217,0.341 -1.793,1.476 -2.13,3.495 -0.887,5.316 -1.76,10.617 -2.371,15.975 -1.35,11.835 -1.988,23.762 -2.32,35.668 -1.375,49.221 -1.148,98.544998 -1.678,147.779998 -0.051,4.734 -0.169,9.467 -0.169,14.202 1.494,-0.49 4.147,-1.26 5.032,-1.68" fill="#eb490c"/> - <path id="path109" d="m 99.658,-26.848002 c 1.116,-49.069 1.269,-98.173998 1.819,-147.249998 0.255,-22.663 0.776,-45.735 4.728,-68.109 11.416,1.792 17,15.047 18.669,25.252 2.062,12.608 2.854,25.17 2.488,37.946 -0.656,22.971 -4.316,46.267 -8.474,68.833 -2.567,13.936998 -5.243,27.849998 -8.444,41.654998 -1.558,6.718 -3.035,13.457 -4.751,20.137 -1.266,4.928 -2.53,9.855 -3.796,14.782 -0.43,1.63 -0.92,6.29 -2.252,6.76" fill="#ff7021"/> - <path id="path111" d="m 119.97,-108.928 c -2.232,14.690998 -5.581,29.118998 -9.398,43.475998 -1.887,7.094 -3.867,14.161 -5.758,21.254 -1.043,3.911 -2.089,7.821 -3.14,11.729 -0.344,1.281 -0.583,4.644 -1.511,5.623 -0.883,0.933 -3.944,1.273 -5.204,1.68 0.146,-19.243 -0.503,-38.533 -0.503,-57.789 0,-4.44 -0.053,-8.884 10e-4,-13.324 0.029,-2.387 -1.246,-13.033998 0.768,-14.040998 8.398,-4.2 17.228,-2.05 24.748,1.39" fill="#bf0000"/> - <path id="path113" d="m 119.97,-108.928 c -2.139,14.070998 -5.008,27.955998 -8.528,41.745998 -1.736,6.8 -3.486,13.61 -5.403,20.362 -0.921,3.246 -1.951,6.461 -2.892,9.701 -0.887,3.052 -1.372,8.077 -3.319,10.441 l 0,-52.726 c 0,-9.611 0.158,-19.219 0.288,-28.828998 0.039,-2.891 -0.597,-3.205 2.062,-4.053 1.983,-0.633 5.056,-0.45 7.114,-0.292 3.75,0.28 8.07,1.57 10.68,3.65" fill="#ff0000"/> - <path id="path115" d="m 81.026,20.151998 c -1.015,4.249 7.103,2.604 9.681,2.706 2.136,0.084 14.052,2.581 13.315,-1.529 -4.019,-0.176 -8.036,-0.352 -12.055,-0.527 -3.288,-0.15 -8.021,0.32 -10.939,-0.65" fill="#84442f"/> - <path id="path117" d="m 102.01,8.0619983 c 0.16,-3.537 0.32,-7.07400001 0.481,-10.611 0.225,-4.969 0.039,-4.172 -5.014,-4.496 -0.102,3.021 -0.203,6.04 -0.305,9.061 -0.061,1.805 1.023,6.7 -1.877,5.88 0.204,-4.802 0.408,-9.604 0.612,-14.405 0.125,-2.94 1.153,-2.201 4.255,-2.047 2.341,0.116 4.264,-0.541 4.163,1.807 -0.213,4.994 -0.425,9.987 -0.638,14.98 -0.51,-0.05 -1.19,0.02 -1.67,-0.17" fill="#c1d8f1"/> - <path id="path119" d="m 102.01,8.0619983 c 0.16,-3.537 0.32,-7.07400001 0.481,-10.611 0.225,-4.969 0.039,-4.172 -5.014,-4.496 -0.102,3.021 -0.203,6.04 -0.305,9.061 -0.061,1.805 1.023,6.7 -1.877,5.88 0.204,-4.802 0.408,-9.604 0.612,-14.405 0.125,-2.94 1.153,-2.201 4.255,-2.047 2.341,0.116 4.264,-0.541 4.163,1.807 -0.213,4.994 -0.425,9.987 -0.638,14.98 -0.51,-0.05 -1.19,0.02 -1.67,-0.17" fill="none" stroke="#000000" stroke-linecap="square" stroke-width="1.1" stroke-miterlimit="10"/> - <path id="path121" d="m 89.083,-2.0080017 c 0.259,1.98799999 0.717,3.045 1.343,4.197 0.438,0.806 0.999,1.229 1.343,2.518 0.162,0.606 0.711,3.093 0.336,3.691 -0.753,1.2 -7.042,1.7959997 -8.561,2.1839997 0.515,-2.5129997 2.794,-6.5989997 2.668,-8.8739997 -0.103,-1.86000001 -0.201,-5.5 2.871,-3.72" fill="#ffd900"/> - <path id="path123" d="m 89.083,-2.0080017 c 0.259,1.98799999 0.717,3.045 1.343,4.197 0.438,0.806 0.999,1.229 1.343,2.518 0.162,0.606 0.711,3.093 0.336,3.691 -0.753,1.2 -7.042,1.7959997 -8.561,2.1839997 0.515,-2.5129997 2.794,-6.5989997 2.668,-8.8739997 -0.103,-1.86000001 -0.201,-5.5 2.871,-3.72" fill="none" stroke="#000000" stroke-linecap="square" stroke-width="0.9" stroke-miterlimit="10"/> - <path id="path125" d="m 85.558,6.5519983 c -0.224,1.642 0.241,4.1589997 -2.014,4.0289997 0.351,-2.3419997 0.927,-4.8519997 1.847,-7.0509997 0.055,1.01 0.111,2.02 0.167,3.02"/> - <path id="path127" d="m 86.229,-0.99800171 c 1.819,0.614 2.502,2.99800001 0.337,3.52400001 -0.112,-1.17 -0.224,-2.35000001 -0.337,-3.52000001"/> - <path id="path129" d="m 87.571,0.17199829 c -0.571,-0.116 -0.623,0.245 -1.005,-0.169 -0.142,0.74 -0.012,1.02400001 0.166,1.84800001 1.06,-0.628 0.64,-0.534 0.672,-1.00800001 0.368,-0.3 0.315,-0.4 0.167,-0.67" fill="#ffb8bd"/> - <path id="path131" d="m 89.754,2.3519983 c -0.422,1.436 -0.42,2.879 -0.503,4.365 0.448,-0.167 0.895,-0.335 1.343,-0.502 -0.882,1.442 -1.449,3.34 -3.358,3.523 0.336,-1.119 0.672,-2.237 1.009,-3.356 -0.867,0.051 -1.558,-0.468 -1.847,-0.505 2.439,0.75 2.632,-2.3 3.356,-3.52" fill="#ffa300"/> - <path id="path133" d="m 90.426,7.5619983 c 0.161,-3.536 0.322,-7.07200001 0.483,-10.608 0.226,-4.97 0.038,-4.171 -5.016,-4.499 -0.102,3.021 -0.203,6.04 -0.305,9.061 -0.061,1.804 1.023,6.699 -1.876,5.88 0.212,-4.993 0.425,-9.986 0.638,-14.98 0.127,-2.9810003 4.516,-1.456 6.89,-1.337 2.377,0.119 1.477,2.313 1.377,4.65 -0.094,2.19 0.818,13.26 -2.191,11.84" fill="#c1d8f1"/> - <path id="path135" d="m 90.426,7.5619983 c 0.161,-3.536 0.322,-7.07200001 0.483,-10.608 0.226,-4.97 0.038,-4.171 -5.016,-4.499 -0.102,3.021 -0.203,6.04 -0.305,9.061 -0.061,1.804 1.023,6.699 -1.876,5.88 0.205,-4.802 0.409,-9.604 0.613,-14.405 0.148,-3.4740003 2.952,-2.11 6.162,-1.95 2.851,0.144 2.292,0.856 2.167,3.794 -0.129,3.04 -0.259,6.08099999 -0.389,9.122 -0.073,1.7 0.707,4.507 -1.84,3.775" fill="none" stroke="#000000" stroke-linecap="square" stroke-width="1.1" stroke-miterlimit="10"/> - <path id="path137" d="m 98.147,-2.3380017 c 1.864,1.098 0.72,2.04499999 1.006,3.526 0.165,0.854 0.768,0.979 0.988,2.082 0.611,3.057 2.16,4.816 -1.07,5.723 -2.758,0.772 -3.508,-0.352 -5.905,-1.949 -0.554,-0.369 0.38,-2.665 0.522,-3.258 0.381,-1.589 1.889,-0.779 2.276,-1.758 0.611,-1.54000001 -1.345,-5.18 2.184,-4.36" fill="#ff7f00"/> - <path id="path139" d="m 98.147,-2.3380017 c 1.751,1.032 0.694,1.87099999 1.006,3.18899999 0.105,0.44300001 -0.378,0.48300001 -0.336,0.83900001 0.091,0.762 1.081,0.365 1.216,1.04 0.367,1.833 2.126,5.396 0.048,5.979 -3.306,0.928 -3.467,0.633 -6.339,-1.281 -1.85,-1.232 -0.039,-4.647 1.7,-5.226 1.211,-0.402 -1.087,-5.77 2.705,-4.371" fill="none" stroke="#000000" stroke-linecap="square" stroke-width="0.9" stroke-miterlimit="10"/> - <path id="path141" d="m 99.322,-0.66800171 c -4.051,0.01 -0.901,5.39000001 0,0"/> - <path id="path143" d="m 98.484,0.85199829 c 0.105,-0.304 0.522,-0.252 0.168,-0.84 -1.058,0.134 -1.271,0.663 -0.504,1.67900001 0.696,-0.2 0.34,-0.51 0.336,-0.84000001" fill="#ffb8bd"/> - <path id="path145" d="m 89.083,5.7119983 c -0.144,4.3149997 -0.287,8.6299997 -0.431,12.9449997 -0.121,3.64 -0.689,2.831 -4.491,2.736 -3.372,-0.085 -3.18,0.113 -3.039,-3.046 0.191,-4.268 0.383,-8.5349997 0.574,-12.8029997 2.217,0.11 5.514,0.73 7.387,0.17" fill="#bf7242"/> - <path id="path147" d="m 88.747,13.101998 c 0.056,-1.008 0.111,-2.016 0.167,-3.023 -1.93,-0.088 -3.86,-0.1749997 -5.79,-0.2629997 -2.335,-0.105 -1.647,0.9009997 -1.764,3.1179997 2.217,0.09 5.514,0.71 7.387,0.16" fill="#84442f"/> - <path id="path149" d="m 88.914,7.0619983 c 0.056,-0.393 0.113,-0.784 0.169,-1.177 -1.815,-0.082 -7.816,-1.54 -7.554,1.009 2.138,0.09 6.012,0.61 7.385,0.17" fill="#84442f"/> - <path id="path151" d="m 104.53,6.3919983 c -0.167,5.0029997 -0.334,10.0049997 -0.501,15.0079997 -0.056,1.695 -6.423,0.583 -7.779,0.537 -1.297,-0.044 -8.922,0.683 -8.838,-1.21 0.222,-5.002 0.444,-10.005 0.667,-15.0069997 4.31,0.21 13.16,2.12 16.45,0.67" fill="#ffc461"/> - <path id="path153" d="m 104.19,13.771998 c 0.056,-1.063 0.112,-2.127 0.168,-3.19 -3.622,-0.147 -7.244,-0.296 -10.865,-0.443 -4.264,-0.1749997 -5.52,-1.4779997 -5.753,2.962 5.482,0.22 10.966,0.45 16.448,0.67" fill="#e3622d"/> - <path id="path155" d="m 104.36,7.7319983 c 0.056,-0.447 0.112,-0.896 0.168,-1.343 l -16.452,-0.672 c -0.442,2.56 5.864,1.644 7.69,1.736 2.204,0.1 7.152,0.93 8.592,0.27" fill="#e3622d"/> - <path id="path157" d="m 80.857,21.661998 c 0.59,-3.916 0.471,-8.002 0.65,-11.9509997 0.03,-0.649 -0.285,-3.673 0.189,-4.162 0.608,-0.628 5.177,0.136 6.16,0.161 3.732,0.098 7.467,0.372 11.196,0.56 4.183,0.212 5.701,-1.026 5.51,3.247 -0.161,3.5699997 0.556,8.5749997 -0.539,11.9789997 -0.737,2.293 -0.697,1.858 -3.368,1.753 -2.886,-0.114 -19.032,0.834 -19.628,-1.586" fill="none" stroke="#000000" stroke-linecap="square" stroke-width="1.3" stroke-miterlimit="10"/> - <path id="path159" d="M 85.391,-7.2080017 C 81.329,-13.633002 77.267,-20.057002 73.205,-26.481002 c -0.485,-0.767 -6.296,-9.207 -3.089,-7.418 1.613,0.9 3.305,5.227 4.265,6.745 2.64,4.176 5.28,8.353 7.92,12.528 0.877,1.387 4.26,5.0500003 4.265,6.7450003 0.004,1.18 -0.529,1.13 -1.175,0.66"/> - <path id="path161" d="m 90.594,-7.7080017 9.201,-20.8890003 c 0.354,-0.802 3.996,-10.144 4.564,-6.976 0.232,1.296 -2.438,5.422 -2.963,6.639 -1.962,4.542 -3.924,9.084 -5.886,13.627 -1.184,2.741 -2.368,5.4810003 -3.552,8.2230003 -0.594,1.36 -1.358,-0.42 -1.368,-0.62"/> - <path id="path163" d="m 101.84,-242.213 c 15.437,-1.69 22.554,16.828 23.884,29.477 0.858,8.159 1.417,16.123 1.68,24.322 0.105,3.314 0.618,7.842 -0.214,10.828 -7.595,-5.089 -21.862,-5.328 -30.215,-1.679 -1.257,-8.376 0.089,-18.071 0.68,-26.546 0.441,-6.342 0.923,-12.656 1.713,-18.966 0.652,-5.213 3.222,-12.409 2.472,-17.436" fill="#ffa300"/> - <path id="path165" d="m 101.67,-187.156 c 0.402,-18.308 1.342,-36.997 4.531,-55.057 14.667,2.302 17.913,20.627 19.878,32.648 1.155,7.063 1.174,14.354 1.354,21.489 0.081,3.215 0.557,7.605 -0.247,10.49 -6.164,-5.114 -18.132,-4.238 -25.516,-3.023 0.01,-2.182 0.01,-4.365 0.01,-6.547" fill="#ffd900"/> - <path id="path167" d="m 70.955,-29.538002 c 2.408,2.393 6.544,3.047 9.73,3.783 2.397,0.555 9.896,3.255 8.566,-0.594 -1.539,-4.454 -18.068,-9.4 -18.296,-3.021" fill="none" stroke="#000000" stroke-linecap="square" stroke-width="2.7" stroke-miterlimit="10"/> - <path id="path169" d="m 70.955,-29.538002 c 2.408,2.393 6.544,3.047 9.73,3.783 2.397,0.555 9.896,3.255 8.566,-0.594 -1.747,-5.05 -18.988,-8.28 -18.296,-3.19" fill="#bf0000"/> - <path id="path171" d="m 70.955,-29.538002 c -14.217,-20.137 -28.029,-40.467 -41.22,-61.291 C 17.59,-109.999 4.002,-132.999 1.107,-155.828 c -3.032,-23.906 5.262,-49.519 25.358,-63.774 4.625,-3.281 10.063,-5.022 14.803,-8.039 4.097,-2.608 8.34,-5.489 13.235,-6.348 1.681,-0.295 2.138,-0.01 3.693,-0.671 1.173,-0.499 2.186,-1.322 3.357,-1.847 2.124,-0.951 4.314,-1.372 6.547,-1.93 1.274,-0.318 2.443,-0.252 3.692,-0.252 2.269,0 3.142,-0.345 5.371,-1.175 3.394,-1.263 6.729,-1.343 10.24,-1.343 2.167,0 2.651,0.53 4.7,0 2.565,-0.663 5.08,-1.804 7.805,-1.259 4.259,0.852 8.124,-0.386 12.183,2.148 1.992,1.245 6.815,0.006 9.472,0.538 1.983,0.396 3.65,0.946 5.455,1.846 2.2,1.098 2.809,0.923 5.035,1.091 3.705,0.279 7.091,1.617 10.408,3.273 1.216,0.607 2.178,1.399 3.273,2.182 1.119,0.799 2.502,0.193 3.776,0.672 2.464,0.926 4.63,1.904 6.882,3.273 2.328,1.416 4.427,2.987 6.547,4.7 2.297,1.855 4.84,2.612 7.334,4.191 22.305,14.126 28.289,37.483 27.92,62.491 -0.169,11.441 -6.459,23.51 -11.583,33.41 -5.69,10.993 -12.271,21.373 -19.184,31.627998 -11.658,17.295 -24.517,33.87 -37.637,50.076 -3.542,4.373 -7.022,8.784 -10.484,13.222 -1.684,2.158 -8.313,0.47 -10.791,0.339 -12.52,-0.66 -25.041,-1.321 -37.561,-1.982" fill="none" stroke="#000000" stroke-linecap="square" stroke-miterlimit="10"/> - <path id="path173" d="m 118.79,-27.348002 c -4.174,5.347 -8.348,10.692 -12.521,16.039 -0.602,0.77 -2.824,4.6540003 -3.883,4.5860003 -4.394,-0.282 -4.672,0.002 -6.563,-3.7790003 -5.091,-10.178 -13.132,-18.44 -24.873,-18.862 3.848,-8.856 49.099,-6.413 48.007,2.017" fill="none" stroke="#000000" stroke-linecap="square" stroke-miterlimit="10"/> - <path id="path175" d="m 118.79,-27.348002 c -7.265,-5.329 -20.801,-4.535 -29.375,-4.535 -4.961,0 -10.075,-0.169 -14.92,1.046 -2.479,0.621 -3.073,2.146 -4.633,-0.088 -1.707,-2.445 -3.415,-4.89 -5.122,-7.335 3.856,-2.594 9.683,-2.7 14.167,-2.914 5.469,-0.26 10.914,-0.389 16.384,-0.108 9.01,0.462 22.675,-0.034 30.215,5.708 -2.183,2.742 -4.364,5.484 -6.547,8.227" fill="none" stroke="#000000" stroke-linecap="square" stroke-miterlimit="10"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/79-2.svg b/htdocs/public/symbols/svgicons/79-2.svg deleted file mode 100755 index be04968..0000000 --- a/htdocs/public/symbols/svgicons/79-2.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata7">image/svg+xml</metadata> - <g id="g7" transform="matrix(0.1034433,-0.1034433,0.1034433,0.1034433,-1.4469352,12.187413)" fill="#4d4d4d"> - <g id="layer1"> - <path id="path3297" d="M 27.233047,80.190277 50.521446,102.74008 C 80.457618,77.648438 118.54006,55.793946 120.62015,7.044739 71.963279,10.694428 50.380767,48.797791 27.233047,80.190277 Z" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linejoin="round" stroke-width="6"/> - <path d="M 105.79237,32.142879 A 7.099771,7.181993 0 1 1 95.534653,22.210502 7.099771,7.181993 0 1 1 105.79237,32.142879 Z" id="path3301" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linejoin="round" stroke-width="3.61"/> - <path id="path3303" d="M 91.621361,46.777889 A 7.0997695,7.1819915 0 1 1 81.363648,36.845512 7.0997695,7.1819915 0 1 1 91.621361,46.777889 Z" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linejoin="round" stroke-width="3.61"/> - <path d="M 77.256363,61.612881 A 7.0997695,7.1819915 0 1 1 66.99865,51.680504 7.0997695,7.1819915 0 1 1 77.256363,61.612881 Z" id="path3305" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linejoin="round" stroke-width="3.61"/> - <path id="path3307" d="M 27.233047,80.190277 7.460029,87.048248 C 11.736541,74.369049 18.503852,57.978424 27.636146,52.378753 33.63639,48.699554 47.960906,51.440612 47.960906,51.440612 L 27.233047,80.190276 Z" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linejoin="round" stroke-width="6"/> - <path d="m 51.231438,102.00681 -6.217346,19.9837 c 12.534836,-4.6828 28.698914,-11.97467 34.001465,-21.28266 3.483932,-6.115657 0.282806,-20.344416 0.282806,-20.344416 L 51.231438,102.00681 Z" id="path3309" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linejoin="round" stroke-width="6"/> - </g> - </g> - <path inkscape:connector-curvature="0" d="m 12.663647,24.000053 -0.146243,-0.253609 c -0.281073,-0.491613 -0.365476,-0.855758 -0.360977,-1.556829 0.0037,-0.573683 0.02786,-0.720946 0.199926,-1.232875 0.174389,-0.51883 0.192684,-0.633696 0.168456,-1.066271 l -0.02592,-0.485006 0.118474,0.266569 c 0.135263,0.300825 0.148471,0.626473 0.07034,1.760457 l -0.04998,0.723805 0.183265,0.372084 c 0.187565,0.380772 0.658443,0.916001 0.581266,0.660865 -0.05557,-0.183695 0.101748,-0.591639 0.479451,-1.245833 0.469321,-0.812878 0.569167,-1.130555 0.536838,-1.679007 -0.0391,-0.66333 -0.372644,-1.268016 -0.953349,-1.727135 C 13.27539,18.387204 13.117825,18.309575 12.9987,18.309575 l -0.179563,0 0.249907,0.272121 c 0.345508,0.374833 0.544888,0.837375 0.581266,1.345796 0.02163,0.30224 0.01061,0.40267 -0.03887,0.372084 -0.0373,-0.02306 -0.06664,-0.09006 -0.06664,-0.148093 0,-0.168138 -0.331888,-0.785432 -0.573861,-1.068122 -0.121983,-0.142509 -0.379963,-0.375097 -0.57201,-0.516475 -0.333196,-0.245283 -0.366654,-0.257311 -0.760829,-0.257311 -0.227194,0 -0.403017,0.01999 -0.390595,0.04443 0.355079,0.698455 0.372338,0.755718 0.370233,1.229174 -0.0019,0.437648 -0.02464,0.519208 -0.279526,1.066271 -0.316737,0.679812 -0.395968,0.981433 -0.398,1.486484 -0.003,0.73232 0.345394,1.282872 1.016289,1.606811 0.205689,0.09932 0.448907,0.198953 0.54054,0.220288 l 0.166605,0.03702 z m -2.471305,-1.928913 0.04628,-0.266567 c 0.06547,-0.379236 0.146956,-0.559475 0.490559,-1.09589 0.166957,-0.260644 0.337697,-0.561507 0.38134,-0.66827 0.123544,-0.30223 0.05492,-0.920239 -0.148094,-1.330987 l -0.168455,-0.342466 -0.07405,0.255461 c -0.05696,0.195346 -0.184194,0.360983 -0.544242,0.703442 -0.5221647,0.496655 -0.5992159,0.658928 -0.5997775,1.269899 -4.096e-4,0.448141 0.1188643,0.797232 0.3998516,1.179191 L 10.19234,22.07114 Z" id="path2396" fill="#ff0000"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/79-3.svg b/htdocs/public/symbols/svgicons/79-3.svg deleted file mode 100755 index f898767..0000000 --- a/htdocs/public/symbols/svgicons/79-3.svg +++ /dev/null @@ -1,459 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - viewBox="0 0 24 24" - height="24" - width="24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="79-3.svg"> - <defs - id="defs96" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview94" - showgrid="false" - inkscape:zoom="13.906433" - inkscape:cx="-6.6869741" - inkscape:cy="17.701382" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4411"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - id="path3" - d="m 13.731752,19.429284 c 1.354243,-1.735792 2.726364,-3.448226 4.018258,-5.232082 0.633909,-0.875308 1.191274,-1.793829 1.743699,-2.721334 0.484235,-0.812869 1.017254,-1.7993085 1.20457,-2.7355277 0.533019,-2.6630275 -0.226486,-5.7511763 -2.985282,-6.81937 -1.398535,4.8154961 -2.797159,9.6308127 -4.195693,14.4462187 -0.325669,1.121109 -0.651248,2.242398 -0.976916,3.363507 0.396193,-0.10062 0.793284,-0.20124 1.190375,-0.301861" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path5" - d="m 12.856713,19.640408 c 0.348488,-1.725461 0.708116,-3.394592 1.196665,-5.081781 0.860304,-2.971268 1.720609,-5.9426248 2.581003,-8.9139821 0.359449,-1.2412248 0.718808,-2.4825396 1.078256,-3.7237644 0.970628,0.3000644 1.628793,0.9416095 1.968837,1.893371 0.358819,1.0042278 0.547303,2.0604728 0.493758,3.1296547 -0.109335,2.1849008 -1.432313,4.1950638 -2.497363,6.0384838 -0.697515,1.207265 -1.465015,2.376439 -2.208798,3.555405 -0.387478,0.614233 -0.773519,1.229545 -1.149498,1.850966 -0.202319,0.334563 -0.399517,0.672181 -0.599231,1.008271 -0.08086,0.134759 -0.736685,0.248856 -0.864258,0.243465" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path7" - d="m 12.554852,19.715873 c 0.701738,-0.943586 1.403385,-1.887082 2.105033,-2.830668 0.395744,-0.532211 0.791578,-1.064421 1.187321,-1.596541 0.223611,-0.300694 0.437699,-0.414071 0.809635,-0.157309 0.402662,0.278053 0.0186,0.544069 -0.200881,0.84584 -0.315787,0.434015 -0.657447,0.852309 -0.990932,1.272848 -0.323423,0.407693 -0.644689,0.81817 -0.977905,1.217957 -0.233942,0.280569 -0.529694,0.903338 -0.890311,0.995783 -0.315337,0.07996 -0.745669,0.256043 -1.04214,0.251551" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path9" - d="M 20.894668,7.4251774 C 20.633235,7.0955556 20.310261,6.7844408 19.81794,6.7353884 19.620383,6.7157135 19.645538,6.7376344 19.571959,6.5540919 19.460827,6.2771162 19.349696,6.0001405 19.238564,5.7232546 18.729982,4.4557966 18.221399,3.1882487 17.712817,1.9207008 c 1.142042,0.4727363 1.858333,1.1813916 2.49368,2.2309885 0.584856,0.9681123 0.652236,2.1772644 0.687273,3.2734881" - inkscape:connector-curvature="0" - style="fill:#ffd900" /> - <path - id="path11" - d="m 16.415262,15.025344 c -0.514062,0.848176 -1.055705,1.678654 -1.578752,2.52117 -0.264308,0.425661 -0.537151,0.848716 -0.787535,1.282641 -0.06163,0.10682 -0.258648,0.575603 -0.360526,0.602914 l -0.832275,0.222893 c 0.09164,-0.473006 0.222713,-0.645139 0.510559,-1.032079 0.476869,-0.641185 0.953558,-1.282191 1.430427,-1.923287 0.388287,-0.522148 0.776664,-1.044207 1.164951,-1.566355 0.132963,-0.178781 0.357335,-0.28344 0.516351,-0.234926" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" - sodipodi:nodetypes="ccccccccc" /> - <path - id="path13" - d="M 19.114945,2.7350974 C 19.919818,3.9736271 20.170561,5.3647045 20.170561,6.821904 20.07021,6.772043 19.654791,6.7615317 19.628019,6.6947808 19.432258,6.2068616 19.236498,5.7189423 19.040647,5.2309333 l -1.32819,-3.3102325 c 0.495017,0.1530868 1.083467,0.5013952 1.402398,0.8143966" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path15" - d="m 13.399345,19.429284 c 1.083826,-1.917268 2.255425,-3.783777 3.388393,-5.672387 0.573896,-0.956612 1.09811,-1.939728 1.615137,-2.927964 C 18.869862,9.936286 19.331009,8.9325073 19.505118,7.9353768 19.887386,5.7455349 19.307471,3.4797784 17.754952,1.8732654 17.508791,1.6186598 15.94621,0.5780469 15.826992,1.2485204 15.684776,2.0480036 15.54265,2.8474868 15.400434,3.64697 c -0.942419,5.2964978 -1.884837,10.592995 -2.826356,15.889942 -0.0115,0.06469 -0.023,0.12919 -0.0345,0.193874 0.28569,-0.10062 0.572279,-0.201241 0.858867,-0.301861" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path17" - d="m 12.64559,19.54967 c 0.661489,-4.881708 1.662932,-9.7278398 2.521979,-14.5773852 l 0.57731,-3.2587543 c 0.03648,-0.2060024 0.07304,-0.4120946 0.109514,-0.6180969 0.03899,-0.21983771 0.974132,0.1498525 1.10422,0.2148965 0.943406,0.471209 1.274465,1.684943 1.492866,2.640298 0.224239,0.9802407 0.271226,2.1204857 0.105921,3.1112376 -0.361246,2.165765 -1.482085,4.2371083 -2.395935,6.2132213 -0.915645,1.980246 -1.853122,3.947735 -2.725466,5.948015 -0.134759,0.306354 -0.45908,0.351273 -0.790589,0.326118" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path19" - d="m 15.993016,12.32656 c 0.338426,-0.204655 0.841079,-0.165844 1.176361,0.03019 0.350824,0.205104 0.28587,0.336091 0.127931,0.641186 -0.434015,0.838114 -0.89606,1.656374 -1.394581,2.457744 -0.480103,0.771723 -0.995873,1.521345 -1.486397,2.286599 -0.249844,0.389814 -0.506786,0.777742 -0.733451,1.181661 -0.101789,0.181476 -0.180758,0.469323 -0.385053,0.540925 -0.252719,0.08867 -0.505438,0.177433 -0.758067,0.266105 0.136017,-0.76211 0.271855,-1.52431 0.407872,-2.28642 0.09128,-0.511367 0.568146,-1.160099 0.820326,-1.616125 0.350015,-0.633101 0.707487,-1.261349 1.069901,-1.887442 0.300064,-0.516578 0.678289,-1.246975 1.156236,-1.614419" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path21" - d="m 16.6806,12.165478 c -0.574435,1.332143 -1.31206,2.667339 -1.901138,3.992564 -0.275628,0.620164 -0.546046,1.242932 -0.825088,1.861568 -0.164406,0.364749 -0.324501,0.729498 -0.478845,1.09856 -0.04348,0.104124 -0.07421,0.315427 -0.195581,0.336988 -0.206542,0.03665 -0.413083,0.0734 -0.619535,0.110144 0.05507,-0.445066 0.110234,-0.890042 0.165305,-1.335108 0.03504,-0.282456 0.02956,-0.66095 0.158927,-0.909986 0.379303,-0.730306 0.763907,-1.45657 1.162166,-2.176725 0.378135,-0.68395 0.774148,-1.357657 1.213015,-2.004593 0.329712,-0.48693 0.574974,-1.148503 1.206547,-1.152096" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" - sodipodi:nodetypes="ccccccccccc" /> - <path - id="path23" - d="m 19.612656,6.7164322 c -0.307251,-0.4318593 -0.982127,-0.4948369 -1.45657,-0.399517 -0.256043,0.051388 -0.54371,-1.0171648 -0.63355,-1.233319 -0.555029,-1.3358261 -1.109879,-2.6716521 -1.664908,-4.0073883 0.656907,0.01689 1.126679,0.1752772 1.648647,0.5855749 0.527988,0.4149695 0.930111,0.8983967 1.284348,1.4651054 0.29737,0.4756112 0.574615,1.1295542 0.658256,1.6873687 0.07816,0.527269 0.310845,1.4010496 0.162609,1.9021753" - inkscape:connector-curvature="0" - style="fill:#ffd900" /> - <path - id="path25" - d="m 16.430535,1.0913009 c 1.063702,0.2478677 1.545063,1.2145425 1.843151,2.1753778 0.164586,0.5307728 0.248407,1.0610065 0.318841,1.611005 0.03279,0.2566719 0.154255,1.285426 -0.02057,1.401409 -0.114905,0.076274 -0.526461,0.063517 -0.569853,-0.040877 C 17.78397,5.7131926 17.565839,5.1881696 17.347708,4.6632364 16.85368,3.4739388 16.359562,2.2847311 15.865444,1.0954336 c -0.0026,-0.00638 -0.0054,-0.012847 -0.008,-0.019226 0.173391,0.00449 0.45369,0.010601 0.572279,0.015093" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path27" - d="m 12.977098,19.429284 c 0.834611,-2.01133 1.745495,-3.98394 2.623588,-5.975955 0.451085,-1.023363 0.914119,-2.042864 1.327202,-3.082219 0.389814,-0.9805102 0.855094,-2.0071081 1.007731,-3.0576034 0.284163,-1.9551807 0.05112,-4.7234104 -1.565546,-6.1012815 -0.368702,-0.31416929 -0.838563,-0.58243055 -1.327022,-0.63345948 -0.160453,-0.0168 -0.795979,0.002156 -0.818888,0.22549757 -0.069,0.67101251 -0.137904,1.34202501 -0.206811,2.01312731 -0.559791,5.4491354 -1.119582,10.8984505 -1.679373,16.3472265 -0.01312,0.128381 -0.02641,0.256761 -0.03953,0.385142 0.227295,-0.04043 0.453691,-0.07996 0.679188,-0.120385" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path29" - d="m 12.932178,19.429284 c -0.187225,0.02453 -0.41991,-0.02515 -0.618186,-0.04492 l 1.53545,-14.9322518 c 0.1061,-1.0322579 0.212201,-2.0645157 0.318391,-3.0967735 0.01985,-0.1927061 0.03962,-0.38532232 0.05938,-0.57802841 0.0248,-0.24077031 0.84045,-0.21103338 0.989674,-0.16844938 0.842067,0.24059064 1.242034,1.35756729 1.472562,2.13243439 0.309228,1.039445 0.314529,2.1381842 0.314529,3.2127565 0,0.9589486 -0.339684,1.985816 -0.602285,2.8992159 -0.320279,1.114012 -0.665622,2.2192193 -1.018513,3.3232593 -0.647654,2.026244 -1.33897,4.040898 -2.031993,6.051959 -0.129369,0.377327 -0.266824,0.888515 -0.418653,1.201157" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path31" - d="m 12.298809,19.54967 c 0.06244,-0.60534 0.124967,-1.21077 0.187495,-1.816199 0.04995,-0.483967 0.189562,-0.822482 0.374901,-1.275813 0.403111,-0.985811 0.806132,-1.979168 1.256408,-2.944585 0.177433,-0.380202 0.345523,-1.086701 0.79005,-1.202055 0.138623,-0.03594 1.193879,0.01186 1.079873,0.28569 -0.407872,0.979522 -0.839372,1.949072 -1.280036,2.914219 -0.350105,0.766872 -0.692843,1.536977 -1.041691,2.304388 -0.161082,0.354507 -0.31911,0.710811 -0.466447,1.071248 -0.03324,0.08122 -0.156232,0.530593 -0.237626,0.545057 -0.219209,0.04043 -0.440215,0.07906 -0.66122,0.118589" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path33" - d="m 12.932178,19.429284 c -0.187225,0.02453 -0.41991,-0.02515 -0.618186,-0.04492 0.03935,-0.378405 0.07879,-0.75681 0.118139,-1.135215 0.0318,-0.305814 -0.0082,-0.766242 0.114186,-1.051303 0.29117,-0.678919 0.5606,-1.36727 0.85761,-2.043583 0.300962,-0.685297 0.590156,-1.376075 0.906662,-2.054274 0.225407,-0.483248 0.409309,-0.945293 1.034503,-0.803436 -0.383435,1.177438 -0.792296,2.346342 -1.183907,3.521086 -0.219388,0.658435 -0.44803,1.313456 -0.663466,1.973238 -0.169797,0.521969 -0.349476,1.188579 -0.565091,1.639574" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path35" - d="M 15.269807,0.62386514 C 17.689369,1.3937911 18.029592,4.1646262 18.029592,6.3394649 17.812898,6.0712935 17.420838,5.9932229 17.096157,5.9663608 16.996885,5.9580955 16.429008,6.0779417 16.417149,6.0494625 16.118522,5.3274211 15.819985,4.6054695 15.521268,3.883428 15.142594,2.9679618 14.76392,2.0524057 14.385245,1.1369395 14.328377,0.99957464 14.143756,0.77245995 14.327209,0.69933046 14.632664,0.57777739 14.952493,0.52620941 15.270525,0.62386514" - inkscape:connector-curvature="0" - style="fill:#ffd900" /> - <path - id="path37" - d="m 15.269807,0.62386514 c 0.317493,0.0300064 0.597074,0.41955126 0.776753,0.67110236 0.322974,0.4520732 0.508134,0.9625422 0.665173,1.4904401 0.139521,0.4688732 0.222893,0.9916503 0.250024,1.4795695 0.01429,0.2575704 0.04241,0.5181054 0.04241,0.7760351 0,0.1668323 0.102956,0.8079281 0,0.9214855 -0.04887,0.053994 -0.581083,0.1011595 -0.594559,0.068548 C 16.211147,5.5512117 16.012691,5.071378 15.814235,4.5915443 15.29613,3.3389098 14.778114,2.0863651 14.259919,0.83373061 14.141331,0.54561478 15.109802,0.57454316 15.270615,0.62386514" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path39" - d="m 12.554852,19.429284 c 1.362688,-4.15742 2.906223,-8.317536 3.794019,-12.6089971 0.214088,-1.034953 0.06082,-2.1615425 -0.05292,-3.1989212 C 16.187699,2.634477 15.75566,1.4759944 14.997952,0.81297764 14.62359,0.4854222 14.171427,0.28157599 13.67084,0.26252998 c -0.222712,-0.008535 -0.448929,0.0283893 -0.648462,0.12829105 -0.281109,0.14059909 -0.232955,0.44542509 -0.268891,0.72626387 -0.146528,1.1418622 -0.161711,2.3216368 -0.23493,3.4697878 -0.273472,4.2808602 -0.521789,8.5695363 -0.703984,12.8551583 -0.01994,0.468693 -0.03261,0.938196 -0.06019,1.40644 -0.01078,0.183452 -0.12883,0.480103 0.08526,0.503012 0.220736,0.02246 0.550448,0.05301 0.715753,0.07726" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path41" - d="m 11.966941,19.369092 c 0.159915,-4.316617 0.184621,-8.631975 0.435543,-12.9458965 0.06073,-1.0430386 0.13422,-2.0852686 0.198456,-3.1280376 0.03297,-0.5358038 0.07169,-1.0708889 0.109784,-1.6063333 0.02533,-0.3558549 -0.07259,-1.19657458 0.364749,-1.32145172 0.219658,-0.0627979 0.39206,-0.10565145 0.625913,-0.10565145 0.230349,0 0.454588,0.34983567 0.579466,0.51298451 0.312821,0.40877046 0.479384,0.93532076 0.579196,1.43473956 0.21292,1.0654985 0.255953,2.1513007 0.22397,3.2363842 -0.06082,2.0637071 -0.387568,4.1839233 -0.79562,6.2058553 -0.440124,2.181576 -0.917802,4.354169 -1.498436,6.503134 -0.09774,0.361604 -0.195491,0.723209 -0.293147,1.084814 -0.07546,0.278503 -0.255144,0.153626 -0.529515,0.128471" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path43" - d="m 12.554852,19.429284 c -0.206092,-0.02012 -0.412095,-0.04007 -0.618187,-0.06019 0.145001,-0.945114 0.346961,-1.890766 0.62187,-2.8074 0.142216,-0.473994 0.272664,-0.951133 0.433836,-1.419018 0.04779,-0.138622 0.118678,-0.481001 0.263859,-0.539038 0.192796,-0.07708 0.393318,-0.07133 0.595637,-0.03764 0.454499,0.07564 0.08337,0.634268 -0.0023,0.919958 -0.130627,0.435273 -0.280299,0.864437 -0.41991,1.296835 -0.137275,0.425301 -0.282456,0.847638 -0.415688,1.274376 -0.130268,0.418653 -0.233584,1.016087 -0.459081,1.37275" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path45" - d="m 12.434467,19.414012 c -0.155872,-0.01509 -0.311744,-0.0301 -0.467616,-0.04519 0.07978,-0.387299 0.104214,-0.813857 0.19603,-1.215171 0.124518,-0.543979 0.271496,-1.082478 0.413532,-1.622145 0.135748,-0.515949 0.282456,-1.033067 0.461237,-1.536079 0.138623,-0.389904 0.264578,-0.452343 0.648553,-0.452343 -0.187226,0.80164 -0.383077,1.600225 -0.576861,2.400067 -0.109514,0.452253 -0.232954,0.900284 -0.351902,1.350111 -0.08445,0.320727 -0.157219,0.854375 -0.322524,1.121199" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path47" - d="M 13.881784,0.27699417 C 16.34959,0.79644714 16.424157,4.0921256 16.430445,6.0828828 15.978282,5.705107 15.012506,5.537017 14.50033,5.8870324 14.099555,4.8188387 13.759961,3.7237829 13.440581,2.6286374 13.274827,2.0604015 13.107096,1.4921655 12.934604,0.92599595 c -0.10089,-0.33123887 -0.13467,-0.48073208 0.238435,-0.60381243 0.221005,-0.0725905 0.547123,-0.063337 0.708835,-0.0451894" - inkscape:connector-curvature="0" - style="fill:#ffd900" /> - <path - id="path49" - d="m 13.746126,0.26190111 c 1.088857,0.70030022 1.248681,2.31292229 1.311839,3.49090009 0.03055,0.5687749 0.03037,1.1348547 0.03037,1.7043483 0,0.20735 0.0073,0.2052837 -0.150931,0.2790421 -0.142126,0.066302 -0.299346,0.064864 -0.43707,0.1508408 C 14.109887,4.8465093 13.776312,3.7800226 13.465287,2.7132663 13.300072,2.1467374 13.129377,1.5818255 12.962005,1.0158356 12.881509,0.7433519 12.733992,0.54489607 13.022198,0.38255578 13.238711,0.26100271 13.506434,0.26190111 13.746306,0.26190111" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path51" - d="M 9.4486453,19.187616 C 8.1713947,17.378514 6.9305292,15.552074 5.7454541,13.681252 4.6543513,11.959026 3.4336099,9.8927137 3.173524,7.8417639 2.8449803,5.251237 4.0292469,2.4024211 6.6435813,1.5587367 7.7691825,6.4501474 8.8948736,11.341378 10.020475,16.233148 c 0.256672,1.115629 0.513433,2.231168 0.770195,3.346797 -0.418653,-0.116791 -0.9788928,-0.185968 -1.3420247,-0.3917" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path53" - d="m 7.5333534,14.709108 c 0.5398465,0.833622 1.0796931,1.667245 1.6195397,2.500867 0.3547768,0.547842 0.7095537,1.095595 1.0643309,1.643437 0.157219,0.242747 0.298088,0.59411 0.573446,0.726533 -0.35864,-0.10071 -0.71728,-0.20151 -1.0760095,-0.30222 C 9.3977062,19.188694 9.3286195,19.030845 9.1469637,18.758092 8.7757462,18.200817 8.3773072,17.657646 7.9876726,17.112679 7.6295716,16.611643 7.2956376,16.094256 6.9506533,15.584416 6.8022381,15.365117 6.5038806,15.138901 6.7039535,14.890045 6.8806682,14.66904 7.2868333,14.66904 7.5333534,14.708569" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path55" - d="M 6.628578,1.5588266 C 6.2136984,2.6896385 5.6752893,3.7816397 5.1371497,4.858458 5.0105656,5.1118059 4.5901159,6.2790028 4.3302098,6.2528595 3.7471503,6.1941942 3.3489809,6.5953283 3.1149485,7.0783064 3.218354,4.6267615 4.2141369,2.4443762 6.628578,1.5588266" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path57" - d="M 9.8104296,19.308899 C 8.8590275,17.321736 7.7982007,15.393058 6.804574,13.427186 6.3029991,12.434727 5.8275675,11.437597 5.3909467,10.415042 4.9908009,9.4780138 4.5914635,8.4662394 4.4800623,7.4476373 4.2414482,5.2649825 4.9339323,3.0288731 6.5798849,1.5426554 6.9656565,1.194347 7.460134,0.98421205 7.9472447,0.82762151 8.1845113,0.75134763 8.5452176,0.73616472 8.5771106,1.0036174 8.6713525,1.7946557 8.7655943,2.585694 8.8598361,3.3768221 9.4957213,8.7125798 10.131517,14.047978 10.767312,19.384454 c 0.0077,0.0654 0.01554,0.130627 0.02336,0.196031 -0.32495,-0.09164 -0.650978,-0.201241 -0.9802404,-0.271316" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path59" - d="M 10.564454,19.338546 C 9.6235631,17.345902 8.5521352,15.423244 7.5585983,13.456923 7.0552266,12.460691 6.583209,11.456194 6.1449711,10.429865 5.7473407,9.4985871 5.3449488,8.4896876 5.2341765,7.4772844 4.9953827,5.2950788 5.6868786,3.044595 7.3339991,1.5573891 7.7198605,1.2089909 8.2094867,0.99714896 8.7013589,0.85654988 8.9441057,0.78719366 9.298613,0.74505885 9.3312248,1.0183511 9.4254666,1.8093894 9.5197085,2.6004277 9.6139503,3.3915558 10.249746,8.7273135 10.885541,14.062712 11.521336,19.399188 c 0.0077,0.0654 0.01554,0.130627 0.02336,0.19603 -0.32513,-0.08714 -0.651248,-0.19046 -0.980241,-0.256941" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path61" - d="m 6.3571724,12.552058 c -0.037733,-0.421887 1.2499393,-0.548921 1.3910775,-0.228732 0.3410313,0.773789 0.6820627,1.547668 1.023184,2.321457 0.7156628,1.623852 1.5492851,3.221111 2.0193261,4.934803 C 10.617909,19.530983 9.8867035,19.437639 9.8168981,19.289674 9.6443161,18.924116 9.4644571,18.566105 9.2760633,18.208363 8.9405121,17.57113 8.6078358,16.93264 8.2690504,16.297114 7.9506586,15.69995 7.6290326,15.105301 7.3214216,14.502297 7.0101271,13.893184 6.7633375,13.083729 6.3571724,12.552777" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path63" - d="M 10.730478,19.369092 C 10.427898,19.386071 9.9274907,18.009907 9.7751226,17.718468 9.4743394,17.143044 9.1883798,16.559536 8.8796907,15.988066 8.2033776,14.73597 7.3859226,13.090066 6.7596502,11.812187 c 0.2181307,-0.05884 0.6214109,0.25083 0.8296593,0.33402 0.165305,0.06585 0.2070944,0.287084 0.2788763,0.449963 0.3673544,0.833443 0.7347987,1.667065 1.1021531,2.500597 0.413532,0.938196 0.827064,1.876481 1.2405061,2.814587 0.184621,0.417755 0.524664,1.052023 0.519633,1.4572" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" - sodipodi:nodetypes="ccccccccc" /> - <path - id="path65" - d="m 7.970603,0.8198953 c 0.1892922,0.009703 0.3786742,0.0194054 0.5679664,0.0291081 0.053095,0.002695 0.068907,0.45162405 0.075196,0.50984015 C 8.658146,1.7693209 8.678899,2.066241 8.5837588,2.4706094 8.404888,3.2311022 8.2254782,3.9880014 7.9939613,4.7346589 7.8867826,5.0801823 7.764421,5.4310062 7.6766476,5.7814708 7.6468209,5.9002388 6.5912047,5.912457 6.4454848,5.9260228 5.7395247,5.9919651 5.0718362,5.7989895 4.4418805,6.2640895 4.333444,5.8139927 4.5505865,5.0718272 4.645547,4.5974737 4.7662017,3.9945597 5.0328458,3.4593848 5.3198836,2.9211553 5.8663783,1.8966237 6.8812072,1.1551769 7.970603,0.8198953" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path67" - d="M 8.5587834,0.88026755 C 8.5975043,1.2283963 8.6361353,1.5764352 8.6748562,1.9245639 8.7064798,2.2090861 8.5524946,2.6040213 8.487271,2.8812665 8.333735,3.5339517 8.166184,4.1795396 7.9674586,4.8201863 7.8761815,5.1145909 7.7971226,5.4117805 7.6998263,5.7044782 7.6225642,5.936534 7.0383368,6.099585 6.8139173,6.1205176 6.2744301,6.1710075 5.737638,5.8591821 5.2109979,5.9474046 5.3911264,4.8666334 5.6219245,3.8528826 6.1912385,2.9011211 6.4809715,2.4167954 6.8310767,2.0036228 7.2579948,1.6377058 7.6593086,1.29353 8.137615,1.1408026 8.5587834,0.88026755" - inkscape:connector-curvature="0" - style="fill:#ffd900" - sodipodi:nodetypes="cccccccccc" /> - <path - id="path69" - d="M 10.232766,19.338546 C 9.5473791,17.281937 8.7525675,15.270876 8.0170501,13.232773 7.6356807,12.175989 7.2360739,11.124326 6.8846211,10.0573 6.5526635,9.0494786 6.1820749,7.9864058 6.0837004,6.9245009 5.9006072,4.9474891 6.3618441,2.2206754 8.0459785,0.94037029 c 0.3482186,-0.2647575 0.9597572,-0.60749585 1.41767,-0.55035781 0.1759061,0.0219209 0.7326425,0.0636065 0.7415365,0.30320888 0.02668,0.71027244 0.05336,1.42063474 0.08005,2.13090714 0.204565,5.4511118 0.40913,10.9020435 0.613785,16.3535145 0.0041,0.108976 0.0082,0.217862 0.01231,0.326837 -0.226216,-0.0557 -0.452433,-0.110503 -0.678559,-0.166203" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path71" - d="M 10.866046,19.353819 C 10.179132,17.293436 9.3891714,15.276266 8.6455685,13.236636 7.9023249,11.197904 6.911034,9.035823 6.7091642,6.8548751 6.6089032,5.7714087 6.7724114,4.6314331 7.0732844,3.5872267 7.3479243,2.6342074 7.833328,1.508696 8.7010894,0.94144837 9.1220781,0.66626946 9.633176,0.3719547 10.157301,0.41274191 c 0.181476,0.0141048 0.673168,0.0780707 0.681883,0.31012654 0.02731,0.72806065 0.05462,1.45612135 0.08202,2.18418205 0.204116,5.4379952 0.408232,10.8759905 0.612348,16.3139855 0.0038,0.09954 0.0075,0.199085 0.01123,0.298537 -0.226306,-0.0548 -0.452522,-0.109604 -0.678738,-0.165305" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path73" - d="m 7.4729811,11.73811 c 0.6767622,-0.430421 1.3404079,-0.129279 1.885016,0.316775 0.2019595,0.165395 0.3360902,0.228373 0.3825373,0.477318 0.079059,0.423774 0.1581178,0.847458 0.2372665,1.271142 0.3507341,1.879535 0.8668631,3.786742 0.9335241,5.701135 l -0.55467,-0.135568 C 10.164488,19.322016 10.175718,19.170726 10.11265,18.985117 9.9826523,18.602131 9.8469944,18.221839 9.7100787,17.841368 9.4614025,17.150501 9.2006878,16.466372 8.9330554,15.782602 8.6682979,15.10602 8.4017436,14.430875 8.1466888,13.750609 7.9069067,13.11095 7.7518434,12.329345 7.4729811,11.7382" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path75" - d="M 10.896232,19.369092 C 10.725896,19.167312 10.668129,18.768244 10.579637,18.509506 10.472728,18.197223 10.367615,17.884132 10.254327,17.574185 9.997925,16.872627 9.7375697,16.172866 9.4721833,15.474812 8.9766277,14.171238 8.4139636,12.751775 7.9651246,11.430414 c 0.6453183,-0.122362 1.0807694,0.36726 1.5437133,0.752942 0.4346443,0.362144 0.4015833,1.259642 0.5010361,1.792481 0.219748,1.177528 0.439495,2.355237 0.659243,3.532765 0.105023,0.562396 0.333305,1.303574 0.227115,1.86058" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" - sodipodi:nodetypes="ccccccccc" /> - <path - id="path77" - d="M 9.1620567,0.42783498 C 9.4324741,0.34527232 9.8302842,0.3945943 10.074379,0.54085328 10.270049,0.65818389 9.8973944,1.3121268 9.8103398,1.522172 9.5152165,2.2339717 9.1581936,2.916304 8.8258767,3.6109443 8.5175469,4.2552744 8.1796599,4.9020302 7.8219184,5.5203068 7.7763697,5.5989165 7.7276766,5.6752803 7.6918305,5.7587413 7.6468209,5.8637639 7.6207674,5.7608076 7.5334432,5.766198 7.3709232,5.7763499 7.1899861,5.7148097 7.0206384,5.7210087 6.7034145,5.7325081 6.3117135,5.7954857 6.0403977,5.9624078 6.2331038,3.8704013 6.714914,0.98358317 9.1620567,0.42783498" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path79" - d="M 9.7953366,0.44292804 C 9.8983827,0.47050882 10.00053,0.50779228 10.096928,0.55594635 10.256663,0.63581381 10.013557,1.0317372 9.9496811,1.1858123 9.6727054,1.8538601 9.3588056,2.4966629 9.0469721,3.1484497 8.7387322,3.79269 8.3989586,4.4165366 8.0709539,5.0504454 7.9894694,5.2079343 7.9105901,5.3667708 7.8217387,5.520217 7.7283953,5.6814792 7.7027919,5.9861192 7.5303896,5.9516208 7.236524,5.8930453 6.9854212,5.7178643 6.6886808,5.7511948 6.8266745,4.6324214 6.9814683,3.5512908 7.4718132,2.524064 7.7047675,2.0361447 8.0057303,1.5715838 8.4064153,1.2030615 8.8360286,0.80794662 9.3108312,0.6328491 9.7953366,0.44292804" - inkscape:connector-curvature="0" - style="fill:#ffd900" - sodipodi:nodetypes="ccccccccccc" /> - <path - id="path81" - d="M 10.639919,19.369092 C 9.5874476,15.123269 8.2868387,10.876548 7.6984787,6.5345967 7.5557234,5.4814063 7.7832873,4.3859912 7.9538929,3.3489718 8.1202759,2.3370178 8.6664113,1.2380091 9.4720036,0.60059666 9.838819,0.31032469 10.390255,0.10441216 10.866225,0.16361651 c 0.2246,0.0279401 0.489088,0.0745669 0.65601,0.24130935 0.170605,0.17051569 0.125865,0.47938448 0.128291,0.70991304 0.01204,1.1760912 0.01491,2.3517331 0.01491,3.527914 0,4.3203898 -0.04699,8.6466191 -0.13997,12.9656611 -0.0098,0.456116 -0.02587,0.912501 -0.02587,1.368797 0,0.26907 0.08166,0.357832 -0.19064,0.367624 -0.223072,0.009 -0.446054,0.01797 -0.669036,0.02426" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path83" - d="M 11.062076,19.353819 C 10.526182,17.192277 9.990648,15.031004 9.4792806,12.863532 8.9832758,10.760745 8.4962549,8.6390011 8.2735424,6.4879699 8.1711252,5.4990148 8.2756087,4.3321772 8.5321908,3.3705334 8.8115023,2.3232723 9.1371711,1.1605673 10.081925,0.5033003 c 0.339235,-0.23600881 0.831107,-0.40427852 1.22164,-0.22621629 0.416766,0.19010074 0.343816,0.53409684 0.348129,0.95688229 0.01186,1.1539906 0.01689,2.3077116 0.01365,3.4617022 -0.0124,4.3883085 -0.05103,8.7805695 -0.14545,13.1686985 -0.007,0.322974 -0.02039,0.646486 -0.02039,0.96955 0,0.08553 0.0548,0.449558 0,0.505168 -0.05031,0.05121 -0.356573,0.01258 -0.437429,0.01527" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path85" - d="m 11.333751,18.901027 c 0.01384,0.05624 0.11203,0.351453 0.09038,0.39224 -0.04887,0.09218 -0.275359,0.05561 -0.399607,0.06028 -0.221994,0.0084 -0.376608,0.09766 -0.438687,-0.125686 C 10.384415,18.502768 10.208419,17.768868 10.029369,17.037752 9.6811504,15.61595 9.3256548,14.193788 8.9508437,12.778544 9.0997978,12.72437 9.2349167,12.619258 9.4183693,12.6127 c 0.1049328,-0.0037 0.3168645,0.01914 0.4072432,0.07537 0.1435638,0.08921 0.1333221,0.202409 0.1772535,0.371397 0.166114,0.640198 0.325849,1.283899 0.475432,1.928139 0.161352,0.69491 0.33025,1.388203 0.494298,2.082573 0.124607,0.528258 0.419371,1.319745 0.361155,1.831831" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path87" - d="m 11.42404,19.338546 c -0.05804,0.0025 -0.338875,0.04492 -0.351992,-0.0047 -0.04681,-0.177793 -0.09361,-0.355676 -0.140419,-0.533468 -0.06828,-0.259457 -0.122542,-0.522598 -0.188933,-0.782594 -0.167282,-0.654931 -0.323962,-1.312198 -0.48172,-1.969555 -0.2749996,-1.146264 -0.5759765,-2.410548 -0.8695726,-3.552321 0.1455403,0.0142 0.3293662,0.139762 0.4643054,0.207322 0.1771642,0.08849 0.3221312,0.6163 0.3720822,0.826076 0.174559,0.733091 0.354777,1.464925 0.531582,2.197478 0.289283,1.196664 0.434049,2.410398 0.664667,3.610656" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" - sodipodi:nodetypes="cccccccscc" /> - <path - id="path89" - d="m 10.564454,0.17143256 c 0.196749,0.007726 1.181032,0.0264129 1.025969,0.42269565 C 11.379929,1.1320881 11.169344,1.6701379 10.95885,2.2081877 10.500668,3.379158 10.042396,4.5501282 9.5842133,5.7210985 9.0712288,5.4398105 8.1086866,5.4072885 7.6539182,5.8116569 7.6771867,3.8085018 8.1696877,0.57094957 10.564454,0.17143256" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path91" - d="M 8.2421884,5.5550748 C 8.3530505,4.5318908 8.3812602,3.3304649 8.8059323,2.3749301 9.2209916,1.4410468 9.7551782,0.32532791 10.906294,0.1971267 c 0.206991,-0.0230888 0.576771,0.0923552 0.653494,0.24580134 0.0893,0.17860126 -0.09038,0.46042831 -0.180129,0.68969916 -0.271316,0.6932927 -0.542631,1.3866753 -0.813947,2.079968 C 10.238516,4.048733 9.9113196,5.1137743 9.5841235,5.9499121 9.2170386,5.7255824 8.6578765,5.5050341 8.2421884,5.5550748" - inkscape:connector-curvature="0" - style="fill:#ffd900" - sodipodi:nodetypes="cscscccc" /> - <path - id="path93" - d="M 11.137541,19.398739 C 10.335363,15.07233 9.7245429,10.76883 9.5846625,6.3665965 9.5525898,5.3576072 9.6209578,4.2965108 9.8060275,3.3051301 10.007089,2.2283118 10.237078,1.0958828 11.101875,0.34895575 c 0.251281,-0.21705265 1.082388,-0.55044766 1.238709,-0.0817541 0.161173,0.48297806 0.139162,1.00916905 0.139162,1.51290005 0,1.0890365 -0.05247,2.1750184 -0.105652,3.2623479 -0.215794,4.4125653 -0.466986,8.8240524 -0.706948,13.2351804 -0.02363,0.433835 -0.0433,0.867941 -0.06217,1.302046 -0.153356,-0.06109 -0.308959,-0.133861 -0.466717,-0.180578" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path95" - d="m 10.127294,5.1178251 c 0.08957,-1.1052076 0.191089,-2.1878655 0.54389,-3.2455479 0.175456,-0.5259214 0.424043,-0.95481602 0.780257,-1.37805071 0.133951,-0.15910605 0.370768,-0.28452223 0.56599,-0.34965599 0.269609,-0.08983967 0.352351,0.0592043 0.391701,0.3478592 0.139251,1.0205787 0.1008,2.1081777 0.03656,3.1350451 -0.07142,1.1416825 -0.115085,2.2856111 -0.170246,3.4282818 -0.195312,4.0498824 -0.434825,8.0985074 -0.655291,12.1472214 -0.781426,-4.283555 -1.508049,-8.612929 -1.508049,-12.9809335 0,-0.3684325 0.0042,-0.7355174 0.01518,-1.1041296" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path97" - d="m 11.574881,12.190902 c 0.382537,0.51029 0.370049,0.896331 0.342289,1.526646 -0.0301,0.686105 -0.07753,1.371582 -0.110683,2.057598 -0.061,1.262067 -0.20708,2.542283 -0.20142,3.805069 -0.07564,-0.03028 -0.440754,-0.123799 -0.455128,-0.194593 -0.05085,-0.249574 -0.101698,-0.499239 -0.152637,-0.748813 -0.07663,-0.3758 -0.146978,-0.753126 -0.212381,-1.130992 -0.146798,-0.848356 -0.28021,-1.69788 -0.424673,-2.546595 -0.118669,-0.794268 -0.19637,-1.629158 -0.286206,-2.429085 -0.008,-0.451723 0.03394,-0.413891 0.451242,-0.497442 0.314349,-0.06019 0.810444,0.03953 1.049597,0.160813" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" - sodipodi:nodetypes="ccscccccccc" /> - <path - id="path99" - d="m 11.951848,12.929384 c -0.07573,2.092636 -0.236548,4.181857 -0.331688,6.273504 -0.293686,-1.584771 -0.573447,-3.169184 -0.815924,-4.76276 -0.03962,-0.260625 -0.334241,-2.533903 -0.334241,-2.533903 0.372168,-0.182898 0.899517,0.106521 1.128878,0.284228 0.193964,0.150032 0.198858,0.536352 0.352975,0.738482" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" - sodipodi:nodetypes="cccccc" /> - <path - id="path101" - d="M 9.5994861,5.087639 C 9.7036103,4.0108207 9.8228275,2.9755083 10.127923,1.9344462 10.373095,1.0977694 11.072587,-0.17283306 12.140511,0.07341748 12.748906,0.2136572 12.46645,2.282575 12.389457,2.7132663 12.209418,3.720369 12.032704,4.7431937 11.786184,5.7361916 11.201058,5.4783517 10.154965,5.3729698 9.5843032,5.7210087 9.5790925,5.5137485 9.6047866,5.2826809 9.5993963,5.087639" - inkscape:connector-curvature="0" - style="fill:#ff0000" /> - <path - id="path103" - d="m 12.223343,0.08096401 c 0.316056,0.3553159 0.256493,1.02695729 0.256493,1.47121439 0,0.4977118 -0.007,0.9944354 -0.01833,1.4920573 -0.0203,0.8922876 -0.152997,1.8036212 -0.11751,2.6919559 C 11.895608,5.6612653 11.445332,5.600893 10.990653,5.5800502 10.566341,5.5606448 9.9694459,5.5204865 9.5843032,5.7210087 9.5781941,4.7139958 9.7288552,3.6870385 9.9274907,2.6928727 10.155953,1.5461592 10.840352,-0.1819967 12.222715,0.08096401" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path105" - d="m 10.127294,5.1178251 c 0.08041,-0.9915604 0.135299,-2.0206738 0.452612,-2.9719861 0.164407,-0.4926808 0.325579,-1.0029701 0.666072,-1.40751812 0.210494,-0.25011365 0.807838,-0.88869402 1.083017,-0.5066059 0.243825,0.33860571 0.150931,1.08445462 0.150931,1.47786252 0,0.5080434 -0.01105,1.0151883 -0.02264,1.523052 -0.01887,0.8302084 -0.171683,1.9055812 -0.138622,2.7322858 -0.7003,-0.1897414 -1.488554,-0.4224181 -2.206463,-0.3645613 -6.29e-4,-0.1632387 0.01123,-0.3214464 0.01455,-0.4825289" - inkscape:connector-curvature="0" - style="fill:#ffd900" - sodipodi:nodetypes="ccccscccc" /> - <path - id="path107" - d="M 12.057499,19.429284 C 13.173128,15.196309 14.123003,10.905476 14.469425,6.5327999 14.55046,5.5097956 14.552347,4.4720576 14.444989,3.4512094 14.329814,2.3557943 14.139713,1.2405246 13.354066,0.41561678 13.187683,0.2410583 12.944936,0.16155019 12.720786,0.09075653 12.621154,0.05931265 12.486933,0.05823457 12.383797,0.07404636 12.184623,0.10468168 12.222715,0.20664971 12.192439,0.388036 c -0.07969,0.47758769 -0.158118,0.9538278 -0.21301,1.4351887 -0.121284,1.0632525 -0.178601,2.1347703 -0.208428,3.2044014 -0.12353,4.4219984 -0.103136,8.8532499 -0.150751,13.2765059 -0.0046,0.425301 -0.01518,0.850512 -0.01518,1.275903 0.13422,-0.04402 0.372565,-0.113198 0.452073,-0.15093" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" /> - <path - id="path109" - d="m 12.027313,19.429284 c 0.100261,-4.408342 0.114007,-8.819919 0.163419,-13.2288909 0.02291,-2.0360364 0.06971,-4.1088173 0.424762,-6.11889005 1.025609,0.16099269 1.527274,1.35181755 1.677216,2.26863135 0.18525,1.1326986 0.256403,2.2612645 0.223522,3.4090561 -0.05893,2.0637071 -0.387748,4.156612 -0.761302,6.1839345 -0.230618,1.252095 -0.471029,2.502034 -0.758606,3.742271 -0.13997,0.603543 -0.272663,1.208972 -0.426828,1.809101 -0.113737,0.44273 -0.227295,0.88537 -0.341032,1.32801 -0.03863,0.146439 -0.08265,0.565092 -0.202319,0.607316" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path111" - d="m 13.852137,12.055244 c -0.200522,1.319835 -0.501395,2.616042 -0.844314,3.90587 -0.169527,0.637322 -0.34741,1.272219 -0.517296,1.909452 -0.0937,0.351363 -0.187675,0.702636 -0.282097,1.05373 -0.03091,0.115084 -0.05238,0.417215 -0.135748,0.505168 -0.07933,0.08382 -0.354327,0.114366 -0.467525,0.150931 0.01312,-1.728785 0.0087,-3.479769 0.0087,-5.209722 0,-0.398888 0.01318,-0.780159 0.01807,-1.179047 0.0026,-0.214447 -0.01025,-0.475495 0.09879,-1.464828 0.260098,-0.0807 1.446063,0.01922 2.121657,0.328267" - inkscape:connector-curvature="0" - style="fill:#ffa300;fill-opacity:1" - sodipodi:nodetypes="ccccccsccc" /> - <path - id="path113" - d="m 13.73773,11.997301 c -0.192167,1.28492 -0.33551,2.489296 -0.651746,3.748556 -0.155962,0.620955 -0.313181,1.242823 -0.485404,1.859395 -0.08274,0.296415 -0.175277,0.589999 -0.259816,0.885865 -0.07969,0.2787 -0.12326,0.737567 -0.298178,0.95344 l 0,-4.814774 c 0,-0.877647 0.07776,-1.767732 0.08943,-2.632575 0.0035,-0.263997 -0.04092,-0.851993 0.197961,-0.92943 0.178152,-0.05781 0.377959,0.518232 0.562849,0.532662 0.336898,0.02556 0.636023,0.05438 0.870504,0.244323" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" - sodipodi:nodetypes="cccccscccc" /> - <path - id="path115" - d="m 10.353421,23.651749 c -0.09119,0.381729 0.638131,0.233942 0.869737,0.243106 0.191898,0.0075 1.262427,0.231876 1.196216,-0.137365 -0.361066,-0.01581 -0.721952,-0.03162 -1.083018,-0.04734 -0.295392,-0.01348 -0.720604,0.02875 -0.982756,-0.0584" - inkscape:connector-curvature="0" - style="fill:#84442f" /> - <path - id="path117" - d="m 12.238616,22.565587 c 0.01437,-0.317763 0.02875,-0.635526 0.04321,-0.953288 0.02021,-0.446414 0.0035,-0.374812 -0.450456,-0.40392 -0.0092,0.271406 -0.01824,0.542632 -0.0274,0.814038 -0.0055,0.16216 0.09191,0.601925 -0.168629,0.528257 0.01833,-0.43141 0.03665,-0.86282 0.05498,-1.294141 0.01123,-0.264128 0.103585,-0.197737 0.382268,-0.183901 0.210314,0.01042 0.383076,-0.0486 0.374002,0.16234 -0.01914,0.448659 -0.03818,0.897229 -0.05732,1.345798 -0.04582,-0.0045 -0.106909,0.0018 -0.150032,-0.01527" - inkscape:connector-curvature="0" - style="fill:#c1d8f1" /> - <path - id="path119" - d="m 12.238616,22.565587 c 0.01437,-0.317763 0.02875,-0.635526 0.04321,-0.953288 0.02021,-0.446414 0.0035,-0.374812 -0.450456,-0.40392 -0.0092,0.271406 -0.01824,0.542632 -0.0274,0.814038 -0.0055,0.16216 0.09191,0.601925 -0.168629,0.528257 0.01833,-0.43141 0.03665,-0.86282 0.05498,-1.294141 0.01123,-0.264128 0.103585,-0.197737 0.382268,-0.183901 0.210314,0.01042 0.383076,-0.0486 0.374002,0.16234 -0.01914,0.448659 -0.03818,0.897229 -0.05732,1.345798 -0.04582,-0.0045 -0.106909,0.0018 -0.150032,-0.01527" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:0.09882364;stroke-linecap:square;stroke-miterlimit:10" /> - <path - id="path125" - d="m 10.760574,22.429929 c -0.02012,0.147517 0.02165,0.373644 -0.180937,0.361964 0.03153,-0.210404 0.08328,-0.435902 0.165934,-0.633459 0.0049,0.09074 0.01,0.181476 0.015,0.271316" - inkscape:connector-curvature="0" /> - <path - id="path133" - d="m 11.197913,22.520667 c 0.01446,-0.317673 0.02893,-0.635346 0.04339,-0.953019 0.0203,-0.446503 0.0034,-0.374721 -0.450636,-0.404188 -0.0092,0.271405 -0.01824,0.542631 -0.0274,0.814037 -0.0055,0.162071 0.09191,0.601836 -0.168539,0.528257 0.01905,-0.448569 0.03818,-0.897139 0.05732,-1.345798 0.01141,-0.267812 0.405716,-0.130807 0.618995,-0.120116 0.213549,0.01069 0.132693,0.207799 0.123709,0.417755 -0.0084,0.196748 0.07349,1.191274 -0.196839,1.063701" - inkscape:connector-curvature="0" - style="fill:#c1d8f1" /> - <path - id="path135" - d="m 11.197913,22.520667 c 0.01446,-0.317673 0.02893,-0.635346 0.04339,-0.953019 0.0203,-0.446503 0.0034,-0.374721 -0.450636,-0.404188 -0.0092,0.271405 -0.01824,0.542631 -0.0274,0.814037 -0.0055,0.162071 0.09191,0.601836 -0.168539,0.528257 0.01842,-0.43141 0.03674,-0.86282 0.05507,-1.29414 0.0133,-0.312103 0.265206,-0.189562 0.553592,-0.175188 0.256133,0.01294 0.205912,0.0769 0.194682,0.340852 -0.01159,0.273113 -0.02327,0.546315 -0.03495,0.819517 -0.0066,0.152728 0.06352,0.404908 -0.165305,0.339145" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:0.09882364;stroke-linecap:square;stroke-miterlimit:10" /> - <path - id="path145" - d="m 11.077259,22.354464 c -0.01294,0.387658 -0.02578,0.775316 -0.03872,1.162975 -0.01087,0.327016 -0.0619,0.254336 -0.40347,0.245801 -0.302939,-0.0076 -0.28569,0.01015 -0.273023,-0.273652 0.01716,-0.383435 0.03441,-0.766781 0.05157,-1.150217 0.199175,0.0099 0.495376,0.06558 0.663646,0.01527" - inkscape:connector-curvature="0" - style="fill:#bf7242" /> - <path - id="path147" - d="m 11.047073,23.018379 c 0.005,-0.09056 0.01,-0.181117 0.015,-0.271585 -0.173391,-0.0079 -0.346781,-0.01572 -0.520172,-0.02363 -0.209775,-0.0094 -0.147966,0.08095 -0.158477,0.28012 0.199175,0.0081 0.495376,0.06379 0.663646,0.01437" - inkscape:connector-curvature="0" - style="fill:#84442f" /> - <path - id="path149" - d="m 11.062076,22.475748 c 0.005,-0.03531 0.01015,-0.07043 0.01518,-0.105742 -0.163059,-0.0074 -0.702187,-0.138353 -0.678649,0.09065 0.192077,0.0081 0.540116,0.0548 0.663466,0.01527" - inkscape:connector-curvature="0" - style="fill:#84442f" /> - <path - id="path151" - d="m 12.465012,22.415555 c -0.015,0.449468 -0.03001,0.898846 -0.04501,1.348314 -0.005,0.152278 -0.577041,0.05238 -0.698863,0.04824 -0.116522,-0.004 -0.80155,0.06136 -0.794003,-0.108706 0.01994,-0.449378 0.03989,-0.898846 0.05992,-1.348224 0.387209,0.01887 1.18229,0.19046 1.477862,0.06019" - inkscape:connector-curvature="0" - style="fill:#ffc461" /> - <path - id="path153" - d="m 12.434467,23.078572 c 0.005,-0.0955 0.01006,-0.191089 0.01509,-0.286589 -0.3254,-0.01321 -0.650799,-0.02659 -0.976108,-0.0398 -0.383077,-0.01572 -0.495915,-0.132783 -0.516848,0.266105 0.492501,0.01976 0.985182,0.04043 1.477683,0.06019" - inkscape:connector-curvature="0" - style="fill:#e3622d" /> - <path - id="path155" - d="m 12.449739,22.53594 c 0.005,-0.04016 0.01006,-0.0805 0.01509,-0.120655 l -1.478043,-0.06037 c -0.03971,0.22999 0.52682,0.147697 0.690867,0.155962 0.198007,0.009 0.642534,0.08355 0.771903,0.02426" - inkscape:connector-curvature="0" - style="fill:#e3622d" /> - <path - id="path157" - d="m 10.338238,23.787407 c 0.053,-0.351812 0.04231,-0.718897 0.05839,-1.073674 0.0027,-0.05831 -0.0256,-0.329981 0.01698,-0.373913 0.05462,-0.05642 0.4651,0.01222 0.553413,0.01446 0.335281,0.0088 0.670832,0.03342 1.005844,0.05031 0.3758,0.01905 0.512176,-0.09218 0.495017,0.291709 -0.01446,0.320728 0.04995,0.770375 -0.04842,1.076189 -0.06621,0.206003 -0.06262,0.166922 -0.30258,0.157489 -0.259277,-0.01024 -1.709828,0.07493 -1.763373,-0.142485" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:0.11679157;stroke-linecap:square;stroke-miterlimit:10" /> - <path - id="path159" - d="m 10.745571,21.193736 c -0.364929,-0.57722 -0.729858,-1.15435 -1.0947865,-1.73148 -0.043572,-0.06891 -0.5656305,-0.827154 -0.2775147,-0.666431 0.1449114,0.08086 0.2969201,0.469592 0.3831662,0.605968 0.2371767,0.375171 0.474353,0.750431 0.71153,1.125512 0.07879,0.124607 0.382717,0.45369 0.383166,0.605968 3.6e-4,0.106011 -0.04753,0.101519 -0.105561,0.0593" - inkscape:connector-curvature="0" /> - <path - id="path161" - d="m 11.213007,21.148816 0.826614,-1.876661 c 0.0318,-0.07205 0.359,-0.911334 0.410029,-0.626722 0.02084,0.116432 -0.219029,0.487111 -0.266195,0.596446 -0.176266,0.408052 -0.352531,0.816103 -0.528797,1.224245 -0.10637,0.246251 -0.21274,0.492411 -0.31911,0.738752 -0.05336,0.122182 -0.122002,-0.03773 -0.122901,-0.0557" - inkscape:connector-curvature="0" /> - <path - id="path163" - d="m 12.223343,0.08096401 c 1.386855,-0.15182904 2.026244,1.51182199 2.145731,2.64820399 0.07708,0.7330018 0.127303,1.448485 0.150931,2.1850804 0.0094,0.2977287 0.05552,0.7045227 -0.01923,0.972784 -0.682332,-0.4571941 -1.964075,-0.4786658 -2.714506,-0.1508408 -0.112928,-0.7524971 0.008,-1.6234927 0.06109,-2.3848839 0.03962,-0.5697632 0.08292,-1.1370109 0.153896,-1.7038992 0.05857,-0.4683342 0.289463,-1.11482047 0.222083,-1.56644449" - inkscape:connector-curvature="0" - style="fill:#ffa300" /> - <path - id="path165" - d="m 12.208071,5.0272667 c 0.03611,-1.6447847 0.120565,-3.3237982 0.407063,-4.94630269 1.317679,0.20681092 1.609298,1.85312289 1.785833,2.93308559 0.103765,0.6345375 0.105472,1.2895586 0.121643,1.9305646 0.0073,0.2888346 0.05004,0.9883154 -0.02219,1.2475029 C 13.946648,5.732677 12.871447,5.5062918 12.208071,5.615447 c 8.98e-4,-0.1960301 8.98e-4,-0.3921501 8.98e-4,-0.5881803" - inkscape:connector-curvature="0" - style="fill:#ffd900" - sodipodi:nodetypes="ccccccc" /> - <path - id="path167" - d="m 9.4486453,19.187616 c 0.2163339,0.214986 0.5879107,0.273741 0.8741397,0.339863 0.215346,0.04986 0.889054,0.292428 0.769567,-0.05336 -0.138263,-0.400146 -1.6232233,-0.844493 -1.6437067,-0.271405" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:0.24256711;stroke-linecap:square;stroke-miterlimit:10" /> - <path - id="path169" - d="m 9.4486453,19.187616 c 0.2163339,0.214986 0.5879107,0.273741 0.8741397,0.339863 0.215346,0.04986 0.889054,0.292428 0.769567,-0.05336 -0.15695,-0.45369 -1.7058758,-0.743872 -1.6437067,-0.286588" - inkscape:connector-curvature="0" - style="fill:#ffd900;fill-opacity:1" /> - <path - id="path171" - d="M 9.4486453,19.187616 C 8.1713947,17.378514 6.9305292,15.552074 5.7454541,13.681252 4.6543513,11.959026 3.4336099,9.8927137 3.173524,7.8417639 2.9011301,5.6940568 3.6462604,3.3929933 5.4516784,2.1123288 5.8671868,1.8175648 6.355735,1.661154 6.781575,1.3901077 7.1496481,1.1558058 7.5308378,0.89697773 7.970603,0.81980546 8.1216235,0.79330275 8.1626802,0.81890706 8.3023809,0.75952304 8.4077629,0.71469304 8.4987705,0.64075499 8.6039727,0.59358917 8.7947922,0.50815164 8.991541,0.47032914 9.192153,0.4201986 9.3066088,0.3916296 9.4116313,0.397559 9.5238411,0.397559 c 0.2038462,0 0.2822762,-0.0309947 0.4825289,-0.10556161 0.304916,-0.11346751 0.604531,-0.12065468 0.919958,-0.12065468 0.194683,0 0.238165,0.047615 0.422247,0 0.230438,-0.0595637 0.456385,-0.16207077 0.701198,-0.11310815 0.382627,0.0765434 0.729858,-0.03467811 1.094517,0.19297561 0.178961,0.11185039 0.612257,5.3904e-4 0.850961,0.0483338 0.178152,0.0355765 0.327915,0.0849883 0.490076,0.16584403 0.197647,0.098644 0.252359,0.082922 0.452342,0.0980151 0.332856,0.0250653 0.637054,0.14527074 0.935052,0.29404524 0.109245,0.0545327 0.195671,0.1256857 0.294045,0.19603016 0.100531,0.071782 0.224779,0.017339 0.339235,0.060372 0.221365,0.083192 0.415957,0.1710547 0.618276,0.2940452 0.209147,0.127213 0.39772,0.2683511 0.58818,0.4222465 0.206362,0.1666526 0.434824,0.2346612 0.658885,0.376518 2.003873,1.2690752 2.541474,3.3674604 2.508323,5.6141709 -0.01518,1.0278556 -0.580274,2.1121306 -1.040613,3.0015439 -0.511187,0.987607 -1.102422,1.920143 -1.723484,2.841449 -1.047351,1.553777 -2.202599,3.042869 -3.381296,4.498811 -0.318212,0.392869 -0.630854,0.789152 -0.941879,1.18786 -0.15129,0.193874 -0.746837,0.04223 -0.96946,0.03046 -1.124792,-0.05929 -2.249675,-0.118679 -3.3744674,-0.178063" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:0.08983967;stroke-linecap:square;stroke-miterlimit:10" /> - <path - id="path173" - d="m 13.746126,19.384365 c -0.374991,0.480372 -0.749982,0.960565 -1.124883,1.440938 -0.05408,0.06918 -0.253707,0.418114 -0.348847,0.412005 -0.394756,-0.02533 -0.419731,1.79e-4 -0.589618,-0.339504 -0.457374,-0.914389 -1.179774,-1.656644 -2.2345819,-1.694556 0.345703,-0.79562 4.4110379,-0.576142 4.3129329,0.181206" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:0.08983967;stroke-linecap:square;stroke-miterlimit:10" /> - <path - id="path175" - d="m 13.746126,19.384365 c -0.652685,-0.478756 -1.868755,-0.407423 -2.63904,-0.407423 -0.445695,0 -0.905135,-0.01518 -1.3404083,0.09397 -0.2227125,0.05579 -0.2760773,0.192796 -0.4162272,-0.0079 C 9.1970942,18.84335 9.0436481,18.623692 8.8902917,18.404034 9.2367135,18.17099 9.7602093,18.161467 10.16305,18.142241 c 0.491333,-0.02336 0.98051,-0.03495 1.471933,-0.0097 0.809456,0.0415 2.037115,-0.0031 2.714506,0.512804 -0.19612,0.246341 -0.39206,0.492681 -0.58818,0.739111" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:0.08983967;stroke-linecap:square;stroke-miterlimit:10" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/80-1.svg b/htdocs/public/symbols/svgicons/80-1.svg deleted file mode 100755 index a105726..0000000 --- a/htdocs/public/symbols/svgicons/80-1.svg +++ /dev/null @@ -1,109 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="80-1.svg"> - <defs - id="defs17" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview15" - showgrid="false" - inkscape:zoom="7.9739945" - inkscape:cx="-14.367507" - inkscape:cy="40.658751" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata4277"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g4181" - transform="translate(-37.932203,-10.548736)"> - <path - style="fill:#8080ff;stroke:none;stroke-width:0.676;stroke-linejoin:round" - transform="matrix(0,1,-1,0,0,0)" - d="m 16.884163,-46.322253 a 1.9606265,2.0019734 0 0 1 -1.697952,-1.000987 1.9606265,2.0019734 0 0 1 0,-2.001973 1.9606265,2.0019734 0 0 1 1.697952,-1.000987 l 0,2.001974 z" - sodipodi:end="4.712389" - sodipodi:start="1.5707963" - sodipodi:ry="2.0019734" - sodipodi:rx="1.9606265" - sodipodi:cy="-48.324226" - sodipodi:cx="16.884163" - sodipodi:type="arc" - id="path4167-7" /> - <path - inkscape:connector-curvature="0" - id="path4754" - d="m 42.853023,17.344966 7.803541,-0.177353 4.96589,4.566846 -14.09958,-0.886767 z" - style="fill:#e6e6e6;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /> - <path - sodipodi:nodetypes="ccccscccccccccccccccccccsssccssscccccccccccccccccc" - style="fill:#000080;stroke:none;stroke-width:0.29631296;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - inkscape:connector-curvature="0" - id="path6-9" - d="m 61.657578,25.940864 c 0.150421,-0.941042 -0.0056,-1.022202 -0.62861,-2.409677 -0.169156,-0.376712 -0.616287,-0.606012 -0.977854,-0.803253 -1.889771,-1.030815 -3.888469,-1.669893 -4.195107,-1.676306 -0.960625,-0.956647 -2.533212,-2.755832 -4.643746,-4.195032 -0.393707,-0.268472 -1.782112,-0.310075 -1.782112,-0.310075 0,0 -3.645844,-0.436547 -6.362042,0.209562 -0.234324,0.0557 -0.397184,0.03627 -0.59369,0.139682 -0.03202,0.01684 -0.596585,0.600102 -0.628609,0.663531 -0.03129,0.06196 -0.216168,0.263797 -0.279365,0.349244 -0.419163,0.566572 -0.932968,1.12592 -1.292178,1.746148 -0.157723,0.272412 -0.230809,0.531651 -0.384166,0.803251 -0.147602,0.26144 -0.684623,0.462581 -0.768293,0.942896 -0.04018,0.23046 -0.302273,0.144318 -0.314325,0.488927 0.119711,0.03696 0.134159,0.0807 0.279364,0.104764 -0.209986,0.76358 -0.338852,2.126644 -0.349978,2.270266 2.72e-4,-7.8e-5 5.03e-4,-1.93e-4 7.73e-4,-2.71e-4 -0.0018,0.01742 -0.002,0.01645 -7.73e-4,2.71e-4 -0.657039,0.206279 -0.596045,1.386859 -0.657426,1.172931 0.079,0.314208 0.296632,0.723481 0.378796,1.061873 0.07037,0.28991 -0.163324,0.413561 -0.174642,0.698451 0.051,0.02978 0.100118,0.342638 0.139683,0.384126 0.166105,0.457213 1.465931,0.871007 1.465931,0.871007 l 0.12879,1.55e-4 c -0.110672,-0.328232 -0.170702,-0.679833 -0.170702,-1.045418 0,-1.806061 1.464079,-3.270137 3.270139,-3.270137 1.806059,0 3.270138,1.464076 3.270138,3.270137 0,0.368444 -0.061,0.722671 -0.173329,1.053144 l 6.640748,0.02127 C 52.69955,28.101333 52.61364,27.684603 52.61364,27.247669 c 0,-1.80602 1.464077,-3.270099 3.270099,-3.270099 1.806061,0 3.270139,1.464079 3.270139,3.270099 0,0.439794 -0.08704,0.859149 -0.244445,1.242156 l 0.26855,3.47e-4 c 0,0 2.007472,0.186616 2.270032,-0.454006 0.107774,-0.120252 0.147717,-0.728581 0.139682,-1.082578 0.0039,-0.364155 0.07741,-0.29389 0.174642,-0.523887 0.09445,-0.223353 -0.139567,-0.386754 -0.104761,-0.488837 z M 46.884042,20.714551 c -0.06405,0.04489 -0.0598,0.06873 -0.13972,0.104797 -0.254372,0.192759 -0.336931,-0.06988 -3.711137,-0.06988 0.05741,0.0819 -0.394981,0.01124 -0.03493,-0.76833 0.489429,-1.059633 1.235858,-2.023774 1.194756,-2.038685 0.947191,-0.282123 1.247996,-0.371795 2.69106,-0.334866 -0.02928,0.838173 -0.01734,1.779862 -3.4e-5,3.106962 z m 1.48938,0.232315 c -0.144666,-2.748801 -0.274419,-2.838845 0.03493,-3.282731 2.779918,0 1.837221,0.0094 1.837221,0.0094 1.271994,0.02608 3.482374,2.754031 4.141432,3.657518 -1.85567,-0.140054 -2.978847,-0.232781 -6.013583,-0.384207 z" /> - <path - sodipodi:open="true" - d="m 41.253151,27.397715 a 1.8473057,1.8473057 0 0 1 1.846862,-1.847306 1.8473057,1.8473057 0 0 1 1.847749,1.846419 1.8473057,1.8473057 0 0 1 -1.845976,1.848192 1.8473057,1.8473057 0 0 1 -1.848635,-1.845532" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - sodipodi:ry="1.8473057" - sodipodi:rx="1.8473057" - sodipodi:cy="27.397715" - sodipodi:cx="43.100456" - sodipodi:type="arc" - id="path3514-1-1" - style="fill:#666666;stroke:#000000;stroke-width:1.85782993;stroke-miterlimit:4;stroke-dasharray:none" /> - <path - sodipodi:open="true" - d="M 54.041179,27.276747 A 1.8473057,1.8473057 0 0 1 55.888042,25.429441 1.8473057,1.8473057 0 0 1 57.73579,27.27586 1.8473057,1.8473057 0 0 1 55.889815,29.124052 1.8473057,1.8473057 0 0 1 54.04118,27.27852" - sodipodi:end="3.1406327" - sodipodi:start="3.1415927" - sodipodi:ry="1.8473057" - sodipodi:rx="1.8473057" - sodipodi:cy="27.276747" - sodipodi:cx="55.888485" - sodipodi:type="arc" - id="path3514-1-1-1" - style="fill:#666666;stroke:#000000;stroke-width:1.85782993;stroke-miterlimit:4;stroke-dasharray:none" /> - <rect - transform="matrix(0.99920529,0.03985973,-0.02474987,0.99969368,0,0)" - y="20.746895" - x="42.759113" - height="0.5083794" - width="11.700276" - id="rect4170" - style="fill:#ffffff;stroke:none" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/80-2.svg b/htdocs/public/symbols/svgicons/80-2.svg deleted file mode 100755 index 9794f2e..0000000 --- a/htdocs/public/symbols/svgicons/80-2.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.0"> - <metadata id="metadata5438"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-104)"> - <g id="g2984" transform="matrix(0.1875,0,0,0.1875,0,104)"> - <rect rx="14.173" height="128" width="128" id="rect1869" fill="#204a87"/> - <path id="text1871" d="m 23.520836,11.511719 44.929687,0 c 13.359304,1.05e-4 23.601481,2.976664 30.726563,8.929687 7.171774,5.90634 10.757714,14.343832 10.757814,25.3125 -1e-4,11.015685 -3.58604,19.500051 -10.757814,25.453125 -7.125082,5.90629 -17.367259,8.859412 -30.726563,8.859375 l -17.859375,0 0,36.421874 -27.070312,0 0,-104.976561 m 27.070312,19.617187 0,29.320313 14.976563,0 c 5.249939,5.6e-5 9.304623,-1.265568 12.164062,-3.796875 2.859305,-2.578063 4.288991,-6.210872 4.289063,-10.898438 -7.2e-5,-4.687424 -1.429758,-8.296796 -4.289063,-10.828125 -2.859439,-2.531166 -6.914123,-3.796789 -12.164062,-3.796875 l -14.976563,0" inkscape:connector-curvature="0" fill="#ffffff"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/81-1.svg b/htdocs/public/symbols/svgicons/81-1.svg deleted file mode 100755 index eb2fee4..0000000 --- a/htdocs/public/symbols/svgicons/81-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3276"/> - <path sodipodi:type="arc" id="path3280" sodipodi:cx="11.898305" sodipodi:cy="12.101695" sodipodi:rx="12.20339" sodipodi:ry="12.20339" d="m 24.101695,12.101695 a 12.20339,12.20339 0 1 1 -24.40678018,0 12.20339,12.20339 0 1 1 24.40678018,0 z" transform="matrix(0.9201921,0,0,0.9201921,1.0512738,0.86411581)" fill="#ffffff" stroke="#000000" stroke-width="1.675"/> - <path sodipodi:type="arc" id="path3282" sodipodi:cx="12" sodipodi:cy="11.898305" sodipodi:rx="7.2203388" sodipodi:ry="7.2203388" d="m 19.220339,11.898305 a 7.2203388,7.2203388 0 1 1 -14.4406778,0 7.2203388,7.2203388 0 1 1 14.4406778,0 z" transform="matrix(0.93617311,0,0,0.93617311,0.76592268,0.86112686)" fill="#ffffff" stroke="#000000" stroke-width="1.582"/> - <path sodipodi:type="arc" id="path3284" sodipodi:cx="11.79661" sodipodi:cy="12" sodipodi:rx="1.2203389" sodipodi:ry="1.2203389" d="m 13.016949,12 a 1.2203389,1.2203389 0 1 1 -2.440678,0 1.2203389,1.2203389 0 1 1 2.440678,0 z" transform="translate(0.20339012,0)" stroke="#000000" stroke-width="1.582"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/81-2.svg b/htdocs/public/symbols/svgicons/81-2.svg deleted file mode 100755 index eb2fee4..0000000 --- a/htdocs/public/symbols/svgicons/81-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3276"/> - <path sodipodi:type="arc" id="path3280" sodipodi:cx="11.898305" sodipodi:cy="12.101695" sodipodi:rx="12.20339" sodipodi:ry="12.20339" d="m 24.101695,12.101695 a 12.20339,12.20339 0 1 1 -24.40678018,0 12.20339,12.20339 0 1 1 24.40678018,0 z" transform="matrix(0.9201921,0,0,0.9201921,1.0512738,0.86411581)" fill="#ffffff" stroke="#000000" stroke-width="1.675"/> - <path sodipodi:type="arc" id="path3282" sodipodi:cx="12" sodipodi:cy="11.898305" sodipodi:rx="7.2203388" sodipodi:ry="7.2203388" d="m 19.220339,11.898305 a 7.2203388,7.2203388 0 1 1 -14.4406778,0 7.2203388,7.2203388 0 1 1 14.4406778,0 z" transform="matrix(0.93617311,0,0,0.93617311,0.76592268,0.86112686)" fill="#ffffff" stroke="#000000" stroke-width="1.582"/> - <path sodipodi:type="arc" id="path3284" sodipodi:cx="11.79661" sodipodi:cy="12" sodipodi:rx="1.2203389" sodipodi:ry="1.2203389" d="m 13.016949,12 a 1.2203389,1.2203389 0 1 1 -2.440678,0 1.2203389,1.2203389 0 1 1 2.440678,0 z" transform="translate(0.20339012,0)" stroke="#000000" stroke-width="1.582"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/82-1.svg b/htdocs/public/symbols/svgicons/82-1.svg deleted file mode 100755 index 34dbf93..0000000 --- a/htdocs/public/symbols/svgicons/82-1.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24" viewBox="0 0 24 23.999999" enable-background="new 0 0 100 73.649"> - <metadata id="metadata4391"/> - <rect id="rect4140" width="23.04" height="23.04" x="0.479" y="0.479" rx="2.874" fill="#cccccc" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.958"/> - - - <text id="textoverlay"><tspan id="tspanoverlay" line-height="125%" font-family="Sans-Serif" text-anchor="middle" text-align="center" word-spacing="0" letter-spacing="0" x="12" y="12" fill="#000000" font-size="17.5" dy="6.5" dx="-10">R</tspan></text> - <text id="textoverlay"><tspan id="tspanoverlay" line-height="125%" font-family="Sans-Serif" text-anchor="middle" text-align="center" word-spacing="0" letter-spacing="0" x="12" y="12" fill="#000000" font-size="17.5" dy="6.5" dx="10">V</tspan></text> -</svg> diff --git a/htdocs/public/symbols/svgicons/82-1.svg~ b/htdocs/public/symbols/svgicons/82-1.svg~ deleted file mode 100755 index b8a0765..0000000 --- a/htdocs/public/symbols/svgicons/82-1.svg~ +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24" viewBox="0 0 24 23.999999" enable-background="new 0 0 100 73.649"> - <metadata id="metadata4391"/> - <rect id="rect4140" width="23.04" height="23.04" x="0.479" y="0.479" rx="2.874" fill="#cccccc" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.958"/> - - - <text id="textoverlay"><tspan id="tspanoverlay" line-height="125%" font-family="Sans-Serif" text-anchor="middle" text-align="center" word-spacing="0" letter-spacing="0" x="12" y="12" fill="#000000" font-size="17.5" dy="6.5" dx="-9">R</tspan></text> - <text id="textoverlay"><tspan id="tspanoverlay" line-height="125%" font-family="Sans-Serif" text-anchor="middle" text-align="center" word-spacing="0" letter-spacing="0" x="12" y="12" fill="#000000" font-size="17.5" dy="6.5" dx="9">V</tspan></text> -</svg> diff --git a/htdocs/public/symbols/svgicons/82-2.svg b/htdocs/public/symbols/svgicons/82-2.svg deleted file mode 100755 index 73707c3..0000000 --- a/htdocs/public/symbols/svgicons/82-2.svg +++ /dev/null @@ -1,17 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" viewBox="0 0 19.2 19.2" version="1.1"> - <metadata id="metadata28"/> - <defs id="defs4"> - <clipPath id="clip0"> - <rect width="613" height="614" id="rect7"/> - </clipPath> - </defs> - <path inkscape:connector-curvature="0" id="path14" d="M 1.604758,0.06952736 C 1.7625114,0.04362326 1.9223224,0.02981971 2.0821728,0.02733721 7.0737472,0.02752566 12.065322,0.02782914 17.0569,0.02718512 c 0.539089,0.0028419 1.115964,0.13308216 1.511562,0.5226716 0.415734,0.39426025 0.56682,0.98697028 0.580152,1.54299378 -5.66e-4,5.0698973 3.59e-4,10.1398085 -4.63e-4,15.2097015 -0.01933,0.51838 -0.17125,1.065417 -0.5621,1.428542 -0.389149,0.368051 -0.942727,0.487456 -1.463001,0.496275 -5.047611,-9.9e-5 -10.0952288,-6.6e-5 -15.1428377,-2.6e-5 -0.5493575,-0.0078 -1.13492185,-0.162009 -1.51608879,-0.581107 -0.37358438,-0.404708 -0.48755143,-0.974179 -0.4907003,-1.508866 -1.161e-5,-4.970902 -1.461e-5,-9.9418123 2.01e-6,-14.9127118 C -0.0233684,1.7214326 0.06661653,1.1952838 0.36990312,0.78057058 0.65440497,0.37793323 1.1263722,0.1454494 1.604758,0.06952736 z m 0,0" fill="none" stroke="#000000" stroke-width="0.003" stroke-miterlimit="10"/> - <path inkscape:connector-curvature="0" id="path16" d="M 1.633454,0.0422503 C 1.7914115,0.0163462 1.9514292,0.00254265 2.1114863,6.015e-5 7.1095164,2.486e-4 12.107547,5.5208e-4 17.10558,-9.194e-5 c 0.539787,0.0028419 1.117408,0.13308216 1.513517,0.5226716 C 19.035369,0.91683991 19.18665,1.5095499 19.2,2.0655734 c -5.67e-4,5.0698973 3.59e-4,10.1398086 -4.64e-4,15.2097016 -0.01936,0.51838 -0.171471,1.065417 -0.562827,1.428542 -0.389652,0.368051 -0.943946,0.487456 -1.464893,0.496275 -5.054139,-9.9e-5 -10.108285,-6.6e-5 -15.1624221,-2.6e-5 C 1.4593259,19.192266 0.87300425,19.038057 0.49134434,18.618959 0.1172768,18.214251 0.00316235,17.64478 9.4079049e-6,17.110093 c -1.162e-5,-4.970902 -1.463e-5,-9.9418124 2.0100001e-6,-14.9127119 C 0.00322195,1.6941555 0.09332326,1.1680067 0.3970021,0.75329352 0.6818719,0.35065617 1.1544495,0.11817234 1.633454,0.0422503 z m 0,0" fill="#000080"/> - <g id="g2994" transform="translate(1.0060726,0.07373165)"> - <path d="m 3.4728087,2.0010816 c 0.00138,-0.1708048 0.1709478,-0.3110212 0.3391428,-0.2812512 0.1545729,0.013421 0.2646869,0.1615458 0.2629,0.3112065 0.00107,1.1646728 -1.653e-4,2.3293977 5.952e-4,3.4940983 0.1625127,-1.985e-4 0.3250499,2.313e-4 0.4876223,-2.976e-4 1.323e-4,-1.1852932 -0.00133,-2.3706502 6.976e-4,-3.5558917 0.011179,-0.1979393 0.2603406,-0.3076961 0.4252605,-0.2117066 0.1143448,0.052513 0.154541,0.1864385 0.1521275,0.3033371 8.728e-4,1.1548519 -1.322e-4,2.3097353 4.86e-4,3.4646067 0.165158,-1.653e-4 0.3303424,-1.653e-4 0.4955685,3.6e-6 3.669e-4,-1.1667829 9.91e-5,-2.3335686 9.91e-5,-3.5003379 -0.010748,-0.1518673 0.1086753,-0.3020027 0.2646061,-0.3078944 0.1575032,-0.01787 0.2981664,0.1214766 0.2968879,0.2766415 0.00152,1.1771637 -6.61e-5,2.3543938 7.638e-4,3.5315901 0.1679247,-1.652e-4 0.3358812,-9.91e-5 0.5038824,-6.6e-5 5.388e-4,-1.1766086 -3.307e-4,-2.353235 4.067e-4,-3.5298205 -0.00646,-0.1540869 0.1400726,-0.2841741 0.2911416,-0.2736707 0.1641936,-0.011239 0.3002875,0.1412094 0.2942986,0.3008784 0.00258,1.5892636 3.305e-4,3.178635 0.00112,4.767939 0.00363,0.5639413 -0.4984761,1.0809111 -1.0662497,1.0758746 -1.653e-4,2.8711612 2.975e-4,5.7423332 -2.316e-4,8.6134912 -0.00631,0.267496 -0.1202482,0.544438 -0.3442624,0.701187 -0.249048,0.185615 -0.6036462,0.205261 -0.8768842,0.06146 C 4.7235476,17.100228 4.5631771,16.7859 4.5624825,16.478971 4.5633587,13.608156 4.5624164,10.737345 4.5629487,7.8665346 4.2845706,7.8656124 4.0032698,7.7635043 3.8046501,7.5654307 3.5846567,7.3591136 3.4706267,7.0554499 3.4714678,6.7565577 c 0.00149,-1.5851483 -0.00116,-3.1703581 0.00132,-4.7554619 z m 0,0" id="path18" inkscape:connector-curvature="0" fill="none" stroke="#ffffff" stroke-width="0.003" stroke-miterlimit="10"/> - <path d="m 3.4728087,2.0010816 c 0.00138,-0.1708048 0.1709478,-0.3110212 0.3391428,-0.2812512 0.1545729,0.013421 0.2646869,0.1615458 0.2629,0.3112065 0.00107,1.1646728 -1.653e-4,2.3293977 5.952e-4,3.4940983 0.1625127,-1.985e-4 0.3250499,2.313e-4 0.4876223,-2.976e-4 1.323e-4,-1.1852932 -0.00133,-2.3706502 6.976e-4,-3.5558917 0.011179,-0.1979393 0.2603406,-0.3076961 0.4252605,-0.2117066 0.1143448,0.052513 0.154541,0.1864385 0.1521275,0.3033371 8.728e-4,1.1548519 -1.322e-4,2.3097353 4.86e-4,3.4646067 0.165158,-1.653e-4 0.3303424,-1.653e-4 0.4955685,3.6e-6 3.669e-4,-1.1667829 9.91e-5,-2.3335686 9.91e-5,-3.5003379 -0.010748,-0.1518673 0.1086753,-0.3020027 0.2646061,-0.3078944 0.1575032,-0.01787 0.2981664,0.1214766 0.2968879,0.2766415 0.00152,1.1771637 -6.61e-5,2.3543938 7.638e-4,3.5315901 0.1679247,-1.652e-4 0.3358812,-9.91e-5 0.5038824,-6.6e-5 5.388e-4,-1.1766086 -3.307e-4,-2.353235 4.067e-4,-3.5298205 -0.00646,-0.1540869 0.1400726,-0.2841741 0.2911416,-0.2736707 0.1641936,-0.011239 0.3002875,0.1412094 0.2942986,0.3008784 0.00258,1.5892636 3.305e-4,3.178635 0.00112,4.767939 0.00363,0.5639413 -0.4984761,1.0809111 -1.0662497,1.0758746 -1.653e-4,2.8711612 2.975e-4,5.7423332 -2.316e-4,8.6134912 -0.00631,0.267496 -0.1202482,0.544438 -0.3442624,0.701187 -0.249048,0.185615 -0.6036462,0.205261 -0.8768842,0.06146 C 4.7235476,17.100228 4.5631771,16.7859 4.5624825,16.478971 4.5633587,13.608156 4.5624164,10.737345 4.5629487,7.8665346 4.2845706,7.8656124 4.0032698,7.7635043 3.8046501,7.5654307 3.5846567,7.3591136 3.4706267,7.0554499 3.4714678,6.7565577 c 0.00149,-1.5851483 -0.00116,-3.1703581 0.00132,-4.7554619 z m 0,0" id="path20" inkscape:connector-curvature="0" fill="#ffffff"/> - <path d="m 11.578286,2.0708961 c 0.38596,-0.3710011 1.014634,-0.4386066 1.478693,-0.1777347 0.288585,0.1579719 0.4998,0.4403753 0.589571,0.755071 0.06485,0.2206266 0.07062,0.4527967 0.06977,0.6811213 -5.62e-4,4.3532356 4.04e-4,8.7064793 -4.8e-4,13.0597113 0.0012,0.256899 -0.06735,0.530945 -0.263201,0.70989 -0.324777,0.313029 -0.906566,0.283913 -1.198022,-0.06072 -0.139638,-0.159969 -0.207469,-0.373875 -0.208181,-0.584304 2.31e-4,-1.765608 1.66e-4,-3.53121 3.3e-5,-5.296808 -0.294772,-1.65e-4 -0.589506,6.7e-5 -0.88422,-9.8e-5 4.6e-4,-2.676446 -10e-4,-5.3529103 7.43e-4,-8.0293333 0.0029,-0.3860244 0.125432,-0.7888934 0.415297,-1.0567865 z m 0,0" id="path22" inkscape:connector-curvature="0" fill="none" stroke="#ffffff" stroke-width="0.003" stroke-miterlimit="10"/> - <path d="m 11.578286,2.0708961 c 0.38596,-0.3710011 1.014634,-0.4386066 1.478693,-0.1777347 0.288585,0.1579719 0.4998,0.4403753 0.589571,0.755071 0.06485,0.2206266 0.07062,0.4527967 0.06977,0.6811213 -5.62e-4,4.3532356 4.04e-4,8.7064793 -4.8e-4,13.0597113 0.0012,0.256899 -0.06735,0.530945 -0.263201,0.70989 -0.324777,0.313029 -0.906566,0.283913 -1.198022,-0.06072 -0.139638,-0.159969 -0.207469,-0.373875 -0.208181,-0.584304 2.31e-4,-1.765608 1.66e-4,-3.53121 3.3e-5,-5.296808 -0.294772,-1.65e-4 -0.589506,6.7e-5 -0.88422,-9.8e-5 4.6e-4,-2.676446 -10e-4,-5.3529103 7.43e-4,-8.0293333 0.0029,-0.3860244 0.125432,-0.7888934 0.415297,-1.0567865 z m 0,0" id="path24" inkscape:connector-curvature="0" fill="#ffffff"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/83-1.svg b/htdocs/public/symbols/svgicons/83-1.svg deleted file mode 100755 index 9a5d0bd..0000000 --- a/htdocs/public/symbols/svgicons/83-1.svg +++ /dev/null @@ -1,115 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 23.999999 24" version="1.1" width="24" height="24"> - <defs id="defs5222"> - <clipPath id="clipPath854"> - <path id="path856" d="m 220.41,353.78 c 0.127,8.395 -2.341,8.539 -2.341,8.539 l -2.786,0 c 0,0 -2.313,-0.227 -2.187,-8.622 l 7.314,0.083"/> - </clipPath> - <clipPath id="clipPath830"> - <path id="path832" d="m 72.5,499.91 227.51,0 0,-336.13 -227.51,0 0,336.13 z"/> - </clipPath> - <clipPath id="clipPath836"> - <path id="path838" d="M 0,792 612,792 612,0 0,0 0,792 Z"/> - </clipPath> - <clipPath id="clipPath842"> - <path id="path844" d="m 0.06,792 612,0 0,-792 -612,0 0,792 z"/> - </clipPath> - <clipPath id="clipPath820"> - <path id="path822" d="m 211.29,353.78 c 0.127,8.395 -2.341,8.539 -2.341,8.539 l -2.786,0 c 0,0 -2.313,-0.227 -2.187,-8.622 l 7.314,0.083"/> - </clipPath> - <clipPath id="clipPath786"> - <path id="path788" d="m 212.4,349.75 c 0,0 1.186,6.305 1.334,13.756 0.148,7.451 -1.104,12.421 -1.104,12.421 l -1.037,0 c 0,0 -1.186,-4.97 -1.038,-12.421 0.148,-7.451 1.845,-13.756 1.845,-13.756"/> - </clipPath> - <clipPath id="clipPath750"> - <path id="path752" d="m 204.1,360.99 15.426,-0.067 -0.162,48.24 c 0,0 0.485,8.94 -1.132,23.557 -0.855,7.722 -4.009,13.491 -6.498,13.7 -2.49,-0.209 -5.482,-5.978 -6.337,-13.7 -1.617,-14.617 -1.132,-23.557 -1.132,-23.557 l -0.17,-48.17"/> - </clipPath> - <clipPath id="clipPath708"> - <path id="path710" d="m 204.69,425.61 c 0,0 -2.668,-21.73 -9.714,-32.63 -7.046,-10.9 -14.484,-12.325 -15.87,-21.872 -0.297,-2.043 -0.445,-4.157 -0.445,-4.157 l 25.584,-6.117 1.818,63.886 -1.373,0.89"/> - </clipPath> - <clipPath id="clipPath672"> - <path id="path674" d="m 186.9,347.49 13.459,0 -1.45,5.415 c 0,0 -0.016,91.334 -0.016,92.532 0,1.198 0,2.935 -0.31,3.962 -0.31,1.027 -2.967,9.407 -3.367,10.605 -0.399,1.198 -0.712,1.565 -1.739,1.565 -1.027,0 -1.337,-0.367 -1.736,-1.565 -0.4,-1.198 -3.367,-10.605 -3.367,-10.605 -0.31,-1.027 -0.31,-2.764 -0.31,-3.962 l 0,-92.532 -1.164,-5.415"/> - </clipPath> - <clipPath id="clipPath638"> - <path id="path640" d="m 199.47,342.41 c -0.748,9.305 -3.562,9.457 -3.562,9.457 l -4.5,0 c 0,0 -2.612,-0.295 -3.322,-9.457 l 11.384,0"/> - </clipPath> - <clipPath id="clipPath592"> - <path id="path594" d="m 218.78,425.61 c 0,0 2.669,-21.73 9.714,-32.63 7.046,-10.9 14.485,-12.325 15.87,-21.872 0.297,-2.043 0.445,-4.157 0.445,-4.157 l -25.584,-6.117 -1.818,63.886 1.373,0.89"/> - </clipPath> - <clipPath id="clipPath556"> - <path id="path558" d="m 236.03,347.49 -13.459,0 1.449,5.415 c 0,0 0.017,91.334 0.017,92.532 0,1.198 0,2.935 0.31,3.962 0.31,1.027 2.967,9.407 3.366,10.605 0.4,1.198 0.712,1.565 1.739,1.565 1.027,0 1.338,-0.367 1.737,-1.565 0.399,-1.198 3.366,-10.605 3.366,-10.605 0.31,-1.027 0.31,-2.764 0.31,-3.962 l 0,-92.532 1.165,-5.415"/> - </clipPath> - <clipPath id="clipPath522"> - <path id="path524" d="m 223.46,342.41 c 0.748,9.305 3.562,9.457 3.562,9.457 l 4.5,0 c 0,0 2.612,-0.295 3.322,-9.457 l -11.384,0"/> - </clipPath> - </defs> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 13.743669,5.2157578 c 0,0 0.660591,5.3782792 2.404262,8.0760822 1.743919,2.697802 3.585107,3.050497 3.927901,5.413425 0.07351,0.505652 0.11014,1.028877 0.11014,1.028877 L 13.853809,21.248129 13.403845,5.4360371 13.743669,5.2157578 Z" id="path622" fill="#ffffff" stroke="#231f20" stroke-width="0.43"/> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 17.12211,20.365527 0,-1.66249" id="path628" fill="none" stroke="#231f20" stroke-width="0.23"/> - <g clip-path="url(#clipPath836)" id="g726" transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" fill="#ffffff" stroke="#1a1a1a" stroke-width="0.808" stroke-miterlimit="3.864"> - <g clip-path="url(#clipPath842)" id="g732"> - <path inkscape:connector-curvature="0" d="m 204.69,425.61 c 0,0 -2.668,-21.73 -9.714,-32.63 -7.046,-10.9 -14.484,-12.325 -15.87,-21.872 -0.297,-2.043 -0.445,-4.157 -0.445,-4.157 l 25.584,-6.117 1.818,63.886 -1.373,0.89 z" id="path738" stroke-width="1.616"/> - <path inkscape:connector-curvature="0" d="m 204.1,360.99 15.426,-0.067 -0.162,48.24 c 0,0 0.485,8.94 -1.132,23.557 -0.855,7.722 -4.009,13.491 -6.498,13.7 -2.49,-0.209 -5.482,-5.978 -6.337,-13.7 -1.617,-14.617 -1.132,-23.557 -1.132,-23.557 l -0.17,-48.17" id="path744"/> - </g> - </g> - <g transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" id="g588"> - <g clip-path="url(#clipPath592)" id="g590"> - <path inkscape:connector-curvature="0" d="m 220.56,359.02 25.14,4.19 0,13.162 -15.722,19.251 -4.347,0 c 1.867,-3.637 4.205,-7.064 7.168,-10.21 5.984,-6.354 9.706,-7.58 10.613,-17.446 l -22.923,-5.481 0.071,-3.466" id="path596" fill="#231f20"/> - <path inkscape:connector-curvature="0" d="m 219.52,372.33 26.029,0 0,-2.224 -25.881,-2.263 -0.148,4.487" id="path598" fill="#231f20"/> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 228.64,395.69 -11.235,0" id="path600" fill="none" stroke="#231f20" stroke-width="0.667"/> - </g> - </g> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 17.12211,18.915149 0,-0.600942" id="path630" fill="none" stroke="#ffffff" stroke-width="0.13"/> - <g transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" id="g704" fill="#1a1a1a"> - <g clip-path="url(#clipPath708)" id="g706"> - <path inkscape:connector-curvature="0" d="m 202.91,359.02 -25.139,4.19 0,13.162 15.722,19.251 4.346,0 c -1.866,-3.637 -4.205,-7.064 -7.168,-10.21 -5.983,-6.354 -9.705,-7.58 -10.613,-17.446 l 22.923,-5.481 -0.071,-3.466" id="path712"/> - <path inkscape:connector-curvature="0" d="m 203.95,372.33 -26.029,0 0,-2.224 25.881,-2.263 0.148,4.487" id="path714"/> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 194.83,395.69 11.235,0" id="path716" stroke="#231f20" stroke-width="0.667"/> - </g> - </g> - <g transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" id="g746" fill="#1a1a1a" stroke="#1a1a1a"> - <g clip-path="url(#clipPath750)" id="g748"> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 205.62,445.08 c 0,1.905 2.681,3.449 5.988,3.449 3.308,0 5.989,-1.544 5.989,-3.449 0,-1.905 -2.681,-3.449 -5.989,-3.449 -3.307,0 -5.988,1.544 -5.988,3.449 z" id="path754" stroke-width="0.262"/> - </g> - </g> - <g transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" id="g756" stroke="#1a1a1a" stroke-width="0.808" stroke-miterlimit="3.864"> - <g clip-path="url(#clipPath830)" id="g758"> - <g clip-path="url(#clipPath836)" id="g764"> - <g clip-path="url(#clipPath842)" id="g770"> - <path inkscape:connector-curvature="0" d="m 204.1,360.99 15.426,-0.067 -0.162,48.24 c 0,0 0.485,8.94 -1.132,23.557 -0.855,7.722 -4.009,13.491 -6.498,13.7 -2.49,-0.209 -5.482,-5.978 -6.337,-13.7 -1.617,-14.617 -1.132,-23.557 -1.132,-23.557 l -0.17,-48.17 z" id="path776" fill="none" stroke-width="1.616"/> - <path inkscape:connector-curvature="0" d="m 214.18775,428.16727 c -0.57209,1.53782 -1.46074,2.29766 -2.40346,2.26928 -1.11099,-0.0335 -2.03373,-0.68546 -2.50309,-2.26928 l -2.26873,-0.007 c 0.558,2.594 2.37664,4.40534 4.76582,4.40991 2.37171,0.005 4.13318,-1.87291 4.67918,-4.40991 z" id="path778" sodipodi:nodetypes="csccscc" fill="#918f90" stroke-width="1.212"/> - <path inkscape:connector-curvature="0" d="m 212.4,349.75 c 0,0 1.186,6.305 1.334,13.756 0.148,7.451 -1.104,12.421 -1.104,12.421 l -1.037,0 c 0,0 -1.186,-4.97 -1.038,-12.421 0.148,-7.451 1.845,-13.756 1.845,-13.756" id="path780" fill="#ffffff"/> - </g> - </g> - </g> - </g> - <g clip-path="url(#clipPath836)" id="g800" transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)"> - <g clip-path="url(#clipPath842)" id="g806"> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 212.4,349.75 c 0,0 1.186,6.305 1.334,13.756 0.148,7.451 -1.104,12.421 -1.104,12.421 l -1.037,0 c 0,0 -1.186,-4.97 -1.038,-12.421 0.148,-7.451 1.845,-13.756 1.845,-13.756 z" id="path812" fill="none" stroke="#231f20" stroke-width="1.071"/> - <path inkscape:connector-curvature="0" d="m 211.29,353.78 c 0.127,8.395 -2.341,8.539 -2.341,8.539 l -2.786,0 c 0,0 -2.313,-0.227 -2.187,-8.622 l 7.314,0.083" id="path814" fill="#231f20"/> - </g> - </g> - <g transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" id="g816"> - <g clip-path="url(#clipPath820)" id="g818"> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 202.62,354.84 9.121,0 m -9.121,1.571 9.121,0 m -9.121,1.572 9.121,0 m -9.121,1.571 9.121,0" id="path824" fill="none" stroke="#7b7979" stroke-width="0.524"/> - </g> - </g> - <g transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" id="g826"> - <g clip-path="url(#clipPath830)" id="g828"> - <g clip-path="url(#clipPath836)" id="g834"> - <g clip-path="url(#clipPath842)" id="g840"> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 211.29,353.78 c 0.127,8.395 -2.341,8.539 -2.341,8.539 l -2.786,0 c 0,0 -2.313,-0.227 -2.187,-8.622 l 7.314,0.083 z" id="path846" fill="none" stroke="#231f20" stroke-width="0.524"/> - <path inkscape:connector-curvature="0" d="m 220.41,353.78 c 0.127,8.395 -2.341,8.539 -2.341,8.539 l -2.786,0 c 0,0 -2.313,-0.227 -2.187,-8.622 l 7.314,0.083" id="path848" fill="#231f20"/> - </g> - </g> - </g> - </g> - <g transform="matrix(0.24750481,0,0,-0.24750481,-40.405433,110.55628)" id="g850"> - <g clip-path="url(#clipPath854)" id="g852"> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 211.74,354.84 9.122,0 m -9.122,1.571 9.122,0 m -9.122,1.572 9.122,0 m -9.122,1.571 9.122,0" id="path858" fill="none" stroke="#7b7979" stroke-width="0.524"/> - </g> - </g> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 14.147661,22.993493 c 0.03143,-2.077861 -0.579418,-2.113433 -0.579418,-2.113433 l -0.689549,0 c 0,0 -0.572482,0.05618 -0.5413,2.134027 l 1.81023,-0.02054 z" id="path880" fill="none" stroke="#231f20" stroke-width="0.13"/> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 11.789626,21.24673 c 0.03663,-3.707891 -0.67842,-3.771733 -0.67842,-3.771733 l -0.807124,0 c 0,0 -0.6702477,0.10049 -0.6336181,3.808428 l 2.1191431,-0.03663 z" id="path882" fill="#ffffff" stroke="#231f20" stroke-width="0.33"/> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 14.569842,21.24673 c 0.03688,-3.707891 -0.678419,-3.771733 -0.678419,-3.771733 l -0.807124,0 c 0,0 -0.670005,0.10049 -0.633366,3.808428 l 2.118862,-0.03663 z" id="path884" fill="#ffffff" stroke="#231f20" stroke-width="0.33"/> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 6.743111,20.36586 0,-1.662513" id="path886" fill="#1a1a1a" stroke="#1a1a1a" stroke-width="0.23"/> - <path inkscape:connector-curvature="0" stroke-miterlimit="3.864" d="m 6.743111,18.915842 0,-0.600949" id="path888" fill="none" stroke="#ffffff" stroke-width="0.13"/> - <metadata id="metadata183"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/83-2.svg b/htdocs/public/symbols/svgicons/83-2.svg deleted file mode 100755 index 8cd3f1f..0000000 --- a/htdocs/public/symbols/svgicons/83-2.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3001"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g3013" transform="translate(-528,648.00002)"> - <g transform="matrix(0.05291658,0,0,0.05291658,518.73976,375.22261)" id="layer1-1"> - <path inkscape:connector-curvature="0" d="m 287.44,286.58 c 8.8583,-0.0756 18.161,1.2414 27.843,4.3505 23.639,7.5916 49.437,23.77 72.544,46.876 22.316,22.316 38.195,47.044 46.114,70.042 3.5848,10.411 5.3257,20.665 5.3294,30.127 34.464,-34.381 74.719,-74.501 74.719,-74.501 8.8046,-8.8046 10.662,-25.016 4.0244,-45.788 -6.6374,-20.772 -21.622,-44.897 -43.287,-66.562 -21.664,-21.665 -45.789,-36.649 -66.561,-43.287 -20.772,-6.6373 -36.984,-4.7803 -45.788,4.0241 a 7.3368,7.3368 0 0 1 -0.32655,0.32655 c 1.5e-4,-3.8e-4 -0.15572,-0.0378 -0.32656,0.10658 a 7.3368,7.3368 0 0 1 -0.10733,0.10809 c -0.0755,0.0755 -0.23434,0.23735 -0.3258,0.32655 a 7.3368,7.3368 0 0 1 -0.10734,0.10734 c -0.0227,0.0227 -0.0755,0.0907 -0.10734,0.10734 -0.27741,0.27062 -0.46261,0.46942 -0.87004,0.87005 -1.3246,1.3035 -3.2358,3.2497 -5.7641,5.7642 -5.0603,5.0256 -12.407,12.42 -21.317,21.317 -11.973,11.959 -29.332,29.327 -45.679,45.68 z m -40.639,-122.78 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m -115.4,-38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 233,156.07 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m -115.4,-38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m 38.467,38.467 -33.338,-33.338 33.338,-33.338 33.338,33.338 z m -26.89,-249.86 c 14.671,-18.593 23.601,-32.737 23.601,-32.737 6.0975,-9.8498 8.7897,-20.878 6.5255,-33.498 -2.2639,-12.621 -9.7854,-27.187 -25.667,-43.069 -15.989,-15.989 -29.977,-23.759 -42.199,-26.103 -12.222,-2.3439 -23.154,0.29026 -34.586,6.9608 a 8.7573,8.7573 0 0 1 -0.10733,0.10734 c -0.90581,0.51174 -0.23131,0.0975 -0.4354,0.21694 -0.20486,0.11566 -0.55106,0.2948 -0.97959,0.54275 -0.85462,0.49889 -2.117,1.2198 -3.8063,2.284 -3.3786,2.1287 -8.3084,5.4327 -14.574,10.006 -3.793,2.7685 -8.1932,6.2168 -12.943,10.115 20.824,8.7749 42.483,23.558 62.211,43.287 19.646,19.646 34.196,41.165 42.96,61.885 z m -243.08,138.23 c 15.825,15.825 27.262,20.215 35.673,20.012 8.2898,-0.19956 16.009,-4.9974 24.362,-13.269 0.18141,-0.20258 0.17082,-0.17235 0.32654,-0.32579 0.67351,-0.65991 1.1912,-1.0953 1.5228,-1.3049 0.81396,-0.51552 1.1331,-0.63722 1.4148,-0.75877 0.5639,-0.24415 0.87103,-0.43313 1.196,-0.54349 0.65234,-0.22073 1.3406,-0.40517 2.1753,-0.65311 1.67,-0.49361 3.9356,-1.1132 6.6343,-1.8491 5.3972,-1.4715 12.536,-3.2413 19.686,-5.1116 12.5,-3.2709 22.067,-5.7697 25.015,-6.5254 5.2003,-6.2337 6.9486,-16.641 2.8278,-30.888 -4.3795,-15.141 -14.954,-33.009 -30.779,-48.834 -15.825,-15.825 -33.693,-26.4 -48.834,-30.779 -14.246,-4.121 -24.654,-2.3723 -30.888,2.8278 -0.39307,1.4287 -0.92984,3.0175 -1.5226,5.2205 -1.4259,5.3024 -3.3261,12.432 -5.2202,19.577 -3.793,14.289 -7.613,28.713 -7.613,28.713 a 9.2981,9.2981 0 0 1 -2.3919,4.1331 c -8.4974,8.4974 -13.392,16.277 -13.595,24.689 -0.20259,8.4119 4.1869,19.848 20.012,35.673 z" id="path7145"/> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/84-1.svg b/htdocs/public/symbols/svgicons/84-1.svg deleted file mode 100755 index bd78e41..0000000 --- a/htdocs/public/symbols/svgicons/84-1.svg +++ /dev/null @@ -1,71 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24" viewBox="0 0 24.000001 24"> - <metadata id="metadata51"/> - <defs id="defs86"> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_9_" id="linearGradient3825" gradientUnits="userSpaceOnUse" x1="0.125" x2="30.13" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_10_" id="linearGradient3827" gradientUnits="userSpaceOnUse" x1="1.029" x2="23.18" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_11_" id="linearGradient3829" gradientUnits="userSpaceOnUse" x1="24.11" x2="29.09" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_12_" id="linearGradient3831" gradientUnits="userSpaceOnUse" x1="2.099" x2="22.11" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_13_" id="linearGradient3833" gradientUnits="userSpaceOnUse" x1="25.2" y1="6.891" x2="28" y2="9.691" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_14_" id="linearGradient3835" gradientUnits="userSpaceOnUse" x1="25.2" y1="2.501" x2="28" y2="5.302" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_15_" id="linearGradient3837" gradientUnits="userSpaceOnUse" y1="11.9" x2="0" y2="19.02" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient x1="0.125" x2="30.13" id="XMLID_9_" gradientUnits="userSpaceOnUse"> - <stop id="stop4" stop-color="#696969"/> - <stop offset="0.298" id="stop6" stop-color="#aaadb6"/> - <stop offset="0.438" id="stop8" stop-color="#999a9e"/> - <stop offset="0.562" id="stop10" stop-color="#adb1ba"/> - <stop offset="1" id="stop12" stop-color="#828387"/> - </linearGradient> - <linearGradient x1="1.029" x2="23.18" id="XMLID_10_" gradientUnits="userSpaceOnUse"> - <stop id="stop17" stop-color="#aaadb6"/> - <stop offset="0.079" id="stop19" stop-color="#696969"/> - <stop offset="0.438" id="stop21" stop-color="#828387"/> - <stop offset="0.933" id="stop23" stop-color="#828387"/> - <stop offset="1" id="stop25" stop-color="#adb1ba"/> - </linearGradient> - <linearGradient x1="24.11" x2="29.09" id="XMLID_11_" gradientUnits="userSpaceOnUse"> - <stop id="stop32" stop-color="#383838"/> - <stop offset="0.562" id="stop34" stop-color="#616369"/> - <stop offset="1" id="stop36" stop-color="#525252"/> - </linearGradient> - <linearGradient x1="2.099" x2="22.11" id="XMLID_12_" gradientUnits="userSpaceOnUse"> - <stop id="stop41" stop-color="#8c8c8c"/> - <stop offset="1" id="stop43" stop-color="#5e5e5e"/> - </linearGradient> - <linearGradient x1="25.2" y1="6.891" x2="28" y2="9.691" id="XMLID_13_" gradientUnits="userSpaceOnUse"> - <stop offset="0.264" id="stop48" stop-color="#9698a1"/> - <stop offset="0.36" id="stop50" stop-color="#787a82"/> - <stop offset="0.725" id="stop52" stop-color="#abaeb8"/> - </linearGradient> - <linearGradient x1="25.2" y1="2.501" x2="28" y2="5.302" id="XMLID_14_" gradientUnits="userSpaceOnUse"> - <stop offset="0.264" id="stop57" stop-color="#9698a1"/> - <stop offset="0.36" id="stop59" stop-color="#787a82"/> - <stop offset="0.725" id="stop61" stop-color="#abaeb8"/> - </linearGradient> - <linearGradient y1="11.9" x2="0" y2="19.02" id="XMLID_15_" gradientUnits="userSpaceOnUse"> - <stop id="stop66" stop-color="#3b3b3b"/> - <stop offset="0.522" id="stop68" stop-color="#424345"/> - <stop offset="1" id="stop70" stop-color="#3b3b3b"/> - </linearGradient> - <linearGradient x1="2.874" x2="21.336" id="XMLID_16_" gradientUnits="userSpaceOnUse"> - <stop id="stop75" stop-color="#8c8c8c"/> - <stop offset="1" id="stop77" stop-color="#7c7c7c"/> - </linearGradient> - </defs> - <rect width="23.802" height="16.344" x="0.099" y="3.322" id="rect14" fill="url(#linearGradient3825)" stroke="#000000" stroke-width="0.198"/> - <rect width="17.613" height="14.202" x="0.813" y="4.433" id="rect27" fill="url(#linearGradient3827)" stroke="#000000" stroke-width="0.079"/> - <rect width="20.787" height="1.111" x="1.607" y="19.666" id="rect29"/> - <rect width="3.967" height="14.995" x="19.14" y="4.04" id="rect38" fill="url(#linearGradient3829)" stroke="#000000" stroke-width="0.079"/> - <path inkscape:connector-curvature="0" d="m 17.236364,16.333884 c -0.07934,0.634711 -0.63471,1.110744 -1.269421,1.190083 -5.077686,0.396694 -7.6165294,0.396694 -12.6942155,0 -0.6347107,-0.07934 -1.1900826,-0.555372 -1.2694215,-1.190083 -0.3966942,-3.887603 -0.3966942,-5.791736 0,-9.6000001 C 2.0826449,6.178512 2.6380168,5.62314 3.2727275,5.5438012 c 5.0776861,-0.3966942 7.6165295,-0.3966942 12.6942155,0 0.634711,0.079339 1.190082,0.5553719 1.269421,1.1900827 0.476033,3.8082641 0.476033,5.7123971 0,9.6000001 z" id="path45" fill="url(#linearGradient3831)" stroke="#000000" stroke-width="0.397"/> - <circle cx="21.12" cy="9.828" r="1.587" id="circle54" fill="url(#linearGradient3833)" stroke="#000000" stroke-width="0.079"/> - <circle cx="21.12" cy="6.337" r="1.587" id="circle63" fill="url(#linearGradient3835)" stroke="#000000" stroke-width="0.079"/> - <rect width="2.539" height="5.712" x="19.855" y="12.605" id="rect72" fill="url(#linearGradient3837)" stroke="#000000" stroke-width="0.079"/> - <circle cx="21.12" cy="6.337" r="0.793" id="circle81" fill="#8c8c8c" stroke="#000000" stroke-width="0.079"/> - <circle cx="21.12" cy="9.828" r="0.793" id="circle83" fill="#8c8c8c" stroke="#000000" stroke-width="0.079"/> - <g id="g3802" transform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)" opacity="0.6"> - <circle r="4.67" cy="-0.729" cx="-24.385" transform="matrix(1.1299292,0,0,1.110931,39.538735,11.339575)" id="path3025" fill="#ffff00" fill-rule="evenodd" stroke="#000000"/> - <path sodipodi:nodetypes="cc" inkscape:connector-curvature="0" id="path3027" d="m 9.2895291,11.685109 c 1.6066949,1.955462 3.3983769,2.348098 5.6279769,0" fill="none" stroke="#000000" stroke-width="1.12"/> - <circle r="1.245" cy="-2.597" cx="-25.838" transform="matrix(1.1299292,0,0,1.110931,39.305401,11.572493)" id="path3031" stroke="#ffff00"/> - <circle r="1.245" cy="-2.597" cx="-25.838" id="path3031-3" transform="matrix(1.1299292,0,0,1.110931,42.940134,11.572492)" stroke="#ffff00"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/84-2.svg b/htdocs/public/symbols/svgicons/84-2.svg deleted file mode 100755 index 5591f38..0000000 --- a/htdocs/public/symbols/svgicons/84-2.svg +++ /dev/null @@ -1,13 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <path inkscape:connector-curvature="0" d="m 21.848666,1037.81 c -0.04754,0 -0.09459,0 -0.141384,0.01 -0.595046,0.042 -1.128019,0.353 -1.445267,0.8491 -0.113582,0.1776 -0.355024,0.2328 -0.539319,0.1234 -0.120262,-0.071 -0.185965,-0.1951 -0.186049,-0.3217 0,-0.067 0.01833,-0.1361 0.05786,-0.1977 0.468357,-0.7325 1.267984,-1.1804 2.153812,-1.2119 -0.0751,-2.413 -2.088025,-4.3565 -4.590767,-4.4361 0.153072,0.4381 0.263023,0.8963 0.323926,1.3704 0.02659,0.207 -0.126022,0.3955 -0.340873,0.4211 -0.0039,5e-4 -0.0078,3e-4 -0.01169,7e-4 -0.01235,0 -0.02476,0 -0.03689,0 -0.195024,0 -0.363998,-0.14 -0.388586,-0.3312 -0.06361,-0.4955 -0.187092,-0.9716 -0.362621,-1.4222 -0.401817,-1.0318 -1.077428,-1.9286 -1.937,-2.6149 -0.116838,-0.094 -0.237099,-0.1827 -0.360492,-0.2679 -1.070832,-0.7401 -2.380518,-1.173 -3.782706,-1.173 -0.119803,0 -0.239021,0 -0.3575287,0.01 -0.6561161,0.035 -1.291486,0.1636 -1.8889949,0.3757 -1.5991734,0.5677 -2.9268503,1.7289 -3.6547644,3.2572 0.096301,-0.01 0.1932699,-0.01 0.2909068,-0.01 1.0312602,0 2.0260787,0.2927 2.8769675,0.8467 0.1119965,0.073 0.1723986,0.1918 0.1725238,0.3127 8.34e-5,0.073 -0.021706,0.1467 -0.067207,0.2116 -0.1212216,0.1728 -0.3648754,0.2182 -0.5442449,0.1013 -0.720776,-0.4692 -1.563817,-0.7171 -2.4379985,-0.7171 -0.2464505,0 -0.4881007,0.02 -0.723531,0.059 -0.068082,0.035 -0.1465595,0.051 -0.2260382,0.042 -0.02776,0.01 -0.055434,0.013 -0.082985,0.018 -1.9077792,0.448 -3.32820921,2.1078 -3.32820921,4.0817 0,4e-4 -4.175e-5,8e-4 -4.175e-5,0 7.0964e-4,2.528 2.12830736,4.5773 4.75285526,4.5773 l 11.9555222,0 4.4589,0 c 1.24461,0 2.253787,-0.9722 2.253787,-2.1714 0,-0.989 -0.835276,-1.7936 -1.861861,-1.7936 z" id="path3614" fill="#b3b3b3" stroke="#808080" stroke-width="0.491"/> - <g id="g3616" transform="matrix(0.04172682,0,0,0.04172682,-0.60141574,1027.4975)" stroke="#d45500" stroke-width="11.983"> - <path inkscape:connector-curvature="0" d="m 242.641,428.896 c -0.08,0 -54.669,1.311 -54.669,1.311 l 43.71,-62.555 c 0.465,-0.676 1.056,-1.586 1.671,-2.652 l -79.878,0 -48.62,102.676 c -1.449,3.059 -1.251,6.643 0.525,9.525 1.776,2.881 4.889,4.67 8.273,4.75 l 42.474,1.021 -53.1,90.703 c -2.461,4.193 -1.66,9.635 1.911,12.945 1.936,1.793 4.454,2.779 7.091,2.779 2.898,-0.002 5.689,-1.221 7.649,-3.338 l 130.29,-140.363 c 2.735,-2.947 3.439,-7.246 1.788,-10.91 -1.617,-3.593 -5.19,-5.892 -9.115,-5.892 z" id="path3618" fill="#ffdc21"/> - </g> - <g id="g3620" transform="matrix(0.04172682,0,0,0.04172682,-0.60141574,1027.4975)" stroke="#d45500" stroke-width="11.983"> - <path inkscape:connector-curvature="0" d="m 480.641,428.896 c -0.08,0 -54.669,1.311 -54.669,1.311 l 43.71,-62.555 c 0.465,-0.676 1.057,-1.586 1.672,-2.652 l -79.879,0 -48.62,102.676 c -1.448,3.059 -1.251,6.643 0.524,9.525 1.776,2.881 4.89,4.67 8.273,4.75 l 42.475,1.021 -53.1,90.703 c -2.462,4.193 -1.66,9.635 1.91,12.945 1.936,1.793 4.455,2.779 7.092,2.779 2.898,-0.002 5.689,-1.221 7.649,-3.338 l 130.29,-140.363 c 2.735,-2.947 3.439,-7.246 1.788,-10.91 -1.617,-3.593 -5.19,-5.892 -9.115,-5.892 z" id="path3622" fill="#ffdc21"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/85-1.svg b/htdocs/public/symbols/svgicons/85-1.svg deleted file mode 100755 index 63b7bfc..0000000 --- a/htdocs/public/symbols/svgicons/85-1.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24"> - <metadata id="metadata16"/> - <path inkscape:connector-curvature="0" id="path1966" d="m 22.800572,8.2688913 0.01595,-0.7329406 c -0.0157,-0.049247 -0.02412,-0.1057818 -0.09126,-0.1035977 L 1.8714751,7.4189727 C 0.92545083,7.6072532 0.73794541,10.068642 0.24866478,11.442638 l 0,2.980094 c 0.23834022,0.560104 0.4957278,0.605926 0.7512842,0.701199 l 3.10530832,-0.02505 c 0,-2.707608 4.1070207,-2.692523 4.1070207,0 l 8.339255,0 c 0,-2.697709 4.006849,-2.698447 4.006849,0 l 2.879923,0 c 0.136502,-0.04003 0.229533,-0.167006 0.313035,-0.313035 L 23.717887,12.11382 22.498519,8.5944457 c -0.04247,-0.2337777 0.201264,-0.2171274 0.30205,-0.3255564 z" fill="#ffcc00" fill-rule="evenodd" stroke="#000000" stroke-width="0.497"/> - <path inkscape:connector-curvature="0" id="path2856" d="m 4.6644943,15.108229 a 1.4907993,1.4904321 0 1 0 2.9815985,0 1.4907993,1.4904321 0 1 0 -2.9815985,0 z"/> - <path inkscape:connector-curvature="0" id="path3745" d="m 17.049313,15.117691 a 1.4907998,1.4907998 0 0 0 2.981599,0 1.4907998,1.4907998 0 1 0 -2.981599,0 z"/> - <path inkscape:connector-curvature="0" id="path3747" d="M 5.2756717,8.7631877 4.5560579,11.216442 c -0.042363,0.10005 -0.083941,0.200711 -0.2011915,0.242515 l -2.4948567,-0.0061 C 1.7604904,11.366142 1.6579002,11.285068 1.6422613,11.106107 L 2.3490748,8.6534092 C 2.40683,8.4599115 2.486435,8.4047941 2.5694668,8.3713791 l 2.5425805,0.0032 c 0.1239524,0.074007 0.1674796,0.2123551 0.1636244,0.3886085 z" fill="#cccccc" fill-rule="evenodd" stroke="#000000" stroke-width="0.397"/> - <path inkscape:connector-curvature="0" id="path4634" d="M 9.5750061,8.7585694 8.8553922,11.211823 c -0.042364,0.100051 -0.083941,0.200712 -0.2011914,0.242516 l -2.4948567,-0.0062 C 6.0598247,11.361523 5.9572344,11.28045 5.9415956,11.101488 L 6.648409,8.6487909 C 6.7061646,8.4552932 6.7857693,8.4001758 6.8688011,8.3667608 l 2.5425806,0.0032 c 0.1239523,0.074007 0.1674795,0.2123551 0.1636244,0.3886084 z" fill="#cccccc" fill-rule="evenodd" stroke="#000000" stroke-width="0.397"/> - <path inkscape:connector-curvature="0" id="path4636" d="m 13.874341,8.7585691 -0.719614,2.4532539 c -0.04236,0.100051 -0.08394,0.200712 -0.201191,0.242516 l -2.494858,-0.0062 c -0.09952,-0.08666 -0.20211,-0.167727 -0.217748,-0.346689 l 0.706813,-2.4526973 c 0.05775,-0.1934977 0.13736,-0.2486152 0.220393,-0.2820302 l 2.542581,0.0032 c 0.123952,0.074007 0.167479,0.2123552 0.163624,0.3886085 z" fill="#cccccc" fill-rule="evenodd" stroke="#000000" stroke-width="0.397"/> - <path inkscape:connector-curvature="0" id="path4640" d="m 17.87754,8.587075 4.22e-4,2.638863 c -0.04237,0.10005 -0.115944,0.194311 -0.233194,0.236115 l -2.590861,-0.0093 c -0.09952,-0.0867 -0.20211,-0.167767 -0.217748,-0.346728 L 15.542973,8.6533051 C 15.600726,8.4598074 15.680333,8.40469 15.763364,8.371275 l 1.921751,-0.0032 c 0.123952,0.074007 0.151479,0.074749 0.192425,0.2190002 z" fill="#cccccc" fill-rule="evenodd" stroke="#000000" stroke-width="0.397"/> - <path inkscape:connector-curvature="0" id="path4642" d="M 18.9754,8.6678402 18.98,11.22066 c 0.04237,0.100049 0.08394,0.20071 0.201191,0.242515 l 2.93385,-0.01518 c 0.09952,-0.08669 0.20211,-0.167768 0.217748,-0.346728 L 21.453952,8.6576271 C 21.396196,8.4641294 21.316592,8.409012 21.23356,8.375597 l -2.094536,0.00772 c -0.123952,0.07401 -0.167479,0.1082663 -0.163624,0.2845197 z" fill="#cccccc" fill-rule="evenodd" stroke="#000000" stroke-width="0.397"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/85-2.svg b/htdocs/public/symbols/svgicons/85-2.svg deleted file mode 100755 index 4cf7c57..0000000 --- a/htdocs/public/symbols/svgicons/85-2.svg +++ /dev/null @@ -1,42 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3050"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <switch transform="matrix(0.0408403,0,0,0.0408403,-0.20169302,1028.1994)" id="switch3786"> - <g id="g3790"> - <g id="g3792"> - <circle cx="298.49" cy="306.12" r="216.75" id="circle3794" fill="#ffaa00"/> - <g id="g3796"> - <g id="g3798"> - <path inkscape:connector-curvature="0" d="m 339.642,72.042 c -0.225,0 -0.451,-0.019 -0.677,-0.058 -13.323,-2.287 -26.942,-3.446 -40.478,-3.446 -12.325,0 -24.765,0.969 -36.975,2.879 -0.207,0.033 -0.414,0.048 -0.619,0.048 -1.305,0 -2.545,-0.64 -3.298,-1.737 -0.872,-1.271 -0.936,-2.928 -0.166,-4.263 l 26.545,-45.98 c 4.29,-7.429 10.016,-11.52 16.125,-11.52 6.11,0 11.836,4.091 16.126,11.52 l 26.879,46.556 c 0.775,1.343 0.704,3.014 -0.183,4.287 -0.754,1.085 -1.985,1.714 -3.279,1.714 z" id="path3800" fill="#ffaa00"/> - </g> - <g id="g3802"> - <path inkscape:connector-curvature="0" d="m 116.291,151.497 c -0.356,0 -0.716,-0.047 -1.07,-0.146 -1.485,-0.412 -2.602,-1.641 -2.87,-3.159 l -9.225,-52.317 c -1.279,-7.254 -0.111,-13.48 3.287,-17.53 2.774,-3.306 6.873,-5.053 11.852,-5.053 2.971,0 6.19,0.624 9.568,1.854 l 50.512,18.385 c 1.458,0.531 2.478,1.857 2.616,3.403 0.138,1.546 -0.63,3.032 -1.972,3.812 -22.481,13.09 -42.561,29.703 -59.682,49.377 -0.769,0.885 -1.876,1.374 -3.016,1.374 z" id="path3804" fill="#ffaa00"/> - </g> - <g id="g3806"> - <path inkscape:connector-curvature="0" d="m 56.946,305.711 c -0.924,0 -1.837,-0.319 -2.572,-0.936 L 13.69,270.639 C 7.119,265.123 4.084,258.773 5.145,252.757 6.206,246.741 11.23,241.812 19.291,238.878 l 50.482,-18.375 c 0.446,-0.163 0.909,-0.241 1.368,-0.241 1.041,0 2.062,0.406 2.825,1.167 1.099,1.096 1.465,2.729 0.938,4.189 -8.797,24.401 -13.495,50.026 -13.96,76.164 -0.027,1.541 -0.938,2.93 -2.341,3.568 -0.53,0.243 -1.095,0.361 -1.657,0.361 z" id="path3808" fill="#ffaa00"/> - </g> - <g id="g3810"> - <path inkscape:connector-curvature="0" d="m 57.515,462.003 c -8.579,0 -14.986,-2.914 -18.041,-8.204 -3.055,-5.291 -2.375,-12.297 1.915,-19.728 l 26.863,-46.524 c 0.718,-1.244 2.043,-2 3.463,-2 0.114,0 0.229,0.005 0.344,0.015 1.547,0.133 2.877,1.149 3.412,2.606 8.962,24.402 21.833,47.051 38.254,67.317 0.971,1.198 1.167,2.848 0.503,4.24 -0.664,1.392 -2.069,2.278 -3.611,2.278 l -53.102,0 z" id="path3812" fill="#ffaa00"/> - </g> - <g id="g3814"> - <path inkscape:connector-curvature="0" d="m 199.747,586.558 c -7.979,-10e-4 -14.094,-6.577 -15.961,-17.162 l -9.333,-52.934 c -0.27,-1.529 0.37,-3.077 1.642,-3.969 0.687,-0.482 1.491,-0.726 2.298,-0.726 0.686,0 1.374,0.177 1.993,0.532 22.592,12.986 46.999,22.081 72.543,27.031 1.514,0.293 2.725,1.431 3.111,2.924 0.386,1.493 -0.12,3.076 -1.301,4.067 l -40.646,34.104 c -4.781,4.013 -9.742,6.133 -14.346,6.133 10e-4,0 10e-4,0 0,0 z" id="path3816" fill="#ffaa00"/> - </g> - <g id="g3818"> - <path inkscape:connector-curvature="0" d="m 394.197,587.662 c -4.604,0 -9.564,-2.12 -14.343,-6.13 l -41.179,-34.556 c -1.189,-0.999 -1.693,-2.596 -1.293,-4.097 0.4,-1.5 1.634,-2.634 3.163,-2.906 25.633,-4.565 50.176,-13.286 72.947,-25.921 0.605,-0.336 1.274,-0.502 1.94,-0.502 0.817,0 1.631,0.25 2.322,0.743 1.256,0.896 1.885,2.433 1.617,3.951 l -9.215,52.253 c -1.865,10.588 -7.981,17.165 -15.959,17.165 z" id="path3820" fill="#ffaa00"/> - </g> - <g id="g3822"> - <path inkscape:connector-curvature="0" d="m 484.058,464.795 c -1.554,0 -2.966,-0.898 -3.624,-2.306 -0.657,-1.406 -0.441,-3.067 0.554,-4.259 16.732,-20.028 29.945,-42.48 39.271,-66.732 0.553,-1.438 1.884,-2.432 3.421,-2.552 0.104,-0.009 0.209,-0.013 0.313,-0.013 1.42,0 2.745,0.756 3.463,2 l 26.517,45.932 c 4.29,7.429 4.971,14.434 1.917,19.725 -3.056,5.291 -9.463,8.205 -18.043,8.205 h -53.789 z" id="path3824" fill="#ffaa00"/> - </g> - <g id="g3826"> - <path inkscape:connector-curvature="0" d="m 540.069,309.322 c -0.571,0 -1.146,-0.122 -1.684,-0.372 -1.408,-0.653 -2.311,-2.062 -2.315,-3.615 -0.084,-26.152 -4.398,-51.846 -12.821,-76.367 -0.501,-1.458 -0.12,-3.073 0.98,-4.153 0.761,-0.748 1.772,-1.146 2.803,-1.146 0.459,0 0.922,0.079 1.368,0.241 l 49.841,18.144 c 8.061,2.934 13.085,7.863 14.146,13.879 1.061,6.016 -1.974,12.367 -8.546,17.882 l -41.199,34.572 c -0.736,0.616 -1.65,0.935 -2.573,0.935 z" id="path3828" fill="#ffaa00"/> - </g> - <g id="g3830"> - <path inkscape:connector-curvature="0" d="m 483.04,154.215 c -1.16,0 -2.284,-0.506 -3.056,-1.419 -16.812,-19.901 -36.645,-36.804 -58.95,-50.239 -1.32,-0.795 -2.066,-2.278 -1.918,-3.812 0.149,-1.534 1.166,-2.846 2.614,-3.373 L 471.611,77.22 c 3.377,-1.229 6.596,-1.853 9.566,-1.853 4.98,0 9.08,1.748 11.854,5.056 3.398,4.051 4.564,10.276 3.284,17.528 l -9.337,52.959 c -0.27,1.529 -1.399,2.764 -2.897,3.167 -0.345,0.093 -0.694,0.138 -1.041,0.138 z" id="path3832" fill="#ffaa00"/> - </g> - </g> - </g> - </g> - </switch> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/86-1.svg b/htdocs/public/symbols/svgicons/86-1.svg deleted file mode 100755 index fc6727b..0000000 --- a/htdocs/public/symbols/svgicons/86-1.svg +++ /dev/null @@ -1,76 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24" viewBox="0 0 24.000001 24"> - <metadata id="metadata51"/> - <defs id="defs86"> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_9_" id="linearGradient3825" gradientUnits="userSpaceOnUse" x1="0.125" x2="30.13" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_10_" id="linearGradient3827" gradientUnits="userSpaceOnUse" x1="1.029" x2="23.18" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_11_" id="linearGradient3829" gradientUnits="userSpaceOnUse" x1="24.11" x2="29.09" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_13_" id="linearGradient3833" gradientUnits="userSpaceOnUse" x1="25.2" y1="6.891" x2="28" y2="9.691" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_14_" id="linearGradient3835" gradientUnits="userSpaceOnUse" x1="25.2" y1="2.501" x2="28" y2="5.302" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient inkscape:collect="always" xlink:href="#XMLID_15_" id="linearGradient3837" gradientUnits="userSpaceOnUse" y1="11.9" x2="0" y2="19.02" gradientTransform="matrix(0.79338845,0,0,0.79338845,0.0198349,3.2429747)"/> - <linearGradient x1="2.099" x2="22.11" id="linearGradient4289" gradientUnits="userSpaceOnUse"> - <stop id="stop41-0" stop-color="#8c8c8c"/> - <stop offset="1" id="stop43-2" stop-color="#5e5e5e"/> - </linearGradient> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient4289" id="linearGradient3831-3" gradientUnits="userSpaceOnUse" x1="2.099" x2="22.11" gradientTransform="matrix(0.79338855,0,0,0.79338855,0.0198333,3.2429735)"/> - <linearGradient x1="0.125" x2="30.13" id="XMLID_9_" gradientUnits="userSpaceOnUse"> - <stop id="stop4" stop-color="#696969"/> - <stop offset="0.298" id="stop6" stop-color="#aaadb6"/> - <stop offset="0.438" id="stop8" stop-color="#999a9e"/> - <stop offset="0.562" id="stop10" stop-color="#adb1ba"/> - <stop offset="1" id="stop12" stop-color="#828387"/> - </linearGradient> - <linearGradient x1="1.029" x2="23.18" id="XMLID_10_" gradientUnits="userSpaceOnUse"> - <stop id="stop17" stop-color="#aaadb6"/> - <stop offset="0.079" id="stop19" stop-color="#696969"/> - <stop offset="0.438" id="stop21" stop-color="#828387"/> - <stop offset="0.933" id="stop23" stop-color="#828387"/> - <stop offset="1" id="stop25" stop-color="#adb1ba"/> - </linearGradient> - <linearGradient x1="24.11" x2="29.09" id="XMLID_11_" gradientUnits="userSpaceOnUse"> - <stop id="stop32" stop-color="#383838"/> - <stop offset="0.562" id="stop34" stop-color="#616369"/> - <stop offset="1" id="stop36" stop-color="#525252"/> - </linearGradient> - <linearGradient x1="25.2" y1="6.891" x2="28" y2="9.691" id="XMLID_13_" gradientUnits="userSpaceOnUse"> - <stop offset="0.264" id="stop48" stop-color="#9698a1"/> - <stop offset="0.36" id="stop50" stop-color="#787a82"/> - <stop offset="0.725" id="stop52" stop-color="#abaeb8"/> - </linearGradient> - <linearGradient x1="25.2" y1="2.501" x2="28" y2="5.302" id="XMLID_14_" gradientUnits="userSpaceOnUse"> - <stop offset="0.264" id="stop57" stop-color="#9698a1"/> - <stop offset="0.36" id="stop59" stop-color="#787a82"/> - <stop offset="0.725" id="stop61" stop-color="#abaeb8"/> - </linearGradient> - <linearGradient y1="11.9" x2="0" y2="19.02" id="XMLID_15_" gradientUnits="userSpaceOnUse"> - <stop id="stop66" stop-color="#3b3b3b"/> - <stop offset="0.522" id="stop68" stop-color="#424345"/> - <stop offset="1" id="stop70" stop-color="#3b3b3b"/> - </linearGradient> - <linearGradient x1="2.874" x2="21.336" id="XMLID_16_" gradientUnits="userSpaceOnUse"> - <stop id="stop75" stop-color="#8c8c8c"/> - <stop offset="1" id="stop77" stop-color="#7c7c7c"/> - </linearGradient> - </defs> - <rect width="23.802" height="16.344" x="0.099" y="3.322" id="rect14" fill="url(#linearGradient3825)" stroke="#000000" stroke-width="0.198"/> - <rect width="17.613" height="14.202" x="0.813" y="4.433" id="rect27" fill="url(#linearGradient3827)" stroke="#000000" stroke-width="0.079"/> - <rect width="20.787" height="1.111" x="1.607" y="19.666" id="rect29"/> - <rect width="3.967" height="14.995" x="19.14" y="4.04" id="rect38" fill="url(#linearGradient3829)" stroke="#000000" stroke-width="0.079"/> - <circle cx="21.12" cy="9.828" r="1.587" id="circle54" fill="url(#linearGradient3833)" stroke="#000000" stroke-width="0.079"/> - <circle cx="21.12" cy="6.337" r="1.587" id="circle63" fill="url(#linearGradient3835)" stroke="#000000" stroke-width="0.079"/> - <rect width="2.539" height="5.712" x="19.855" y="12.605" id="rect72" fill="url(#linearGradient3837)" stroke="#000000" stroke-width="0.079"/> - <circle cx="21.12" cy="6.337" r="0.793" id="circle81" fill="#8c8c8c" stroke="#000000" stroke-width="0.079"/> - <circle cx="21.12" cy="9.828" r="0.793" id="circle83" fill="#8c8c8c" stroke="#000000" stroke-width="0.079"/> - <path d="M 1.8710486,7.4082056 C 1.9254792,6.2299476 2.535135,5.8349808 3.7634784,5.5371574 l 0,11.9967196 C 2.9529507,17.319004 2.2857243,18.12995 1.7609869,15.479393 Z" id="rect3404" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" fill="#ff0000" fill-rule="evenodd"/> - <path d="m 5.706614,5.3109102 2.0024917,-0.140625 0,12.6570908 -2.0024917,-0.171875 z" id="rect3404-1" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" fill="#ffff00" fill-rule="evenodd"/> - <rect id="rect3404-2" width="2" height="12.657" x="7.679" y="5.17" fill="#00ff00" fill-rule="evenodd"/> - <rect id="rect3404-6" width="2" height="12.657" x="9.652" y="5.17" fill="#008080" fill-rule="evenodd"/> - <path d="m 11.625056,5.1702843 1.986867,0.125 0.01563,12.3914667 -2.002492,0.140625 z" id="rect3404-6-4" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" fill="#0000ff" fill-rule="evenodd"/> - <path d="m 13.582247,5.3087127 2.018117,0.1605066 0,12.0612817 -2.002492,0.125 z" id="rect3404-6-8" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" fill="#ff00ff" fill-rule="evenodd"/> - <path d="m 15.570685,5.4270948 c 1.358396,-0.1278255 1.809434,1.1809982 2.002492,2.8982904 l 0,6.5670128 c -0.204175,2.374062 -1.021926,2.754002 -2.002492,2.604793 z" id="rect3404-6-6" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" fill="#00ffff" fill-rule="evenodd"/> - <path d="m 3.7337995,5.5140343 2.0024919,-0.21875 0,12.3445917 -2.0024919,-0.04687 z" id="rect3404-6-7" inkscape:connector-curvature="0" sodipodi:nodetypes="ccccc" fill="#ff6600" fill-rule="evenodd"/> - <g inkscape:groupmode="layer" id="layer1" inkscape:label="Layer 1"> - <path inkscape:connector-curvature="0" d="m 17.236365,16.333886 c -0.07934,0.63471 -0.63471,1.110743 -1.269421,1.190082 -5.077688,0.396694 -7.6165306,0.396694 -12.6942178,0 -0.6347107,-0.07934 -1.1900827,-0.555372 -1.2694216,-1.190082 -0.3966942,-3.887605 -0.3966942,-5.791738 0,-9.6000033 0.079339,-0.555372 0.6347109,-1.1107441 1.2694216,-1.1900831 5.0776872,-0.396694 7.6165298,-0.396694 12.6942178,0 0.634711,0.07934 1.190082,0.5553721 1.269421,1.1900831 0.476033,3.8082653 0.476033,5.7123983 0,9.6000033 z" id="path45-2" opacity="0.3" fill="url(#linearGradient3831-3)" stroke="#000000" stroke-width="0.397"/> - <path inkscape:connector-curvature="0" d="m 17.236364,16.333884 c -0.07934,0.634711 -0.63471,1.110744 -1.269421,1.190083 -5.077686,0.396694 -7.6165299,0.396694 -12.6942159,0 -0.6347107,-0.07934 -1.1900826,-0.555372 -1.2694215,-1.190083 -0.3966942,-3.887603 -0.3966942,-5.791737 0,-9.600001 0.079339,-0.5553719 0.6347108,-1.1107439 1.2694215,-1.1900827 5.077686,-0.3966942 7.6165299,-0.3966942 12.6942159,0 0.634711,0.079339 1.190082,0.5553719 1.269421,1.1900827 0.476033,3.808264 0.476033,5.712398 0,9.600001 z" id="path45" fill="none" stroke="#000000" stroke-width="0.397"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/86-2.svg b/htdocs/public/symbols/svgicons/86-2.svg deleted file mode 100755 index 81ba54f..0000000 --- a/htdocs/public/symbols/svgicons/86-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1" stroke="#000000" stroke-width="2"> - <metadata id="metadata14"/> - <path inkscape:connector-curvature="0" d="m 5.2476657,11.063511 3.1920126,5.401868 7.1206437,0 3.192012,-5.401868 0,-6.1384855 -13.5046683,0" id="path6" fill="#ffffff" stroke-width="0.491"/> - <path inkscape:connector-curvature="0" d="M 0.33687708,8.1170381 4.0199685,1.9785523 8.9307571,4.9250255 5.2476657,11.063511 Z M 15.069243,4.9250255 19.980031,1.9785523 23.663123,8.1170381 18.752334,11.063511 Z m -6.6295647,11.5403535 7.1206437,0 0,5.647407 -7.1206437,0 z" id="path4" stroke-width="0.491"/> - <circle cx="11.877" cy="10.818" r="1.719" id="circle8" stroke-width="0.491"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/87-1.svg b/htdocs/public/symbols/svgicons/87-1.svg deleted file mode 100755 index c4f0d3a..0000000 --- a/htdocs/public/symbols/svgicons/87-1.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" height="24" width="24" version="1.1"><metadata id="metadata3412"/><g><g><g><g> - - <circle r="12" cy="12" cx="12" id="path3416" fill="#000080" fill-rule="evenodd"/> -<text id="textoverlay"><tspan id="tspanoverlay" font-family="Sans-Serif" text-anchor="middle" text-align="center" word-spacing="0" letter-spacing="0" font-weight="bold" x="12" y="12" fill="#ffffff" font-size="11" dy="4.0" dx="-0.4">WX</tspan></text></g></g></g></g></svg> diff --git a/htdocs/public/symbols/svgicons/87-2.svg b/htdocs/public/symbols/svgicons/87-2.svg deleted file mode 100755 index b9982b7..0000000 --- a/htdocs/public/symbols/svgicons/87-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" height="24" width="24" version="1.1"> - <metadata id="metadata3412"/> - <circle r="11.52" cy="12" cx="12" id="path3416" fill="#008000" fill-rule="evenodd" stroke="#000000" stroke-width="0.96"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/88-1.svg b/htdocs/public/symbols/svgicons/88-1.svg deleted file mode 100755 index 3b10028..0000000 --- a/htdocs/public/symbols/svgicons/88-1.svg +++ /dev/null @@ -1,221 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="88-1.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview7" - showgrid="false" - inkscape:zoom="22.627417" - inkscape:cx="6.3336698" - inkscape:cy="19.236151" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - style="fill:#1a1a1a;stroke:#1a1a1a" - transform="matrix(-0.04229117,0,0,-0.03508931,28.159572,29.493315)" - id="g4241"> - <path - style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 326.12263,515.52088 27.3184,11.99722 -1.97231,4.49106 -27.3184,-11.99722 z" - id="path4239" - inkscape:connector-curvature="0" /> - <path - sodipodi:nodetypes="ccccc" - inkscape:connector-curvature="0" - id="rect4236" - d="m 326.61151,514.77002 37.16036,-30.66177 0,4.41682 -37.16036,30.66177 z" - style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <rect - ry="6.0592961" - y="502.09976" - x="317.90591" - height="31.949015" - width="11.617825" - id="rect4232" - style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - </g> - <g - style="fill:#1a1a1a;stroke:#1a1a1a" - id="g4271" - transform="matrix(0.04229117,0,0,-0.03508931,-6.1286271,29.420561)"> - <path - inkscape:connector-curvature="0" - id="path4273" - d="m 326.12263,515.52088 27.3184,11.99722 -1.97231,4.49106 -27.3184,-11.99722 z" - style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 326.61151,514.77002 37.16036,-30.66177 0,4.41682 -37.16036,30.66177 z" - id="path4275" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccccc" /> - <rect - style="fill:#1a1a1a;fill-opacity:1;stroke:#1a1a1a;stroke-width:0.99999994;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4277" - width="11.617825" - height="31.949015" - x="317.90591" - y="502.09976" - ry="6.0592961" /> - </g> - <rect - style="display:inline;fill:#4d4d4d;stroke:#4d4d4d;stroke-width:0.03676214;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4203" - width="0.97268414" - height="0.17276153" - x="-12.10735" - y="-22.702787" - transform="scale(-1,-1)" /> - <path - style="display:inline;fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.03676214;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 11.465088,3.3466272 c 0.474867,0.084361 0.949281,0.3976852 1.165821,0.7699635 0.09435,0.1622165 0.182284,0.4619006 0.283655,0.9667747 0.03525,0.175543 0.08708,0.401754 0.115167,0.5026916 l 0.05109,-0.4934377 0.15915,0 c 0.204818,0 0.225309,0.030887 0.308503,0.4650482 0.177261,0.9250644 0.186103,1.0841274 0.178538,3.2116134 l -0.0074,2.0648571 -0.141937,0.11038 c -0.179805,0.139822 -0.324288,0.162592 -0.503792,0.0794 l -0.137615,-0.06379 -0.0032,0.377627 c -0.0047,0.563096 -0.01948,0.680253 -0.158442,1.259653 -0.112009,0.467042 -0.151114,0.566912 -0.324967,0.829841 -0.248189,0.37535 -0.399348,0.570194 -0.442359,0.570194 -0.01839,0 -0.08192,0.05387 -0.141226,0.119688 -0.09802,0.108831 -0.110162,0.158783 -0.133684,0.550567 -0.0282,0.469505 -0.05738,0.917571 -0.08734,1.340511 -0.01049,0.149211 -0.02989,0.486733 -0.04295,0.750047 -0.01305,0.263316 -0.04133,0.730099 -0.06282,1.037301 -0.02149,0.307199 -0.04902,0.304645 -0.06114,0.506519 -0.01207,0.201875 -0.03462,0.548095 -0.04999,0.769379 -0.01569,0.225928 -0.01144,0.409848 0.0096,0.419472 0.02069,0.0095 0.123351,0.02598 0.228148,0.03676 0.1048,0.01079 0.23818,0.02556 0.2964,0.03282 0.05823,0.0073 0.305927,0.03751 0.550458,0.06724 0.24453,0.02972 0.468418,0.06852 0.49753,0.08622 0.0707,0.043 0.06935,0.357371 -0.0017,0.401833 -0.07462,0.04669 -0.323935,0.08583 -1.043574,0.163915 -0.336211,0.03647 -0.61496,0.06961 -0.619443,0.07366 -0.0083,0.0073 -0.03558,0.492315 -0.08846,1.563289 -0.02075,0.420025 -0.01529,0.566527 0.02105,0.566527 0.02697,0 0.04903,0.02873 0.04903,0.06383 0,0.0351 -0.02143,0.06025 -0.04763,0.05585 -0.007,0.08796 -0.0023,0.185628 -0.0031,0.18995 -0.04582,0.009 -0.128779,0.04717 -0.144544,0.08478 -0.01577,0.0376 -0.05716,0.101195 -0.09195,0.141339 l -0.06329,0.07297 -0.08448,-0.104705 c -0.09087,-0.112629 -0.09976,-0.197038 -0.199265,-1.890377 -0.02469,-0.420183 -0.05208,-0.769384 -0.06086,-0.776004 -0.0088,-0.0066 -0.338229,-0.04634 -0.7321044,-0.08829 -0.953844,-0.101556 -0.9545792,-0.101804 -0.9545792,-0.318673 0,-0.271581 -0.076965,-0.242873 0.9015809,-0.336271 0.3798967,-0.03625 0.7077807,-0.07387 0.7286307,-0.08358 0.02085,-0.0097 0.02733,-0.156203 0.01438,-0.325531 -0.02481,-0.324748 -0.05129,-0.374508 -0.08951,-1.165479 -0.03719,-0.769747 -0.104025,-1.899116 -0.12466,-2.106516 -0.01049,-0.105324 -0.03001,-0.464392 -0.04341,-0.797924 -0.03727,-0.928033 -0.03552,-0.920577 -0.252036,-1.071017 C 9.8566166,13.872005 9.4669609,13.300175 9.3422649,12.944183 9.213914,12.577755 9.1257546,12.154533 9.1256046,11.904067 L 9.1254939,11.677833 8.7861528,11.479562 C 8.5995156,11.370518 8.4298354,11.289202 8.409086,11.298867 8.3871879,11.309087 8.3689249,10.475332 8.3655572,9.311828 8.3600856,7.4218728 8.3641016,7.3042885 8.4356381,7.256065 8.5506504,7.1785417 8.8109473,7.1585071 8.9580716,7.2158544 l 0.1250703,0.048756 0,-1.3371496 c 0,-1.411183 0.022808,-0.9606821 0.2134346,-1.4422411 C 9.3728197,4.2926123 9.5835897,3.9844966 9.7282371,3.8541883 9.8814172,3.7161965 10.41948,3.4180375 10.565142,3.3904327 c 0.01168,-0.00221 0.07481,-0.020762 0.140372,-0.041234 0.136741,-0.042701 0.526282,-0.044018 0.759588,-0.00257 z" - id="path3357" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ccsccssccccccssscsccscscsccccsccssccccccsccscccccscsccccscccssscccc" /> - <path - style="fill:#999999;fill-opacity:1;stroke:#333333;stroke-width:0.04528588;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 11.254222,4.5545287 -0.405992,0 c -0.07049,0 -0.127221,-0.052935 -0.127221,-0.1186868 l 0,-0.8447472 c 0,-0.065753 0.05675,-0.1186866 0.127221,-0.1186866 l 0.405992,0 c 0.07049,0 0.12722,0.052934 0.12722,0.1186866 l 0,0.8447472 c 0,0.065752 -0.05674,0.1186868 -0.12722,0.1186868 z" - id="rect4280" - inkscape:connector-curvature="0" /> - <path - id="path4283" - d="m 11.923185,4.6831344 -0.325896,-0.07595 c -0.06503,-0.015148 -0.113861,-0.06659 -0.107625,-0.1340487 l 0.07133,-0.7722527 c 0.0062,-0.067462 0.07037,-0.1352479 0.132003,-0.1093034 l 0.341281,0.1436735 c 0.06163,0.025948 0.115907,0.066816 0.107637,0.1340486 l -0.08671,0.7045278 c -0.0083,0.067233 -0.06697,0.1244559 -0.132001,0.1093021 z" - style="fill:#999999;fill-opacity:1;stroke:#333333;stroke-width:0.04528588;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - inkscape:connector-curvature="0" - sodipodi:nodetypes="sssssssss" /> - <path - sodipodi:nodetypes="sssssssss" - inkscape:connector-curvature="0" - style="fill:#999999;fill-opacity:1;stroke:#333333;stroke-width:0.04528588;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 10.211293,4.6908172 0.325894,-0.075949 C 10.602217,4.59972 10.651048,4.54828 10.644824,4.4808196 l -0.07133,-0.7722519 c -0.0062,-0.067462 -0.07037,-0.1352491 -0.132001,-0.109302 l -0.341278,0.1436728 c -0.06163,0.025948 -0.115907,0.066816 -0.1076376,0.1340486 l 0.086711,0.704528 c 0.0083,0.067232 0.06697,0.1244558 0.132001,0.109302 z" - id="path4285" /> - <path - id="path4287" - d="M 9.4521724,5.1325653 9.8948551,4.8491864 C 9.9499179,4.8139258 10.016948,4.7815167 10.00248,4.7151376 L 9.8894364,4.1964102 c -0.014461,-0.06638 -0.09503,-0.1616147 -0.132001,-0.1093037 l -0.4705695,0.66609 c -0.03696,0.052312 -0.061393,0.096646 -0.028383,0.1570972 l 0.061691,0.1129696 c 0.033015,0.060449 0.076923,0.1445611 0.1319997,0.109302 z" - style="fill:#999999;fill-opacity:1;stroke:#333333;stroke-width:0.04528588;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - inkscape:connector-curvature="0" - sodipodi:nodetypes="sssssssss" /> - <path - sodipodi:nodetypes="sssssssss" - inkscape:connector-curvature="0" - style="fill:#999999;fill-opacity:1;stroke:#333333;stroke-width:0.04528588;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 12.721004,5.1325653 12.278321,4.8491864 c -0.05506,-0.035261 -0.122093,-0.06767 -0.107625,-0.1340488 l 0.113042,-0.5187275 c 0.01446,-0.066381 0.09503,-0.1616147 0.132001,-0.1093036 l 0.470583,0.6660893 c 0.03695,0.052312 0.06141,0.096646 0.02839,0.1570971 l -0.06167,0.1129696 c -0.03302,0.060449 -0.07692,0.144561 -0.132,0.109302 z" - id="path4289" /> - <rect - style="display:inline;fill:#4d4d4d;stroke:#4d4d4d;stroke-width:0.03676214;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4205" - width="0.21801542" - height="0.2991724" - x="-12.033846" - y="-22.765993" - ry="0.04213696" - transform="scale(-1,-1)" /> - <rect - style="display:inline;fill:#4d4d4d;stroke:#4d4d4d;stroke-width:0.44347614;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="rect4207" - width="0.11262723" - height="1.1137763" - x="-11.939633" - y="-23.778214" - ry="0.014238616" - transform="scale(-1,-1)" /> - <rect - ry="0.014238616" - y="-22.483994" - x="-11.939633" - height="1.1137763" - width="0.11262723" - id="rect4209" - style="display:inline;fill:#4d4d4d;stroke:#4d4d4d;stroke-width:0.44347614;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - transform="scale(-1,-1)" /> - <g - id="g4730" - style="fill:#4d4d4d;stroke:#4d4d4d"> - <path - inkscape:transform-center-y="-177.95367" - inkscape:transform-center-x="75.786419" - sodipodi:nodetypes="ssssscscss" - inkscape:connector-curvature="0" - id="rect4213" - d="M 15.335599,19.308888 14.86082,19.45435 c -0.05239,0.01605 -0.110055,-0.0073 -0.128038,-0.0529 l -3.695104,-9.35558 c -0.01798,-0.04552 0.0087,-0.094791 0.06111,-0.1108426 l 0.150504,0.065081 0.689638,1.714982 c 0.03751,0.0933 0.268397,-0.03571 0.47442,-0.07057 l 2.98336,7.553527 c 0.01798,0.04552 -0.0087,0.09479 -0.06111,0.110842 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.44347614;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.41295668;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 3.2522389,16.066201 2.9944015,15.714178 c -0.028453,-0.03885 -0.020388,-0.09344 0.018761,-0.121475 L 11.058274,9.8312911 c 0.03915,-0.028036 0.09302,-0.020085 0.121475,0.018761 L 11.15491,9.9936786 9.6832178,11.06 c -0.08006,0.05801 0.1011744,0.212406 0.1859704,0.373304 l -6.4954755,4.651657 c -0.039147,0.02804 -0.093024,0.02009 -0.1214758,-0.01876 z" - id="path4216" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssssscscss" - inkscape:transform-center-x="-154.08386" - inkscape:transform-center-y="-113.34617" /> - <path - inkscape:transform-center-y="108.716" - inkscape:transform-center-x="-157.12942" - sodipodi:nodetypes="ssssscscss" - inkscape:connector-curvature="0" - id="path4218" - d="M 2.7291705,4.5029931 2.9729637,4.1411019 c 0.026902,-0.039935 0.080999,-0.050851 0.1206436,-0.023523 l 8.1472117,5.6161043 c 0.03964,0.027328 0.05042,0.080709 0.02353,0.1206439 L 11.120804,9.8796414 9.6187754,8.8564858 C 9.5370656,8.8008265 9.4532362,9.0236647 9.330603,9.1579763 L 2.7526939,4.6236373 C 2.7130494,4.596309 2.7022679,4.5429274 2.7291705,4.5029931 Z" - style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.41295668;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - <path - style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.41295668;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 13.901821,0.20974224 0.417462,0.12698873 c 0.04607,0.0140127 0.07236,0.0625329 0.05786,0.10844682 l -2.98089,9.43567551 c -0.0145,0.045914 -0.06238,0.071871 -0.108446,0.057858 l -0.06628,-0.1298155 0.537864,-1.7359792 c 0.02926,-0.094437 -0.208364,-0.1092554 -0.372726,-0.1871255 l 2.406717,-7.61819076 c 0.0145,-0.0459145 0.06238,-0.0718717 0.108448,-0.0578584 z" - id="path4220" - inkscape:connector-curvature="0" - sodipodi:nodetypes="ssssscscss" - inkscape:transform-center-x="58.885611" - inkscape:transform-center-y="180.05033" /> - <path - inkscape:transform-center-y="6.6577419" - inkscape:transform-center-x="187.21113" - sodipodi:nodetypes="ssssscscss" - inkscape:connector-curvature="0" - id="path4222" - d="m 21.276474,9.4810214 0.0075,0.4362837 c 8.34e-4,0.048144 -0.03725,0.088089 -0.0854,0.088408 l -9.895119,0.06563 c -0.04815,3.2e-4 -0.08758,-0.03725 -0.0884,-0.085395 l 0.103136,-0.1029966 1.817259,-0.022124 c 0.09886,-0.00121 0.03987,-0.2318665 0.06342,-0.4122111 l 7.989136,-0.052988 c 0.04815,-3.198e-4 0.08758,0.037252 0.0884,0.085395 z" - style="fill:#4d4d4d;fill-opacity:1;stroke:#4d4d4d;stroke-width:0.41295668;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" /> - </g> - <ellipse - style="fill:#4d4d4d;stroke:#4d4d4d;stroke-width:0.06478313;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - id="path4211-2" - cx="-11.171059" - cy="-9.9016705" - transform="scale(-1,-1)" - rx="0.59183103" - ry="0.51234722" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/88-2.svg b/htdocs/public/symbols/svgicons/88-2.svg deleted file mode 100755 index 848ecbc..0000000 --- a/htdocs/public/symbols/svgicons/88-2.svg +++ /dev/null @@ -1,22 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" version="1.1" width="24" height="24"> - <metadata id="metadata30"/> - <defs id="defs4"> - <linearGradient id="linearGradient1697-1-3-6-5-5"> - <stop stop-color="#69db0e" id="stop7"/> - <stop offset="1" stop-color="#397607" id="stop9"/> - </linearGradient> - <linearGradient gradientTransform="matrix(0.56414,0,0,0.23364,101.88495,314.1874)" gradientUnits="userSpaceOnUse" id="linearGradient3890" x1="213.83" x2="214.59" y1="183.48" y2="463.47"> - <stop stop-color="#fff" stop-opacity="0.691" id="stop12"/> - <stop offset="1" stop-color="#fff" stop-opacity="0" id="stop14"/> - </linearGradient> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient3886" x2="0" xlink:href="#linearGradient1697-1-3-6-5-5" y1="485.97" y2="352.9"/> - <linearGradient gradientUnits="userSpaceOnUse" id="linearGradient3888" x2="0" xlink:href="#linearGradient1697-1-3-6-5-5" y1="363.61" y2="481.97"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient3890" id="linearGradient3004" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.56414,0,0,0.23364,101.88495,314.1874)" x1="213.83" y1="183.48" x2="214.59" y2="463.47"/> - <linearGradient inkscape:collect="always" xlink:href="#linearGradient3890" id="linearGradient3007" gradientUnits="userSpaceOnUse" gradientTransform="matrix(0.09716758,0,0,0.0402422,-8.9028609,-6.5743117)" x1="213.83" y1="183.48" x2="214.59" y2="463.47"/> - </defs> - <path inkscape:connector-curvature="0" id="path20" d="m 23.516371,12.000002 c 0,6.360314 -5.156055,11.51637 -11.516374,11.51637 -6.3603182,0 -11.51636845,-5.156056 -11.51636845,-11.51637 0,-6.3603134 5.15605675,-11.51637357 11.51636845,-11.51637357 6.360313,0 11.516374,5.15605517 11.516374,11.51637357 z" fill="#000080" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0.967"/> - <g transform="matrix(0.04520444,0,0,0.04520444,3.0214508,-10.289896)" id="g24" stroke="#000000" stroke-width="7.62"> - <path d="m 41.6875,328.15625 0,231.09375 71.71875,0 0,-93.8125 6.3125,0 c 6.5152,10e-5 13.95135,0.18768 17.46875,5.375 l 67.5157,99.56963 -60.84375,87.625 69.5,0 36.4375,-53.90625 30.875,53.90625 74.875,0 -61.15625,-87.625 57.0625,-79.78125 -70.78125,0 -30.875,46.6875 c -26.84406,-34.64846 -28.95636,-45.20921 -55.3907,-80.03838 10.61345,-2.41686 18.96735,-5.47814 25.0625,-9.15625 9.56258,-5.77958 17.09783,-13.29356 22.5625,-22.59375 5.46467,-9.30019 8.18727,-20.36691 8.1875,-33.1875 -2.3e-4,-14.7118 -3.57316,-27.19146 -10.71875,-37.4375 -7.14559,-10.24604 -16.55446,-17.2792 -28.21875,-21.0625 -11.66429,-3.7833 -28.52595,-5.65602 -50.59375,-5.65625 l -119,0 z m 71.71875,46.65625 31.375,0 c 13.03047,1.8e-4 21.896,2.00693 26.625,6 4.729,3.99307 7.09359,9.69535 7.09375,17.15625 -1.6e-4,5.04427 -1.50522,9.51824 -4.5,13.40625 -2.9951,3.88831 -6.86505,6.30438 -11.59375,7.25 -9.35275,2.10185 -15.64872,3.15639 -18.90625,3.15625 l -30.09375,0 0,-46.96875 z" id="path26" inkscape:connector-curvature="0" fill="#ffffff"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/89-1.svg b/htdocs/public/symbols/svgicons/89-1.svg deleted file mode 100755 index 6ad5e26..0000000 --- a/htdocs/public/symbols/svgicons/89-1.svg +++ /dev/null @@ -1,10 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" viewBox="0 0 24.000001 24.000001" version="1.1"> - <metadata id="metadata7399"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <path inkscape:connector-curvature="0" d="m 22.936001,1052.3622 c -0.473761,0 -0.935763,-0.1113 -1.345204,-0.298 -0.417842,-0.1985 -0.892324,-0.3137 -1.386966,-0.3137 -0.491761,0 -0.965283,0.1149 -1.383845,0.3137 -0.414961,0.1867 -0.871923,0.298 -1.350965,0.298 -0.473762,0 -0.937203,-0.1113 -1.345205,-0.298 -0.420001,-0.1985 -0.894243,-0.3137 -1.389125,-0.3137 -0.489602,0 -0.964083,0.1149 -1.383365,0.3137 -0.413522,0.1867 -0.872163,0.298 -1.350965,0.298 -0.479762,0 -0.936484,-0.1113 -1.345685,-0.298 -0.420001,-0.1985 -0.894723,-0.3137 -1.387445,-0.3137 -0.494642,0 -0.969364,0.1149 -1.386965,0.3137 -0.410642,0.1867 -0.869523,0.298 -1.349285,0.298 -0.475922,0 -0.936004,-0.1113 -1.347125,-0.298 -0.420722,-0.1985 -0.893763,-0.3137 -1.387445,-0.3137 -0.492002,0 -0.965524,0.1149 -1.385766,0.3137 -0.411601,0.1867 -0.867603,0.298 -1.346645,0.298 v -2.0438 c 0.479042,0 0.935044,-0.1099 1.346645,-0.2981 0.420242,-0.1922 0.894004,-0.3062 1.385766,-0.3062 0.493682,0 0.966723,0.1147 1.387445,0.3062 0.411121,0.1882 0.871203,0.2981 1.347125,0.2981 0.479042,0 0.938643,-0.1099 1.349285,-0.2981 0.417841,-0.1922 0.892323,-0.3062 1.386965,-0.3062 0.492962,0 0.967444,0.1147 1.387445,0.3062 0.409201,0.1882 0.865923,0.2981 1.345685,0.2981 0.478802,0 0.937203,-0.1099 1.350725,-0.2981 0.419281,-0.1922 0.894003,-0.3062 1.383365,-0.3062 0.494882,0 0.969124,0.1147 1.389125,0.3062 0.408002,0.1882 0.871683,0.2981 1.345205,0.2981 0.479042,0 0.936004,-0.1099 1.350965,-0.2981 0.418322,-0.1922 0.892084,-0.3062 1.383845,-0.3062 0.494642,0 0.969124,0.1147 1.386965,0.3062 0.409442,0.1882 0.871444,0.2981 1.345205,0.2981 v 2.0438 h 2.4e-4 z" id="path3" fill="#333333"/> - <path inkscape:connector-curvature="0" d="m 15.339493,1032.0001 c 3.664814,1.7227 8.01651,6.3156 7.445308,11.8267 h -7.445308 v -11.8267 l 0,0 z" id="path5" fill="#808080"/> - <path inkscape:connector-curvature="0" d="m 21.211115,1044.939 -3.398653,0 -13.168608,0 c -0.979148,0 -1.851739,2.6193 -2.55001,3.4896 1.279342,-0.9148 2.921291,-0.3458 3.090252,-0.2635 0.411121,0.181 0.871203,0.2926 1.347125,0.2926 0.479762,0 0.939363,-0.1116 1.349285,-0.2926 0.417841,-0.1975 0.892323,-0.3137 1.386965,-0.3137 0.492962,0 0.967444,0.1159 1.387445,0.3137 0.409681,0.181 0.866643,0.2926 1.345685,0.2926 0.478802,0 0.937203,-0.1116 1.350725,-0.2926 0.420002,-0.1975 0.894003,-0.3137 1.383365,-0.3137 0.494882,0 0.969604,0.1159 1.389125,0.3137 0.408002,0.181 0.871683,0.2926 1.345205,0.2926 0.0924,0 0.180241,-0.023 0.266401,-0.033 0.01056,0 0.01056,0.01 0.02136,0.01 0.06048,0 0.104641,-0.027 0.164401,-0.027 0.10896,-0.015 0.217441,-0.028 0.327361,-0.054 0.979684,-0.2049 1.612086,-0.976 1.612086,-0.976 l 1.905127,-2.438 -0.554162,0 0,0 -4.8e-4,0 z" id="path7" sodipodi:nodetypes="cccccscscscscscscccccccc" fill="#165016"/> - <path inkscape:connector-curvature="0" d="m 14.199249,1028.3785 c -0.03048,-0.022 -0.07056,-0.025 -0.10224,0.011 -2.4e-4,0 -7.2e-4,0 -0.0012,0 -4.8e-4,0 -9.6e-4,0 -0.0014,0 -4.151295,5.1241 -8.302831,10.2478 -12.454126,15.3721 -0.04704,0.058 -0.02112,0.1529 0.06336,0.1529 4.151295,0 8.302831,0 12.454366,0 0.04896,0 0.08976,-0.041 0.08976,-0.09 0,-5.1241 0,-10.2481 0,-15.3719 2.4e-4,-0.039 -0.02112,-0.064 -0.04848,-0.077 z" id="path9" fill="#808080"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/89-2.svg b/htdocs/public/symbols/svgicons/89-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/89-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/90-1.svg b/htdocs/public/symbols/svgicons/90-1.svg deleted file mode 100755 index 907b537..0000000 --- a/htdocs/public/symbols/svgicons/90-1.svg +++ /dev/null @@ -1,102 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" height="24" width="24" version="1.1"> - <metadata id="metadata200"/> - <g id="g4353" transform="matrix(0.11470234,0,0,0.11470234,1.3941528e-4,2.2500365)"> - <g id="g4" fill="#666666"> - <path id="path6" d="m 108.812,10.5291 0,146.377 c 31.3021,-18.1855 64.5445,-16.3965 99.2748,0.44656 l 0,-145.183 c -34.432,-16.3981 -67.376,-15.5036 -99.275,-1.6409" inkscape:connector-curvature="0"/> - <path id="path8" d="m 87.3481,20.8139 0,18.4837 18.4837,-9.6884 0,-17.7389 -18.4837,8.94367" inkscape:connector-curvature="0"/> - <path id="path10" d="m 87.3481,41.9797 0,18.4837 18.4837,-9.6884 0,-17.8873 -18.4837,9.09206" inkscape:connector-curvature="0"/> - <path id="path12" d="m 87.3481,62.8487 0,18.4837 18.4837,-9.54 0,-17.8873 -18.4837,8.94367" inkscape:connector-curvature="0"/> - <path id="path14" d="m 87.3481,84.0159 0,18.4837 18.4837,-9.68839 0,-17.7403 -18.4837,8.94506" inkscape:connector-curvature="0"/> - <path id="path16" d="m 87.3481,104.884 0,18.3353 18.4837,-9.5414 0,-17.8859 -18.4837,9.09205" inkscape:connector-curvature="0"/> - <path id="path18" d="m 87.3481,126.347 0,18.4823 18.4837,-9.53723 0,-17.8873 -18.4837,8.94228" inkscape:connector-curvature="0"/> - <path id="path20" d="m 87.3481,147.515 0,18.4837 18.4837,-9.68839 0,-17.7403 -18.4837,8.94505" inkscape:connector-curvature="0"/> - <path id="path22" d="m 66.4819,27.2238 17.1398,-8.64689 0,16.696 -17.1398,8.6455 0,-16.6947" inkscape:connector-curvature="0"/> - <path id="path24" d="m 66.4819,48.5394 17.1398,-8.6455 0,16.6947 -17.1398,8.6455 0,-16.6947" inkscape:connector-curvature="0"/> - <path id="path26" d="m 66.4819,68.8107 17.1398,-8.6455 0,16.696 -17.1398,8.64411 0,-16.6947" inkscape:connector-curvature="0"/> - <path id="path28" d="m 66.4819,89.9779 17.1398,-8.6455 0,16.6947 -17.1398,8.79527 0,-16.8444" inkscape:connector-curvature="0"/> - <path id="path30" d="m 66.4819,111.293 17.1398,-8.6455 0,16.6947 -17.1398,8.79527 0,-16.8444" inkscape:connector-curvature="0"/> - <path id="path32" d="m 66.4819,131.716 17.1398,-8.64827 0,16.696 -17.1398,8.79389 0,-16.8417" inkscape:connector-curvature="0"/> - <path id="path34" d="m 66.4819,152.88 17.1398,-8.64411 0,16.6947 -17.1398,8.64134 0,-16.6919" inkscape:connector-curvature="0"/> - <path id="path36" d="m 47.9982,26.4791 14.6061,-6.85788 0,14.6075 -14.6061,7.00765 0,-14.7573" inkscape:connector-curvature="0"/> - <path id="path38" d="m 47.9982,47.9417 14.6061,-7.00349 0,14.7559 -14.6061,7.00626 0,-14.7586" inkscape:connector-curvature="0"/> - <path id="path40" d="m 47.9982,68.2143 14.6061,-6.85649 0,14.6089 -14.6061,7.00488 0,-14.7573" inkscape:connector-curvature="0"/> - <path id="path42" d="m 47.9982,89.3815 14.6061,-6.85649 0,14.6075 -14.6061,7.00627 0,-14.7573" inkscape:connector-curvature="0"/> - <path id="path44" d="m 47.9982,110.847 14.6061,-7.00765 0,14.7586 -14.6061,7.00488 0,-14.7559" inkscape:connector-curvature="0"/> - <path id="path46" d="m 47.9982,131.12 14.6061,-7.00766 0,14.7586 -14.6061,6.8551 0,-14.6061" inkscape:connector-curvature="0"/> - <path id="path48" d="m 47.9982,152.136 14.6061,-6.85649 0,14.6075 -14.6061,7.00627 0,-14.7573" inkscape:connector-curvature="0"/> - <path id="path50" d="m 30.8542,37.8067 11.9254,-5.36565 0,-10.8811 -11.9254,5.66381 0,10.5829" inkscape:connector-curvature="0"/> - <path id="path52" d="m 30.8542,59.1223 11.9254,-5.36565 0,-10.8811 -11.9254,5.66381 0,10.5829" inkscape:connector-curvature="0"/> - <path id="path54" d="m 30.8542,79.395 11.9254,-5.36565 0,-11.0322 -11.9254,5.81359 0,10.5843" inkscape:connector-curvature="0"/> - <path id="path56" d="m 30.8542,100.561 11.9254,-5.36704 0,-10.8825 -11.9254,5.66659 0,10.5829" inkscape:connector-curvature="0"/> - <path id="path58" d="m 30.8542,122.026 11.9254,-5.51542 0,-10.8811 -11.9254,5.66381 0,10.7327" inkscape:connector-curvature="0"/> - <path id="path60" d="m 30.8542,142.447 11.9254,-5.51543 0,-10.8811 -11.9254,5.6652 0,10.7313" inkscape:connector-curvature="0"/> - <path id="path62" d="m 30.8542,163.463 11.9254,-5.36565 0,-10.8811 -11.9254,5.66382 0,10.5829" inkscape:connector-curvature="0"/> - <path id="path64" d="m 14.7559,20.2175 8.64411,-5.21587 0,9.09206 -8.64411,4.9177 0,-8.79389" inkscape:connector-curvature="0"/> - <path id="path66" d="m 14.7559,41.5331 8.64411,-5.21587 0,9.24045 -8.64411,4.7707 0,-8.79528" inkscape:connector-curvature="0"/> - <path id="path68" d="m 14.7559,61.8058 8.64411,-5.21726 0,9.24184 -8.64411,4.9177 0,-8.94228" inkscape:connector-curvature="0"/> - <path id="path70" d="m 14.7559,82.9716 8.64411,-5.21726 0,9.24184 -8.64411,4.91909 0,-8.94367" inkscape:connector-curvature="0"/> - <path id="path72" d="m 14.7559,104.434 8.64411,-5.21448 0,9.09206 -8.64411,4.91909 0,-8.79667" inkscape:connector-curvature="0"/> - <path id="path74" d="m 14.7559,124.708 8.64411,-5.21587 0,9.24045 -8.64411,4.91909 0,-8.94367" inkscape:connector-curvature="0"/> - <path id="path76" d="m 14.7559,145.875 8.64411,-5.21726 0,9.24045 -8.64411,4.77209 0,-8.79528" inkscape:connector-curvature="0"/> - <path id="path78" d="M 3.12992e-6,15.2985 6.70671,11.8702 l 0,6.55971 L 0,21.41021 0,15.29845" inkscape:connector-curvature="0"/> - <path id="path80" d="M 3.12992e-6,36.4656 6.70671,33.1858 l 0,6.55832 L 0,42.7258 0,36.46565" inkscape:connector-curvature="0"/> - <path id="path82" d="M 3.12992e-6,56.7369 6.70671,53.6083 l 0,6.55693 L 0,62.99714 0,56.73699" inkscape:connector-curvature="0"/> - <path id="path84" d="M 3.12992e-6,77.9041 6.70671,74.6243 l 0,6.55693 L 0,84.1643 0,77.90415" inkscape:connector-curvature="0"/> - <path id="path86" d="M 3.12992e-6,99.3695 6.70671,96.0896 l 0,6.40992 L 0,105.47982 0,99.36945" inkscape:connector-curvature="0"/> - <path id="path88" d="M 3.12992e-6,119.791 6.70671,116.511 l 0,6.40993 L 0,125.90261 0,119.79085" inkscape:connector-curvature="0"/> - <path id="path90" d="M 3.12992e-6,140.956 6.70671,137.528 l 0,6.55832 L 0,147.068 0,140.95624" inkscape:connector-curvature="0"/> - </g> - <path d="m 1.14772,141.389 6.70671,-3.42824 0,6.55832 -6.70671,2.98168 0,-6.11176" id="path94" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 1.14772,15.7315 6.70671,-3.42824 0,6.55971 -6.70671,2.9803 0,-6.11176" id="path96" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 1.14772,78.3372 6.70671,-3.27985 0,6.55693 -6.70671,2.98307 0,-6.26015" id="path98" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 109.96,10.9622 0,146.377 c 31.3021,-18.1855 64.5445,-16.3965 99.2748,0.44656 l 0,-145.183 c -34.433,-16.3981 -67.377,-15.5036 -99.275,-1.6408" id="path100" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 15.9036,146.308 8.64411,-5.21725 0,9.24044 -8.64411,4.77209 0,-8.79528" id="path102" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 15.9036,20.6506 8.64411,-5.21587 0,9.09206 -8.64411,4.9177 0,-8.79389" id="path104" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 15.9036,83.4047 8.64411,-5.21726 0,9.24184 -8.64411,4.91908 0,-8.94366" id="path106" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 32.0019,100.994 11.9254,-5.36704 0,-10.8825 -11.9254,5.66658 0,10.5829" id="path112" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 32.0019,163.896 11.9254,-5.36565 0,-10.8811 -11.9254,5.66382 0,10.5829" id="path114" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 32.0019,38.2398 11.9254,-5.36565 0,-10.8811 -11.9254,5.66381 0,10.5829" id="path116" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 49.1459,152.569 14.6061,-6.85649 0,14.6075 -14.6061,7.00627 0,-14.7573" id="path118" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 49.1459,26.9121 14.6061,-6.85788 0,14.6075 -14.6061,7.00765 0,-14.7573" id="path120" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 49.1459,89.8146 14.6061,-6.85648 0,14.6075 -14.6061,7.00627 0,-14.7573" id="path122" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 67.6296,153.313 17.1398,-8.64411 0,16.6947 -17.1398,8.64134 0,-16.6919" id="path124" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 67.6296,27.6569 17.1398,-8.64689 0,16.696 -17.1398,8.6455 0,-16.6947" id="path126" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 67.6296,90.4109 17.1398,-8.6455 0,16.6947 -17.1398,8.79527 0,-16.8444" id="path128" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 88.4958,105.317 0,18.3353 18.4837,-9.54139 0,-17.886 -18.4837,9.09206" id="path130" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 88.4958,126.781 0,18.4823 18.4837,-9.53723 0,-17.8873 -18.4837,8.94229" id="path132" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 88.4958,147.948 0,18.4837 18.4837,-9.6884 0,-17.7403 -18.4837,8.94505" id="path134" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 88.4958,21.2469 0,18.4837 18.4837,-9.6884 0,-17.7389 -18.4837,8.94367" id="path136" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 88.4958,42.4127 0,18.4837 18.4837,-9.6884 0,-17.8873 -18.4837,9.09206" id="path138" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 88.4958,63.2818 0,18.4837 18.4837,-9.54 0,-17.8873 -18.4837,8.94367" id="path140" inkscape:connector-curvature="0" fill="#231f20"/> - <path d="m 88.4958,84.4489 0,18.4837 18.4837,-9.68839 0,-17.7403 -18.4837,8.94506" id="path142" inkscape:connector-curvature="0" fill="#231f20"/> - <g id="g144" fill="#0000fe"> - <path id="path146" d="m 1.14772,120.224 6.70671,-3.27985 0,6.40993 -6.70671,2.98168 0,-6.11176" inkscape:connector-curvature="0"/> - <path id="path148" d="m 1.14772,99.8025 6.70671,-3.27985 0,6.40992 -6.70671,2.9803 0,-6.11037" inkscape:connector-curvature="0"/> - <path id="path150" d="m 109.811,91.9018 c 12.2221,-5.96337 23.253,-8.6455 33.2409,-9.39022 l 0,44.1192 c -11.7756,2.08856 -23.1046,5.22003 -33.2409,9.98933 l 0,-44.7183" inkscape:connector-curvature="0"/> - <path id="path152" d="m 15.9036,104.867 8.64411,-5.21448 0,9.09206 -8.64411,4.91909 0,-8.79667" inkscape:connector-curvature="0"/> - <path id="path154" d="m 15.9036,125.141 8.64411,-5.21587 0,9.24045 -8.64411,4.91909 0,-8.94367" inkscape:connector-curvature="0"/> - <path id="path156" d="m 32.0019,122.459 11.9254,-5.51542 0,-10.8811 -11.9254,5.66381 0,10.7327" inkscape:connector-curvature="0"/> - <path id="path158" d="m 32.0019,142.88 11.9254,-5.51543 0,-10.8811 -11.9254,5.6652 0,10.7313" inkscape:connector-curvature="0"/> - <path id="path160" d="m 49.1459,111.28 14.6061,-7.00765 0,14.7586 -14.6061,7.00488 0,-14.7559" inkscape:connector-curvature="0"/> - <path id="path162" d="m 49.1459,131.553 14.6061,-7.00766 0,14.7586 -14.6061,6.8551 0,-14.6061" inkscape:connector-curvature="0"/> - <path id="path164" d="m 67.6296,111.726 17.1398,-8.64549 0,16.6947 -17.1398,8.79527 0,-16.8444" inkscape:connector-curvature="0"/> - <path id="path166" d="m 67.6296,132.149 17.1398,-8.64827 0,16.696 -17.1398,8.79389 0,-16.8417" inkscape:connector-curvature="0"/> - </g> - <path id="path168" d="m 156.019,19.7575 0,47.2507 13.1194,0 c 5.81221,0 15.3522,2.98168 19.675,4.62092 l 0,-46.6557 c -10.882,-4.6196 -21.909,-6.2602 -32.794,-5.2159" inkscape:connector-curvature="0" fill="#007f00"/> - <g id="g170" fill="#fe0000"> - <path id="path172" d="m 1.14772,36.8987 6.70671,-3.27985 0,6.55832 -6.70671,2.98168 0,-6.26015" inkscape:connector-curvature="0"/> - <path id="path174" d="m 1.14772,57.17 6.70671,-3.12869 0,6.55693 -6.70671,2.83191 0,-6.26015" inkscape:connector-curvature="0"/> - <path id="path176" d="m 109.811,31.3833 c 13.1166,-5.81359 23.8493,-8.94367 33.2409,-9.54 l 0,46.2092 c -11.1792,0.893119 -22.2101,4.32275 -33.2409,9.39023 l 0,-46.0594" inkscape:connector-curvature="0"/> - <path id="path178" d="m 15.9036,41.9662 8.64411,-5.21587 0,9.24045 -8.64411,4.7707 0,-8.79528" inkscape:connector-curvature="0"/> - <path id="path180" d="m 15.9036,62.2389 8.64411,-5.21726 0,9.24184 -8.64411,4.9177 0,-8.94228" inkscape:connector-curvature="0"/> - <path id="path182" d="m 32.0019,59.5553 11.9254,-5.36565 0,-10.8811 -11.9254,5.66381 0,10.5829" inkscape:connector-curvature="0"/> - <path id="path184" d="m 32.0019,79.828 11.9254,-5.36565 0,-11.0322 -11.9254,5.81359 0,10.5843" inkscape:connector-curvature="0"/> - <path id="path186" d="m 49.1459,48.3747 14.6061,-7.00349 0,14.7559 -14.6061,7.00627 0,-14.7586" inkscape:connector-curvature="0"/> - <path id="path188" d="m 49.1459,68.6474 14.6061,-6.85649 0,14.6089 -14.6061,7.00488 0,-14.7573" inkscape:connector-curvature="0"/> - <path id="path190" d="m 67.6296,48.9724 17.1398,-8.6455 0,16.6947 -17.1398,8.6455 0,-16.6947" inkscape:connector-curvature="0"/> - <path id="path192" d="m 67.6296,69.2437 17.1398,-8.6455 0,16.696 -17.1398,8.64411 0,-16.6947" inkscape:connector-curvature="0"/> - </g> - <path id="path194" d="m 156.019,80.5728 0,45.4631 c 12.6715,-0.59634 22.3599,1.34245 32.7944,4.77069 l 0,-45.911 c -10.882,-4.3232 -21.909,-5.6643 -32.794,-4.3232" inkscape:connector-curvature="0" fill="#fefe00"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/90-2.svg b/htdocs/public/symbols/svgicons/90-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/90-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/91-1.svg b/htdocs/public/symbols/svgicons/91-1.svg deleted file mode 100755 index 534203f..0000000 --- a/htdocs/public/symbols/svgicons/91-1.svg +++ /dev/null @@ -1,15 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3010"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g2997" transform="matrix(1.2,0,0,1.2,-2.4,1025.9622)"> - <path id="path4" d="M 6,12 C 6,12 6.8,10.8 7.4,9.9 7.8,9.3 8.3,8.9 9,8.7 l 2.1,-0.6 c 1.2,-0.3 2.4,0.3 2.8,1.4 l 0.6,1.3 c 0.3,0.8 0.9,1.3 1.7,1.6 L 18,13" stroke-miterlimit="10" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-width="2"/> - <circle id="circle6" r="2" cy="4" cx="13"/> - <path id="path8" d="m 10.6,8.1 -1,4.6 c -0.2,0.7 0.1,1.4 0.5,1.9 l 3.4,3.7 -1,-4.7 0.9,-4.1 -0.7,-1.4 h -2.1 z" inkscape:connector-curvature="0"/> - <g id="g10"> - <path id="path12" d="m 14.6,22 h 2.1 c -0.4,-1 -1.4,-3.5 -1.8,-4.7 l -2.9,-4.2 -1.6,1.2 2.7,3.6 1.5,4.1 z" inkscape:connector-curvature="0"/> - <polygon id="polygon14" points="10.7,17 9.2,15.3 8.3,18.2 5.3,22 7.6,22 9.9,19.4 "/> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/91-2.svg b/htdocs/public/symbols/svgicons/91-2.svg deleted file mode 100755 index 3b64f6e..0000000 --- a/htdocs/public/symbols/svgicons/91-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <path inkscape:connector-curvature="0" d="m 21.86501,1044.7757 c -0.04762,0 -0.09474,0 -0.141619,0.012 -0.596033,0.058 -1.129891,0.4887 -1.447665,1.1754 -0.11377,0.2458 -0.355613,0.3225 -0.540213,0.171 -0.120461,-0.098 -0.186274,-0.27 -0.186358,-0.4454 0,-0.093 0.01835,-0.1884 0.05795,-0.2737 0.469134,-1.0142 1.270088,-1.6342 2.157386,-1.6779 -0.07522,-3.3405 -2.09149,-6.0311 -4.598384,-6.1414 0.153326,0.6066 0.26346,1.2408 0.324463,1.8972 0.02664,0.2865 -0.126231,0.5475 -0.341438,0.5831 -0.0039,7e-4 -0.0078,4e-4 -0.01171,0 -0.01238,0 -0.0248,0 -0.03696,0 -0.195347,0 -0.364602,-0.1938 -0.38923,-0.4585 -0.06372,-0.6862 -0.187403,-1.3452 -0.363223,-1.9691 -0.402484,-1.4284 -1.079215,-2.67 -1.940213,-3.6202 -0.117032,-0.129 -0.237493,-0.2529 -0.36109,-0.3709 -1.072609,-1.0246 -2.384467,-1.624 -3.788982,-1.624 -0.120002,0 -0.239418,0 -0.358122,0.013 -0.6572047,0.047 -1.2936286,0.2264 -1.8921288,0.52 -1.6018266,0.786 -2.9317062,2.3937 -3.6608279,4.5095 0.096461,-0.012 0.1935906,-0.012 0.2913894,-0.012 1.0329711,0 2.0294401,0.4053 2.8817406,1.1722 0.1121822,0.1008 0.1726845,0.2655 0.17281,0.4331 8.35e-5,0.1007 -0.021742,0.203 -0.067318,0.2928 -0.1214227,0.2393 -0.3654807,0.3021 -0.5451478,0.1403 -0.7219718,-0.6496 -1.5664116,-0.9929 -2.4420433,-0.9929 -0.2468594,0 -0.4889104,0.027 -0.7247314,0.082 -0.068196,0.048 -0.1468027,0.07 -0.2264132,0.058 -0.027805,0.014 -0.055527,0.017 -0.083122,0.025 -1.9109443,0.6203 -3.33373081,2.9184 -3.33373081,5.651 0,5e-4 -4.182e-5,0 -4.182e-5,0 7.1082e-4,3.4998 2.13183823,6.3369 4.76074043,6.3369 l 11.9753576,0 4.466298,0 c 1.246674,0 2.257526,-1.3459 2.257526,-3.006 0,-1.3693 -0.836662,-2.4832 -1.86495,-2.4832 z" id="path3614" fill="#b3b3b3" stroke="#808080" stroke-width="0.5"/> - <text x="2.684" y="1048.01" id="text3355" sodipodi:linespacing="125%" font-family="sans-serif" fill="#000080" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="9.212"><tspan sodipodi:role="line" id="tspan3357" x="2.684" y="1048.01">WC</tspan> - </text> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/91-3.svg b/htdocs/public/symbols/svgicons/91-3.svg deleted file mode 100755 index 4174a33..0000000 --- a/htdocs/public/symbols/svgicons/91-3.svg +++ /dev/null @@ -1,85 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - version="1.1" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="91-3.svg"> - <defs - id="defs15" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview13" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="12" - inkscape:cy="12" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" /> - <metadata - id="metadata3010"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - inkscape:label="Layer 1" - inkscape:groupmode="layer" - id="layer1" - transform="translate(0,-1028.3622)"> - <g - id="g2997" - transform="matrix(1.2,0,0,1.2,-6.2015396,1025.9622)"> - <path - id="path4" - d="M 6,12 C 6,12 6.8,10.8 7.4,9.9 7.8,9.3 8.3,8.9 9,8.7 l 2.1,-0.6 c 1.2,-0.3 2.4,0.3 2.8,1.4 l 0.6,1.3 c 0.3,0.8 0.9,1.3 1.7,1.6 L 18,13" - stroke-miterlimit="10" - inkscape:connector-curvature="0" - style="fill:none;stroke:#000000;stroke-width:2;stroke-miterlimit:10" /> - <circle - id="circle6" - r="2" - cy="4" - cx="13" /> - <path - id="path8" - d="m 10.6,8.1 -1,4.6 c -0.2,0.7 0.1,1.4 0.5,1.9 l 3.4,3.7 -1,-4.7 0.9,-4.1 -0.7,-1.4 -2.1,0 z" - inkscape:connector-curvature="0" /> - <g - id="g10"> - <path - id="path12" - d="m 14.6,22 2.1,0 c -0.4,-1 -1.4,-3.5 -1.8,-4.7 l -2.9,-4.2 -1.6,1.2 2.7,3.6 1.5,4.1 z" - inkscape:connector-curvature="0" /> - <polygon - id="polygon14" - points="9.2,15.3 8.3,18.2 5.3,22 7.6,22 9.9,19.4 10.7,17 " /> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/92-1.svg b/htdocs/public/symbols/svgicons/92-1.svg deleted file mode 100755 index 632c136..0000000 --- a/htdocs/public/symbols/svgicons/92-1.svg +++ /dev/null @@ -1,8 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" viewBox="0 0 24 24" width="24" height="24"> - <path inkscape:connector-curvature="0" d="M 11.977044,2.0093513 C 11.566241,1.9828154 11.146799,2.1767394 10.883729,2.5250364 L 0.05727741,20.713545 c -0.07304604,0.274732 -0.07581064,0.44968 -0.01066964,0.70843 0.0623332,0.247518 0.3058344,0.502812 0.53862277,0.564584 l 22.54621646,0.0065 c 0.140822,-0.02549 0.335208,-0.09158 0.430673,-0.146869 0.347304,-0.201298 0.582295,-0.737372 0.336073,-1.144719 L 12.938262,2.5587301 C 12.778002,2.2935872 12.455321,2.1025703 12.15251,2.0348375 12.095058,2.0218784 12.035878,2.0129798 11.97713,2.0091785 Z M 11.926934,5.4192321 20.327445,19.51051 3.6845243,19.56451 11.926934,5.4192361 Z" id="foo"/> - <path inkscape:connector-curvature="0" d="M 11.901229,3.1629299 22.397442,20.769604 1.6025581,20.83707 11.901229,3.1629299 Z" id="white_bg" fill="#ffff00"/> - <metadata id="metadata10"/> - <text x="5.821" y="19.554" id="text3335" sodipodi:linespacing="125%" font-family="sans-serif" word-spacing="0" line-height="125%" font-weight="bold" letter-spacing="0" font-size="8.125"><tspan sodipodi:role="line" id="tspan3337" x="5.821" y="19.554">DF</tspan> - </text> -</svg> diff --git a/htdocs/public/symbols/svgicons/92-2.svg b/htdocs/public/symbols/svgicons/92-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/92-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/93-1.svg b/htdocs/public/symbols/svgicons/93-1.svg deleted file mode 100755 index 2c842e0..0000000 --- a/htdocs/public/symbols/svgicons/93-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="-0.258 -0.548 24.000001 24"> - <metadata id="metadata15"/> - <path inkscape:connector-curvature="0" id="path7" d="m 2.6059382,-0.06530034 c -1.3113268,0 -2.37826117,1.07281774 -2.37826117,2.38552874 l 0,18.2635426 c 0,1.312711 1.06693437,2.379507 2.37826117,2.379507 l 18.2674628,0 c 1.312881,0 2.379815,-1.066796 2.379815,-2.379507 l 0,-18.2635426 c 0,-1.312711 -1.066934,-2.38552874 -2.379815,-2.38552874 l -18.2674628,0 z" fill="#231f20"/> - <path inkscape:connector-curvature="0" id="path5" d="m 20.873401,-0.54800036 -18.2674628,0 c -1.5829172,0 -2.86393777,1.28376838 -2.86393777,2.86822876 l 0,18.2635426 c 0,1.582712 1.28102057,2.868229 2.86393777,2.868229 l 18.2674628,0 c 1.582917,0 2.8686,-1.285322 2.8686,-2.868229 l 0,-18.2635426 c -1.94e-4,-1.58426614 -1.285683,-2.86822876 -2.8686,-2.86822876 z" fill="#000080"/> - <path inkscape:connector-curvature="0" id="path9" d="m 19.990052,16.386321 -4.96614,-4.969965 4.965946,-4.9699651 0,9.9399301 z m -15.5097907,0.943838 4.9750769,-4.965303 0.212532,0.203375 c 1.1747548,1.12002 3.0415008,1.12002 4.1661338,0 l 0.214086,-0.212504 4.998001,4.974432 -14.5658297,0 z M 3.587782,6.4463909 8.5463458,11.416356 3.5788456,16.386321 3.587782,6.4463909 z M 19.03696,5.4978902 12.927926,11.601472 c -0.620695,0.625276 -1.731729,0.611484 -2.370685,-0.02428 l -6.0678489,-6.0793008 14.5475679,0 z M 2.2385724,4.1412798 c 0,0.5691392 0,13.9522642 0,14.5258712 0.5783437,0 18.5679996,0 19.1463426,0 0,-0.573607 0,-13.9569262 0,-14.5258712 -0.578343,0 -18.5679989,0 -19.1463426,0 z" fill="#ffffff"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/93-2.svg b/htdocs/public/symbols/svgicons/93-2.svg deleted file mode 100755 index 6afb3dd..0000000 --- a/htdocs/public/symbols/svgicons/93-2.svg +++ /dev/null @@ -1,9 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4305"/> - <g inkscape:groupmode="layer" id="layer2" inkscape:label="Layer 1"> - <path d="M 3.2869998,12 C 20.713,12 20.713,12 20.713,12" id="path4312" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.722"/> - <path d="M 12,20.473983 C 12,3.5260173 12,3.5260173 12,3.5260173" id="path4312-3" inkscape:connector-curvature="0" fill-rule="evenodd" stroke="#000000" stroke-linecap="round" stroke-width="2.687"/> - <path id="path4314" sodipodi:type="arc" sodipodi:cx="12" sodipodi:cy="12.026115" sodipodi:rx="3.1077249" sodipodi:ry="3.1077249" sodipodi:start="3.1415927" sodipodi:end="9.423818" sodipodi:open="true" d="m 8.8922751,12.026115 a 3.1077249,3.1077249 0 1 1 1.4e-6,0.003" transform="translate(0,-0.02611542)" fill="#cb0000" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-1.svg b/htdocs/public/symbols/svgicons/94-1.svg deleted file mode 100755 index dc9e489..0000000 --- a/htdocs/public/symbols/svgicons/94-1.svg +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="94-1.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview7" - showgrid="false" - inkscape:zoom="27.812867" - inkscape:cx="16.996021" - inkscape:cy="11.227399" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - inkscape:connector-curvature="0" - style="fill:#333333;fill-rule:evenodd" - id="path5724" - d="M 23.852939,15.898417 13.434529,8.1557394 c 0.07711,-1.1961361 0.127255,-5.1254658 0.0821,-5.6212684 -0.378513,-4.1562174 -3.000001,-2.36599271 -3.024321,-0.5110796 -0.0067,0.5073326 -0.0975,4.3898428 -0.106119,6.141825 l -10.282381,7.9227256 -0.02731,2.480306 10.614792,-4.849387 0.383602,6.45448 -3.07804,2.203462 -0.01958,1.623135 4.060667,-1.11389 7.68e-4,0.0134 4.103063,1.048869 -0.04892,-1.621714 -3.117538,-2.151672 0.250846,-6.460284 10.697344,4.659543 -0.0706,-2.475774 z" - sodipodi:nodetypes="ccsccccccccccccccccc" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-2.svg b/htdocs/public/symbols/svgicons/94-2.svg deleted file mode 100755 index 13c80b2..0000000 --- a/htdocs/public/symbols/svgicons/94-2.svg +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="94-2.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview7" - showgrid="false" - inkscape:zoom="19.666667" - inkscape:cx="15.507465" - inkscape:cy="16.399191" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - inkscape:connector-curvature="0" - style="fill:#333333" - id="path13" - d="m 12.000001,2.3295018 c -0.10843,8e-7 -0.172538,0.074557 -0.389749,0.6661681 -0.02564,0.06983 -0.0774,0.3676365 -0.0774,0.3676365 2e-6,0 -0.173556,0.0083 -0.21837,0.0083 -0.08664,3.2e-6 -0.203812,0.077251 -0.262599,0.1713784 -0.182379,0.2920431 -0.467145,1.899345 -0.467146,2.6397943 0,0.4595005 -0.0385,0.7348981 -0.110569,0.7905564 -0.06081,0.04697 -0.379711,0.1917754 -0.7076317,0.3206462 C 9.187937,7.52137 9.0428824,7.5348662 4.85735,7.7583642 1.542796,7.9353556 0.49942198,8.0186875 0.34343998,8.1177078 c -0.432501,0.2745545 -0.455019,0.9088912 -0.07463,2.1090722 l 0.196257,0.619177 c 0,0 10.20259802,1.688917 10.20259802,1.688917 l 0.856898,6.27193 -0.226663,0.06358 c -0.12459,0.03449 -0.961589,0.126537 -1.8602956,0.20455 -0.8987071,0.07801 -1.6848407,0.183399 -1.7469648,0.234956 -0.2497381,0.207267 -0.053487,1.840946 0.2211364,1.840946 0.4334372,0 2.0359995,0.215503 2.120127,0.28471 0.06004,0.04942 1.437291,0.234956 1.968098,0.234955 0.530808,10e-7 1.908036,-0.185542 1.968099,-0.234955 0.08416,-0.06919 1.686691,-0.284709 2.120129,-0.28471 0.274619,0 0.470875,-1.633682 0.221133,-1.840947 -0.06216,-0.05153 -0.848254,-0.156939 -1.746962,-0.234955 -0.898707,-0.07801 -1.735705,-0.170054 -1.860296,-0.20455 l -0.226662,-0.06358 0.856896,-6.271931 c 0,0 10.202601,-1.688918 10.202602,-1.688916 L 23.731192,10.22677 C 24.111579,9.0265907 24.08906,8.3922573 23.656561,8.1177011 23.500576,8.0186805 22.457205,7.9353476 19.142651,7.7583572 14.957117,7.5348578 14.812064,7.5213617 14.233462,7.293975 13.905541,7.1651045 13.586645,7.0202984 13.52583,6.9733301 c -0.07206,-0.05566 -0.110569,-0.3310565 -0.110569,-0.790557 0,-0.74045 -0.284764,-2.3477543 -0.467148,-2.6397947 -0.05878,-0.094127 -0.175951,-0.1713818 -0.262596,-0.1713794 -0.04482,-3.2e-6 -0.215607,-0.0083 -0.215607,-0.0083 0,0 -0.05176,-0.2978087 -0.0774,-0.3676357 C 12.175301,2.4040549 12.10843,2.3294986 12,2.3294986 Z" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-3.svg b/htdocs/public/symbols/svgicons/94-3.svg deleted file mode 100755 index ab03ba1..0000000 --- a/htdocs/public/symbols/svgicons/94-3.svg +++ /dev/null @@ -1,57 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="94-2.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview7" - showgrid="false" - inkscape:zoom="27.812867" - inkscape:cx="16.996021" - inkscape:cy="11.227399" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - inkscape:connector-curvature="0" - style="fill:#333333;fill-rule:evenodd" - id="path5724" - d="M 23.852939,17.3366 13.434529,9.5939227 c 0.07711,-1.1961361 0.127255,-6.5636491 0.0821,-7.0594517 -0.378513,-4.1562174 -3.000001,-2.36599271 -3.024321,-0.5110796 -0.0067,0.5073326 -0.0975,5.8280261 -0.106119,7.5800083 l -10.282381,7.9227253 -0.02731,2.480306 10.614792,-4.849387 0.383602,5.016297 -3.07804,2.203462 -0.01958,1.623135 4.060667,-1.11389 7.68e-4,0.0134 4.103063,1.048869 -0.04892,-1.621714 -3.117538,-2.151672 0.250846,-5.022101 10.697344,4.659543 -0.0706,-2.475774 z" - sodipodi:nodetypes="ccsccccccccccccccccc" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-68.svg b/htdocs/public/symbols/svgicons/94-68.svg deleted file mode 100755 index e4ebc3f..0000000 --- a/htdocs/public/symbols/svgicons/94-68.svg +++ /dev/null @@ -1,116 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="94-68.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1865" - inkscape:window-height="1025" - id="namedview7" - showgrid="false" - inkscape:zoom="6.9532165" - inkscape:cx="-40.448274" - inkscape:cy="0.54852928" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g3596" - transform="matrix(0.66667404,0,0,0.66667404,15.835203,-1.9387406)"> - <path - inkscape:connector-curvature="0" - class="st0" - d="m -12.75489,19.005988 c 0.569295,0 1.117121,-0.09741 1.62815,-0.272811 0.01739,-0.0059 0.03553,-0.0099 0.05292,-0.01594 l -3.28e-4,-5.62e-4 c 0.0025,-7.03e-4 0.005,-0.0013 0.0073,-0.0022 -0.18328,-0.455389 -0.483232,-0.874731 -0.858043,-1.194043 -0.266577,0.06389 -0.544217,0.09722 -0.830013,0.09722 -1.990727,0 -3.609548,-1.618635 -3.609548,-3.609361 0,-1.987961 1.618821,-3.609502 3.609548,-3.609502 1.990727,0 3.6093613,1.621587 3.6093613,3.609502 0,0.313686 -0.041531,0.619075 -0.1166245,0.91059 0.3065144,0.338342 0.6914036,0.610826 1.1365269,0.806575 0.016078,0.0075 0.031125,0.01645 0.04739,0.02358 l 1.875e-4,-5.16e-4 c 0.00239,0.0011 0.00459,0.0023 0.00698,0.0033 0.2026868,-0.544217 0.313827,-1.129965 0.313827,-1.743556 0,-2.754271 -2.2408508,-4.9976529 -4.9977002,-4.9976529 -2.754223,4.69e-5 -4.997793,2.2434289 -4.997793,4.9976529 0,2.757036 2.24357,4.997699 4.99784,4.997699 z" - style="fill:#333333" - id="path3408" /> - <path - inkscape:connector-curvature="0" - class="st0" - d="m -3.4511287,15.708814 c 0,0 3.75e-4,-1.88e-4 7.032e-4,-1.88e-4 7.5e-4,0.0024 0.0015,0.0048 0.0022,0.0072 0.4664044,-0.197015 0.8744966,-0.496967 1.1856048,-0.880028 -0.06389,-0.266577 -0.097218,-0.544217 -0.097218,-0.827481 0,-1.987961 1.61863443,-3.609502 3.6093612,-3.609502 1.9906798,0 3.6095017,1.621588 3.6095017,3.609502 0,1.990727 -1.6188219,3.609361 -3.6095017,3.609361 -0.31368634,0 -0.61907579,-0.04153 -0.9107778,-0.116625 -0.22757725,0.191718 -0.42754523,0.416577 -0.58846649,0.666513 -0.0974059,0.147187 -0.18145243,0.310734 -0.25870213,0.485577 -0.003469,0.0073 -0.007172,0.01355 -0.0106406,0.02105 l 5.625e-4,1.87e-4 c -0.001078,0.0024 -0.002203,0.0044 -0.003281,0.0068 0.54984164,0.210937 1.14679247,0.324842 1.77139942,0.324842 2.7542707,0 4.9976527,-2.240663 4.9976527,-4.997699 -9.38e-5,-2.754224 -2.2434758,-4.997606 -4.9977464,-4.997606 -2.7570363,0 -4.9976996,2.243382 -4.9976996,4.997653 0,0.575154 0.099422,1.12612 0.2789052,1.640618 0.00656,0.01978 0.011156,0.04027 0.01814,0.05986 z" - style="fill:#333333" - id="path3410" /> - <path - inkscape:connector-curvature="0" - class="st0" - d="m -8.0045956,26.254195 -5.156e-4,1.87e-4 c -7.5e-4,-0.0023 -0.00131,-0.005 -0.00202,-0.0073 -0.4693107,0.172124 -0.8858403,0.449904 -1.2162141,0.808028 0.049969,0.244218 0.077812,0.494154 0.077812,0.752341 0,1.987961 -1.6186347,3.609361 -3.6093617,3.609361 -1.990727,0 -3.609548,-1.6214 -3.609548,-3.609361 0,-1.990914 1.618821,-3.609361 3.609548,-3.609361 0.344061,0 0.677341,0.04978 0.993887,0.141515 0.317718,-0.325921 0.570373,-0.727075 0.742497,-1.183589 0.0031,-0.0077 0.007,-0.015 0.01008,-0.02274 -1.87e-4,-1.4e-4 -1.87e-4,-1.4e-4 -1.87e-4,-1.4e-4 7.03e-4,-0.0024 0.0018,-0.0046 0.0027,-0.007 -0.544216,-0.205405 -1.13287,-0.316405 -1.74904,-0.316405 -2.754223,9.4e-5 -4.997793,2.240711 -4.997793,4.997747 0,2.75427 2.24357,4.997653 4.99784,4.997653 2.7568494,0 4.9977001,-2.243383 4.9977001,-4.997653 0,-0.526779 -0.084984,-1.034715 -0.2362022,-1.512651 -0.00422,-0.01355 -0.00703,-0.02728 -0.011203,-0.04064 z" - style="fill:#333333" - id="path3412" /> - <path - inkscape:connector-curvature="0" - class="st0" - d="m 1.2495252,22.809833 c -0.64377882,0 -1.26271395,0.123234 -1.8279774,0.347155 -0.002719,0.0011 -0.005672,0.0018 -0.008578,0.0029 0,0 0,0 0,1.88e-4 -0.002203,7.5e-4 -0.004781,0.0015 -0.006984,0.0024 0.13884322,0.374624 0.33327997,0.730216 0.59690396,1.035653 0.05278105,0.05822 0.10565584,0.113718 0.16096813,0.169405 0.34152994,-0.11114 0.70809103,-0.169405 1.08566771,-0.169405 1.9906798,0 3.6095017,1.618447 3.6095017,3.609361 0,1.987961 -1.6188219,3.609361 -3.6095017,3.609361 -1.99072673,0 -3.6093612,-1.6214 -3.6093612,-3.609361 0,-0.222093 0.019406,-0.438702 0.058219,-0.649826 -0.2987801,-0.345702 -0.6785599,-0.625122 -1.1196519,-0.828184 -0.027469,-0.01303 -0.052922,-0.02878 -0.080906,-0.0412 0,3.75e-4 -1.875e-4,7.5e-4 -1.875e-4,0.0011 -0.00239,-0.0011 -0.00459,-0.0024 -0.00698,-0.0033 -0.1554369,0.480279 -0.2387803,0.991121 -0.2387803,1.521416 0,2.75427 2.2406632,4.997652 4.9976995,4.997652 2.7542707,0 4.9976527,-2.243382 4.9976527,-4.997652 -4.69e-5,-2.757083 -2.2434289,-4.9977 -4.9976995,-4.9977 z" - style="fill:#333333" - id="path3414" /> - <path - inkscape:connector-curvature="0" - class="st0" - d="M 0.74594881,28.6769 2.2812866,27.141563 c -0.1887649,-0.272109 -3.5054863,-3.296124 -3.6248765,-3.604514 -0.2942801,-0.746903 -0.4110922,-1.57415 -0.4247796,-2.362585 -0.016641,-0.94134 0.108234,-1.971273 0.4969668,-2.854395 0.083859,-0.192843 2.7270674,-2.831617 2.83877,-3.008523 0.012656,-0.01903 0.022734,-0.03881 0.036094,-0.05784 0.00253,-0.0031 0.010785,-0.0062 0.00769,-0.0093 L 0.05640435,13.689443 c -0.191718,0.127781 -2.93800395,2.689915 -3.14912815,2.784414 -0.07214,0.03056 -0.1444682,0.06113 -0.2193742,0.08897 -0.7747001,0.285843 -1.61315,0.421873 -2.4515999,0.421873 -0.6747162,0 -1.3465261,-0.08883 -1.9879611,-0.252702 -0.2332491,-0.05822 -0.4582951,-0.136031 -0.6747162,-0.230343 -0.2414991,-0.10289 -3.1640388,-2.869114 -3.3778818,-3.010676 l -1.560415,1.560463 c 0.14428,0.210937 2.958773,3.080051 3.053085,3.313112 0.02508,0.05278 0.04725,0.105469 0.06666,0.161156 0.5220452,1.427151 0.5414513,3.101285 0.127781,4.556186 -0.039,0.13603 -0.08348,0.272108 -0.136218,0.402467 -0.124875,0.324842 -3.126255,3.293824 -3.32341,3.571417 l 1.538244,1.538244 c 0.266577,-0.183281 3.3983159,-2.996638 3.7037522,-3.113263 0.013922,-0.0057 0.030562,-0.01116 0.044484,-0.01664 0.7802314,-0.28603 1.6159157,-0.419342 2.4516,-0.419342 0.6719974,0 1.3439948,0.08606 1.9852424,0.249936 0.2305303,0.05822 0.449717,0.133312 0.6635599,0.224859 0.2719677,0.116671 3.729859,3.363308 3.93584031,3.157326 z" - style="fill:#333333" - id="path3424" - sodipodi:nodetypes="sccccccscccsccccccccccccsccs" /> - <path - inkscape:connector-curvature="0" - class="st0" - d="m -9.5815114,15.726954 -0.02489,0.02213 c 0.00277,0.0028 0.00553,0.0057 0.00825,0.0057 0.00567,-0.0082 0.011156,-0.01669 0.01664,-0.02784 z" - style="fill:#333333" - id="path3426" /> - <circle - r="2.0134568" - cy="14.0083" - cx="-12.755002" - id="path3479" - style="fill:#333333" /> - <circle - r="2.0134568" - cy="14.008369" - cx="1.2495462" - id="path3479-3" - style="fill:#333333" /> - <circle - r="2.0134568" - cy="27.807472" - cx="1.2495538" - id="path3479-6" - style="fill:#333333" /> - <circle - r="2.0134568" - cy="27.847139" - cx="-12.763877" - id="path3479-7" - style="fill:#333333" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-71.svg b/htdocs/public/symbols/svgicons/94-71.svg deleted file mode 100755 index aa7d339..0000000 --- a/htdocs/public/symbols/svgicons/94-71.svg +++ /dev/null @@ -1,66 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="94-71.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview7" - showgrid="false" - inkscape:zoom="32" - inkscape:cx="6.2227228" - inkscape:cy="14.589176" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g3" - transform="matrix(0.25417844,0,0,0.25417844,3.6293682e-4,3.20202)" - style="fill:#333333" /> - <g - id="g3388" - transform="matrix(-0.00411188,-0.0177399,0.0177399,-0.00411188,1.8254364,20.496882)" - style="fill:#333333"> - <path - inkscape:connector-curvature="0" - d="m 14.765,576.732 13.394,5.834 c 0,0 -14.377,5.953 -14.425,6.161 C 13.686,588.933 0,700.341 0,700.341 c 0,0 56.171388,14.76393 58.943388,9.39893 2.772,-5.365 43.074602,-96.35537 43.074602,-96.35537 0,0 144.08575,43.97258 164.40175,50.09958 20.316,6.127 58.97,20.325 58.97,20.325 L 275.487,1069.888 260.77389,1307.8528 c 0,0 83.23646,26.8259 86.02846,16.6599 2.792,-10.167 140.20085,-596.70168 140.20085,-596.70168 0,0 20.429,5.17 39.623,9.07 19.194,3.901 109.1458,11.68398 115.5018,-14.80502 6.355,-26.489 -64.54128,-54.75626 -96.89928,-63.12726 -32.358,-8.37 -39.103,-10.37 -39.103,-10.37 0,0 134.68085,-590.009666 136.10185,-596.451666 2.178,-9.872 -84.32346,-24.019872 -84.32346,-24.019872 C 558.38368,18.105466 465.036,249.822 465.036,249.822 L 340.92026,617.72486 c 0,0 -14.559,-0.299 -61.054,-8.028 -25.032,-4.161 -170.75348,-27.86756 -170.75348,-27.86756 0,0 4.39261,-98.47337 4.71861,-103.82137 C 114.45439,467.77593 56.014,457.62 56.014,457.62 c 0,0 -36.357,106.482 -36.309,106.275 0.048,-0.207 10.062,13.144 10.062,13.144 z" - id="path3390" - style="fill:#333333" - sodipodi:nodetypes="ccccscscccccccccccccscccscc" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-74.svg b/htdocs/public/symbols/svgicons/94-74.svg deleted file mode 100755 index 7ead478..0000000 --- a/htdocs/public/symbols/svgicons/94-74.svg +++ /dev/null @@ -1,60 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.0" - width="24" - height="24" - viewBox="0 0 24.000001 24" - id="svg2" - inkscape:version="0.91 r13725" - sodipodi:docname="94-74.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1875" - inkscape:window-height="1056" - id="namedview7" - showgrid="false" - inkscape:zoom="13.906433" - inkscape:cx="4.2736353" - inkscape:cy="10.331998" - inkscape:window-x="45" - inkscape:window-y="24" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata8"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - </cc:Work> - </rdf:RDF> - </metadata> - <g - transform="matrix(0.03832955,-0.03832955,0.03832955,0.03832955,-12.977414,15.441768)" - id="g3388" - style="fill:#333333"> - <path - d="m 157.98695,184.38488 15.38788,-16.18471 c 9.01133,-9.01133 24.18529,-5.8854 24.18529,-5.8854 l 45.02946,6.16135 22.80617,-22.31567 c 12.01512,-11.80056 22.86694,6.25375 18.14672,12.47586 l -11.70942,13.61004 48.49336,8.98159 16.46066,-19.18912 c 17.59356,-21.02645 30.68334,-2.08353 22.74478,9.07336 l -10.63664,13.45688 72.86283,9.50247 c 62.65024,-60.29014 88.22733,-85.29891 104.71135,-70.44132 16.59028,14.95339 -12.75624,44.75856 -69.82804,103.5468 l 10.36069,75.06977 15.2651,-12.72081 c 9.01133,-7.50944 25.01187,4.53795 8.49108,20.20051 l -20.99733,19.80177 8.8588,49.13702 13.11954,-10.08475 c 11.586,-9.22589 25.65553,2.97466 9.99297,19.71 l -20.84417,20.99734 c -0.85822,0.64367 6.80502,43.09845 6.80502,43.09845 4.72022,20.8119 -7.01958,28.41564 -7.01958,28.41564 l -14.31509,12.47587 -54.37876,-153.60343 c -4.50567,-13.51701 -15.92502,-28.19577 -35.00611,-26.45363 -10.08411,1.07278 -35.55799,18.2695 -38.99088,22.34606 l -58.97684,56.70849 c -1.50189,1.07278 9.07336,73.72104 9.07336,73.72104 0,2.14556 -18.69861,26.66819 -18.69861,26.66819 l -37.36621,-66.51729 -18.45305,8.58285 10.7898,-16.79799 -67.28375,-37.97951 25.22769,-18.45304 c 12.01512,2.78922 75.00838,9.87019 76.29571,9.22652 0,0 51.29689,-50.87264 54.2256,-53.94965 16.9499,-17.80812 22.65302,-24.46187 25.22769,-33.25865 2.57678,-8.80401 -1.81285,-21.70583 -28.41564,-38.04088 -36.68901,-22.52835 -151.64143,-61.09202 -151.64143,-61.09202 z" - id="path3166" - style="fill:#333333;stroke:none" - inkscape:connector-curvature="0" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-76.svg b/htdocs/public/symbols/svgicons/94-76.svg deleted file mode 100755 index 3c3ec3b..0000000 --- a/htdocs/public/symbols/svgicons/94-76.svg +++ /dev/null @@ -1,982 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<!-- Created with Inkscape (http://www.inkscape.org/) --> - -<svg - width="24" - height="24" - viewBox="0 0 24 24" - version="1.1" - id="svg5" - inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)" - sodipodi:docname="Paraglider.svg" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns="http://www.w3.org/2000/svg" - xmlns:svg="http://www.w3.org/2000/svg"> - <sodipodi:namedview - id="namedview7" - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1.0" - inkscape:pageshadow="2" - inkscape:pageopacity="0.0" - inkscape:pagecheckerboard="0" - inkscape:document-units="px" - showgrid="false" - height="31px" - inkscape:snap-global="true" - inkscape:lockguides="false" - inkscape:snap-to-guides="true" - inkscape:snap-grids="true" - inkscape:snap-others="false" - inkscape:snap-nodes="false" - inkscape:zoom="42.364278" - inkscape:cx="9.9140129" - inkscape:cy="16.192888" - inkscape:window-width="1920" - inkscape:window-height="1137" - inkscape:window-x="-8" - inkscape:window-y="-8" - inkscape:window-maximized="1" - inkscape:current-layer="layer1" /> - <defs - id="defs2"> - <inkscape:path-effect - effect="bspline" - id="path-effect8960" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8956" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8952" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8948" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8944" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8940" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8936" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8932" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8928" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8924" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8920" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8916" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8912" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8908" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8904" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8900" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8896" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8892" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8888" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8884" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8880" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8596" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8133" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8129" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect8092" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7918" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7914" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7910" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7906" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7902" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7898" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7894" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7890" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7886" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7882" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7878" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7874" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7870" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7866" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7862" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7858" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7854" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7704" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7700" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7696" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7692" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7468" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7464" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect7257" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect6383" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect5893" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect5319" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - <inkscape:path-effect - effect="bspline" - id="path-effect4762" - is_visible="true" - lpeversion="1" - weight="33.333333" - steps="2" - helper_size="0" - apply_no_weight="true" - apply_with_weight="true" - only_selected="false" /> - </defs> - <g - inkscape:label="Ebene 1" - inkscape:groupmode="layer" - id="layer1"> - <path - style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 0.96892735,14.996352 C 0.92502693,14.652466 0.88098473,14.307469 0.86255026,13.995432 0.84411579,13.683396 0.85145601,13.404468 0.8954117,13.143696 0.93936739,12.882925 1.0201098,12.640698 1.122876,12.394693 1.2256423,12.148689 1.3504261,11.899121 1.4716284,11.711757 1.5928306,11.524392 1.7102742,11.399608 1.8754677,11.238085 2.0406611,11.076563 2.2535269,10.878377 2.4885356,10.69847 2.7235443,10.518563 2.9804518,10.357079 3.2925463,10.20291 3.6046407,10.048741 3.9716512,9.9019369 4.3901208,9.7588061 4.8085905,9.6156753 5.2783641,9.4762112 5.6967409,9.3440788 6.1151177,9.2119464 6.4821283,9.0871628 6.8712847,8.9917724 7.2604411,8.8963819 7.671493,8.83032 8.0642765,8.7899948 8.45706,8.7496697 8.8314108,8.7349892 9.2828075,8.6982569 9.7342042,8.6615245 10.262699,8.6028028 10.725207,8.5734902 c 0.462508,-0.029313 0.858879,-0.029313 1.262594,-0.032992 0.403715,-0.00368 0.814767,-0.011019 1.240552,3.58e-5 0.425785,0.011055 0.866198,0.040416 1.317646,0.077134 0.451448,0.036718 0.913881,0.08076 1.405716,0.1468682 0.491836,0.066108 1.012991,0.154191 1.512159,0.2570058 0.499168,0.1028147 0.976282,0.2202582 1.361666,0.3267446 0.385383,0.1064863 0.678991,0.2019089 0.998303,0.3304539 0.319312,0.128545 0.664302,0.2900297 1.053343,0.480904 0.38904,0.190875 0.822112,0.411081 1.108201,0.616872 0.286088,0.205791 0.425553,0.396637 0.546602,0.580174 0.121049,0.183537 0.223812,0.359702 0.322769,0.587267 0.09896,0.227565 0.194379,0.506491 0.249275,0.726644 0.0549,0.220153 0.06958,0.381638 0.07318,0.601796 0.0036,0.220159 -0.0037,0.499088 -0.05519,0.821928 -0.05146,0.32284 -0.146883,0.689849 -0.242128,1.056174" - id="path5891" - inkscape:path-effect="#path-effect5893" - inkscape:original-d="m 0.96892735,14.996352 c -0.0430421,-0.343996 -0.0870843,-0.688993 -0.13212646,-1.03499 0.00834,-0.277939 0.0156807,-0.556867 0.0220211,-0.836801 C 0.94056753,12.883325 1.0213099,12.641098 1.1010538,12.397866 1.2268424,12.149289 1.351626,11.899721 1.4754121,11.649149 1.5938602,11.525361 1.7113036,11.400577 1.8277493,11.274791 2.041624,11.077597 2.2544901,10.879412 2.4663605,10.680222 2.7242782,10.519731 2.9811856,10.358246 3.2370982,10.195758 3.6051235,10.049948 3.972134,9.9031439 4.338152,9.7553367 4.8089443,9.6168671 5.2787179,9.4774031 5.7475008,9.3369362 6.1155261,9.2131476 6.4825367,9.088364 6.8485546,8.9625779 7.260623,8.8975134 7.6716748,8.8314515 8.0817349,8.7643883 8.4571007,8.7507073 8.8314515,8.7360268 9.2048098,8.7203461 9.7343262,8.6626221 10.262821,8.6039004 10.790327,8.5441775 c 0.397388,10e-4 0.793759,10e-4 1.189138,0 0.412069,-0.00634 0.823121,-0.013681 1.233181,-0.022021 0.44143,0.030362 0.881843,0.059723 1.321264,0.088084 0.463452,0.045043 0.925885,0.089084 1.387328,0.1321265 0.522176,0.089086 1.043331,0.1771686 1.563496,0.2642529 0.478133,0.1184481 0.955247,0.2358915 1.43137,0.3523372 0.294621,0.096427 0.588229,0.1918493 0.880843,0.286274 0.346004,0.1624911 0.690994,0.3239758 1.034991,0.4844639 0.43409,0.221215 0.867162,0.441421 1.299243,0.660632 0.14047,0.191853 0.279934,0.382699 0.418401,0.572548 0.103767,0.177172 0.20653,0.353337 0.308295,0.528506 0.09643,0.279939 0.191849,0.558867 0.286274,0.836801 0.01568,0.162491 0.03036,0.323976 0.04404,0.484464 -0.0063,0.279939 -0.01368,0.558867 -0.02202,0.836801 -0.09443,0.368025 -0.189849,0.735035 -0.286274,1.101053" - sodipodi:nodetypes="ccccccccccccccccccccccccccccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 0.96892735,14.996352 c 1.15346115,0.02939 2.30589745,0.05875 3.33354815,0.07709 1.0276507,0.01834 1.9304971,0.02568 3.1013046,0.04404 1.1708076,0.01836 2.6094889,0.04772 4.0665419,0.04402 1.457053,-0.0037 2.932436,-0.04039 4.2317,-0.06241 1.299264,-0.02201 2.422317,-0.02935 3.589461,-0.01833 1.167144,0.01103 2.378278,0.04039 3.588412,0.06972" - id="path6381" - inkscape:path-effect="#path-effect6383" - inkscape:original-d="m 0.96892735,14.996352 c 1.15343635,0.03036 2.30587265,0.05972 3.45730895,0.08808 0.9038822,0.0083 1.8067282,0.01568 2.7085923,0.02202 1.4397391,0.03036 2.8784204,0.05972 4.3161314,0.08808 1.476441,-0.0357 2.951824,-0.0724 4.426236,-0.110105 1.124097,-0.0063 2.24715,-0.01368 3.369224,-0.02202 1.212183,0.03036 2.423317,0.05972 3.633475,0.08808" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.3;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 10.548095,16.846123 c 0.507485,0 1.01397,0 1.519455,0" - id="path7255" - inkscape:path-effect="#path-effect7257" - inkscape:original-d="m 10.548095,16.846123 c 0.507485,0.001 1.01397,0.001 1.519455,0" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 11.05458,16.890165 c 0.0189,-0.160758 0.0379,-0.322387 0.05099,-0.479731 0.01308,-0.157344 0.02019,-0.310503 0.04102,-0.456226 0.02083,-0.145723 0.0557,-0.284529 0.0904,-0.422616 0.03593,-0.02604 0.07204,-0.0522 0.116441,-0.05452 0.0444,-0.0023 0.09625,0.01846 0.124378,0.100376 0.02813,0.08191 0.03369,0.22439 0.03976,0.3746 0.0061,0.150211 0.01264,0.308142 0.01629,0.458605 0.0036,0.150463 0.0044,0.293479 0.0052,0.435494" - id="path7462" - inkscape:path-effect="#path-effect7464" - inkscape:original-d="m 11.05458,16.890165 c 0.02001,-0.160628 0.03901,-0.322257 0.05701,-0.484885 0.0081,-0.152142 0.01521,-0.305301 0.02132,-0.459427 0.03569,-0.137072 0.104077,-0.414261 0.104077,-0.414261 0,0 0.07286,-0.05107 0.107788,-0.07811 0.05285,0.02178 0.1047,0.04256 0.155553,0.06235 0.0066,0.143487 0.01213,0.285964 0.01669,0.427447 0.0076,0.158935 0.01414,0.316867 0.01971,0.473804 0.0018,0.144023 0.0025,0.28704 0.0023,0.42906" - sodipodi:nodetypes="ccccccccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 11.05458,16.890165 c 0.05888,0.412178 0.117604,0.823229 0.198184,0.815687 0.08058,-0.0075 0.183341,-0.433271 0.286279,-0.859728" - id="path7466" - inkscape:path-effect="#path-effect7468" - inkscape:original-d="m 11.05458,16.890165 c 0.05972,0.412058 0.118444,0.823109 0.176169,1.23318 0.103767,-0.424751 0.20653,-0.850481 0.308294,-1.277221" - sodipodi:nodetypes="ccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 0.96892735,14.996352 C 4.1473862,15.550195 7.3247056,16.103839 10.500886,16.657285" - id="path7690" - inkscape:path-effect="#path-effect7692" - inkscape:original-d="M 0.96892735,14.996352 C 4.1472466,15.550996 7.3245661,16.10464 10.500886,16.657285" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 12.185574,16.63368 c 3.565619,-0.494511 7.130392,-0.988904 10.694321,-1.48318" - id="path7694" - inkscape:path-effect="#path-effect7696" - inkscape:original-d="m 12.185574,16.63368 c 3.565774,-0.493393 7.130547,-0.987787 10.694321,-1.48318" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 12.209179,16.63368 c 1.237856,-0.509281 2.475209,-1.018355 3.712059,-1.527222" - id="path7698" - inkscape:path-effect="#path-effect7700" - inkscape:original-d="m 12.209179,16.63368 c 1.238353,-0.508074 2.475706,-1.017148 3.712059,-1.527222" - sodipodi:nodetypes="cc" /> - <path - style="fill:#ff0000;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="M 10.477281,16.657284 C 9.3569956,16.14823 8.2355043,15.638628 7.1128076,15.128479" - id="path7702" - inkscape:path-effect="#path-effect7704" - inkscape:original-d="M 10.477281,16.657284 C 9.3567899,16.148683 8.2352987,15.639081 7.1128076,15.128479" - sodipodi:nodetypes="cc" /> - <path - style="fill:#ff0000;fill-rule:evenodd;stroke-width:0.00220211;stroke-miterlimit:4;stroke-dasharray:none;paint-order:fill markers stroke" - d="m 7.8284925,15.016432 c -0.5571332,-0.0093 -1.7363471,-0.02786 -2.6204754,-0.04126 -1.5618499,-0.02368 -4.1308014,-0.082 -4.1400142,-0.09399 -0.00251,-0.0033 -0.021802,-0.149631 -0.04287,-0.325249 -0.0580295,-0.483717 -0.0688949,-1.0838 -0.024522,-1.354296 0.069887,-0.426022 0.3208645,-1.051043 0.5780229,-1.439476 0.073626,-0.11121 0.2228026,-0.286027 0.3595134,-0.421305 C 2.7028828,10.584132 3.344552,10.227099 4.6574576,9.7264325 5.2133314,9.5144541 6.4542679,9.2216015 6.7054177,9.1524646 7.2744092,8.9958319 7.8029454,8.9182273 8.819441,8.842064 9.2312351,8.8112094 9.7762567,8.7663602 10.0306,8.742399 10.860334,8.664232 11.338782,8.64922 12.641423,8.660481 c 1.264689,0.010934 1.476402,0.021568 2.531098,0.1271348 1.263779,0.1264943 2.552612,0.3675001 3.699672,0.6918213 0.620508,0.1754434 1.055615,0.3472517 1.8424,0.7274989 1.093783,0.528616 1.408945,0.750947 1.714033,1.209163 0.273976,0.41149 0.503292,0.957859 0.595547,1.418955 0.04806,0.240219 0.03497,0.986773 -0.02284,1.302477 -0.04118,0.224906 -0.19729,0.875952 -0.214053,0.892715 -0.0056,0.0056 -0.356169,-1.99e-4 -0.779061,-0.01287 -1.474855,-0.0442 -5.23737,-0.05052 -7.24309,-0.01218 -1.925623,0.03682 -5.0948443,0.04195 -6.9366385,0.01124 z" - id="path7780" - sodipodi:nodetypes="cccssscsssssssssssscccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 11.913402,8.6322618 c 0.0073,2.1957702 0.01468,4.3905372 0.02202,6.5843022" - id="path7852" - inkscape:path-effect="#path-effect7854" - inkscape:original-d="m 11.913402,8.6322618 c 0.0083,2.1957672 0.01568,4.3905342 0.02202,6.5843022" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 11.098622,8.6542829 c 0.02203,2.1590751 0.04405,4.3171411 0.06606,6.4741961" - id="path7856" - inkscape:path-effect="#path-effect7858" - inkscape:original-d="m 11.098622,8.6542829 c 0.02302,2.1590651 0.04504,4.3171311 0.06606,6.4741961" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 10.327885,8.698325 c 0.03672,2.151742 0.07342,4.302467 0.110105,6.452175" - id="path7860" - inkscape:path-effect="#path-effect7862" - inkscape:original-d="m 10.327885,8.698325 c 0.0377,2.151725 0.0744,4.30245 0.110105,6.452175" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 12.816266,8.6102407 c -0.0073,2.1664023 -0.01468,4.3318083 -0.02202,6.4962173" - id="path7864" - inkscape:path-effect="#path-effect7866" - inkscape:original-d="m 12.816266,8.6102407 c -0.0063,2.1664063 -0.01368,4.3318113 -0.02202,6.4962173" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 13.564983,8.6322618 c 0,2.1957672 0,4.3905342 0,6.5843022" - id="path7868" - inkscape:path-effect="#path-effect7870" - inkscape:original-d="m 13.564983,8.6322618 c 10e-4,2.1957672 10e-4,4.3905342 0,6.5843022" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 14.357742,8.7203461 c -0.0073,2.1370399 -0.01468,4.2730859 -0.02202,6.4081329" - id="path7872" - inkscape:path-effect="#path-effect7874" - inkscape:original-d="m 14.357742,8.7203461 c -0.0063,2.1370439 -0.01368,4.2730889 -0.02202,6.4081329" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 15.084437,8.7423672 c -0.05875,2.1076538 -0.117473,4.2143368 -0.176169,6.3200488" - id="path7876" - inkscape:path-effect="#path-effect7878" - inkscape:original-d="M 15.084437,8.7423672 C 15.026714,10.85005 14.967991,12.956733 14.908268,15.062416" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 15.921238,8.8524726 c -0.08812,2.0709364 -0.176209,4.1409184 -0.264253,6.2099434" - id="path7880" - inkscape:path-effect="#path-effect7882" - inkscape:original-d="m 15.921238,8.8524726 c -0.08708,2.0709804 -0.175169,4.1409624 -0.264253,6.2099434" - sodipodi:nodetypes="cc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 16.625912,8.984599 c 0.02204,1.175475 0.04406,2.349933 -0.0074,3.370161 -0.05146,1.020229 -0.176239,1.886374 -0.300904,2.751698" - id="path7884" - inkscape:path-effect="#path-effect7886" - inkscape:original-d="m 16.625912,8.984599 c 0.02302,1.175457 0.04504,2.349915 0.06606,3.523372 -0.123789,0.867179 -0.248572,1.733325 -0.374359,2.598487" - sodipodi:nodetypes="ccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 17.39665,9.0506622 c 0.0073,1.1093998 0.01469,2.2177958 -0.0441,3.2306948 -0.05878,1.012899 -0.183568,1.930425 -0.308239,2.847122" - id="path7888" - inkscape:path-effect="#path-effect7890" - inkscape:original-d="m 17.39665,9.0506622 c 0.0083,1.1093938 0.01568,2.2177888 0.02202,3.3251828 -0.123788,0.918563 -0.248572,1.836089 -0.374358,2.752634" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 17.969198,9.2488519 c 0.01469,1.0506851 0.02937,2.1003571 -0.05145,3.0728431 -0.08083,0.972485 -0.256994,1.867991 -0.433011,2.762742" - id="path7892" - inkscape:path-effect="#path-effect7894" - inkscape:original-d="m 17.969198,9.2488519 c 0.01568,1.0506711 0.03036,2.1003431 0.04404,3.1490141 -0.175172,0.896541 -0.351337,1.792047 -0.528506,2.686571" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 18.607809,9.3589573 c -0.0073,0.7350257 -0.01469,1.4690617 -0.02939,2.0819687 -0.0147,0.612906 -0.03672,1.1047 -0.124863,1.688156 -0.08815,0.583456 -0.242293,1.258754 -0.396273,1.933334" - id="path7896" - inkscape:path-effect="#path-effect7898" - inkscape:original-d="m 18.607809,9.3589573 c -0.0063,0.7350357 -0.01368,1.4690717 -0.02202,2.2021077 -0.02102,0.492814 -0.04304,0.984608 -0.06606,1.475412 -0.153151,0.676327 -0.307295,1.351626 -0.462443,2.025939" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 19.158336,9.4910838 c -0.0073,0.8671532 -0.01469,1.7333152 -0.04043,2.3241442 -0.02575,0.590828 -0.06979,0.906457 -0.117496,1.266146 -0.04771,0.359689 -0.09909,0.763401 -0.165195,1.104629 -0.06611,0.341229 -0.146847,0.620156 -0.227401,0.898434" - id="path7900" - inkscape:path-effect="#path-effect7902" - inkscape:original-d="m 19.158336,9.4910838 c -0.0063,0.8671622 -0.01368,1.7333242 -0.02202,2.5984872 -0.04304,0.316641 -0.08708,0.632271 -0.132126,0.946906 -0.05038,0.404728 -0.101765,0.808439 -0.154148,1.211159 -0.07975,0.279939 -0.160488,0.558867 -0.242232,0.836801" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 19.774926,9.6672524 c 0,0.6542916 0,1.3075836 -0.02207,1.8323616 -0.02207,0.524779 -0.06611,0.921151 -0.128525,1.357872 -0.06241,0.436721 -0.143156,0.913835 -0.231272,1.299108 -0.08812,0.385274 -0.183539,0.678881 -0.278765,0.971885" - id="path7904" - inkscape:path-effect="#path-effect7906" - inkscape:original-d="m 19.774926,9.6672524 c 10e-4,0.6542916 10e-4,1.3075836 0,1.9598756 -0.04304,0.397387 -0.08708,0.793759 -0.132126,1.189138 -0.07975,0.478133 -0.160488,0.955247 -0.242232,1.43137 -0.09443,0.29462 -0.189849,0.588229 -0.286274,0.880843" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 20.325453,9.8874631 c -0.02205,0.7570269 -0.04407,1.5130839 -0.08449,2.0965809 -0.04042,0.583497 -0.09914,0.99455 -0.216624,1.493602 -0.117484,0.499051 -0.293649,1.086268 -0.469624,1.672854" - id="path7908" - inkscape:path-effect="#path-effect7910" - inkscape:original-d="m 20.325453,9.8874631 c -0.02102,0.7570569 -0.04304,1.5131139 -0.06606,2.2681709 -0.05772,0.412068 -0.116446,0.82312 -0.176169,1.23318 -0.175172,0.588241 -0.351337,1.175458 -0.528505,1.761686" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 20.787896,10.129695 c -0.04411,0.566124 -0.08816,1.131331 -0.139549,1.69653 -0.05139,0.565198 -0.110115,1.130395 -0.209258,1.669812 -0.09914,0.539418 -0.238606,1.053233 -0.377889,1.566379" - id="path7912" - inkscape:path-effect="#path-effect7914" - inkscape:original-d="m 20.787896,10.129695 c -0.04304,0.566208 -0.08708,1.131415 -0.132127,1.695623 -0.05772,0.566219 -0.116445,1.131415 -0.176168,1.695623 -0.13847,0.514835 -0.277934,1.02865 -0.418401,1.541475" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 21.184275,10.371927 c -0.0074,0.448745 -0.0147,0.896507 -0.05146,1.322167 -0.03676,0.42566 -0.102823,0.829372 -0.172561,1.236757 -0.06974,0.407384 -0.143141,0.818437 -0.220233,1.185414 -0.07709,0.366976 -0.157833,0.689944 -0.238401,1.012214" - id="path7916" - inkscape:path-effect="#path-effect7918" - inkscape:original-d="m 21.184275,10.371927 c -0.0063,0.448762 -0.01368,0.896524 -0.02202,1.343285 -0.06506,0.404728 -0.131126,0.80844 -0.19819,1.21116 -0.0724,0.412068 -0.145807,0.82312 -0.22021,1.23318 -0.07975,0.323982 -0.160488,0.646951 -0.242232,0.968927" - sodipodi:nodetypes="ccccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 21.69076,10.592138 c -0.04414,0.404599 -0.08818,0.808319 -0.12855,1.193697 -0.04037,0.385378 -0.07707,0.752389 -0.128493,1.075283 -0.05143,0.322894 -0.117487,0.601822 -0.198222,0.983552 -0.08074,0.381729 -0.176159,0.866182 -0.271431,1.349872" - id="path8090" - inkscape:path-effect="#path-effect8092" - inkscape:original-d="m 21.69076,10.592138 c -0.04304,0.404719 -0.08708,0.808439 -0.132127,1.211159 -0.0357,0.368025 -0.0724,0.735036 -0.110105,1.101054 -0.06506,0.279939 -0.131126,0.558867 -0.19819,0.8368 -0.09443,0.485474 -0.189849,0.969928 -0.286274,1.453391" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 22.153202,10.878412 c -0.03678,0.448673 -0.07348,0.896435 -0.121221,1.296437 -0.04774,0.400002 -0.106465,0.752334 -0.161506,1.123047 -0.05504,0.370713 -0.106424,0.759744 -0.176205,1.07156 -0.06978,0.311815 -0.157863,0.546701 -0.245742,0.781044" - id="path8127" - inkscape:path-effect="#path-effect8129" - inkscape:original-d="m 22.153202,10.878412 c -0.0357,0.448761 -0.0724,0.896523 -0.110105,1.343285 -0.05772,0.353344 -0.116446,0.705675 -0.176168,1.057012 -0.05038,0.390047 -0.101766,0.779078 -0.154148,1.167117 -0.08709,0.235896 -0.175169,0.470783 -0.264253,0.704674" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 22.527561,11.186707 c -0.102886,0.712852 -0.205651,1.424867 -0.286393,1.993753 -0.08074,0.568885 -0.139465,0.994619 -0.194548,1.310186 -0.05508,0.315567 -0.106464,0.521093 -0.15767,0.725917" - id="path8131" - inkscape:path-effect="#path-effect8133" - inkscape:original-d="m 22.527561,11.186707 c -0.101765,0.713014 -0.20453,1.425029 -0.308295,2.136044 -0.05772,0.426749 -0.116446,0.852482 -0.176169,1.277222 -0.05038,0.206535 -0.101765,0.41206 -0.154147,0.61659" - sodipodi:nodetypes="cccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 22.70373,11.737234 c -0.07352,0.551377 -0.146921,1.101904 -0.227672,1.667107 -0.08075,0.565203 -0.168834,1.14508 -0.256792,1.724138" - id="path8594" - inkscape:path-effect="#path-effect8596" - inkscape:original-d="m 22.70373,11.737234 c -0.0724,0.551526 -0.145807,1.102053 -0.220211,1.65158 -0.08709,0.5809 -0.175169,1.160778 -0.264253,1.739665" - sodipodi:nodetypes="ccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" - d="m 22.945961,12.111592 c -0.05147,0.500031 -0.102856,0.999177 -0.161617,1.395483 -0.05876,0.396307 -0.124823,0.689917 -0.183544,0.954175 -0.05872,0.264259 -0.110103,0.499147 -0.161321,0.733292" - id="path8878" - inkscape:path-effect="#path-effect8880" - inkscape:original-d="m 22.945961,12.111592 c -0.05038,0.500144 -0.101765,0.999289 -0.154147,1.497433 -0.06506,0.29462 -0.131127,0.588229 -0.19819,0.880843 -0.05038,0.235896 -0.101764,0.470783 -0.154145,0.704674" - sodipodi:nodetypes="cccc" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 23.210214,12.772224 c -0.08091,0.360415 -0.161654,0.720093 -0.224048,0.995355 -0.0624,0.275261 -0.106436,0.466105 -0.157828,0.667939 -0.05139,0.201833 -0.110114,0.414701 -0.168651,0.626898" - id="path8882" - inkscape:path-effect="#path-effect8884" - inkscape:original-d="m 23.210214,12.772224 c -0.07974,0.360678 -0.160488,0.720355 -0.242232,1.079033 -0.04304,0.191853 -0.08708,0.382698 -0.132126,0.572548 -0.05772,0.213874 -0.116446,0.426741 -0.176169,0.638611" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 23.254256,13.763173 c -0.169032,0.463002 -0.337861,0.925445 -0.506484,1.387327" - id="path8886" - inkscape:path-effect="#path-effect8888" - inkscape:original-d="M 23.254256,13.763173 C 23.086428,14.226615 22.9176,14.689058 22.747772,15.1505" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 9.5351259,8.676304 c 0.066095,2.129734 0.1321584,4.258438 0.1981897,6.386112" - id="path8890" - inkscape:path-effect="#path-effect8892" - inkscape:original-d="m 9.5351259,8.676304 c 0.067063,2.129704 0.1331265,4.258408 0.1981897,6.386112" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="M 8.8084304,8.7423672 C 8.8524938,10.85741 8.896536,12.971434 8.9405569,15.084437" - id="path8894" - inkscape:path-effect="#path-effect8896" - inkscape:original-d="m 8.8084304,8.7423672 c 0.045042,2.1150228 0.089084,4.2290468 0.1321265,6.3420698" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 7.9936506,8.8304515 c 0.066124,1.1534901 0.1321869,2.3059265 0.1798852,3.3555955 0.047698,1.049669 0.077059,1.996556 0.1063885,2.942432" - id="path8898" - inkscape:path-effect="#path-effect8900" - inkscape:original-d="m 7.9936506,8.8304515 c 0.067063,1.1534363 0.1331265,2.3058725 0.1981897,3.4573085 0.030362,0.947926 0.059723,1.894813 0.088084,2.840719" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 7.3109972,9.0066201 c 0.080821,1.1168019 0.1615651,2.2325359 0.2276202,3.2418379 0.066055,1.009301 0.1174367,1.912147 0.1687592,2.813958" - id="path8902" - inkscape:path-effect="#path-effect8904" - inkscape:original-d="m 7.3109972,9.0066201 c 0.081744,1.1167349 0.1624879,2.2324689 0.2422319,3.3472039 0.052383,0.903882 0.103765,1.806728 0.1541475,2.708592" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 6.6063228,9.1167255 c 0.058783,1.0360435 0.1175055,2.0710345 0.1872558,3.0620045 0.06975,0.990969 0.1504926,1.937857 0.2311447,2.883686" - id="path8906" - inkscape:path-effect="#path-effect8908" - inkscape:original-d="m 6.6063228,9.1167255 c 0.059723,1.0359905 0.1184457,2.0709815 0.1761686,3.1049715 0.081746,0.947925 0.1624879,1.894813 0.2422319,2.840719" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 5.9236695,9.3149152 c 0.058782,1.0433838 0.1175051,2.0857148 0.183583,3.0583318 0.066078,0.972617 0.1394801,1.875463 0.2127963,2.777253" - id="path8910" - inkscape:path-effect="#path-effect8912" - inkscape:original-d="m 5.9236695,9.3149152 c 0.059723,1.0433308 0.1184457,2.0856618 0.1761686,3.1269928 0.074405,0.903882 0.1478071,1.806728 0.2202107,2.708592" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 5.3511215,9.5131048 c 0.044088,0.9919902 0.088131,1.9829392 0.1322055,2.6949822 0.044075,0.712043 0.088116,1.145115 0.1432049,1.567211 0.055089,0.422095 0.1211508,0.833147 0.1870322,1.243076" - id="path8914" - inkscape:path-effect="#path-effect8916" - inkscape:original-d="m 5.3511215,9.5131048 c 0.045042,0.9919482 0.089084,1.9828972 0.1321264,2.9728452 0.045043,0.43409 0.089084,0.867162 0.1321265,1.299244 0.067064,0.412068 0.1331264,0.82312 0.1981897,1.23318" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 4.7345313,9.6892735 c 0.051453,0.7791385 0.1028351,1.5572165 0.1468796,2.2105155 0.044044,0.653299 0.080745,1.181794 0.150564,1.692001 0.069819,0.510207 0.1725814,1.002001 0.2751044,1.492647" - id="path8918" - inkscape:path-effect="#path-effect8920" - inkscape:original-d="m 4.7345313,9.6892735 c 0.052383,0.7790775 0.1037651,1.5571555 0.1541476,2.3342345 0.037702,0.529516 0.074404,1.058011 0.1101054,1.585517 0.103767,0.492814 0.20653,0.984608 0.308295,1.475412" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 4.1179412,9.8874631 c 0.0441,0.8084909 0.088142,1.6159299 0.1395478,2.3279679 0.051406,0.712038 0.1101278,1.328616 0.1725942,1.7911 0.062466,0.462483 0.1285283,0.770772 0.1943428,1.077906" - id="path8922" - inkscape:path-effect="#path-effect8924" - inkscape:original-d="m 4.1179412,9.8874631 c 0.045042,0.8084399 0.089084,1.6158789 0.1321265,2.4223189 0.059724,0.617602 0.1184457,1.23418 0.1761686,1.84977 0.067064,0.309301 0.1331264,0.61759 0.1981897,0.924885" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 3.5894354,10.085653 c 0.036764,0.624985 0.073466,1.248916 0.1248993,1.78847 0.051433,0.539555 0.1174954,0.994648 0.1651534,1.508442 0.047658,0.513794 0.077019,1.086331 0.1063264,1.65783" - id="path8926" - inkscape:path-effect="#path-effect8928" - inkscape:original-d="m 3.5894354,10.085653 c 0.037702,0.62493 0.074404,1.248861 0.1101054,1.871791 0.067065,0.456112 0.1331264,0.911205 0.1981897,1.365307 0.030362,0.573559 0.059723,1.146096 0.088084,1.717644" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 3.193056,10.305864 c 0.022058,0.617624 0.044079,1.234214 0.069787,1.762738 0.025708,0.528524 0.055069,0.968937 0.095461,1.446079 0.040391,0.477142 0.091773,0.990957 0.1430466,1.503693" - id="path8930" - inkscape:path-effect="#path-effect8932" - inkscape:original-d="m 3.193056,10.305864 c 0.023021,0.61759 0.045042,1.23418 0.066063,1.84977 0.030362,0.44143 0.059723,0.881843 0.088084,1.321265 0.052384,0.514835 0.103765,1.02865 0.1541475,1.541475" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 2.7526345,10.680222 c 0.066153,0.793835 0.1322161,1.586593 0.1982896,2.313302 0.066074,0.726709 0.1321355,1.387328 0.1980898,2.046871" - id="path8934" - inkscape:path-effect="#path-effect8936" - inkscape:original-d="m 2.7526345,10.680222 c 0.067063,0.793759 0.1331265,1.586517 0.1981897,2.378276 0.067064,0.661646 0.1331264,1.322265 0.1981897,1.981897" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 2.2461498,10.988517 c 0.1102778,0.720482 0.2203832,1.439837 0.3010874,2.100451 0.080704,0.660613 0.1320857,1.262511 0.1833762,1.863343" - id="path8938" - inkscape:path-effect="#path-effect8940" - inkscape:original-d="m 2.2461498,10.988517 c 0.1111053,0.720355 0.2212107,1.43971 0.3303161,2.158065 0.052383,0.602922 0.103765,1.204819 0.1541475,1.805729" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 2.0479601,11.208728 c 0.073526,0.66173 0.146929,1.322362 0.2019529,1.957288 0.055024,0.634926 0.091725,1.244164 0.1283632,1.852358" - id="path8942" - inkscape:path-effect="#path-effect8944" - inkscape:original-d="m 2.0479601,11.208728 c 0.074404,0.661632 0.1478071,1.322264 0.2202107,1.981897 0.037703,0.610261 0.074404,1.219499 0.1101054,1.827749" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 1.7176439,11.583086 c 0.073559,0.529623 0.1469625,1.058129 0.1982996,1.564589 0.051337,0.506459 0.080698,0.990913 0.1212289,1.31396 0.040531,0.323048 0.091912,0.484532 0.1429138,0.644823" - id="path8946" - inkscape:path-effect="#path-effect8948" - inkscape:original-d="m 1.7176439,11.583086 c 0.074404,0.529506 0.1478072,1.058012 0.2202108,1.585517 0.030362,0.485474 0.059723,0.969928 0.088084,1.453391 0.052383,0.162492 0.103765,0.323976 0.1541475,0.484464" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 1.4974332,11.759255 c 0.066187,0.588327 0.13225,1.175556 0.183611,1.715062 0.051361,0.539507 0.088062,1.031301 0.124684,1.522036" - id="path8950" - inkscape:path-effect="#path-effect8952" - inkscape:original-d="m 1.4974332,11.759255 c 0.067063,0.588228 0.1331264,1.175457 0.1981897,1.761686 0.037702,0.492814 0.074404,0.984608 0.1101053,1.475412" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 1.2552013,12.221697 c 0.058853,0.500247 0.1175755,0.999391 0.1763083,1.469184 0.058733,0.469794 0.1174545,0.910206 0.176029,1.349514" - id="path8954" - inkscape:path-effect="#path-effect8956" - inkscape:original-d="m 1.2552013,12.221697 c 0.059723,0.500145 0.1184458,0.999289 0.1761686,1.497433 0.059724,0.441431 0.1184458,0.881843 0.1761687,1.321265" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.1;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 1.0570116,12.750203 c 0.080866,0.727794 0.1616098,1.454489 0.2422319,2.180087" - id="path8958" - inkscape:path-effect="#path-effect8960" - inkscape:original-d="m 1.0570116,12.750203 c 0.081744,0.727696 0.1624879,1.454391 0.2422319,2.180087" /> - <ellipse - style="fill:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;paint-order:fill markers stroke" - id="path4899" - cx="11.318498" - cy="16.605972" - rx="0.27145511" - ry="0.29505992" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 10.456923,16.523355 0.07081,0.306862" - id="path5083" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.2;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 12.227283,16.523355 -0.118024,0.330467" - id="path5085" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.01;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 5.2638688,15.154277 5.2166592,1.487102" - id="path6003" /> - <path - style="fill:none;stroke:#000000;stroke-width:0.01;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none" - d="m 12.250887,16.594169 5.853989,-1.463497" - id="path6038" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-77.svg b/htdocs/public/symbols/svgicons/94-77.svg deleted file mode 100755 index 1e59f4a..0000000 --- a/htdocs/public/symbols/svgicons/94-77.svg +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="24" - height="24" - version="1.1" - id="svg12" - sodipodi:docname="94-77.svg" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)"> - <defs - id="defs16" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1865" - inkscape:window-height="1025" - id="namedview14" - showgrid="false" - inkscape:zoom="9.8333333" - inkscape:cx="11.898305" - inkscape:cy="12" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="svg12" /> - <metadata - id="metadata7">image/svg+xml<rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> -</rdf:RDF> -</metadata> - <path - id="path3297" - d="m 9.4318167,19.959558 5.2158203,-0.08404 C 15.198885,13.61403 17.045425,6.7939484 11.735056,1.0102032 6.6137959,6.9620427 8.4936644,13.753557 9.4318167,19.959558 Z" - inkscape:connector-curvature="0" - style="fill:#4d4d4d;fill-rule:evenodd;stroke:#000000;stroke-width:0.96552008;stroke-linejoin:round" /> - <path - id="path3307" - d="M 9.4318167,19.959558 7.9622442,22.989835 C 7.0061223,21.060485 5.9111082,18.425398 6.313077,16.749083 6.5771832,15.647682 8.5190345,14.329627 8.5190345,14.329627 Z" - inkscape:connector-curvature="0" - style="fill:#4d4d4d;fill-rule:evenodd;stroke:#000000;stroke-width:0.96552008;stroke-linejoin:round" /> - <path - d="m 14.644988,19.711289 1.566441,2.981355 c 0.893465,-1.959154 1.903012,-4.628151 1.447243,-6.290649 -0.299458,-1.092315 -2.282763,-2.347123 -2.282763,-2.347123 z" - id="path3309" - inkscape:connector-curvature="0" - style="fill:#4d4d4d;fill-rule:evenodd;stroke:#000000;stroke-width:0.96552008;stroke-linejoin:round" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-80.svg b/htdocs/public/symbols/svgicons/94-80.svg deleted file mode 100755 index 810f68a..0000000 --- a/htdocs/public/symbols/svgicons/94-80.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata11"/> - <g id="g3" transform="matrix(0.25417844,0,0,0.25417844,3.6293682e-4,1.6054998)" fill="#333333"> - <path d="m 47.209,81.789 -3.312,-6.008 h -13.25 c -0.414,-1.047 0.625,-3.32 0.625,-3.32 2.688,-3.523 11.594,-7.234 11.594,-7.234 l -2.688,-35 L 5.389,28.148 C -0.408,27.32 0.006,23.195 0.006,23.195 c 0,-3.32 6,-4.359 6,-4.359 L 40.592,14.922 43.069,4.555 H 38.311 V 3.102 h 6.406 L 47.413,0 49.694,3.102 h 6.422 v 1.453 h -4.758 l 2.477,10.367 34.57,3.914 c 0,0 6.008,1.039 6.008,4.359 0,0 0.414,4.125 -5.383,4.953 l -34.781,2.078 -2.694,35 c 0,0 8.913,3.711 11.594,7.233 0,0 1.039,2.272 0.625,3.32 H 50.53 l -3.321,6.01" id="path5" inkscape:connector-curvature="0"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-82.svg b/htdocs/public/symbols/svgicons/94-82.svg deleted file mode 100755 index c5a68e3..0000000 --- a/htdocs/public/symbols/svgicons/94-82.svg +++ /dev/null @@ -1,56 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="94-82.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1865" - inkscape:window-height="1025" - id="namedview7" - showgrid="false" - inkscape:zoom="19.666667" - inkscape:cx="6.4566177" - inkscape:cy="16.399191" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <path - inkscape:connector-curvature="0" - style="fill:#333333;stroke-width:0.63999999" - id="path13" - d="m 12.000001,5.8108807 c -0.06939,5e-7 -0.110425,0.047717 -0.249439,0.4263476 -0.01641,0.044691 -0.04954,0.2352874 -0.04954,0.2352874 0,0 -0.111076,0.00531 -0.139757,0.00531 -0.05545,2e-6 -0.13044,0.049441 -0.168064,0.1096821 -0.116723,0.1869076 -0.298973,1.2155808 -0.298973,1.6894683 0,0.2940804 -0.02464,0.4703348 -0.07077,0.5059562 C 10.984544,8.8129951 10.78045,8.9056705 10.57058,8.9881478 10.20028,9.1336764 10.107445,9.1423139 7.428704,9.2853526 5.3073894,9.3986271 4.6396301,9.4519596 4.5398016,9.5153325 4.263001,9.6910474 4.2485894,10.097023 4.4920384,10.865139 l 0.1256045,0.396273 c 0,0 6.5296631,1.080907 6.5296631,1.080907 l 0.548414,4.014035 -0.145064,0.04069 c -0.07974,0.02207 -0.615417,0.08098 -1.190589,0.130912 -0.5751728,0.04993 -1.0782982,0.117375 -1.1180576,0.150372 -0.1598324,0.132651 -0.034232,1.178206 0.1415272,1.178206 0.2773999,0 1.3030394,0.137921 1.3568814,0.182214 0.03842,0.03163 0.919866,0.150372 1.259583,0.150371 0.339717,10e-7 1.221143,-0.118747 1.259583,-0.150371 0.05386,-0.04428 1.079482,-0.182214 1.356882,-0.182214 0.175756,0 0.30136,-1.045557 0.141526,-1.178207 -0.03978,-0.03298 -0.542883,-0.100441 -1.118056,-0.150371 -0.575173,-0.04993 -1.110851,-0.108834 -1.19059,-0.130912 l -0.145063,-0.04069 0.548413,-4.014036 c 0,0 6.529665,-1.080907 6.529666,-1.080906 l 0.125601,-0.39628 C 19.75141,10.097018 19.736998,9.6910442 19.460199,9.5153282 19.360369,9.4519551 18.692611,9.398622 16.571297,9.2853481 13.892555,9.1423085 13.799721,9.133671 13.429416,8.9881436 13.219546,8.9056665 13.015453,8.8129905 12.976531,8.7829308 c -0.04612,-0.035622 -0.07076,-0.2118762 -0.07076,-0.5059565 0,-0.473888 -0.182249,-1.5025627 -0.298975,-1.6894686 -0.03762,-0.060242 -0.112608,-0.1096844 -0.168061,-0.1096828 -0.02869,-2e-6 -0.137989,-0.00531 -0.137989,-0.00531 0,0 -0.03313,-0.1905976 -0.04954,-0.2352868 C 12.112193,5.8585947 12.069395,5.8108786 12,5.8108786 Z" /> -</svg> diff --git a/htdocs/public/symbols/svgicons/94-83.svg b/htdocs/public/symbols/svgicons/94-83.svg deleted file mode 100755 index 2837088..0000000 --- a/htdocs/public/symbols/svgicons/94-83.svg +++ /dev/null @@ -1,98 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg - xmlns:dc="http://purl.org/dc/elements/1.1/" - xmlns:cc="http://creativecommons.org/ns#" - xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" - xmlns:svg="http://www.w3.org/2000/svg" - xmlns="http://www.w3.org/2000/svg" - xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" - xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - version="1.1" - width="24" - height="24" - viewBox="0 0 24 24" - id="svg2" - inkscape:version="0.92.2 (5c3e80d, 2017-08-06)" - sodipodi:docname="94-83.svg"> - <defs - id="defs9" /> - <sodipodi:namedview - pagecolor="#ffffff" - bordercolor="#666666" - borderopacity="1" - objecttolerance="10" - gridtolerance="10" - guidetolerance="10" - inkscape:pageopacity="0" - inkscape:pageshadow="2" - inkscape:window-width="1865" - inkscape:window-height="1025" - id="namedview7" - showgrid="false" - inkscape:zoom="32" - inkscape:cx="5.4950825" - inkscape:cy="14.589176" - inkscape:window-x="55" - inkscape:window-y="27" - inkscape:window-maximized="1" - inkscape:current-layer="svg2" /> - <metadata - id="metadata11"> - <rdf:RDF> - <cc:Work - rdf:about=""> - <dc:format>image/svg+xml</dc:format> - <dc:type - rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> - <dc:title></dc:title> - </cc:Work> - </rdf:RDF> - </metadata> - <g - id="g3" - transform="matrix(0.25417844,0,0,0.25417844,3.6293682e-4,3.20202)" - style="fill:#333333" /> - <g - id="g3388" - transform="matrix(-0.00411188,-0.0177399,0.0177399,-0.00411188,1.8254364,20.496882)" - style="fill:#4d4d4d"> - <path - inkscape:connector-curvature="0" - d="m 14.765,576.732 13.394,5.834 c 0,0 -14.377,5.953 -14.425,6.161 C 13.686,588.933 0,700.341 0,700.341 c 0,0 56.171388,14.76393 58.943388,9.39893 2.772,-5.365 43.074602,-96.35537 43.074602,-96.35537 0,0 144.08575,43.97258 164.40175,50.09958 20.316,6.127 58.97,20.325 58.97,20.325 L 275.487,1069.888 260.77389,1307.8528 c 0,0 83.23646,26.8259 86.02846,16.6599 2.792,-10.167 140.20085,-596.70168 140.20085,-596.70168 0,0 20.429,5.17 39.623,9.07 19.194,3.901 109.1458,11.68398 115.5018,-14.80502 6.355,-26.489 -64.54128,-54.75626 -96.89928,-63.12726 -32.358,-8.37 -39.103,-10.37 -39.103,-10.37 0,0 134.68085,-590.009666 136.10185,-596.451666 2.178,-9.872 -84.32346,-24.019872 -84.32346,-24.019872 C 558.38368,18.105466 465.036,249.822 465.036,249.822 L 340.92026,617.72486 c 0,0 -14.559,-0.299 -61.054,-8.028 -25.032,-4.161 -170.75348,-27.86756 -170.75348,-27.86756 0,0 4.39261,-98.47337 4.71861,-103.82137 C 114.45439,467.77593 56.014,457.62 56.014,457.62 c 0,0 -36.357,106.482 -36.309,106.275 0.048,-0.207 10.062,13.144 10.062,13.144 z" - id="path3390" - style="fill:#4d4d4d" - sodipodi:nodetypes="ccccscscccccccccccccscccscc" /> - </g> - <g - id="g4645" - transform="translate(-0.02734375)"> - <rect - y="9.1875" - x="8.4375" - height="1.4375" - width="2.59375" - id="rect4604" - style="fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none" /> - <rect - y="9.1875" - x="5.078125" - height="1.4375" - width="2.59375" - id="rect4604-6" - style="fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none" /> - <rect - y="9.1875" - x="16.382812" - height="1.4375" - width="2.59375" - id="rect4604-2" - style="fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none" /> - <rect - y="9.1875" - x="13.023438" - height="1.4375" - width="2.59375" - id="rect4604-6-9" - style="fill:#1a1a1a;stroke:#1a1a1a;stroke-width:0.1;stroke-miterlimit:4;stroke-dasharray:none" /> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/95-1.svg b/htdocs/public/symbols/svgicons/95-1.svg deleted file mode 100755 index ce3f307..0000000 --- a/htdocs/public/symbols/svgicons/95-1.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" height="24" width="24" version="1.1"><metadata id="metadata3412"/><g><g><g><g> - - <circle r="12" cy="12" cx="12" id="path3416" fill="#0000ff" fill-rule="evenodd"/> -<text id="textoverlay"><tspan id="tspanoverlay" font-family="Sans-Serif" text-anchor="middle" text-align="center" word-spacing="0" letter-spacing="0" font-weight="bold" x="12" y="12" fill="#ffffff" font-size="11" dy="4.0" dx="-0.4">WX</tspan></text></g></g></g></g></svg> diff --git a/htdocs/public/symbols/svgicons/95-2.svg b/htdocs/public/symbols/svgicons/95-2.svg deleted file mode 100755 index 9f31dca..0000000 --- a/htdocs/public/symbols/svgicons/95-2.svg +++ /dev/null @@ -1,5 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" viewBox="0 0 24 24" height="24" width="24" version="1.1"> - <metadata id="metadata3412"/> - <circle r="12" cy="12" cx="12" id="path3416" fill="#0000ff" fill-rule="evenodd"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/96-1.svg b/htdocs/public/symbols/svgicons/96-1.svg deleted file mode 100755 index 15d8c94..0000000 --- a/htdocs/public/symbols/svgicons/96-1.svg +++ /dev/null @@ -1,21 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata4106"/> - <g inkscape:label="Ebene 1" inkscape:groupmode="layer" id="layer1" transform="translate(-317.72197,-453.96166)"> - <g id="g4068" transform="matrix(0.24863142,0.13038661,-0.13038661,0.24863142,298.90668,257.36886)"> - <g transform="matrix(0.83109018,-0.84335752,0.84335752,0.83109018,-425.72131,478.52845)" id="g4046"> - <path d="m 443.65385,563.57293 c -1.05193,-0.0129 -2.10701,0.0598 -3.12744,0.18048 l 0.06,2.75094 c 0.99036,-0.12733 2.00989,-0.19417 3.0337,-0.18162 12.83055,0.15709 23.11001,11.57671 22.93914,25.53274 -0.002,0.17643 -0.001,0.35569 -0.007,0.53121 l 2.50057,-0.0319 c 0.004,-0.15699 0.004,-0.31113 0.006,-0.46872 0.18944,-15.473 -11.18011,-28.13898 -25.40528,-28.31315 z" id="path3194" inkscape:connector-curvature="0" stroke="#000000" stroke-width="0"/> - <path d="m 442.89836,570.53348 c -0.79783,-0.01 -1.59802,0.0454 -2.37195,0.13688 l 0.0455,2.52833 c 0.75111,-0.0966 1.52436,-0.14725 2.30084,-0.13774 9.73108,0.11913 16.95911,8.33817 16.82952,18.92284 -0.002,0.1338 -10e-4,0.26976 -0.005,0.40289 l 2.46472,-0.0242 c 0.003,-0.11907 0.003,-0.23598 0.004,-0.35547 0.14368,-11.73519 -8.47933,-21.34145 -19.26811,-21.47354 z" id="path3194-4" inkscape:connector-curvature="0" sodipodi:nodetypes="cccscccccc" stroke="#000000" stroke-width="0"/> - <path d="m 442.20847,576.88946 c -0.56577,-0.007 -1.13323,0.0322 -1.68206,0.0971 l 0.0323,2.42658 c 0.53265,-0.0685 1.081,-0.10442 1.63165,-0.0977 6.90079,0.46331 10.91426,5.09 11.13804,12.78552 -10e-4,0.0949 -7.7e-4,0.19129 -0.003,0.28572 l 2.54446,-0.0171 c 0.002,-0.0845 0.002,-0.16735 0.003,-0.25208 0.10189,-8.32201 -6.01312,-15.13429 -13.66399,-15.22797 z" id="path3194-0" inkscape:connector-curvature="0" sodipodi:nodetypes="cccccccccc" stroke="#000000" stroke-width="0"/> - </g> - <g transform="translate(4.3272904,0)" id="g4061"> - <path inkscape:connector-curvature="0" d="m 428.82958,632.50381 c 1.51739,8.39514 3.18843,16.70366 3.25039,25.86381 13.43389,-7.07008 16.24573,-8.60045 29.67957,-15.67062 -4.84405,-3.37683 -9.59166,-7.39353 -13.56307,-11.22903 -6.14118,1.98174 -12.37667,2.63171 -19.36689,1.03584 z m 3.03559,3.5588 2.90054,0.34654 c 1.65734,7.68989 1.24429,15.11973 -0.19508,18.63703 -0.5999,-6.11993 -0.9108,-10.44519 -2.70546,-18.98357 z" id="path4401"/> - <path inkscape:connector-curvature="0" d="m 398.11826,602.8218 c 5.46403,15.3042 20.05405,26.26585 37.2409,26.32057 17.18753,0.0547 31.81943,-10.80285 37.38029,-26.07291 l -74.62119,-0.24766 z m 6.11343,4.37701 6.55964,0.18844 c 4.52018,8.23085 9.05564,11.77782 15.40988,16.82483 -9.13544,-2.75636 -16.94711,-7.80772 -21.96952,-17.01327 z" id="path3423-9-5"/> - <g id="g4055" transform="translate(2.1996971,2)"> - <rect y="594.76" x="431.59" height="8.08" width="3.283" id="rect4051" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - <ellipse id="path4053" cx="433.23" cy="594.01" rx="3.409" ry="3.788" stroke="#000000" stroke-linejoin="round" stroke-linecap="round" stroke-width="0"/> - </g> - </g> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/96-2.svg b/htdocs/public/symbols/svgicons/96-2.svg deleted file mode 100755 index 2d693f8..0000000 --- a/htdocs/public/symbols/svgicons/96-2.svg +++ /dev/null @@ -1,20 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata3212"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <g id="g3121"> - <path d="m 587.001,191.775 c 0,-34.867 -24.173,-64.178 -56.635,-72.094 -0.487,-0.119 -0.977,-0.23 -1.468,-0.34 -1.321,0.132 -2.625,-0.138 -3.761,-0.734 -4.019,-0.676 -8.14,-1.047 -12.347,-1.047 -14.877,0 -29.225,4.381 -41.491,12.671 -3.054,2.063 -7.2,1.261 -9.263,-1.792 -0.774,-1.146 -1.145,-2.447 -1.144,-3.735 0.002,-2.139 1.03,-4.239 2.936,-5.526 14.481,-9.786 31.411,-14.959 48.962,-14.959 1.654,0 3.297,0.051 4.928,0.142 C 499.864,65.46 460.832,40.014 417.312,40.014 c -46.851,0 -87.649,29.456 -103.479,71.663 -2.983,7.955 -5.083,16.361 -6.166,25.111 -0.418,3.378 -3.293,5.852 -6.612,5.852 -0.207,0 -0.417,-0.019 -0.627,-0.039 -0.067,-0.006 -0.133,-0.004 -0.2,-0.012 -3.656,-0.452 -6.253,-3.783 -5.801,-7.439 1.036,-8.369 2.905,-16.456 5.507,-24.189 -42.585,1.412 -76.817,35.727 -78.098,78.348 8.087,0.308 15.9,2.767 22.695,7.162 1.975,1.276 3.044,3.421 3.043,5.609 -0.001,1.24 -0.342,2.495 -1.065,3.614 -2,3.095 -6.129,3.979 -9.224,1.978 -4.437,-2.869 -9.495,-4.561 -14.755,-4.959 -0.804,-0.062 -1.611,-0.097 -2.423,-0.097 -14.922,0 -27.461,10.372 -30.804,24.284 11.929,-3.955 24.376,-6.65 37.163,-7.951 5.847,-0.594 11.765,-0.901 17.736,-0.901 5.979,0 11.893,0.314 17.732,0.909 11.826,1.203 23.331,3.594 34.384,7.062 20.481,6.429 39.406,16.55 55.945,29.621 6.605,5.221 12.835,10.904 18.624,17.02 h 135.23 c 44.668,0 80.877,-36.205 80.885,-80.871 0,-0.006 -10e-4,-0.01 -10e-4,-0.014 z" id="path3123" inkscape:connector-curvature="0" fill="#b3b3b3"/> - <path d="m 521.806,465.719 c -1.138,0 -2.266,0.055 -3.387,0.139 -14.255,1.062 -27.023,8.777 -34.622,21.114 -2.721,4.414 -8.506,5.79 -12.921,3.07 -2.88,-1.773 -4.455,-4.852 -4.456,-8.002 0,-1.681 0.439,-3.382 1.385,-4.918 11.22,-18.215 30.377,-29.352 51.597,-30.136 -1.799,-60.006 -50.021,-108.336 -109.977,-110.315 3.667,10.895 6.302,22.287 7.761,34.077 0.637,5.147 -3.02,9.836 -8.166,10.473 -0.094,0.012 -0.187,0.009 -0.281,0.018 -0.296,0.027 -0.592,0.055 -0.884,0.055 -4.672,0 -8.72,-3.482 -9.308,-8.238 -1.525,-12.323 -4.483,-24.163 -8.688,-35.367 -9.626,-25.658 -25.811,-47.963 -46.402,-65.029 -2.799,-2.319 -5.68,-4.541 -8.637,-6.662 -25.652,-18.406 -57.028,-29.169 -90.619,-29.169 -2.87,0 -5.725,0.084 -8.565,0.239 -15.718,0.86 -30.94,4.069 -45.253,9.344 -38.31,14.117 -70.116,42.994 -87.554,81 2.307,-0.129 4.63,-0.201 6.969,-0.201 24.705,0 48.537,7.281 68.921,21.057 2.683,1.812 4.13,4.769 4.133,7.779 0.002,1.812 -0.52,3.645 -1.61,5.259 -2.904,4.298 -8.741,5.427 -13.038,2.522 -17.267,-11.669 -37.463,-17.836 -58.405,-17.836 -5.904,0 -11.693,0.5 -17.333,1.446 -1.631,0.87 -3.511,1.261 -5.415,1.056 -0.665,0.148 -1.328,0.304 -1.988,0.465 -45.703,11.139 -79.73,52.417 -79.73,101.501 0,0.011 -0.001,0.021 -0.001,0.031 0.017,62.868 50.986,113.828 113.86,113.828 H 405.6 512.417 c 29.816,0 53.992,-24.176 53.992,-53.997 0,-24.594 -20.009,-44.603 -44.603,-44.603 z" id="path3125" inkscape:connector-curvature="0" fill="#b3b3b3"/> - </g> - <path inkscape:connector-curvature="0" d="m 21.88398,1038.5155 c -0.04769,0 -0.09489,0 -0.141856,0.01 -0.597215,0.045 -1.132066,0.3756 -1.450436,0.9034 -0.11399,0.189 -0.356287,0.2478 -0.541245,0.1314 -0.120706,-0.076 -0.186688,-0.2076 -0.186768,-0.3423 0,-0.072 0.01841,-0.1448 0.05806,-0.2105 0.469996,-0.7795 1.272514,-1.256 2.161522,-1.2895 -0.07535,-2.5677 -2.09554,-4.6358 -4.607196,-4.7205 0.153595,0.4662 0.263928,0.9537 0.325044,1.4582 0.0267,0.2202 -0.126455,0.4209 -0.342093,0.4481 -0.0039,5e-4 -0.0077,4e-4 -0.01174,8e-4 -0.01238,0 -0.02485,0 -0.03703,0 -0.195694,0 -0.365293,-0.1491 -0.389981,-0.3525 -0.06386,-0.5273 -0.187772,-1.0339 -0.363886,-1.5134 -0.403249,-1.0979 -1.081283,-2.0523 -1.943954,-2.7826 -0.117288,-0.099 -0.237952,-0.1944 -0.361794,-0.2851 -1.07473,-0.7876 -2.389102,-1.2481 -3.796314,-1.2481 -0.120224,0 -0.239844,0 -0.3587801,0.01 -0.6584926,0.037 -1.2961572,0.174 -1.895825,0.3997 -1.6048771,0.604 -2.9373425,1.8398 -3.6678885,3.4661 0.096661,-0.01 0.1939652,-0.01 0.291953,-0.01 1.0349234,0 2.0333377,0.3115 2.8872831,0.901 0.1123824,0.077 0.1730167,0.204 0.1731373,0.3328 8.04e-5,0.077 -0.021793,0.156 -0.06747,0.225 -0.1216706,0.184 -0.3661778,0.2323 -0.5461907,0.1079 -0.7233486,-0.4993 -1.5694133,-0.7631 -2.4467601,-0.7631 -0.2473619,0 -0.4898988,0.021 -0.7261633,0.062 -0.068354,0.037 -0.1470822,0.054 -0.2268556,0.045 -0.027864,0.01 -0.055648,0.013 -0.083311,0.02 -1.9144816,0.4768 -3.33994892,2.243 -3.33994892,4.3434 0,5e-4 -4.021e-5,9e-4 -4.021e-5,0 6.8354e-4,2.6902 2.13594933,4.8707 4.76987943,4.8707 l 11.9984616,0 4.47487,0 c 1.249034,0 2.261883,-1.0344 2.261883,-2.3105 0,-1.0524 -0.838265,-1.9086 -1.868564,-1.9086 z" id="path4305" fill="#b3b3b3" stroke="#808080" stroke-width="0.495"/> - <g id="g4307" transform="matrix(0.04105515,0,0,0.04105515,-0.37250317,1028.0717)"> - <path inkscape:connector-curvature="0" d="m 45.378,497.42 c -3.818,10.365 1.488,21.863 11.853,25.682 2.281,0.84 4.616,1.238 6.912,1.238 8.14,0 15.791,-5.008 18.769,-13.092 l 49.855,-135.322 -42.627,0 -44.762,121.494 z" id="path4309" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" d="m 181.378,497.42 c -3.818,10.365 1.488,21.863 11.853,25.682 2.281,0.84 4.616,1.238 6.912,1.238 8.14,0 15.791,-5.008 18.769,-13.092 l 49.855,-135.322 -42.627,0 -44.762,121.494 z" id="path4311" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" d="m 317.379,497.42 c -3.818,10.365 1.488,21.863 11.853,25.682 2.28,0.84 4.616,1.238 6.912,1.238 8.14,0 15.79,-5.008 18.769,-13.092 l 49.855,-135.322 -42.628,0 -44.761,121.494 z" id="path4313" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" d="m 498.139,375.926 -44.76,121.494 c -3.818,10.365 1.488,21.863 11.853,25.682 2.28,0.84 4.616,1.238 6.912,1.238 8.14,0 15.79,-5.008 18.769,-13.092 l 49.855,-135.322 -42.629,0 z" id="path4315" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" d="m 91.823,555.93 c -3.818,10.363 1.488,21.861 11.853,25.68 2.281,0.842 4.616,1.24 6.912,1.24 8.14,0 15.791,-5.008 18.769,-13.092 l 71.411,-193.832 -42.628,0 -66.317,180.004 z" id="path4317" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" d="m 227.823,555.93 c -3.818,10.363 1.488,21.861 11.853,25.68 2.281,0.842 4.616,1.24 6.912,1.24 8.141,0 15.791,-5.008 18.77,-13.092 l 71.41,-193.832 -42.628,0 -66.317,180.004 z" id="path4319" fill="#b3b3b3"/> - <path inkscape:connector-curvature="0" d="m 363.822,555.93 c -3.818,10.363 1.488,21.861 11.854,25.68 2.281,0.842 4.615,1.24 6.912,1.24 8.141,0 15.791,-5.008 18.77,-13.092 l 71.41,-193.832 -42.629,0 -66.317,180.004 z" id="path4321" fill="#b3b3b3"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/97-1.svg b/htdocs/public/symbols/svgicons/97-1.svg deleted file mode 100755 index da0c794..0000000 --- a/htdocs/public/symbols/svgicons/97-1.svg +++ /dev/null @@ -1,11 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.0" width="24" height="24" viewBox="0 0 24 24" enable-background="new 0 0 100 68.387"> - <metadata id="metadata15"/> - <path inkscape:connector-curvature="0" d="m 12.349522,5.5937539 0,-0.5564514 0.72689,0 0,-0.352091 c 0,-0.6262128 0.547149,-1.1323266 1.223973,-1.1323266 0.675731,0 1.222335,0.5063872 1.222335,1.1323266 l 0,0.352091 0.711293,0 0,0.5564514 -3.884491,0 z" id="path3" fill="#0000ff" stroke="#000000" stroke-width="0"/> - <g id="g4137" transform="matrix(0.99169525,0,0,0.99169525,0.09965485,0.10761902)"> - <path id="path5" d="m 18.133659,15.805247 c -1.105106,0 -2.000949,0.895303 -2.000949,1.999789 0,1.104698 0.895843,2.000211 2.000949,2.000211 1.104261,0 1.999051,-0.895513 1.999051,-2.000211 0,-1.104486 -0.89479,-1.999789 -1.999051,-1.999789 z m -4.23e-4,2.956815 c -0.528738,0 -0.957166,-0.428271 -0.957166,-0.956814 0,-0.528545 0.428428,-0.956183 0.957166,-0.956183 0.528108,0 0.956115,0.427428 0.956115,0.956183 0,0.528543 -0.428007,0.956814 -0.956115,0.956814 z" inkscape:connector-curvature="0" stroke="#000000" stroke-width="0.4"/> - <path id="path7" d="m 5.3582413,15.783389 c -1.1040294,0 -1.9996839,0.896239 -1.9996839,2.000421 0,1.104815 0.8954438,1.999579 1.9996839,1.999579 1.1048723,0 2.0003161,-0.894764 2.0003161,-1.999579 0,-1.104182 -0.8954438,-2.000421 -2.0003161,-2.000421 z m 0.00442,2.959234 c -0.528417,0 -0.956966,-0.427895 -0.956966,-0.956916 0,-0.52839 0.428549,-0.956285 0.956966,-0.956285 0.5284173,0 0.9567554,0.427895 0.9567554,0.956285 -2.108e-4,0.529021 -0.4283381,0.956916 -0.9567554,0.956916 z" inkscape:connector-curvature="0" stroke="#000000" stroke-width="0.4"/> - <ellipse ry="3.917" rx="3.957" cy="12" cx="10.695" id="path4147" fill="#ff0000" stroke-width="0.1"/> - <path sodipodi:nodetypes="cccscsccscsssscscccccccccccccccccccc" id="path9" d="m 21.878581,11.460007 c 0.666324,0.12974 1.065414,0.417658 1.366258,2.062197 l 0.475711,2.968492 c 0.171341,0.965994 -0.374646,1.318312 -1.055072,1.318312 l -1.634669,0 c 0,-1.600589 -1.296688,-2.902683 -2.897041,-2.902683 -1.600589,0 -2.898687,1.302329 -2.898687,2.902683 l -6.9861805,0 c 0,-1.600589 -1.2973932,-2.902683 -2.8979817,-2.902683 -1.6012936,0 -2.8986868,1.302329 -2.8986868,2.902683 l -1.3545068,0 c -0.47688607,0 -0.84871145,-0.361015 -0.84871145,-0.827089 l 0,-9.7605333 c 0,-0.5318841 0.41977253,-0.9591779 0.93426415,-0.9591779 l 15.0765561,0 2.463401,0 c 0.666325,0 1.153788,0.3309294 1.394698,0.9107608 z m -5.846731,-3.7820206 0,3.6337136 4.183427,0 -1.644539,-3.6337136 z m -4.193965,3.1133456 0,-2.487845 -2.4878456,0 0,2.487845 -2.4883156,0 0,2.488316 2.4883156,0 0,2.48761 2.4878456,0 0,-2.48761 2.487846,0 0,-2.488316 z" inkscape:connector-curvature="0" fill="#ffffff" stroke="#000000" stroke-width="0.7"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/97-2.svg b/htdocs/public/symbols/svgicons/97-2.svg deleted file mode 100755 index 0685dd7..0000000 --- a/htdocs/public/symbols/svgicons/97-2.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24" viewBox="0 0 24 24"> - <metadata id="metadata4733"/> - <g inkscape:groupmode="layer" id="layer9" inkscape:label="Layer 1"> - <path sodipodi:type="star" id="path4741" sodipodi:sides="4" sodipodi:cx="12" sodipodi:cy="12" sodipodi:r1="11.990243" sodipodi:r2="8.4783821" sodipodi:arg1="0" sodipodi:arg2="0.78539816" inkscape:flatsided="true" inkscape:rounded="-3.469447e-18" inkscape:randomized="0" d="M 23.990243,12 12,23.990243 0.00975704,12 12,0.00975704 Z" transform="matrix(0.88484358,0,0,0.8847113,1.381877,1.3834644)" fill="#ff0000" stroke="#ff0000" stroke-linejoin="round" stroke-linecap="round" stroke-width="3.145"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/98-1.svg b/htdocs/public/symbols/svgicons/98-1.svg deleted file mode 100755 index 38cb967..0000000 --- a/htdocs/public/symbols/svgicons/98-1.svg +++ /dev/null @@ -1,18 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.0"> - <metadata id="metadata3205"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-73)"> - <text x="-35.536" y="68.786" id="text3301" font-family="RoadSign" font-size="72"><tspan sodipodi:role="line" id="tspan3303" x="-35.536" y="68.786"/> - </text> - <text x="-14.286" y="63.25" id="text3305" font-family="RoadSign" font-size="72"><tspan sodipodi:role="line" id="tspan3307" x="-14.286" y="63.25"/> - </text> - <text x="-10.536" y="52.54" id="text3309" font-family="RoadSign" font-size="72"><tspan sodipodi:role="line" id="tspan3311" x="-10.536" y="52.54"/> - </text> - <g id="g4201" transform="translate(-24.61803,17.041885)"> - <path id="path3555" d="m 40.755457,59.2729 c -1.8e-5,-0.549346 -0.194586,-1.007152 -0.583704,-1.37342 -0.366262,-0.366222 -0.824068,-0.549344 -1.373419,-0.549368 -0.526493,2.4e-5 -0.984299,0.194592 -1.37342,0.583703 -0.36626,0.366269 -0.549382,0.81263 -0.549368,1.339085 -1.4e-5,0.526499 0.183108,0.984305 0.549368,1.373419 0.389121,0.366266 0.846927,0.549388 1.37342,0.549368 0.549351,2e-5 1.007157,-0.183102 1.373419,-0.549368 0.389118,-0.366224 0.583686,-0.82403 0.583704,-1.373419" inkscape:connector-curvature="0"/> - <path id="path3551" d="m 41.957199,64.938256 c -1.9e-5,-0.572241 -0.274702,-0.85837 -0.824052,-0.858387 l -2.300478,0 -1.716775,-3.227537 c -0.274697,-0.389114 -0.652388,-0.583682 -1.133071,-0.583703 -0.5036,2.1e-5 -0.88129,0.183144 -1.133071,0.549368 l -3.708234,3.639562 c -0.297582,0.297591 -0.446369,0.709617 -0.446361,1.236078 -8e-6,0.686725 0.21745,1.144531 0.652374,1.37342 l 4.188931,2.300478 -0.03434,4.18893 c -1.2e-5,0.686717 0.343342,1.030072 1.030065,1.030065 0.709586,7e-6 1.064386,-0.343348 1.0644,-1.030065 l 0,-5.150324 c -1.4e-5,-0.27467 -0.125911,-0.62947 -0.37769,-1.0644 l -2.815511,-1.510762 2.266143,-2.300478 0.961394,1.854117 c 0.137327,0.251809 0.377675,0.377706 0.721045,0.37769 l 2.74684,0 c 0.572239,1.6e-5 0.858368,-0.274668 0.858387,-0.824052" inkscape:connector-curvature="0"/> - <path id="path3547" d="m 47.857557,73.316117 c -2.7e-5,1.232373 -0.434978,2.283509 -1.304859,3.153408 -0.86993,0.86991 -1.921065,1.304863 -3.153408,1.304859 -1.232387,4e-6 -2.283522,-0.434949 -3.153408,-1.304859 -0.869924,-0.869899 -1.304876,-1.921035 -1.304859,-3.153408 -1.7e-5,-1.232357 0.434935,-2.283492 1.304859,-3.153408 0.869886,-0.869893 1.921021,-1.304845 3.153408,-1.304859 1.232343,1.4e-5 2.283478,0.434966 3.153408,1.304859 0.869881,0.869916 1.304832,1.921051 1.304859,3.153408" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-width="1.583"/> - <path id="text3540" d="m 34.295036,73.316117 c -1.1e-5,1.232373 -0.434964,2.283509 -1.304858,3.153408 -0.869915,0.86991 -1.92105,1.304863 -3.153408,1.304859 -1.232373,4e-6 -2.283508,-0.434949 -3.153409,-1.304859 -0.869909,-0.869899 -1.304861,-1.921035 -1.304858,-3.153408 -3e-6,-1.232357 0.434949,-2.283492 1.304858,-3.153408 0.869901,-0.869893 1.921036,-1.304845 3.153409,-1.304859 1.232358,1.4e-5 2.283493,0.434966 3.153408,1.304859 0.869894,0.869916 1.304847,1.921051 1.304858,3.153408" inkscape:connector-curvature="0" fill="none" stroke="#000000" stroke-width="1.583"/> - </g> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/98-2.svg b/htdocs/public/symbols/svgicons/98-2.svg deleted file mode 100755 index f037c81..0000000 --- a/htdocs/public/symbols/svgicons/98-2.svg +++ /dev/null @@ -1,12 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" width="24" height="24" version="1.1"> - <metadata id="metadata4044"/> - <g inkscape:label="Layer 1" inkscape:groupmode="layer" id="layer1" transform="translate(0,-1028.3622)"> - <path sodipodi:type="spiral" id="path4049" sodipodi:cx="334.28571" sodipodi:cy="423.79074" sodipodi:expansion="0.69" sodipodi:revolution="0.98159838" sodipodi:radius="259.73999" sodipodi:argument="-10.691573" sodipodi:t0="0.27220243" d="M 237.31145,381.40835 C 239.11471,299.73947 328.93243,255.98729 401.1349,270.8345 508.43992,292.89994 562.8951,410.94953 535.07058,511.54334 505.06609,620.0184 395.6532,687.41952 285.64468,678.93563" transform="matrix(0.02139504,-0.00206403,0.00238602,0.0185078,10.27631,1029.4979)" fill="none" stroke="#4d4d4d" stroke-linecap="round" stroke-width="99.89"/> - <path d="m 18.038234,1041.4669 -4.258212,-0.026 -12.79635679,0" id="path4561" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" fill="none" stroke="#4d4d4d" stroke-linecap="round" stroke-width="1.9"/> - <path sodipodi:type="spiral" id="path4049-7" sodipodi:cx="334.28571" sodipodi:cy="423.79074" sodipodi:expansion="0.69" sodipodi:revolution="0.98159838" sodipodi:radius="259.73999" sodipodi:argument="-10.691573" sodipodi:t0="0.27220243" d="M 237.31145,381.40835 C 239.11471,299.73947 328.93243,255.98729 401.1349,270.8345 508.43992,292.89994 562.8951,410.94953 535.07058,511.54334 505.06609,620.0184 395.6532,687.41952 285.64468,678.93563" transform="matrix(0.01283702,-0.00123842,0.00143161,0.01110468,5.8580561,1031.741)" fill="none" stroke="#4d4d4d" stroke-linecap="round" stroke-width="166.48"/> - <path d="m 10.521214,1038.9285 -1.4203126,-0.028 -4.2681873,0" id="path4561-9" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" fill="none" stroke="#4d4d4d" stroke-linecap="round" stroke-width="1.9"/> - <path sodipodi:type="spiral" id="path4049-0" sodipodi:cx="334.28571" sodipodi:cy="423.79074" sodipodi:expansion="0.69" sodipodi:revolution="0.98159838" sodipodi:radius="259.73999" sodipodi:argument="-10.691573" sodipodi:t0="0.27220243" d="M 237.31145,381.40835 C 239.11471,299.73947 328.93243,255.98729 401.1349,270.8345 508.43992,292.89994 562.8951,410.94953 535.07058,511.54334 505.06609,620.0184 395.6532,687.41952 285.64468,678.93563" transform="matrix(0.00855802,8.25612e-4,9.54408e-4,-0.00740312,12.757315,1048.7221)" fill="none" stroke="#4d4d4d" stroke-linecap="round" stroke-width="249.72"/> - <path d="m 15.912862,1043.9369 -3.193959,0 -9.5981739,0" id="path4561-3" inkscape:connector-curvature="0" sodipodi:nodetypes="ccc" fill="none" stroke="#4d4d4d" stroke-linecap="round" stroke-width="1.9"/> - </g> -</svg> diff --git a/htdocs/public/symbols/svgicons/99-1.svg b/htdocs/public/symbols/svgicons/99-1.svg deleted file mode 100755 index 23524be..0000000 --- a/htdocs/public/symbols/svgicons/99-1.svg +++ /dev/null @@ -1,7 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3070"/> - <rect id="rect3080" width="24" height="24" fill="#ffffff"/> - <path d="M 24,-2e-7 1.5e-7,24 24,24 z" id="path3076" inkscape:connector-curvature="0" fill="#00a900"/> - <rect id="rect3074" width="23" height="23" x="0.499" y="0.499" fill="none" stroke="#000000" stroke-width="0.998"/> -</svg> diff --git a/htdocs/public/symbols/svgicons/99-2.svg b/htdocs/public/symbols/svgicons/99-2.svg deleted file mode 100755 index 58dc6a8..0000000 --- a/htdocs/public/symbols/svgicons/99-2.svg +++ /dev/null @@ -1,6 +0,0 @@ -<?xml version="1.0" encoding="UTF-8" standalone="no"?> -<svg xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" version="1.1" width="24" height="24"> - <metadata id="metadata3070"/> - <path sodipodi:type="arc" id="path3877" sodipodi:cx="12" sodipodi:cy="10.881356" sodipodi:rx="9.0508471" sodipodi:ry="9.0508471" d="m 21.050847,10.881356 a 9.0508471,9.0508471 0 1 1 -18.1016941,0 9.0508471,9.0508471 0 1 1 18.1016941,0 z" transform="matrix(1.3258428,0,0,1.3258428,-3.9101136,-2.4269678)"/> - <path sodipodi:type="star" id="path3879" sodipodi:sides="3" sodipodi:cx="11.186441" sodipodi:cy="12.610169" sodipodi:r1="12.604427" sodipodi:r2="6.3022137" sodipodi:arg1="0.52359878" sodipodi:arg2="1.5707963" inkscape:flatsided="false" inkscape:rounded="0" inkscape:randomized="0" d="m 22.102196,18.912383 -10.915754,0 -10.91575488,0 L 5.7285642,9.4590627 11.186441,0.00574207 16.644318,9.4590624 z" inkscape:transform-center-y="-2.8060175" transform="matrix(0.80756234,0,0,0.8904864,2.9662512,1.3039895)" fill="#ffff00" stroke="#ffff00" stroke-linejoin="round" stroke-width="1.125"/> -</svg> diff --git a/htdocs/public/symbols/symbol.php b/htdocs/public/symbols/symbol.php deleted file mode 100755 index 95afbcd..0000000 --- a/htdocs/public/symbols/symbol.php +++ /dev/null @@ -1,464 +0,0 @@ -<?php -header('Access-Control-Allow-Origin: *'); -header("Cache-Control: max-age=2592000"); //30days (60sec * 60min * 24hours * 30days) - - -// Contains ascii values that corresponds to symbols with overlay support (for symbols in the alternative table) -$alternativeSymbolWithOverlaySupport = [33, 35, 37, 38, 39, 45, 62, 64, 79, 87, 91, 95, 97, 115, 122, 48, 65, 68, 69, 72, 94, 99, 105, 110, 117, 118]; - -$alternativeSymbolThatShouldNotBeFlipped = [115, 62, 94, 79]; -$primarySymbolThatShouldNotBeFlipped = [94, 83, 39, 88]; - -$primarySymbolRotateDiff[40] = -90; -$primarySymbolRotateDiff[42] = -90; -$primarySymbolRotateDiff[60] = -90; -$primarySymbolRotateDiff[61] = -90; -$primarySymbolRotateDiff[62] = -90; -$primarySymbolRotateDiff[67] = -90; -$primarySymbolRotateDiff[70] = -90; -$primarySymbolRotateDiff[80] = -90; -$primarySymbolRotateDiff[85] = -90; -$primarySymbolRotateDiff[89] = -90; -$primarySymbolRotateDiff[91] = -90; -$primarySymbolRotateDiff[97] = -90; -$primarySymbolRotateDiff[98] = -90; -$primarySymbolRotateDiff[101] = -90; -$primarySymbolRotateDiff[102] = -90; -$primarySymbolRotateDiff[103] = -90; -$primarySymbolRotateDiff[106] = -90; -$primarySymbolRotateDiff[107] = -90; -$primarySymbolRotateDiff[115] = -90; -$primarySymbolRotateDiff[117] = -90; -$primarySymbolRotateDiff[118] = -90; - -$primarySymbolRotateDiff[39] = 0; // Small Airplace -$primarySymbolRotateDiff[94] = 0; // Large Airplane -$primarySymbolRotateDiff[83] = 0; -$primarySymbolRotateDiff[88] = 0; // Helicopter - -$alternativeSymbolRotateDiff[106] = -90; -$alternativeSymbolRotateDiff[107] = -90; -$alternativeSymbolRotateDiff[117] = -90; -$alternativeSymbolRotateDiff[115] = 0; -$alternativeSymbolRotateDiff[118] = -90; -$alternativeSymbolRotateDiff[91] = -90; -$alternativeSymbolRotateDiff[94] = 0; -$alternativeSymbolRotateDiff[79] = 0; -$alternativeSymbolRotateDiff[62] = 0; - -$svgContent = null; -if (isset($_GET['symbol']) && isset($_GET['symbol_table'])) { - - // symbol and symbol_table is ascii values so everything should be numbers - $symbol = preg_replace("/[^0-9]/","",$_GET['symbol']); - $symbolTable = preg_replace("/[^0-9]/","",$_GET['symbol_table']); - - if ($symbol >= 32 && $symbol <= 126) { - - // Init $course - if (isset($_GET['course'])) { - $course = preg_replace("/[^0-9]/","",$_GET['course']); - while ($course > 360) { - $course = $course - 360; - } - while ($course < 0) { - $course = $course + 360; - } - if ($course == 360) { - $course = 0; - } - } else { - $course = null; - } - - // Init hight and width - if (isset($_GET['width']) && isset($_GET['height'])) { - $width = preg_replace("/[^0-9]/","",$_GET['width']); - $height = preg_replace("/[^0-9]/","",$_GET['height']); - - if ($width > 1024) { - $width = 1024; - } - - if ($height > 1024) { - $height = 1024; - } - } else { - $width = null; - $height = null; - } - - // Init scale hight and width - if (isset($_GET['scale_width']) && isset($_GET['scale_height'])) { - $scaleWidth = preg_replace("/[^0-9]/","",$_GET['scale_width']); - $scaleHeight = preg_replace("/[^0-9]/","",$_GET['scale_height']); - - if ($scaleWidth > 1024) { - $scaleWidth = 1024; - } - - if ($scaleHeight > 1024) { - $scaleHeight = 1024; - } - - if ($scaleWidth == 24 && $scaleHeight == 24) { - $scaleWidth = null; - $scaleHeight = null; - } - } else { - $scaleWidth = null; - $scaleHeight = null; - } - - // Init $symbolCategory and $overlay - $overlay = null; - if ($symbolTable == 47) { - // Primary table (47 == '/') - $symbolCategory = 1; - - } else if ($symbolTable == 92) { - // Alternative table (92 == '\') - $symbolCategory = 2; - - } else if (preg_match("/^[a-zA-Z\d]$/", chr($symbolTable))) { - // Alternative table with overlay - - $filepath1 = './svgicons/' . $symbol . '-' . $symbolTable . '.svg'; - $filepath2 = './svgicons/' . $symbol . '-' . '3.svg'; - if (file_exists($filepath1)) { - $symbolCategory = $symbolTable; - } else if (file_exists($filepath2)) { - $symbolCategory = 3; - } else { - $symbolCategory = 2; - } - - if (in_array($symbol, $alternativeSymbolWithOverlaySupport) && ($symbolCategory == 2 || $symbolCategory == 3)) { - $overlay = chr($symbolTable); - } - - } else { - // Use primary if nothing else fits - $symbolCategory = 1; - } - - // Init $filepath - $name = $symbol . '-' . $symbolCategory; - $filepath = './svgicons/' . $name . '.svg'; - - if (file_exists($filepath)) { - $svgContent = file_get_contents($filepath); - - if ($overlay !== null || $course !== null || ($width !== null && $height !== null) || ($scaleWidth !== null && $scaleHeight !== null)) { - - // We will do changes to symbol (course or overlay) - - $doc = new DOMDocument(); - $doc->loadXML($svgContent); - $svg = $doc->getElementsByTagName('svg')->item(0); - - $childs = Array(); - foreach ($svg->childNodes as $child) { - if (isset($child->tagName) && $child->tagName != 'metadata') { - $childs[] = $child; - } - } - - // Wrapper1 used for width and height transfrom - $wrapper1 = $doc->createElement('g'); - $wrapper1 = $svg->appendChild($wrapper1); - - // Wrapper 2 used for rotate - $wrapper2 = $doc->createElement('g'); - $wrapper2 = $wrapper1->appendChild($wrapper2); - - // Wrapper 3 used for flip - $wrapper3 = $doc->createElement('g'); - $wrapper3 = $wrapper2->appendChild($wrapper3); - - // Wrapper 4 used for text - $wrapper4 = $doc->createElement('g'); - $wrapper4 = $wrapper3->appendChild($wrapper4); - - foreach ($childs as $child) { - $removedChild = $svg->removeChild($child); - $wrapper4->appendChild($child); - } - - if ($overlay !== null) { - // We should add overlay - // dominant-baseline do not seem to be supported by internet explorer so we have to do vertical alignment manual by changing y - - $text = $doc->createElement('text'); - $text->setAttribute('id','textoverlay'); - $text = $wrapper4->appendChild($text); - - $tspan = $doc->createElement('tspan', chr($symbolTable)); - $tspan = $text->appendChild($tspan); - - $tspan->setAttribute('id','tspanoverlay'); - //$tspan->setAttribute('sodipodi:linespacing','0%'); - $tspan->setAttribute('font-family','Helvetica'); - $tspan->setAttribute('text-anchor','middle'); - $tspan->setAttribute('text-align','center'); - $tspan->setAttribute('word-spacing','0'); - //$tspan->setAttribute('line-height','0%'); - $tspan->setAttribute('letter-spacing','0'); - $tspan->setAttribute('font-weight','bold'); - $tspan->setAttribute('x','12'); // left/right (higher means more to the right) - $tspan->setAttribute('y','12'); // up/down (higher means more down) - - - // White text, normal size, bold, centered - if (in_array($symbol, Array(35, 38, 62, 87, 95, 97))) { - $tspan->setAttribute('fill','#ffffff'); - $tspan->setAttribute('font-size','14'); - $tspan->setAttribute('dy','5.2'); - $tspan->setAttribute('dx','0'); - - if (in_array(chr($symbolTable), array('Y', 'V'))) { - $tspan->setAttribute('dx','-0.2'); - } - - if (in_array(chr($symbolTable), array('S', 'W', 'Q'))) { - $tspan->setAttribute('dx','-0.1'); - } - - if (in_array(chr($symbolTable), array('R', 'P', 'D', 'F', 'K', 'L'))) { - $tspan->setAttribute('dx','0.4'); - } - } - - // White text, normal size, bold, centered (little bit to the left) - if (in_array($symbol, Array(105))) { - $tspan->setAttribute('fill','#ffffff'); - $tspan->setAttribute('font-size','14'); - $tspan->setAttribute('dy','4.5'); - $tspan->setAttribute('dx','-0.5'); - - if (in_array(chr($symbolTable), array('S', 'W'))) { - $tspan->setAttribute('dx','-0.6'); - } - - if (in_array(chr($symbolTable), array('R', 'P', 'D', 'F', 'K', 'L'))) { - $tspan->setAttribute('dx','-0.1'); - } - } - - // White/Yellow text, normal size, bold, centered, a bit lower - if (in_array($symbol, Array(37, 110, 115, 122))) { - if ($symbol == 37) { - $tspan->setAttribute('fill','#ffff00'); - } else { - $tspan->setAttribute('fill','#ffffff'); - } - $tspan->setAttribute('font-size','14'); - $tspan->setAttribute('dy','8'); - $tspan->setAttribute('dx','-0.1'); - - if (in_array(chr($symbolTable), array('T'))) { - $tspan->setAttribute('dx','0'); - } - - if (in_array(chr($symbolTable), array('S', 'Y'))) { - $tspan->setAttribute('dx','-0.2'); - } - } - - // Black text, normal size, bold, centered, a bit lower - if (in_array($symbol, Array(45))) { - $tspan->setAttribute('fill','#000000'); - $tspan->setAttribute('font-size','14'); - $tspan->setAttribute('dy','8'); - $tspan->setAttribute('dx','-0.1'); - - if (in_array(chr($symbolTable), array('S', 'Y'))) { - $tspan->setAttribute('dx','-0.2'); - } - } - - // White text, normal size, bold, centered - if (in_array($symbol, Array(68, 69))) { - $tspan->setAttribute('fill','#ffffff'); - $tspan->setAttribute('font-size','14'); - $tspan->setAttribute('dy','4.6'); - - if (in_array(chr($symbolTable), array('R', 'P', 'D', 'F', 'K', 'L'))) { - $tspan->setAttribute('dx','0.4'); - } - - - if (in_array(chr($symbolTable), array('S', 'Y'))) { - $tspan->setAttribute('dx','-0.2'); - } - } - - // Black text, normal size, bold, centered - if (in_array($symbol, Array(48, 65, 72))) { - $tspan->setAttribute('fill','#000000'); - $tspan->setAttribute('font-size','14'); - $tspan->setAttribute('dy','4.6'); - - if (in_array(chr($symbolTable), array('R', 'P', 'D', 'F', 'K', 'L'))) { - $tspan->setAttribute('dx','0.4'); - } - } - - // Black text, normal size, bold, centered, a bit higher - if (in_array($symbol, Array(79))) { - $tspan->setAttribute('fill','#000000'); - $tspan->setAttribute('font-size','14'); - $tspan->setAttribute('dy','1.5'); - - if (in_array(chr($symbolTable), array('R', 'P', 'D', 'F', 'K', 'L'))) { - $tspan->setAttribute('dx','0.4'); - } - } - - // Black text, smaller size, bold, centered - if (in_array($symbol, Array(99))) { - $tspan->setAttribute('fill','#000000'); - $tspan->setAttribute('font-size','12'); - $tspan->setAttribute('dy','5'); - - if (in_array(chr($symbolTable), array('S', 'W'))) { - $tspan->setAttribute('dx','-0.1'); - } - } - - // Black text, very very small size, bold, right upper corner (besides airplane, human, symbol) - if (in_array($symbol, Array(33, 39, 91, 94))) { - $tspan->setAttribute('fill','#000000'); - $tspan->setAttribute('font-size','9'); - if ($symbol == 39 || $symbol == 33) { - $tspan->setAttribute('dx','17'); - } else { - $tspan->setAttribute('dx','11'); - } - $tspan->setAttribute('dy','-4'); - } - - // White text, small size, bold, centered, a bit lower - if (in_array($symbol, Array(64))) { - $tspan->setAttribute('fill','#ffffff'); - $tspan->setAttribute('font-size','10'); - $tspan->setAttribute('dy','3.4'); - $tspan->setAttribute('dx','-0.1'); - } - - // White text, very small size, bold, a bit to the right (on trucks) - if (in_array($symbol, Array(117))) { - $tspan->setAttribute('fill','#ffffff'); - $tspan->setAttribute('font-size','9'); - $tspan->setAttribute('dy','0.7'); - $tspan->setAttribute('dx','-3'); - } - - // White text, very small size, bold, a bit to the right (on vans) - if (in_array($symbol, Array(118))) { - $tspan->setAttribute('fill','#ffffff'); - $tspan->setAttribute('font-size','9'); - $tspan->setAttribute('dy','0.3'); - $tspan->setAttribute('dx','-3'); - } - } - - - if ($course !== null) { - // We should rotate symbol - if ($symbolCategory == 1 && isset($primarySymbolRotateDiff[$symbol])) { - $adjustedCourse = $course + $primarySymbolRotateDiff[$symbol]; - } else if ($symbolCategory != 1 && isset($alternativeSymbolRotateDiff[$symbol])) { - $adjustedCourse = $course + $alternativeSymbolRotateDiff[$symbol]; - } else { - $course = 0; - $adjustedCourse = 0; - } - - $wrapper2->setAttribute('transform', 'rotate(' . $adjustedCourse . ' 12 12)'); - if (($symbolCategory == 1 && !in_array($symbol, $primarySymbolThatShouldNotBeFlipped)) - || ($symbolCategory != 1 && !in_array($symbol, $alternativeSymbolThatShouldNotBeFlipped))) { - - if ($course > 180) { - // Symbols that rotate more than 180 deg should be flipped - $wrapper3->setAttribute('transform', 'translate(0,24) scale(1, -1)'); - - if (isset($tspan)) { - // Flip letter back - $x = 24 + $tspan->getAttribute('dx'); - $tspan->setAttribute('transform', 'translate(' . $x . ', 0) scale(-1, 1)'); - } - - } - } - } - - if ($width !== null && $height !== null) { - // We should change svg size (not scaling!), center existing stuff - $wrapper1->setAttribute('transform', 'translate('.(($width-24)/2).' '.(($height-24)/2).')'); - $svg->setAttribute('viewBox', '0 0 '.$width.' '.$height); - $svg->setAttribute('width', $width); - $svg->setAttribute('height', $height); - } - - if ($scaleWidth !== null && $scaleHeight !== null) { - $svg->setAttribute('preserveAspectRatio',"xMinYMin meet"); - if ($width !== null && $height !== null) { - $svg->setAttribute('viewBox', '0 0 '.$width.' '.$height); - } else { - $svg->setAttribute('viewBox', "0 0 24 24"); - } - $svg->setAttribute('width', $scaleWidth); - $svg->setAttribute('height', $scaleHeight); - } - - $svgContent = $doc->saveXML(); - } - } - } -} - -if ($svgContent === null) { - $filepath = './svgicons/125-1.svg'; - $svgContent = file_get_contents($filepath); -} - -if (isset($_GET['format']) && $_GET['format'] == 'png') { - str_replace('#000000', '#010101', $svgContent); - - $im = new Imagick(); - - // Hack to set needed density to get correct size?! - if ($width !== null && $height !== null) { - $im->setResolution($width*4,$height*4); - } else { - $im->setResolution(96,96); - } - - $im->setBackgroundColor(new ImagickPixel('transparent')); - $im->readImageBlob($svgContent); - $im->setImageFormat("png32"); - - if ((!isset($scaleWidth) && !isset($scaleHeight)) || ($scaleWidth == null && $scaleHeight == null) - || ($scaleWidth == 24 && $scaleHeight == 24) - || ($scaleWidth == 64 && $scaleHeight == 64) - || ($scaleWidth == 150 && $scaleHeight == 150)) { - $im->writeImage('./' . basename($_SERVER['REQUEST_URI'])); - } - - header('Pragma: public'); - header('Cache-Control: max-age=86400, public'); - header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400)); - header('Content-type: image/png'); - echo $im->getImageBlob(); - - $im->destroy(); - -} else { - - header('Pragma: public'); - header('Cache-Control: max-age=86400, public'); - header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + 86400)); - header('Content-type: image/svg+xml'); - echo $svgContent; -} diff --git a/htdocs/public/views/about.php b/htdocs/public/views/about.php deleted file mode 100644 index 20404be..0000000 --- a/htdocs/public/views/about.php +++ /dev/null @@ -1,33 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<title>About / FAQ</title> -<div class="modal-inner-content modal-inner-content-about" style="padding-bottom: 30px;"> - <div class="modal-inner-content-menu"> - <span>About</span> - <a href="/views/faq.php" class="tdlink" title="Frequently asked questions">FAQ</a> - </div> - <div class="horizontal-line"> </div> - - <p> - Welcome to this APRS tracking website! Our goal is to bring you a fast and easy-to-use map with APRS data from <a href="http://www.aprs-is.net" target="_blank">APRS-IS</a>, <a href="http://www.wxqa.com" target="_blank">CWOP-IS</a>, <a href="https://www.glidernet.org" target="_blank">OGN</a> or some other APRS data sourcei (depending on how this specific website is configured). We give you fast map updates and nice looking APRS symbols! - </p> - - <img src="/images/aprs-symbols.png" title="APRS symbols" style="width:100%"/> - - <p> - This website is based on the APRS Track Direct tools. Read more about APRS Track Direct <a href="https://www.aprsdirect.com" target="_blank">here</a> or go directly to <a href="https://github.com/qvarforth/trackdirect" target="_blank">GitHub</a>. In addition to a map with fast APRS data updates, APRS Track direct also provides related functions such as <a href="/views/latest.php" class="tdlink" title="List latest heard stations">Latest heard</a> and <a href="/views/search.php" class="tdlink" title="Search for stations">Station search</a> etc. - </p> - - <h3>What is APRS?</h3> - <p> - APRS (Automatic Packet Reporting System) is a digital communications system that uses packet radio to send real time tactical information (on amateur radio frequencies). - The APRS network is used by ham radio operators all over the world. - Information shared over the APRS network is for example coordinates, altitude, speed, heading, text messages, alerts, announcements, bulletins and weather data. - APRS has been developed by Bob Bruninga, callsign WB4APR. - More information about APRS can be found at <a target="_blank" rel="nofollow" href="http://www.aprs.org/">www.aprs.org</a> or at <a target="_blank" rel="nofollow" href="https://en.wikipedia.org/wiki/Automatic_Packet_Reporting_System">wikipedia</a>. - </p> - <p> - But as you probably already understood, the APRS specification is not only used by ham radio operators, but also for several other areas of use, such as e.g. for CWOP and OGN data. - </p> - -</div> diff --git a/htdocs/public/views/faq.php b/htdocs/public/views/faq.php deleted file mode 100644 index 655ed1a..0000000 --- a/htdocs/public/views/faq.php +++ /dev/null @@ -1,148 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<title>About / FAQ</title> -<div class="modal-inner-content modal-inner-content-about" style="padding-bottom: 30px;"> - <div class="modal-inner-content-menu"> - <a href="/views/about.php" class="tdlink" title="More about this website!">About</a> - <span>FAQ</span> - </div> - <div class="horizontal-line"> </div> - - <h2>1. I have a question. Who may I contact?</h2> - <p> - Maintainer of this website is <a href="mailto:<?php echo getWebsiteConfig('owner_email'); ?>"><?php echo getWebsiteConfig('owner_name'); ?></a>. - </p> - - <h2>2. What is APRS?</h2> - <p> - APRS (Automatic Packet Reporting System) is a digital communications system that uses packet radio to send real time tactical information. The APRS network is used by ham radio operators all over the world. - </p> - <p> - Information shared over the APRS network is for example coordinates, altitude, speed, heading, text messages, alerts, announcements, bulletins and weather data. - </p> - - <h2>3. What is APRS Track Direct</h2> - <p> - This website is based on the APRS Track Direct tools. Read more on <a href="https://github.com/qvarforth/trackdirect" target="_blank">GitHub</a>. But please note that the maintainer of APRS Track Direct has nothing to do with this website. - </p> - - <h2>4. I have a map created in <a target="_blank" href="https://mymaps.google.com/">Google My Maps</a>, can I render it on top of this map?</h2> - <p> - Sure! Follow the following instructions... - </p> - <ol> - <li>Open your map at <a target="_blank" href="https://mymaps.google.com/">Google My Maps</a>.</li> - <li>Look at the current URL and try to find a value named <b>mid</b>. Copy that value!</li> - <li>Open this website. Add <b>"&mid={the mid value}"</b> to the end of the URL.</li> - <li>Press Enter!</li> - </ol> - - <h2>5. My latest packet seems to be using different path's depending on what website I look at (APRS-IS related). Why?</h2> - <p> - The websites you compare are not collecting packets from the same APRS-IS servers. Each APRS-IS server performes duplicate filtering, and which packet that is considered to be a duplicate may differ depending on which APRS-IS server you ask. - </p> - - <h2>6. Where does the displayed data come from?</h2> - <p>On each station you can see the specified source. APRS data can be received from <a href="http://www.aprs-is.net" target="_blank">APRS-IS</a>, <a href="http://www.wxqa.com" target="_blank">CWOP-IS</a> or <a href="https://www.glidernet.org" target="_blank">OGN</a> (and more). - - <h2>7. How do I prevent my data from being displayed on websites such as this?</h2> - <h3>A. Answer for APRS-IS/CWOP-IS and more</h3> - <p> - If you do not want your APRS data to be publiched on APRS-websites you can append <b>NOGATE</b> to the end of your path (or use <b>RFONLY</b>). If your digipeater path is <b>WIDE1-1,WIDE2-1</b>, you just change it to <b>WIDE1-1,WIDE2-1,NOGATE</b>. - </p> - - <h3>B. Answer for OGN (Open Glider Network)</h3> - <p> - Not all information that is sent to the Open Glider Network is published. - </p> - <p> - Aircrafts that meet any of the following condition is not shown at all.<br/> - → Has the "no-tracking" flag in FLARM device configuration set.<br/> - → Has activated the setting "I don't want this device to be tracked" in the the <a target="_blank" href="http://wiki.glidernet.org/ddb">OGN Devices DataBase</a>. - </p> - <p> - This website will only display information that can be used to identify an aircraft if the aircraft device details exists in the <a target="_blank" href="http://wiki.glidernet.org/ddb">OGN Devices DataBase</a>, and if the setting "I don't want this device to be identified" is deactivated. If the website is configured to also render aircrafts that does not exists in the OGN database, the aircraft is given a temporary name that is only used for a maximum of 24h (to make sure it can not be identified). - </p> - <p> - Read more about how to "Opt In" or "Opt Out" <a target="_blank" href="http://wiki.glidernet.org/opt-in-opt-out">here</a>. - </p> - - <h2>8. How is the coverage map created?</h2> - <p> - Note that the coverage map is only available for receiving stations, it tries to show from which area the station is able to receive packets. - </p> - <p> - The coverage map consists of two parts: - <ul> - <li><span>The heatmap that shows all recorded coordinates.</span></li> - <li><span>The interpolated max range plot polygon that shows the coverage.</span></li> - </ul> - </p> - <p> - The max range plot is created by: - <ol> - <li><span>We exclude positions that have a distance that is further away than the 95th percentile.</span></li> - <li><span>We use a convex hull algorithm to get a polygon of the covered area.</span></li> - <li><span>We add some padding to the area received in the previous step. This step is just used to make the polygon look a bit nicer.</span></li> - </ol> - </p> - - <h2>9. Can you tell me how the marker logic works?</h2> - <p> - Okay, let me tell you more about our brilliant marker logic :-) - </p> - <ul> - <li>We have a speed limit filter and other filters that sorts out packets that has a faulty position.</li> - <li>If a moving station sends a packet that is sorted out by our speed limit filter the packet will be marked as unconfirmed, if we later receive a packet that confirmes that the station is moving in that direction, the previous packet will be confirmed then.</li> - <li>If a station moves in one area and suddently appear in another area the two tails will be connected by a dashed polyline.</li> - <li>A moving station that reports it's speed and direction will have an animated direction polyline (will be hidden after 15min).</li> - <li>The dotted polyline shows the packet transmit path, will be shown when you hover over a marker or a "dotmarker". If a station in the path hasn't sent a position packet in a long time it will show up for some seconds and than disappear again.</li> - <li>Note that the time-interval specified in the station info-window (on the map) is how long a station has been on that location <u>without any downtime longer than 24h</u>.</li> - </ul> - - <h2>10. Can I link to this website?</h4> - <p> - Yes absolutely! - </p> - <ul> - <li> - To link to a station tracking map view, use one of the following alternatives: - <br/><span style="color:darkblue;">https://www.thiswebsite.com?sname=<b>STATION-NAME</b></span> - <br/><span style="color:darkblue;">https://www.thiswebsite.com?sid=<b>STATION-ID</b></span> - </li> - <br/> - <li> - To link to a tracking map view for multiple stations, use one of the following alternatives: - <br/><span style="color:darkblue;">https://www.thiswebsite.com?snamelist=<b>STATION-NAME-1,STATION-NAME-2,STATION-NAME-3</b></span> - <br/><span style="color:darkblue;">https://www.thiswebsite.com?sidlist=<b>STATION-ID-1,STATION-ID-2,STATION-ID-3</b></span> - </li> - <br/> - <li> - To link to a map view, centered on a position, use the following: - <br/><span style="color:darkblue;">https://www.thiswebsite.com?center=<b>LATITUDE</b>,<b>LONGITUDE</b>&zoom=<b>ZOOM-LEVEL</b></span> - </li> - - </ul> - - <h2>11. What browsers do this website support?</h2> - <p> - Our goal is that APRS Direct should work on all broswers that supports websockets (an HTML5 feature). The following browser version (and newer) supports the websocket-protocol. - </p> - <ul> - <li>Internet Explorer 10 (released 4/9 2012)</li> - <li>Edge 12 (released 30/3 2015)</li> - <li>Firefox 11 (released 31/1 2012)</li> - <li>Chrome 16 (released 25/10 2012)</li> - <li>Safari 7 (released 22/10 2013)</li> - <li>Opera 6.1 (released 5/11 2012)</li> - <li>iOS Safari 6.1 (released 28/1 2013)</li> - <li>Android Browser 4.4 (released 9/12 2013)</li> - <li>Blackberry browser 7 (released 1/1 2012)</li> - <li>Opera Mobile 12.1 (released 9/10 2012)</li> - <li>Chrome 53 for Android (released 8/9 2016)</li> - <li>Firefox 49 for Android (released 20/9 2016)</li> - <li>IE Mobile 10 (released 20/6 2012)</li> - <li>UC Browser 11 (released 17/8 2016)</li> - <li>Samsung Internet 4 (released 19/4 2016)</li> - </ul> -</div> diff --git a/htdocs/public/views/latest.php b/htdocs/public/views/latest.php deleted file mode 100644 index 178a47a..0000000 --- a/htdocs/public/views/latest.php +++ /dev/null @@ -1,103 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php - $stations = []; - $seconds = 60*60*24; - $page = $_GET['page'] ?? 1; - $rows = 50; - $offset = ($page - 1) * $rows; - - $stations = StationRepository::getInstance()->getObjectList($seconds, $rows, $offset); - $count = StationRepository::getInstance()->getNumberOfStations($seconds); - - $pages = ceil($count / $rows); -?> - -<title>Latest heard stations</title> -<div class="modal-inner-content" style="padding-bottom: 30px;"> - <?php if (count($stations) > 0) : ?> - <p> - <?php echo $count; ?> station(s) have been heard in the last 24 hours. - </p> - - <?php if ($pages > 1): ?> - <div class="pagination"> - <a class="tdlink" href="/views/latest.php?q=<?php echo ($_GET['q'] ?? "") ?>&seconds=<?php echo $seconds ?>&page=1"><<</a> - <?php for($i = max(1, $page - 3); $i <= min($pages, $page + 3); $i++) : ?> - <a href="/views/latest.php?q=<?php echo ($_GET['q'] ?? "") ?>&seconds=<?php echo $seconds ?>&page=<?php echo $i; ?>" <?php echo ($i == $page ? 'class="tdlink active"': 'class="tdlink"')?>><?php echo $i ?></a> - <?php endfor; ?> - <a class="tdlink" href="/views/latest.php?q=<?php echo ($_GET['q'] ?? "") ?>&seconds=<?php echo $seconds ?>&page=<?php echo $pages; ?>">>></a> - </div> - <?php endif; ?> - - <div class="datagrid datagrid-search" style="max-width:1000px;"> - <table> - <thead> - <tr> - <th> </th> - <th>Name/Id</th> - <th>Latest heard</th> - <th>Comment/Other</th> - <th>Map</th> - - </tr> - </thead> - <tbody> - <?php foreach ($stations as $foundStation) : ?> - <tr> - <td> - <img src="<?php echo $foundStation->getIconFilePath(22, 22); ?>" alt="Symbol"/> - </td> - <td> - <a class="tdlink" href="/views/overview.php?id=<?php echo $foundStation->id; ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>"><?php echo htmlentities($foundStation->name) ?></a> - </td> - <td class="station-latest-heard-timestamp" style="white-space: nowrap;"> - <?php echo $foundStation->latestConfirmedPacketTimestamp; ?> - </td> - <td> - <?php if ($foundStation->sourceId == 5 && $foundStation->getOgnDevice() !== null) : ?> - <div style="width: 100px; display: inline-block;">Registration:</div><?php echo htmlspecialchars($foundStation->getOgnDevice()->registration); ?> <?php echo $foundStation->getOgnDevice()->cn ? '[' .htmlspecialchars($foundStation->getOgnDevice()->cn) . ']' : ''; ?><br/> - <div style="width: 100px; display: inline-block;">Aircraft Model:</div><?php echo htmlspecialchars($foundStation->getOgnDevice()->aircraftModel); ?> - <?php else : ?> - <?php $latestPacket = PacketRepository::getInstance()->getObjectById($foundStation->latestPacketId, $foundStation->latestPacketTimestamp); ?> - <?php echo htmlspecialchars($latestPacket->comment); ?> - <?php endif; ?> - </td> - <td> - <?php if ($foundStation->latestConfirmedPacketTimestamp > (time() - 60*60*24)) : ?> - <a href="?sid=<?php echo $foundStation->id; ?>" onclick=" - if (window.parent && window.parent.trackdirect) { - $('.modal', parent.document).hide(); - window.parent.trackdirect.filterOnStationId([]); - window.parent.trackdirect.filterOnStationId([<?php echo $foundStation->id; ?>]); - return false; - }">Map</a> - <?php else : ?> - - <?php endif; ?> - </td> - </tr> - <?php endforeach; ?> - </tbody> - </table> - </div> - <?php endif; ?> - - <?php if (count($stations) == 0) : ?> - <p> - <b><i>No station have been heard in the last 24 hours.</i></b> - </p> - <?php endif; ?> -</div> -<script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('.station-latest-heard-timestamp').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - }); -</script> diff --git a/htdocs/public/views/overview.php b/htdocs/public/views/overview.php deleted file mode 100644 index d52b097..0000000 --- a/htdocs/public/views/overview.php +++ /dev/null @@ -1,549 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php $station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); ?> -<?php if ($station->isExistingObject()) : ?> - <title><?php echo $station->name; ?> Overview</title> - <div class="modal-inner-content"> - <div class="modal-inner-content-menu"> - <span>Overview</span> - <a class="tdlink" title="Statistics" href="/views/statistics.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Statistics</a> - <a class="tdlink" title="Trail Chart" href="/views/trail.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Trail Chart</a> - <a class="tdlink" title="Weather" href="/views/weather.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Weather</a> - <a class="tdlink" title="Telemetry" href="/views/telemetry.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Telemetry</a> - <a class="tdlink" title="Raw packets" href="/views/raw.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Raw packets</a> - </div> - - <div class="horizontal-line"> </div> - - <div class="overview-content-summary"> - <div> - <div class="overview-content-summary-hr"> - <?php if ($station->sourceId == 5) : ?> - ID: - <?php else: ?> - Name: - <?php endif; ?> - </div> - <div class="overview-content-station" title="Name of the station/object"> - <?php echo htmlentities($station->name); ?> - </div> - </div> - - <div> - <div class="overview-content-summary-hr"> - Station ID: - </div> - <div class="overview-content-station" title="Website station id"> - <?php echo $station->id; ?> - </div> - </div> - - <?php if ($station->sourceId != null) : ?> - <div> - <div class="overview-content-summary-hr">Source:</div> - <div class="overview-content-station" title="Source of this station"> - <?php echo $station->getSourceDescription(); ?> - </div> - </div> - <?php endif; ?> - - <?php if ($station->getOgnDevice() !== null) : ?> - <br/> - <?php if ($station->getOgnDevice()->registration != null) : ?> - <div> - <div class="overview-content-summary-hr">Aircraft Registration:</div> - <div class="overview-content-station" title="Aircraft Registration"> - <b><?php echo htmlspecialchars($station->getOgnDevice()->registration); ?></b> - </div> - </div> - <?php endif; ?> - - <?php if ($station->getOgnDevice()->cn != null) : ?> - <div> - <div class="overview-content-summary-hr">Aircraft CN:</div> - <div class="overview-content-station" title="Aircraft CN"> - <b><?php echo htmlspecialchars($station->getOgnDevice()->cn); ?></b> - </div> - </div> - <?php endif; ?> - <?php endif; ?> - - <?php if ($station->getOgnDdbAircraftTypeName() !== null) : ?> - <div> - <div class="overview-content-summary-hr">Aircraft Type:</div> - <div class="overview-content-station" title="Type of aircraft"> - <?php echo htmlspecialchars($station->getOgnDdbAircraftTypeName()); ?> - </div> - </div> - <?php if ($station->getOgnDevice()->aircraftModel != null) : ?> - <div> - <div class="overview-content-summary-hr">Aircraft Model:</div> - <div class="overview-content-station" title="Aircraft Model"> - <?php echo htmlspecialchars($station->getOgnDevice()->aircraftModel); ?> - </div> - </div> - <?php endif; ?> - <?php elseif ($station->getOgnAircraftTypeName() != null) : ?> - <div> - <div class="overview-content-summary-hr">Aircraft Type:</div> - <div class="overview-content-station" title="Type of aircraft"> - <?php echo htmlspecialchars($station->getOgnAircraftTypeName()); ?> - </div> - </div> - <?php else : ?> - <div> - <div class="overview-content-summary-hr">Symbol:</div> - <div class="overview-content-station" title="Symbol type"> - <img src="<?php echo $station->getIconFilePath(24, 24); ?>" alt="Latest symbol" /> - <span> <?php echo htmlentities($station->getLatestSymbolDescription()); ?></span> - </div> - </div> - <?php endif; ?> - - <!-- Latest Packet --> - <?php if ($station->latestPacketId !== null) : ?> - <?php $latestPacket = PacketRepository::getInstance()->getObjectById($station->latestPacketId, $station->latestPacketTimestamp); ?> - <div class="overview-content-divider"></div> - - <div> - <div class="overview-content-summary-hr">Latest Packet:</div> - <div class="overview-content-summary-cell-type overview-content-summary-indent"><?php echo $latestPacket->getPacketTypeName(); ?> Packet</div> - </div> - - <?php $latestPacketSender = SenderRepository::getInstance()->getObjectById($latestPacket->senderId); ?> - <?php if ($latestPacketSender->name != $station->name) : ?> - <div> - <div class="overview-content-summary-hr-indent">Sender:</div> - <div class="overview-content-summary-indent" title="Sender of current packet"> - <?php $latestPacketSenderStation = StationRepository::getInstance()->getObjectByNameAndSenderId($latestPacketSender->name, $latestPacketSender->id); ?> - <?php if ($latestPacketSenderStation->isExistingObject()) : ?> - <a class="tdlink" title="Sender of the object" href="/views/overview.php?id=<?php echo $latestPacketSenderStation->id; ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>"> - <?php echo htmlentities($latestPacketSenderStation->name); ?> - </a> - <?php else : ?> - <?php echo $latestPacketSender->name; ?> - <?php endif; ?> - </div> - </div> - <?php endif; ?> - - <div> - <div class="overview-content-summary-hr-indent">Receive Time:</div> - <div title="Timestamp of the latest packet" id="latest-timestamp" class="overview-content-summary-cell-time overview-content-summary-indent"> - <?php echo $station->latestPacketTimestamp; ?> - </div> - </div> - - - <div> - <div class="overview-content-summary-hr-indent">Age:</div> - <div title="Age of the latest packet" id="latest-timestamp-age" class="overview-content-summary-cell-time overview-content-summary-indent"> - <?php echo $station->latestPacketTimestamp; ?> - </div> - </div> - - - <div> - <div class="overview-content-summary-hr-indent">Path:</div> - <div class="overview-content-summary-cell-path overview-content-summary-indent" title="Latest path"><?php echo $latestPacket->rawPath; ?></div> - </div> - - <?php if ($latestPacket->comment != '') : ?> - <div> - <div class="overview-content-summary-hr-indent">Comment:</div> - <div title="Comment found in thelatest packet" id="latest-packet-comment" class="overview-content-summary-indent"> - <?php echo htmlentities($latestPacket->comment); ?> - </div> - </div> - <?php endif;?> - - <?php if ($latestPacket->getPacketOgn()->isExistingObject()) : ?> - <div style="line-height: 8px"> </div> - <?php if ($latestPacket->getPacketOgn()->ognSignalToNoiseRatio !== null) : ?> - <div> - <div class="overview-content-summary-hr-indent">Signal to Noise Ratio:</div> - <div class="overview-content-summary-indent" title="Signal to Noise Ratio measured upon reception"><?php echo $latestPacket->getPacketOgn()->ognSignalToNoiseRatio; ?> dB</div> - </div> - <?php endif;?> - - <?php if ($latestPacket->getPacketOgn()->ognBitErrorsCorrected !== null) : ?> - <div> - <div class="overview-content-summary-hr-indent">Bits corrected:</div> - <div class="overview-content-summary-indent" title="The number of bit errors corrected in the packet upon reception"><?php echo $latestPacket->getPacketOgn()->ognBitErrorsCorrected; ?></div> - </div> - <?php endif;?> - - <?php if ($latestPacket->getPacketOgn()->ognFrequencyOffset !== null) : ?> - <div> - <div class="overview-content-summary-hr-indent">Frequency Offset:</div> - <div class="overview-content-summary-indent" title="The frequency offset measured upon reception"><?php echo $latestPacket->getPacketOgn()->ognFrequencyOffset; ?> kHz</div> - </div> - <?php endif;?> - <?php endif;?> - - <?php endif;?> - - - <!-- Latest Weather --> - <?php if ($station->latestWeatherPacketTimestamp !== null) : ?> - <div class="overview-content-divider"></div> - - <div> - <div class="overview-content-summary-hr">Latest Weather:</div> - <div id="weather-timestamp" class="overview-content-summary-cell-weather-time" title="Latest received weather"> - <?php echo $station->latestWeatherPacketTimestamp; ?> - </div> - </div> - - <?php if ($station->latestWeatherPacketComment != '') : ?> - <div> - <div class="overview-content-summary-hr-indent">Comment/Software:</div> - <div class="overview-content-summary-cell-time overview-content-summary-indent" title="Weather packet comment/software"> - <?php echo htmlentities($station->latestWeatherPacketComment); ?><br/> - </div> - </div> - <?php endif;?> - <?php endif;?> - - <!-- Latest Telemetry --> - <?php if ($station->latestTelemetryPacketTimestamp !== null) : ?> - <div class="overview-content-divider"></div> - - <div> - <div class="overview-content-summary-hr">Latest Telemetry:</div> - <div id="telemetry-timestamp" class="overview-content-summary-cell-telemetry-time" title="Latest received telemetry"> - <?php echo $station->latestTelemetryPacketTimestamp; ?> - </div> - </div> - <?php endif;?> - - <!-- Latest Position --> - <?php if ($station->latestConfirmedPacketId !== null) : ?> - - <div class="overview-content-divider"></div> - - <div> - <div class="overview-content-summary-hr">Latest Position:</div> - <div id="overview-content-latest-position" class="overview-content-summary-cell-position" title="Latest position (that is approved by our filters)"> - <?php echo round($station->latestConfirmedLatitude, 5); ?>, <?php echo round($station->latestConfirmedLongitude, 5); ?> - </div> - </div> - - <div> - <div class="overview-content-summary-hr-indent">Receive Time:</div> - <div id="position-timestamp" class="overview-content-summary-cell-time overview-content-summary-indent" title="Latest position receive time"> - <?php if ($station->latestPacketId == $station->latestConfirmedPacketId && $station->latestPacketTimestamp == $station->latestConfirmedPacketTimestamp) : ?> - (Received in latest packet) - <?php else : ?> - <?php echo $station->latestConfirmedPacketTimestamp; ?> - <?php endif; ?> - </div> - </div> - <div> - <div class="overview-content-summary-hr"> </div> - <div class="overview-content-summary-cell-position"> - <a href="?sid=<?php echo $station->id; ?>" onclick=" - if (window.parent && window.parent.trackdirect) { - $('.modal', parent.document).hide(); - window.parent.trackdirect.filterOnStationId([]); - window.parent.trackdirect.filterOnStationId([<?php echo $station->id; ?>]); - return false; - }">Show on map</a> - </div> - </div> - - - <?php $latestConfirmedPacket = PacketRepository::getInstance()->getObjectById($station->latestConfirmedPacketId, $station->latestConfirmedPacketTimestamp); ?> - <?php if ($latestConfirmedPacket->isExistingObject() && $latestConfirmedPacket->posambiguity > 0) : ?> - <div> - <div class="overview-content-summary-hr-indent">Posambiguity:</div> - <div class="overview-content-summary-cell-posambiguity overview-content-summary-indent" title="If posambiguity is active the gps position is inaccurate">Yes</div> - </div> - <?php endif;?> - - <?php if ($latestConfirmedPacket->isExistingObject()) : ?> - <?php if ($latestConfirmedPacket->speed != '' || $latestConfirmedPacket->course != '' || $latestConfirmedPacket->altitude != '') : ?> - <?php if (round($latestConfirmedPacket->speed) != 0 || round($latestConfirmedPacket->course) != 0 || round($latestConfirmedPacket->altitude) != 0) : ?> - - <?php if ($latestConfirmedPacket->speed != '') : ?> - <div> - <div class="overview-content-summary-hr-indent">Speed:</div> - <div title="Latest speed" class="overview-content-summary-indent"> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertKilometerToMile($latestConfirmedPacket->speed), 2); ?> mph - <?php else : ?> - <?php echo round($latestConfirmedPacket->speed, 2); ?> km/h - <?php endif; ?> - </div> - </div> - <?php endif;?> - - <?php if ($latestConfirmedPacket->course != '') : ?> - <div> - <div class="overview-content-summary-hr-indent">Course:</div> - <div title="Latest course" class="overview-content-summary-indent"><?php echo $latestConfirmedPacket->course; ?>°</div> - </div> - <?php endif;?> - - <?php if ($latestConfirmedPacket->altitude != '') : ?> - <div> - <div class="overview-content-summary-hr-indent">Altitude:</div> - <div title="Latest altitude" class="overview-content-summary-indent"> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertMeterToFeet($latestConfirmedPacket->altitude), 2); ?> ft - <?php else : ?> - <?php echo round($latestConfirmedPacket->altitude, 2); ?> m - <?php endif; ?> - </div> - </div> - <?php endif;?> - - <?php endif;?> - <?php endif;?> - - <?php if ($latestConfirmedPacket->getPacketOgn()->isExistingObject()) : ?> - <?php if ($latestConfirmedPacket->getPacketOgn()->ognClimbRate !== null) : ?> - <div> - <div class="overview-content-summary-hr-indent">Climb Rate:</div> - <div class="overview-content-summary-indent" title="The climb rate in feet-per-minute"><?php echo $latestConfirmedPacket->getPacketOgn()->ognClimbRate; ?> fpm</div> - </div> - <?php endif;?> - - <?php if ($latestConfirmedPacket->getPacketOgn()->ognTurnRate !== null) : ?> - <div> - <?php $turnRateNote = true; ?> - <div class="overview-content-summary-hr-indent">Turn Rate:</div> - <div class="overview-content-summary-indent" title="Current turn rate."><?php echo $latestConfirmedPacket->getPacketOgn()->ognTurnRate; ?> rot</div> - </div> - <?php endif;?> - <?php endif;?> - <?php endif;?> - - <!-- Latest PHG and RNG --> - <?php if ($latestConfirmedPacket && $latestConfirmedPacket->isExistingObject()) : ?> - <?php if ($latestConfirmedPacket->phg != null || $latestConfirmedPacket->latestPhgTimestamp != null) : ?> - <div class="overview-content-divider"></div> - <div> - <div class="overview-content-summary-hr">Latest PHG:</div> - <div class="overview-content-summary-cell-phg" title="Power-Height-Gain (and directivity)"> - <?php echo $latestConfirmedPacket->getPHGDescription(true); ?><br/> - (Calculated range: - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertKilometerToMile($latestConfirmedPacket->getPHGRange(true)/1000),2); ?> miles) - <?php else : ?> - <?php echo round($latestConfirmedPacket->getPHGRange(true)/1000,2); ?> km) - <?php endif; ?> - </div> - </div> - <?php endif;?> - - <?php if ($latestConfirmedPacket->rng != null || $latestConfirmedPacket->latestRngTimestamp != null) : ?> - <div class="overview-content-divider"></div> - <div> - <div class="overview-content-summary-hr">Latest RNG:</div> - <div class="overview-content-summary-cell-phg" title="The pre-calculated radio range"> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertKilometerToMile($latestConfirmedPacket->getRng(true)), 2); ?> miles - <?php else : ?> - <?php echo round($latestConfirmedPacket->getRng(true), 2); ?> km - <?php endif; ?> - </div> - </div> - <?php endif;?> - <?php endif;?> - <?php endif;?> - - <!-- Latest Symbols --> - <?php $stationLatestSymbols = $station->getLatestIconFilePaths(22, 22); ?> - <?php if ($stationLatestSymbols !== null && count($stationLatestSymbols) > 1) : ?> - <div class="overview-content-divider"></div> - <div> - <div class="overview-content-summary-hr">Latest used symbols:</div> - <div title="Latest symbols that this station has used"> - <?php foreach ($stationLatestSymbols as $symbolPath) : ?> - <img src="<?php echo $symbolPath; ?>" alt="Symbol"/> - <?php endforeach; ?> - </div> - </div> - <?php endif; ?> - - - <!-- Packet Frequency --> - <?php $packetFrequencyNumberOfPackets = null; ?> - <?php $stationPacketFrequency = $station->getPacketFrequency(null, $packetFrequencyNumberOfPackets); ?> - <?php if ($stationPacketFrequency != null) : ?> - <div class="overview-content-divider"></div> - <div> - <div class="overview-content-summary-hr">Packet frequency:</div> - <div class="overview-content-packet-frequency" title="Calculated packet frequency"><span><?php echo $stationPacketFrequency; ?>s</span> <span>(Latest <?php echo $packetFrequencyNumberOfPackets; ?> packets)</span></div> - </div> - <?php endif; ?> - - - <div class="overview-content-divider"></div> - </div> - - <div class="overview-content-symbol" id ="overview-content-symbol-<?php echo $station->id; ?>"> - <img src="<?php echo $station->getIconFilePath(150, 150); ?>" alt="Latest symbol" title="<?php echo $station->getLatestSymbolDescription(); ?>"/> - <?php if ($station->latestPacketId !== null) : ?> - <br/> - <div style="text-align: center; padding-top: 30px;"> - <?php if ($station->getOgnDevice() !== null && $station->getOgnDevice()->registration != null) : ?> - <div> - Search for <a href="https://www.jetphotos.com/registration/<?php echo $station->getOgnDevice()->registration; ?>" target="_blank"><?php echo htmlspecialchars($station->getOgnDevice()->registration); ?></a> photos! - </div> - <?php endif; ?> - - <?php if ($station->sourceId == 1) : ?> - <?php if ($station->getLiklyHamRadioCallsign() !== null) : ?> - <div>Search for <a href="https://www.qrz.com/db/<?php echo $station->getLiklyHamRadioCallsign(); ?>" target="_blank"><?php echo htmlspecialchars($station->getLiklyHamRadioCallsign()); ?></a> at QRZ</div> - <?php endif; ?> - <?php endif; ?> - - <div>Export <a href="/data/kml.php?id=<?php echo $station->id; ?>"><?php echo htmlspecialchars($station->name); ?></a> data to KML</div> - </div> - <div style="clear: both;"></div> - <?php endif; ?> - </div> - - <div class="horizontal-line"> </div> - - <div class="overview-content-summary"> - - <!-- Related stations --> - <?php $relatedStations = StationRepository::getInstance()->getRelatedObjectListByStationId($station->id, 15); ?> - <?php if (count($relatedStations) > 1) : ?> - <div> - <?php $relatedStattionNote = true; ?> - <div class="overview-content-summary-hr">Related stations/objects:</div> - <div class="overview-content-station-list" title="Stations with same call except SSID or objects with related sender"> - <?php foreach ($relatedStations as $relatedStation) : ?> - <?php if ($relatedStation->id != $station->id) : ?> - <img src="<?php echo $relatedStation->getIconFilePath(22, 22); ?>" alt="Symbol"/> - <span><a class="tdlink" href="/views/overview.php?id=<?php echo $relatedStation->id; ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>"><?php echo htmlentities($relatedStation->name) ?></a></span> - <br/> - <?php endif; ?> - <?php endforeach; ?> - </div> - </div> - <div class="overview-content-divider"></div> - <?php endif; ?> - - - <!-- Close by stations --> - <?php $closeByStations = StationRepository::getInstance()->getCloseByObjectListByStationId($station->id, 15); ?> - <?php if (count($closeByStations) > 1) : ?> - <div> - <div class="overview-content-summary-hr">Nearby stations/objects:</div> - <div class="overview-content-station-list" title="The closest stations/objects at the current position"> - <?php foreach ($closeByStations as $closeByStation) : ?> - <?php if ($closeByStation->id != $station->id) : ?> - - <img src="<?php echo $closeByStation->getIconFilePath(22, 22); ?>" alt="Symbol"/> - <span> - <a class="tdlink" href="/views/overview.php?id=<?php echo $closeByStation->id; ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>"><?php echo htmlentities($closeByStation->name) ?></a> - <span> - <?php if (isImperialUnitUser()) : ?> - <?php if (convertMeterToYard($closeByStation->getDistance($station->latestConfirmedLatitude, $station->latestConfirmedLongitude)) < 1000) : ?> - <?php echo round(convertMeterToYard($closeByStation->getDistance($station->latestConfirmedLatitude, $station->latestConfirmedLongitude)), 0); ?> yd - <?php else : ?> - <?php echo round(convertKilometerToMile($closeByStation->getDistance($station->latestConfirmedLatitude, $station->latestConfirmedLongitude) / 1000), 2); ?> miles - <?php endif; ?> - <?php else : ?> - <?php if ($closeByStation->getDistance($station->latestConfirmedLatitude, $station->latestConfirmedLongitude) < 1000) : ?> - <?php echo round($closeByStation->getDistance($station->latestConfirmedLatitude, $station->latestConfirmedLongitude), 0); ?> m - <?php else : ?> - <?php echo round($closeByStation->getDistance($station->latestConfirmedLatitude, $station->latestConfirmedLongitude) / 1000, 2); ?> km - <?php endif; ?> - <?php endif; ?> - </span> - - </span> - <br/> - <?php endif; ?> - <?php endforeach; ?> - </div> - </div> - <div class="overview-content-divider"></div> - <?php endif; ?> - </div> - - <?php if (count($relatedStations) > 1 || count($closeByStations) > 1) : ?> - <div class="horizontal-line"> </div> - <?php endif; ?> - - <div class="overview-content-explanations"> - <ul> - <li>The specified "Station ID" is the ID that this station has on this website, this ID is useful when creating a link to this website. Read more in the About/FAQ.</li> - - <?php if ($station->sourceId == 5) : ?> - <li>Packets is received from the <a target="_blank" href="http://wiki.glidernet.org/">Open Glider Network</a>. The goal of the Open Glider Network project is to create a unified platform for tracking aircraft equipped with FLARM and OGN trackers.</li> - - <li>Aircraft device details such as Registration, CN and Aircraft Model is collected from the <a target="_blank" href="http://wiki.glidernet.org/ddb">OGN Devices DataBase</a>. We will only display information that can be used to identify an aircraft if the aircraft device details exists in the OGN Devices DataBase, and if the setting "I don't want this device to be identified" is deactivated.</li> - - <li>Detailed aircraft information is received from the <a target="_blank" rel="nofollow" href="http://wiki.glidernet.org/ddb">OGN Devices DataBase</a>. If the aircraft is not registered in the <a target="_blank" rel="nofollow" href="http://wiki.glidernet.org/ddb">OGN Devices DataBase</a> or if the aircraft does not want to be identified, the aircraft type indicated in the FLARM/OGN packet is displayed (but only if the website is configured to show aircrafts not registered in the database, that setting is not enabled by default). We also adapt which symbol that is used based on the selected aircraft type.</li> - - <li>According to <a target="_blank" href="http://wiki.glidernet.org/">OGN</a>, 4-5dB is about the limit of meaningful reception (but currently we still save packets with low SNR).</li> - - <li>According to <a target="_blank" href="http://wiki.glidernet.org/">OGN</a>, it is recommended that you ignore packets that have a high CRC error rate (>5) as their information may be corrupt (but currently we still save packets with high CRC error rate).</li> - - <li>1rot is the standard aircraft rotation rate of 1 half-turn per minute (equal to 1.5° per second).</li> - <?php endif; ?> - - <?php if ($station->sourceId == 1) : ?> - <li>To get a better understanding of the APRS path I recommend reading <a target="_blank" rel="nofollow" href="http://wa8lmf.net/DigiPaths/">the explanation written by wa8lmf</a>.</li> - - <li>If this packet has the "Posambiguity"-mark it means that the sent position is ambiguous (a configured number of digits has been truncated from the end of the position).</li> - - <li>PHG stands for Power-Height-Gain (and directivity). The height is not the height above sea-level, it is the height above average terrain (HAAT = Height Above Average Terrain). PHG is used to calculate the relative RF range of a station. If this station has reported several positions or symbols the PHG data will only be used for the position and symbol used in the PHG-packet.</li> - - <li>RNG is the "pre-calculated omni-directional radio range" of the station (reported by the station itself). If this station has reported several positions or symbols the RNG data will only be used for the position and symbol used in the RNG-packet. It seems like many D-STAR station use the RNG value to specifify D-STAR range.</li> - - <li>One object may be sent by several different senders. On the map they may share the same path, but they all have their own "Station information" modal.</li> - - <li>If station has more than 15 related stations we will only show the 10 closest related stations.</li> - <?php endif; ?> - - <?php if ($station->sourceId == 2) : ?> - <li>Station data is received from the CWOP network (Citizen Weather Observer Program). Visit <a href="http://www.wxqa.com/cwop_info.htm" target="_blank">CWOP Information</a> if you want know more!</li> - - - <?php endif; ?> - - </ul> - </div> - </div> - - <script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('#overview-content-comment, #overview-content-beacon, #overview-content-status').each(function() { - if ($(this).html().trim() != '') { - $(this).html(Autolinker.link($(this).html())); - } - }); - - $('#latest-timestamp, #comment-timestamp, #status-timestamp, #beacon-timestamp, #position-timestamp, #weather-timestamp, #telemetry-timestamp').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - - if ($('#latest-timestamp-age').length && $('#latest-timestamp-age').html().trim() != '' && !isNaN($('#latest-timestamp-age').html().trim())) { - $('#latest-timestamp-age').html(moment(new Date(1000 * $('#latest-timestamp-age').html())).locale('en').fromNow()); - } - - if (window.trackdirect) { - <?php if ($station->latestConfirmedLatitude != null && $station->latestConfirmedLongitude != null) : ?> - window.trackdirect.addListener("map-created", function() { - if (!window.trackdirect.focusOnStation(<?php echo $station->id ?>, true)) { - window.trackdirect.setCenter(<?php echo $station->latestConfirmedLatitude ?>, <?php echo $station->latestConfirmedLongitude ?>); - } - }); - <?php endif; ?> - } - }); - </script> -<?php endif; ?> diff --git a/htdocs/public/views/raw.php b/htdocs/public/views/raw.php deleted file mode 100644 index 9e776ba..0000000 --- a/htdocs/public/views/raw.php +++ /dev/null @@ -1,510 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php $station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); ?> -<?php if ($station->isExistingObject()) : ?> - - <?php - $page = $_GET['page'] ?? 1; - $rows = $_GET['rows'] ?? 25; - $offset = ($page - 1) * $rows; - - if (($_GET['category'] ?? 1) == 2) { - $packets = PacketRepository::getInstance()->getObjectListWithRawBySenderStationId($station->id, $rows, $offset); - $count = PacketRepository::getInstance()->getNumberOfPacketsWithRawBySenderStationId($station->id); - } else { - $packets = PacketRepository::getInstance()->getObjectListWithRawByStationId($station->id, $rows, $offset); - $count = PacketRepository::getInstance()->getNumberOfPacketsWithRawByStationId($station->id); - } - - $pages = ceil($count / $rows); - ?> - - <title><?php echo $station->name; ?> Raw Packets</title> - <div class="modal-inner-content"> - <div class="modal-inner-content-menu"> - <a class="tdlink" title="Overview" href="/views/overview.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Overview</a> - <a class="tdlink" title="Statistics" href="/views/statistics.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Statistics</a> - <a class="tdlink" title="Trail Chart" href="/views/trail.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Trail Chart</a> - <a class="tdlink" title="Weather" href="/views/weather.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Weather</a> - <a class="tdlink" title="Telemetry" href="/views/telemetry.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Telemetry</a> - <span>Raw packets</span> - </div> - - <div class="horizontal-line"> </div> - - <p> - This is the latest recevied packets stored in our database for station/object <?php echo $station->name; ?>. If no packets are shown the sender has not sent any packets the latest 24 hours. - </p> - - <?php if ($station->sourceId == 5) : ?> - <p> - We do not save raw packets for aircrafts that do not exists in the <a target="_blank" href="http://wiki.glidernet.org/ddb">OGN Devices DataBase</a>. We will only display information that can be used to identify an aircraft if the aircraft device details exists in the OGN Devices DataBase, and if the setting "I don't want this device to be identified" is deactivated. - </p> - <?php else : ?> - <p> - If you compare the raw packets with similar data from other websites it may differ (especially the path), the reason is that we are not collecting packets from the same APRS-IS servers. Each APRS-IS server performes duplicate filtering, and which packet that is considered to be a duplicate may differ depending on which APRS-IS server you receive your data from. - </p> - <?php endif; ?> - - <div class="form-container"> - <?php if ($station->stationTypeId == 1) : ?> - <select id="raw-category" style="float:left; margin-right: 5px;"> - <option <?php echo (($_GET['category'] ?? 1) == 1 ? 'selected' : ''); ?> value="1">Packets regarding <?php echo $station->name; ?></option> - <option <?php echo (($_GET['category'] ?? 1) == 2 ? 'selected' : ''); ?> value="2">Packets sent by <?php echo $station->name; ?></option> - </select> - <?php endif; ?> - - <select id="raw-type" style="float:left; margin-right: 5px;"> - <option <?php echo (($_GET['type'] ?? 1) == 1 ? 'selected' : ''); ?> value="1">Raw Packets</option> - <option <?php echo (($_GET['type'] ?? 1) == 2 ? 'selected' : ''); ?> value="2">Decoded Data</option> - </select> - - <select id="raw-rows" style="float:left; margin-right: 5px;" class="pagination-rows"> - <option <?php echo ($rows == 25 ? 'selected' : ''); ?> value="25">25 rows</option> - <option <?php echo ($rows == 50 ? 'selected' : ''); ?> value="50">50 rows</option> - <option <?php echo ($rows == 100 ? 'selected' : ''); ?> value="100">100 rows</option> - <option <?php echo ($rows == 200 ? 'selected' : ''); ?> value="200">200 rows</option> - <option <?php echo ($rows == 300 ? 'selected' : ''); ?> value="300">300 rows</option> - </select> - </div> - - <?php if ($pages > 1): ?> - <div class="pagination"> - <a class="tdlink" href="/views/raw.php?id=<?php echo $station->id; ?>&category=<?php echo ($_GET['category'] ?? 1) ?>&type=<?php echo ($_GET['type'] ?? 1); ?>&rows=<?php echo $rows; ?>&page=1"><<</a> - <?php for($i = max(1, $page - 3); $i <= min($pages, $page + 3); $i++) : ?> - <a href="/views/raw.php?id=<?php echo $station->id; ?>&category=<?php echo ($_GET['category'] ?? 1) ?>&type=<?php echo ($_GET['type'] ?? 1); ?>&rows=<?php echo $rows; ?>&page=<?php echo $i; ?>" <?php echo ($i == $page ? 'class="tdlink active"': 'class="tdlink"')?>><?php echo $i ?></a> - <?php endfor; ?> - <a class="tdlink" href="/views/raw.php?id=<?php echo $station->id; ?>&category=<?php echo ($_GET['category'] ?? 1) ?>&type=<?php echo ($_GET['type'] ?? 1); ?>&rows=<?php echo $rows; ?>&page=<?php echo $pages; ?>">>></a> - </div> - <?php endif; ?> - - <div id="raw-content-output"> - <?php foreach (array_slice($packets, 0, $rows) as $packet) : ?> - <?php if (($_GET['type'] ?? 1) == 1) : ?> - <p> - <span class="raw-packet-timestamp"><?php echo $packet->timestamp; ?></span>: - - <?php if (in_array($packet->mapId, Array(3, 6))) : ?> - <span class="raw-packet-error"> - <?php else : ?> - <span> - <?php endif; ?> - - <?php echo str_replace_first(htmlspecialchars($station->name . '>'), '<b>' . htmlspecialchars($station->name) . '</b>>', htmlspecialchars($packet->raw)); ?> - - <?php if ($packet->mapId == 3) : ?> - <b>[Duplicate]</b> - <?php elseif ($packet->mapId == 6) : ?> - <b>[Received in wrong order]</b> - <?php endif; ?> - - </span> - </p> - <?php elseif (($_GET['type'] ?? 1) == 2) : ?> - <div class="decoded"> - <div class="datagrid"> - <table> - <thead> - <tr> - <th colspan="2"> - <?php if (in_array($packet->mapId, Array(3, 6))) : ?> - <span class="raw-packet-error"> - <?php else : ?> - <span> - <?php endif; ?> - <span class="raw-packet-timestamp"><?php echo $packet->timestamp; ?></span> - - <?php if ($packet->mapId == 3) : ?> - <b>[Duplicate]</b> - <?php elseif ($packet->mapId == 6) : ?> - <b>[Received in wrong order]</b> - <?php endif; ?> - </span> - </th> - </tr> - </thead> - <tbody> - <tr> - <td>Raw</td> - <td> - <?php echo str_replace_first(htmlspecialchars($station->name . '>'), '<b>' . htmlspecialchars($station->name) . '</b>>', htmlspecialchars($packet->raw)); ?> - </td> - </tr> - - <tr><td>Packet type</td><td><?php echo $packet->getPacketTypeName(); ?></td></tr> - - <?php if ($packet->getStationObject()->stationTypeId == 2) : ?> - <tr><td>Object/Item name</td><td><?php echo htmlspecialchars($packet->getStationObject()->name); ?></td></tr> - <?php else : ?> - <tr><td>Callsign</td><td><?php echo htmlspecialchars($packet->getStationObject()->name); ?></td></tr> - <?php endif; ?> - - <?php if ($packet->getStationObject()->name != $packet->getSenderObject()->name) : ?> - <tr><td>Sender</td><td><?php echo htmlspecialchars($packet->getSenderObject()->name); ?></td></tr> - <?php endif; ?> - - <tr><td>Path</td><td><?php echo htmlspecialchars($packet->rawPath); ?></td></tr> - - <?php if ($packet->reportedTimestamp != null) : ?> - <tr><td>Reported time</td><td><?php echo $packet->reportedTimestamp; ?> - <span class="raw-packet-timestamp"><?php echo $packet->reportedTimestamp; ?></span></td></tr> - <?php endif; ?> - - <?php if ($packet->latitude != null && $packet->longitude != null) : ?> - <tr><td>Latitude</td><td><?php echo round($packet->latitude, 5); ?></td></tr> - <tr><td>Longitude</td><td><?php echo round($packet->longitude, 5); ?></td></tr> - <?php endif; ?> - - <?php if ($packet->symbol != null && $packet->symbolTable != null) : ?> - <tr><td>Symbol</td><td><?php echo htmlspecialchars($packet->symbol); ?></td></tr> - <tr><td>Symbol table</td><td><?php echo htmlspecialchars($packet->symbolTable); ?></td></tr> - <?php endif; ?> - - <?php if ($packet->speed != null) : ?> - <?php if (isImperialUnitUser()) : ?> - <tr><td>Speed</td><td><?php echo convertKilometerToMile($packet->speed); ?> mph</td></tr> - <?php else : ?> - <tr><td>Speed</td><td><?php echo $packet->speed; ?> km/h</td></tr> - <?php endif; ?> - <?php endif; ?> - - <?php if ($packet->course != null) : ?> - <tr><td>Course</td><td><?php echo $packet->course; ?>°</td></tr> - <?php endif; ?> - - <?php if ($packet->altitude != null) : ?> - <?php if (isImperialUnitUser()) : ?> - <tr><td>Altitude</td><td><?php echo convertMeterToFeet($packet->altitude); ?> ft</td></tr> - <?php else : ?> - <tr><td>Altitude</td><td><?php echo $packet->altitude; ?> m</td></tr> - <?php endif; ?> - <?php endif; ?> - - <?php if ($packet->comment != null) : ?> - <?php if ($packet->packetTypeId == 10) : ?> - <tr><td>Status</td><td><?php echo htmlspecialchars($packet->comment); ?></td></tr> - <?php elseif ($packet->packetTypeId == 7) : ?> - <tr><td>Beacon</td><td><?php echo htmlspecialchars($packet->comment); ?></td></tr> - <?php else : ?> - <tr><td>Comment</td><td><?php echo htmlspecialchars($packet->comment); ?></td></tr> - <?php endif; ?> - <?php endif; ?> - - <?php if ($packet->posambiguity == 1) : ?> - <tr><td>Posambiguity</td><td>Yes</td></tr> - <?php endif; ?> - - <?php if ($packet->phg != null) : ?> - <?php if (isImperialUnitUser()) : ?> - <tr><td>PHG</td><td><?php echo $packet->phg; ?> (Calculated range: <?php echo round(convertKilometerToMile($packet->getPHGRange()/1000),2); ?> miles)</td></tr> - <?php else : ?> - <tr><td>PHG</td><td><?php echo $packet->phg; ?> (Calculated range: <?php echo round($packet->getPHGRange()/1000,2); ?> km)</td></tr> - <?php endif; ?> - <?php endif; ?> - - <?php if ($packet->rng != null) : ?> - <tr><td>RNG</td><td><?php echo $packet->rng; ?></td></tr> - <?php endif; ?> - - <?php if ($station->latestWeatherPacketTimestamp !== null) : ?> - <?php $weather = $packet->getPacketWeather(); ?> - <?php if ($weather->isExistingObject()) : ?> - <tr> - <td>Weather</td> - <td> - <table> - <tbody> - <?php if ($weather->wxRawTimestamp !== null) : ?> - <tr> - <td>Time:</td><td><span class="raw-packet-timestamp"><?php echo $weather->wxRawTimestamp; ?></span></td> - </tr> - <?php endif; ?> - - <?php if ($weather->temperature !== null) : ?> - <tr> - <td>Temperature:</td> - <?php if (isImperialUnitUser()) : ?> - <td><?php echo round(convertCelciusToFahrenheit($weather->temperature), 2); ?>° F</td> - <?php else : ?> - <td><?php echo round($weather->temperature, 2); ?>° C</td> - <?php endif; ?> - </tr> - <?php endif; ?> - - <?php if ($weather->humidity !== null) : ?> - <tr> - <td>Humidity:</td> - <td><?php echo $weather->humidity; ?>%</td> - </tr> - <?php endif; ?> - - <?php if ($weather->pressure !== null) : ?> - <tr> - <td>Pressure:</td> - <?php if (isImperialUnitUser()) : ?> - <td><?php echo round(convertMbarToMmhg($weather->pressure),1); ?> mmHg</td> - <?php else : ?> - <td><?php echo round($weather->pressure,1); ?> hPa</td> - <?php endif; ?> - </tr> - <?php endif; ?> - - <?php if ($weather->rain_1h !== null) : ?> - <tr> - <td>Rain latest hour:</td> - <?php if (isImperialUnitUser()) : ?> - <td><?php echo round(convertMmToInch($weather->rain_1h),2); ?> in</td> - <?php else : ?> - <td><?php echo round($weather->rain_1h,2); ?> mm</td> - <?php endif; ?> - </tr> - <?php endif; ?> - - <?php if ($weather->rain_24h !== null) : ?> - <tr> - <td>Rain latest 24h hours:</td> - <?php if (isImperialUnitUser()) : ?> - <td><?php echo round(convertMmToInch($weather->rain_24h),2); ?> in</td> - <?php else : ?> - <td><?php echo round($weather->rain_24h,2); ?> mm</td> - <?php endif; ?> - </tr> - <?php endif; ?> - - <?php if ($weather->rain_since_midnight !== null) : ?> - <tr> - <td>Rain since midnight:</td> - <?php if (isImperialUnitUser()) : ?> - <td><?php echo round(convertMmToInch($weather->rain_since_midnight),2); ?> in</td> - <?php else : ?> - <td><?php echo round($weather->rain_since_midnight,2); ?> mm</td> - <?php endif; ?> - </tr> - <?php endif; ?> - - <?php if (isImperialUnitUser()) : ?> - <?php if ($weather->wind_speed !== null && $weather->wind_speed > 0) : ?> - <tr> - <td>Wind Speed:</td> - <td><?php echo round(convertMpsToMph($weather->wind_speed), 2); ?> mph, <?php echo $weather->wind_direction; ?>°</td> - </tr> - <?php elseif($weather->wind_speed !== null) : ?> - <tr> - <td>Wind Speed:</td> - <td><?php echo round(convertMpsToMph($weather->wind_speed), 2); ?> mph</td> - </tr> - <?php endif; ?> - - <?php else : ?> - <?php if ($weather->wind_speed !== null && $weather->wind_speed > 0) : ?> - <tr> - <td>Wind Speed:</td> - <td><?php echo round($weather->wind_speed, 2); ?> m/s, <?php echo $weather->wind_direction; ?>°</td> - </tr> - <?php elseif($weather->wind_speed !== null) : ?> - <tr> - <td>Wind Speed:</td> - <td><?php echo round($weather->wind_speed, 2); ?> m/s</td> - </tr> - <?php endif; ?> - <?php endif; ?> - - <?php if ($weather->luminosity !== null) : ?> - <tr> - <td>Luminosity:</td><td><?php echo round($weather->luminosity,0); ?> W/m²</td> - </tr> - <?php endif; ?> - - <?php if ($weather->snow !== null) : ?> - <tr> - <?php if (isImperialUnitUser()) : ?> - <td>Snow:</td><td><?php echo round(convertMmToInch($weather->snow), 0); ?> in</td> - <?php else : ?> - <td>Snow:</td><td><?php echo round($weather->snow, 0); ?> mm</td> - <?php endif; ?> - </tr> - <?php endif; ?> - </tbody> - </table> - </td> - </tr> - - <?php endif; ?> - <?php endif; ?> - - <?php if ($station->latestTelemetryPacketTimestamp !== null) : ?> - <?php $telemetry = $packet->getPacketTelemetry(); ?> - <?php if ($telemetry->isExistingObject()) : ?> - <tr> - <td>Telemetry Analog Values</td> - <td> - <table> - <tbody> - <?php for ($i = 1; $i<=5; $i++) : ?> - <?php if ($telemetry->isValueSet($i)) : ?> - <tr> - <td><?php echo htmlspecialchars($telemetry->getValueParameterName($i)); ?>:</td> - <td><?php echo round($telemetry->getValue($i), 2); ?> <?php echo htmlspecialchars($telemetry->getValueUnit($i)); ?></td> - </tr> - <?php endif; ?> - <?php endfor; ?> - </tbody> - </table> - </td> - </tr> - <?php if ($telemetry->bits !== null) : ?> - <tr> - <td>Telemetry Bit Values</td> - <td> - <table> - <tbody> - <?php for ($i = 1; $i<=8; $i++) : ?> - <tr> - <td><?php echo htmlspecialchars($telemetry->getBitParameterName($i)); ?>:</td> - <td><?php echo $telemetry->getBit($i); ?></td> - </tr> - <?php endfor; ?> - </tbody> - </table> - </td> - </tr> - <?php endif; ?> - <?php endif; ?> - - - <?php if ($packet->packetTypeId == 7 && strstr($packet->raw, ':UNIT.')) : ?> - <?php $pos = strpos($packet->raw, ':UNIT.'); ?> - <tr> - <td>Telemetry UNIT</td> - <td> - <?php echo htmlspecialchars(substr($packet->raw, $pos + 6)); ?> - </td> - </tr> - <?php endif; ?> - - <?php if ($packet->packetTypeId == 7 && strstr($packet->raw, ':BITS.')) : ?> - <?php $pos = strpos($packet->raw, ':BITS.'); ?> - <tr> - <td>Telemetry BITS</td> - <td> - <?php echo htmlspecialchars(substr($packet->raw, $pos + 6)); ?> - </td> - </tr> - <?php endif; ?> - - <?php if ($packet->packetTypeId == 7 && strstr($packet->raw, ':EQNS.')) : ?> - <?php $pos = strpos($packet->raw, ':EQNS.'); ?> - <tr> - <td>Telemetry EQNS</td> - <td> - <?php echo htmlspecialchars(substr($packet->raw, $pos + 6)); ?> - </td> - </tr> - <?php endif; ?> - - <?php if ($packet->packetTypeId == 7 && strstr($packet->raw, ':PARM.')) : ?> - <?php $pos = strpos($packet->raw, ':PARM.'); ?> - <tr> - <td>Telemetry PARM</td> - <td> - <?php echo htmlspecialchars(substr($packet->raw, $pos + 6)); ?> - </td> - </tr> - <?php endif; ?> - <?php endif; ?> - - <?php if ($packet->getPacketOgn()->isExistingObject()) : ?> - <?php if ($packet->getPacketOgn()->ognSignalToNoiseRatio !== null) : ?> - <tr> - <td>Signal to Noise Ratio</td> - <td> - <?php echo $packet->getPacketOgn()->ognSignalToNoiseRatio; ?> dB - </td> - </tr> - <?php endif;?> - - <?php if ($packet->getPacketOgn()->ognBitErrorsCorrected !== null) : ?> - <tr> - <td>Bits corrected</td> - <td> - <?php echo $packet->getPacketOgn()->ognBitErrorsCorrected; ?> - </td> - </tr> - <?php endif;?> - - <?php if ($packet->getPacketOgn()->ognFrequencyOffset !== null) : ?> - <tr> - <td>Frequency Offset</td> - <td> - <?php echo $packet->getPacketOgn()->ognFrequencyOffset; ?> kHz - </td> - </tr> - <?php endif;?> - - <?php if ($packet->getPacketOgn()->ognClimbRate !== null) : ?> - <tr> - <td>Climb Rate</td> - <td> - <?php echo $packet->getPacketOgn()->ognClimbRate; ?> fpm - </td> - </tr> - <?php endif;?> - - <?php if ($packet->getPacketOgn()->ognTurnRate !== null) : ?> - <tr> - <td>Turn Rate</td> - <td> - <?php echo $packet->getPacketOgn()->ognTurnRate; ?> fpm - </td> - </tr> - <?php endif;?> - <?php endif;?> - </tbody> - </table> - </div> - </div> - <?php endif; ?> - <?php endforeach; ?> - </div> - - <?php if (count($packets) == 0) : ?> - <p> - <b><i>No raw packets found.</i></b> - </p> - <?php endif; ?> - </div> - - <script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('.raw-packet-timestamp').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - - $('#raw-category').change(function () { - loadView("/views/raw.php?id=<?php echo $station->id ?>&type=" + $('#raw-type').val() + "&category=" + $('#raw-category').val() + "&rows=" + $('#raw-rows').val() + "&page=1"); - }); - - $('#raw-type').change(function () { - loadView("/views/raw.php?id=<?php echo $station->id ?>&type=" + $('#raw-type').val() + "&category=" + $('#raw-category').val() + "&rows=" + $('#raw-rows').val() + "&page=1"); - }); - - $('#raw-rows').change(function () { - loadView("/views/raw.php?id=<?php echo $station->id ?>&type=" + $('#raw-type').val() + "&category=" + $('#raw-category').val() + "&rows=" + $('#raw-rows').val() + "&page=1"); - }); - - if (window.trackdirect) { - <?php if ($station->latestConfirmedLatitude != null && $station->latestConfirmedLongitude != null) : ?> - window.trackdirect.addListener("map-created", function() { - if (!window.trackdirect.focusOnStation(<?php echo $station->id ?>, true)) { - window.trackdirect.setCenter(<?php echo $station->latestConfirmedLatitude ?>, <?php echo $station->latestConfirmedLongitude ?>); - } - }); - <?php endif; ?> - } - }); - </script> -<?php endif; ?> diff --git a/htdocs/public/views/search.php b/htdocs/public/views/search.php deleted file mode 100644 index 4f5b304..0000000 --- a/htdocs/public/views/search.php +++ /dev/null @@ -1,132 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php - $stations = []; - $seconds = $_GET['seconds'] ?? 0; - $page = $_GET['page'] ?? 1; - $rows = $_GET['rows'] ?? 50; - $offset = ($page - 1) * $rows; - $count = 0; - if (isset($_GET['q'])) { - $stations = StationRepository::getInstance()->getObjectListByQueryString($_GET['q'], $seconds, $rows, $offset); - $count = StationRepository::getInstance()->getNumberOfStationsByQueryString($_GET['q'], $seconds); - } - $pages = ceil($count / $rows); -?> - -<title>Station search</title> -<div class="modal-inner-content" style="padding-bottom: 30px;"> - <p> - Search by entering the beginning of the station name/id (or just click search to list all). - </p> - - <form id="station-search-form" method="get" action=""> - <div style="margin-bottom: 5px;"> - <select name ="seconds" style="width: 280px;" id="station-search-form-seconds"> - <option <?php echo ($seconds == 0 ? 'selected' : ''); ?> value="0">Include all known stations in search</option> - <option <?php echo ($seconds == 60 ? 'selected' : ''); ?> value="60">Only stations active latest hour</option> - <option <?php echo ($seconds == 360 ? 'selected' : ''); ?> value="360">Only stations active latest 6 hours</option> - <option <?php echo ($seconds == 720 ? 'selected' : ''); ?> value="720">Only stations active latest 12 hours</option> - </select> - </div> - <div> - <input type="text" style="width: 280px; margin-bottom: 5px;" id="station-search-form-q" name="q" placeholder="Search here!" title="Search for a station/vehicle here!" value="<?php echo ($_GET['q'] ?? '') ?>"> - <input type="submit" value="Search"> - </div> - </form> - - <div style="clear: both;"></div> - - <?php if (count($stations) > 0) : ?> - <p> - <?php echo $count; ?> result(s): - </p> - - <?php if ($pages > 1): ?> - <div class="pagination"> - <a class="tdlink" href="/search.php?q=<?php echo ($_GET['q'] ?? "") ?>&seconds=<?php echo $seconds ?>&page=1"><<</a> - <?php for($i = max(1, $page - 3); $i <= min($pages, $page + 3); $i++) : ?> - <a href="/search.php?q=<?php echo ($_GET['q'] ?? "") ?>&seconds=<?php echo $seconds ?>&page=<?php echo $i; ?>" <?php echo ($i == $page ? 'class="tdlink active"': 'class="tdlink"')?>><?php echo $i ?></a> - <?php endfor; ?> - <a class="tdlink" href="/search.php?q=<?php echo ($_GET['q'] ?? "") ?>&seconds=<?php echo $seconds ?>&page=<?php echo $pages; ?>">>></a> - </div> - <?php endif; ?> - - <div class="datagrid datagrid-search" style="max-width:1000px;"> - <table> - <thead> - <tr> - <th> </th> - <th>Name/Id</th> - <th>Latest heard</th> - <th>Comment/Other</th> - <th>Map</th> - - </tr> - </thead> - <tbody> - <?php foreach ($stations as $foundStation) : ?> - <tr> - <td> - <img src="<?php echo $foundStation->getIconFilePath(22, 22); ?>" alt="Symbol"/> - </td> - <td> - <a class="tdlink" href="/views/overview.php?id=<?php echo $foundStation->id; ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>"><?php echo htmlentities($foundStation->name) ?></a> - </td> - <td class="station-latest-heard-timestamp" style="white-space: nowrap;"> - <?php echo $foundStation->latestConfirmedPacketTimestamp; ?> - </td> - <td> - <?php if ($foundStation->sourceId == 5 && $foundStation->getOgnDevice() !== null) : ?> - <div style="width: 100px; display: inline-block;">Registration:</div><?php echo htmlspecialchars($foundStation->getOgnDevice()->registration); ?> <?php echo $foundStation->getOgnDevice()->cn ? '[' .htmlspecialchars($foundStation->getOgnDevice()->cn) . ']' : ''; ?><br/> - <div style="width: 100px; display: inline-block;">Aircraft Model:</div><?php echo htmlspecialchars($foundStation->getOgnDevice()->aircraftModel); ?> - <?php else : ?> - <?php $latestPacket = PacketRepository::getInstance()->getObjectById($foundStation->latestPacketId, $foundStation->latestPacketTimestamp); ?> - <?php echo htmlspecialchars($latestPacket->comment); ?> - <?php endif; ?> - </td> - <td> - <?php if ($foundStation->latestConfirmedPacketTimestamp > (time() - 60*60*24)) : ?> - <a href="?sid=<?php echo $foundStation->id; ?>" onclick=" - if (window.parent && window.parent.trackdirect) { - $('.modal', parent.document).hide(); - window.parent.trackdirect.filterOnStationId([]); - window.parent.trackdirect.filterOnStationId([<?php echo $foundStation->id; ?>]); - return false; - }">Map</a> - <?php else : ?> - - <?php endif; ?> - </td> - </tr> - <?php endforeach; ?> - </tbody> - </table> - </div> - <?php endif; ?> - - <?php if (isset($_GET['q']) && count($stations) == 0) : ?> - <p> - <b><i>No stations packets found.</i></b> - </p> - <?php endif; ?> -</div> -<script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('.station-latest-heard-timestamp').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - - $('#station-search-form').bind('submit',function(e) { - var q = $('#station-search-form-q').val(); - var seconds = $('#station-search-form-seconds').val(); - loadView('/views/search.php?imperialUnits=<?php echo $_GET['imperialUnits'] ?? '0'; ?>&q=' + q + '&seconds=' + seconds); - e.preventDefault(); - }); - }); -</script> diff --git a/htdocs/public/views/statistics.php b/htdocs/public/views/statistics.php deleted file mode 100644 index 38903af..0000000 --- a/htdocs/public/views/statistics.php +++ /dev/null @@ -1,151 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php $station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); ?> -<?php if ($station->isExistingObject()) : ?> - <?php - $days = 10; - if (!isAllowedToShowOlderData()) { - $days = 1; - } - ?> - <?php $senderStats = PacketPathRepository::getInstance()->getSenderPacketPathSatistics($station->id, time() - (60*60*24*$days)); ?> - <?php $receiverStats = PacketPathRepository::getInstance()->getReceiverPacketPathSatistics($station->id, time() - (60*60*24*$days)); ?> - - <title><?php echo $station->name; ?> Stats</title> - <div class="modal-inner-content"> - <div class="modal-inner-content-menu"> - <a class="tdlink" title="Overview" href="/views/overview.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Overview</a> - <span>Statistics</span> - <a class="tdlink" title="Trail Chart" href="/views/trail.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Trail Chart</a> - <a class="tdlink" title="Weather" href="/views/weather.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Weather</a> - <a class="tdlink" title="Telemetry" href="/views/telemetry.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Telemetry</a> - <a class="tdlink" title="Raw packets" href="/views/raw.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Raw packets</a> - </div> - - <div class="horizontal-line"> </div> - - <p> - The communication statistics that we show here may differ from similar communication statistics on other websites, the reason is probably that this website is not collecting packets from the same APRS servers. Each APRS server performes duplicate filtering, and which packet that is considered to be a duplicate may differ depending on which APRS server you receive your data from. - </p> - - <?php if (count($senderStats) > 0) : ?> - <p>Stations that heard <?php echo htmlspecialchars($station->name) ?> <b>directly</b> during the latest <?php echo $days; ?> day(s).</p> - <div class="datagrid datagrid-statistics" style="max-width:700px;"> - <table> - <thead> - <tr> - <th>Station</th> - <th>Number of packets</th> - <th>Latest heard</th> - <th>Longest distance</th> - </tr> - </thead> - <tbody> - <?php foreach ($senderStats as $stats) : ?> - <?php $otherStation = StationRepository::getInstance()->getObjectById($stats["station_id"]) ?> - <tr> - <td> - <img alt="Symbol" src="<?php echo $otherStation->getIconFilePath(22, 22); ?>" style="vertical-align: middle;"/> - <a class="tdlink" href="/views/overview.php?id=<?php echo $otherStation->id; ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>"><?php echo htmlentities($otherStation->name) ?></a> - </td> - <td> - <?php echo $stats["number_of_packets"]; ?> - </td> - <td class="latest-heard"> - <?php echo $stats["latest_timestamp"];?> - </td> - - <td class="longest-distance"> - <?php if ($stats["longest_distance"] !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertKilometerToMile($stats["longest_distance"] / 1000), 2); ?> miles - <?php else : ?> - <?php echo round($stats["longest_distance"] / 1000, 2); ?> km - <?php endif; ?> - <?php else : ?> - - <?php endif; ?> - </td> - </tr> - <?php endforeach; ?> - </tbody> - </table> - </div> - <br/> - <?php endif; ?> - - - <?php if (count($receiverStats) > 0) : ?> - <p>Stations <b>directly</b> heard by <?php echo htmlspecialchars($station->name); ?> during the latest <?php echo $days; ?> day(s).</p> - <div class="datagrid datagrid-statistics" style="max-width:700px;"> - <table> - <thead> - <tr> - <th>Station</th> - <th>Number of packets</th> - <th>Latest heard</th> - <th>Longest distance</th> - </tr> - </thead> - <tbody> - <?php foreach ($receiverStats as $stats) : ?> - <?php $otherStation = StationRepository::getInstance()->getObjectById($stats["station_id"]) ?> - <tr> - <td> - <img alt="Symbol" src="<?php echo $otherStation->getIconFilePath(22, 22); ?>" style="vertical-align: middle;"/> - <a class="tdlink" href="/views/overview.php?id=<?php echo $otherStation->id; ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>"><?php echo htmlentities($otherStation->name) ?></a> - - </td> - <td> - <?php echo $stats["number_of_packets"]; ?> - </td> - <td class="latest-heard"> - <?php echo $stats["latest_timestamp"];?> - </td> - <td class="longest-distance"> - <?php if ($stats["longest_distance"] !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertKilometerToMile($stats["longest_distance"] / 1000), 2); ?> miles - <?php else : ?> - <?php echo round($stats["longest_distance"] / 1000, 2); ?> km - <?php endif; ?> - <?php else : ?> - - <?php endif; ?> - </td> - </tr> - <?php endforeach; ?> - </tbody> - </table> - </div> - <br/> - <?php endif; ?> - - - <?php if (count($senderStats) == 0 && count($receiverStats) == 0): ?> - <p><i><b>No radio communication statistics during the latest <?php echo $days; ?> days.</b></i></p> - <?php endif; ?> - </div> - <script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('.latest-heard').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - - if (window.trackdirect) { - <?php if ($station->latestConfirmedLatitude != null && $station->latestConfirmedLongitude != null) : ?> - window.trackdirect.addListener("map-created", function() { - if (!window.trackdirect.focusOnStation(<?php echo $station->id ?>, true)) { - window.trackdirect.setCenter(<?php echo $station->latestConfirmedLatitude ?>, <?php echo $station->latestConfirmedLongitude ?>); - } - }); - <?php endif; ?> - } - }); - </script> -<?php endif; ?> diff --git a/htdocs/public/views/telemetry.php b/htdocs/public/views/telemetry.php deleted file mode 100644 index a425ae0..0000000 --- a/htdocs/public/views/telemetry.php +++ /dev/null @@ -1,287 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php $station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); ?> -<?php if ($station->isExistingObject()) : ?> - <?php - $maxDays = 10; - if (!isAllowedToShowOlderData()) { - $maxDays = 1; - } - $page = $_GET['page'] ?? 1; - $rows = $_GET['rows'] ?? 25; - $offset = ($page - 1) * $rows; - $telemetryPackets = PacketTelemetryRepository::getInstance()->getLatestObjectListByStationId($station->id, $rows, $offset, $maxDays); - $latestPacketTelemetry = (count($telemetryPackets) > 0 ? $telemetryPackets[0] : new PacketTelemetry(null)); - $count = PacketTelemetryRepository::getInstance()->getLatestNumberOfPacketsByStationId($station->id, $maxDays); - $pages = ceil($count / $rows); - ?> - - <title><?php echo $station->name; ?> Telemetry</title> - <div class="modal-inner-content"> - <div class="modal-inner-content-menu"> - <a class="tdlink" title="Overview" href="/views/overview.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Overview</a> - <a class="tdlink" title="Statistics" href="/views/statistics.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Statistics</a> - <a class="tdlink" title="Trail Chart" href="/views/trail.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Trail Chart</a> - <a class="tdlink" title="Weather" href="/views/weather.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Weather</a> - <span>Telemetry</span> - <a class="tdlink" title="Raw packets" href="/views/raw.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Raw packets</a> - </div> - - <div class="horizontal-line"> </div> - - <?php if (count($telemetryPackets) > 0) : ?> - - <p>This is the latest recevied telemetry packets stored in our database for station/object <?php echo $station->name; ?>. If no packets are shown the sender has not sent any telemetry packets the latest <?php echo $maxDays; ?> day(s).</p> - <p>Telemetry packets is used to share measurements like repeteater parameters, battery voltage, radiation readings (or any other measurements).</p> - - <div class="form-container"> - <select id="telemetry-category" style="float:left; margin-right: 5px;"> - <option <?php echo (($_GET['category'] ?? 1) == 1 ? 'selected' : ''); ?> value="1">Telemetry Values</option> - <option <?php echo (($_GET['category'] ?? 1) == 2 ? 'selected' : ''); ?> value="2">Telemetry Bits</option> - </select> - - <select id="telemetry-rows" style="float:left; margin-right: 5px;" class="pagination-rows"> - <option <?php echo ($rows == 25 ? 'selected' : ''); ?> value="25">25 rows</option> - <option <?php echo ($rows == 50 ? 'selected' : ''); ?> value="50">50 rows</option> - <option <?php echo ($rows == 100 ? 'selected' : ''); ?> value="100">100 rows</option> - <option <?php echo ($rows == 200 ? 'selected' : ''); ?> value="200">200 rows</option> - <option <?php echo ($rows == 300 ? 'selected' : ''); ?> value="300">300 rows</option> - </select> - </div> - - <?php if ($pages > 1): ?> - <div class="pagination"> - <a class="tdlink" href="/views/telemetry.php?id=<?php echo $station->id; ?>&category=<?php echo ($_GET['category'] ?? 1); ?>&rows=<?php echo $rows; ?>&page=1"><<</a> - <?php for($i = max(1, $page - 3); $i <= min($pages, $page + 3); $i++) : ?> - <a href="/views/telemetry.php?id=<?php echo $station->id; ?>&category=<?php echo ($_GET['category'] ?? 1); ?>&rows=<?php echo $rows; ?>&page=<?php echo $i; ?>" <?php echo ($i == $page ? 'class="tdlink active"': 'class="tdlink"')?>><?php echo $i ?></a> - <?php endfor; ?> - <a class="tdlink" href="/views/telemetry.php?id=<?php echo $station->id; ?>&category=<?php echo ($_GET['category'] ?? 1); ?>&rows=<?php echo $rows; ?>&page=<?php echo $pages; ?>">>></a> - </div> - <?php endif; ?> - - <?php if (($_GET['category'] ?? 1) == 1) : ?> - <div class="datagrid datagrid-telemetry1" style="max-width:1000px;"> - <table> - <thead> - <tr> - <th>Time</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(1)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(2)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(3)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(4)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(5)); ?>*</th> - </tr> - </thead> - <tbody> - <?php foreach ($telemetryPackets as $packetTelemetry) : ?> - - <tr> - <td class="telemetrytime"> - <?php echo ($packetTelemetry->wxRawTimestamp != null?$packetTelemetry->wxRawTimestamp:$packetTelemetry->timestamp); ?> - </td> - <td> - <?php if ($packetTelemetry->val1 !== null) : ?> - <?php echo round($packetTelemetry->getValue(1), 2); ?> <?php echo htmlspecialchars($packetTelemetry->getValueUnit(1)); ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <td> - <?php if ($packetTelemetry->val1 !== null) : ?> - <?php echo round($packetTelemetry->getValue(2), 2); ?> <?php echo htmlspecialchars($packetTelemetry->getValueUnit(2)); ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <td> - <?php if ($packetTelemetry->val1 !== null) : ?> - <?php echo round($packetTelemetry->getValue(3), 2); ?> <?php echo htmlspecialchars($packetTelemetry->getValueUnit(3)); ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <td> - <?php if ($packetTelemetry->val1 !== null) : ?> - <?php echo round($packetTelemetry->getValue(4), 2); ?> <?php echo htmlspecialchars($packetTelemetry->getValueUnit(4)); ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <td> - <?php if ($packetTelemetry->val1 !== null) : ?> - <?php echo round($packetTelemetry->getValue(5), 2); ?> <?php echo htmlspecialchars($packetTelemetry->getValueUnit(5)); ?> - <?php else : ?> - - - <?php endif; ?> - </td> - </tr> - - <?php endforeach; ?> - </tbody> - </table> - </div> - - <div class="telemetry-subtable"> - <div> - <div> - *Used Equation Coefficients: - </div> - <div> - <?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(1)); ?>: <?php echo implode(', ', $latestPacketTelemetry->getEqnsValue(1)); ?> - </div> - <div> - <?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(2)); ?>: <?php echo implode(', ', $latestPacketTelemetry->getEqnsValue(2)); ?> - </div> - <div> - <?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(3)); ?>: <?php echo implode(', ', $latestPacketTelemetry->getEqnsValue(3)); ?> - </div> - <div> - <?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(4)); ?>: <?php echo implode(', ', $latestPacketTelemetry->getEqnsValue(4)); ?> - </div> - <div> - <?php echo htmlspecialchars($latestPacketTelemetry->getValueParameterName(5)); ?>: <?php echo implode(', ', $latestPacketTelemetry->getEqnsValue(5)); ?> - </div> - </div> - </div> - <?php endif; ?> - - <?php if (($_GET['category'] ?? 1) == 2) : ?> - <div class="datagrid datagrid-telemetry2" style="max-width:1000px;"> - <table> - <thead> - <tr> - <th>Time</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(1)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(2)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(3)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(4)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(5)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(6)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(7)); ?>*</th> - <th><?php echo htmlspecialchars($latestPacketTelemetry->getBitParameterName(8)); ?>*</th> - </tr> - </thead> - <tbody> - <?php foreach ($telemetryPackets as $i => $packetTelemetry) : ?> - <?php if ($packetTelemetry->bits !== null && $i >= 2 ) : ?> - <tr> - <td class="telemetrytime"> - <?php echo $packetTelemetry->timestamp; ?> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(1) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(1)); ?> - </div> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(2) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(2)); ?> - </div> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(3) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(3)); ?> - </div> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(4) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(4)); ?> - </div> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(5) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(5)); ?> - </div> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(6) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(6)); ?> - </div> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(7) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(7)); ?> - </div> - </td> - <td> - <div class="<?php echo ($packetTelemetry->getBit(8) == 1?'telemetry-biton':'telemetry-bitoff'); ?>"> - <?php echo htmlspecialchars($packetTelemetry->getBitLabel(8)); ?> - </div> - </td> - </tr> - <?php endif; ?> - <?php endforeach; ?> - </tbody> - </table> - </div> - - <div class="telemetry-subtable"> - <div> - <div> - *Used Bit Sense: - </div> - <div> - <?php echo $latestPacketTelemetry->getBitSense(1); ?> - <?php echo $latestPacketTelemetry->getBitSense(2); ?> - <?php echo $latestPacketTelemetry->getBitSense(3); ?> - <?php echo $latestPacketTelemetry->getBitSense(4); ?> - <?php echo $latestPacketTelemetry->getBitSense(5); ?> - <?php echo $latestPacketTelemetry->getBitSense(6); ?> - <?php echo $latestPacketTelemetry->getBitSense(7); ?> - <?php echo $latestPacketTelemetry->getBitSense(8); ?> - </div> - </div> - </div> - <?php endif; ?> - <?php endif; ?> - - - <?php if (count($telemetryPackets) > 0) : ?> - <br/> - <ul> - <li>The parameter names for the analog channels will be Value1, Value2, Value3 (up to Value5) if station has not sent a PARAM-packet that specifies the parameter names for each analog channel.</li> - <li>Each analog value is a decimal number between 000 and 255 (according to APRS specifications). The receiver use the telemetry equation coefficientsto to restore the original sensor values. If no EQNS-packet with equation coefficients is sent we will show the values as is (this corresponds to the equation coefficients a=0, b=1 and c=0).<br/>The sent equation coefficients is used in the equation: a * value<sup>2</sup> + b * value + c.</li> - <li>The units for the analog values will not be shown if station has not sent a UNIT-packet specifying what unit's to use.</li> - <li>The parameter names for the digital bits will be Bit1, Bit2, Bit3 (up to Bit8) if station has not sent a PARAM-packet that specifies the parameter names for each digital bit.</li> - <li>All bit labels will be named "On" if station has not sent a UNIT-packet that specifies the label of each bit.</li> - <li>A bit is considered to be <b>On</b> when the bit is 1 if station has not sent a BITS-packet that specifies another "Bit sense" (a BITS-packet specify the state of the bits that match the BIT labels)</li> - </ul> - <?php endif; ?> - - <?php if (count($telemetryPackets) == 0) : ?> - <p><i><b>No recent telemetry values.</b></i></p> - <?php endif; ?> - - </div> - - <script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('.telemetrytime').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - - $('#telemetry-category').change(function () { - loadView("/views/telemetry.php?id=<?php echo $station->id ?>&category=" + $('#telemetry-category').val() + "&rows=" + $('#telemetry-rows').val() + "&page=1"); - }); - - $('#telemetry-rows').change(function () { - loadView("/views/telemetry.php?id=<?php echo $station->id ?>&category=" + $('#telemetry-category').val() + "&rows=" + $('#telemetry-rows').val() + "&page=1"); - }); - - if (window.trackdirect) { - <?php if ($station->latestConfirmedLatitude != null && $station->latestConfirmedLongitude != null) : ?> - window.trackdirect.addListener("map-created", function() { - if (!window.trackdirect.focusOnStation(<?php echo $station->id ?>, true)) { - window.trackdirect.setCenter(<?php echo $station->latestConfirmedLatitude ?>, <?php echo $station->latestConfirmedLongitude ?>); - } - }); - <?php endif; ?> - } - }); - </script> -<?php endif; ?> diff --git a/htdocs/public/views/trail.php b/htdocs/public/views/trail.php deleted file mode 100644 index 5f13f2e..0000000 --- a/htdocs/public/views/trail.php +++ /dev/null @@ -1,194 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php $station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); ?> -<?php if ($station->isExistingObject()) : ?> - <title><?php echo $station->name; ?> Trail Chart</title> - <div class="modal-inner-content"> - <div class="modal-inner-content-menu"> - <a class="tdlink" title="Overview" href="/views/overview.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Overview</a> - <a class="tdlink" title="Statistics" href="/views/statistics.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Statistics</a> - <span>Trail Chart</span> - <a class="tdlink" title="Weather" href="/views/weather.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Weather</a> - <a class="tdlink" title="Telemetry" href="/views/telemetry.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Telemetry</a> - <a class="tdlink" title="Raw packets" href="/views/raw.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Raw packets</a> - </div> - - <div class="horizontal-line"> </div> - - <p> - Show chart for - </p> - - - <div class="form-container"> - <select id="trail-type" style="float:left; margin-right: 5px;"> - <option <?php echo (($_GET['type'] ?? 'speed') == 'speed' ? 'selected' : ''); ?> value="speed">Speed</option> - <option <?php echo (($_GET['type'] ?? 'speed') == 'altitude' ? 'selected' : ''); ?> value="altitude">Altitude</option> - </select> - - <select id="trail-hours" style="float:left; margin-right: 5px;"> - <option <?php echo (($_GET['hours'] ?? 1) == 1 ? 'selected' : ''); ?> value="1">Latest hour</option> - <option <?php echo (($_GET['hours'] ?? 1) == 3 ? 'selected' : ''); ?> value="3">Latest 3 hours</option> - <option <?php echo (($_GET['hours'] ?? 1) == 24 ? 'selected' : ''); ?> value="24">Latest 24 hours</option> - </select> - </div> - - <div style="clear: both;"></div> - - <div id="trail-curve-chart" style="width:850px; height: 350px;"></div> - - <p> - * chart x-axis is based on your timezone (not the timezone of the station). - </p> - </div> - <script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('.raw-packet-timestamp').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - - if (window.trackdirect) { - <?php if ($station->latestConfirmedLatitude != null && $station->latestConfirmedLongitude != null) : ?> - window.trackdirect.addListener("map-created", function() { - if (!window.trackdirect.focusOnStation(<?php echo $station->id ?>, true)) { - window.trackdirect.setCenter(<?php echo $station->latestConfirmedLatitude ?>, <?php echo $station->latestConfirmedLongitude ?>); - } - }); - <?php endif; ?> - } - - function loadTrailChart(stationId, hours, type, imperialUnits) { - $('#trail-curve-chart').html('Loading!'); - - $.ajax({ - type: 'GET', - url: '/data/trail.php?id=' + stationId + '&hours=' + hours + '&type=' + type + '&imperialUnits=' + imperialUnits, - dataType: 'json' - }).done(function( result ) { - var onlyZeroValues = true; - for(i=1; i < result.length; i++) { - if (result[i][0] === parseInt(result[i][0], 10)) { - result[i][0] = new Date(result[i][0] * 1000); - } - - if (result[i][1] != 0 && result[i][1] != null) { - onlyZeroValues = false; - } - } - - var endTimestamp = new Date(); - var startTimestamp = new Date(endTimestamp.getTime() - 1000*60*60*hours); - - if (result != null && result.length > 1) { - google.charts.setOnLoadCallback( - function () { - var data = google.visualization.arrayToDataTable(result); - - var pointSize = 0; // default - var dataOpacity = 1; - var trigger = 'selection'; - var series = { - 0: { lineWidth: 2}, - 1: { lineWidth: 1, color: 'darkgreen'}, - }; - var legend = {position: 'none'}; - var title = result[0][1]; - var curveType = 'none'; // can be 'function' or 'none' - var vAxis = {}; - var hAxis = { - minValue: startTimestamp, - maxValue: endTimestamp - }; - var explorer = { - axis: 'horizontal', - keepInBounds:true, - maxZoomIn: 50, - maxZoomOut: 1, - actions: ['dragToPan', 'rightClickToReset'] - }; - explorer = null; - - if (result[0].length > 2) { - // We need to show legend if we plot more than one thing - legend = {position: 'top'}; - title = null; - } - - if (onlyZeroValues) { - // dot chart with big dots - var series = { - 0: { lineWidth: 0, pointsVisible: true, pointSize: 4 }, - } - } else if (hours < 24) { - // line chart - var series = { - 0: { lineWidth: 2, pointsVisible: false}, - } - } else { - // dot chart - var series = { - 0: { lineWidth: 0, pointsVisible: true, pointSize: 1 }, - } - } - - if (type == 'speed') { - // I'm pretty sure we won't have negative speed - var vAxis = { - viewWindow : { - min: 0 - } - }; - } - - var chartArea = {'width': '90%', 'height': '80%', 'left': '8%'}; - var options = { - title: title, - curveType: curveType, - tooltip : { - trigger: trigger - }, - pointsVisible : false, - pointSize: pointSize, - dataOpacity: dataOpacity, - series: series, - chartArea: chartArea, - legend: legend, - hAxis: hAxis, - vAxis: vAxis, - interpolateNulls: false, - crosshair: { - trigger: 'focus', - opacity: 0.5 - }, - explorer: explorer - }; - - var chart = new google.visualization.LineChart(document.getElementById('trail-curve-chart')); - - chart.draw(data, options); - }); - - } else { - $('#trail-curve-chart').html('<br/><p><i><b>No trail data to create chart from.</b></i></p>'); - } - }); - } - - $('#trail-hours').change(function() { - loadTrailChart(<?php echo $station->id; ?>, $('#trail-hours').val(), $('#trail-type').val(), <?php echo $_GET['imperialUnits'] ?? 0; ?>); - }); - - $('#trail-type').change(function() { - loadTrailChart(<?php echo $station->id; ?>, $('#trail-hours').val(), $('#trail-type').val(), <?php echo $_GET['imperialUnits'] ?? 0; ?>); - }); - - loadTrailChart(<?php echo $station->id; ?>, $('#trail-hours').val(), $('#trail-type').val(), <?php echo $_GET['imperialUnits'] ?? 0; ?>); - - }); - </script> -<?php endif; ?> diff --git a/htdocs/public/views/weather.php b/htdocs/public/views/weather.php deleted file mode 100644 index 5103cee..0000000 --- a/htdocs/public/views/weather.php +++ /dev/null @@ -1,239 +0,0 @@ -<?php require dirname(__DIR__) . "../../includes/bootstrap.php"; ?> - -<?php $station = StationRepository::getInstance()->getObjectById($_GET['id'] ?? null); ?> -<?php if ($station->isExistingObject()) : ?> - <?php - $maxDays = 10; - if (!isAllowedToShowOlderData()) { - $maxDays = 1; - } - $page = $_GET['page'] ?? 1; - $rows = $_GET['rows'] ?? 25; - $offset = ($page - 1) * $rows; - $weatherPackets = PacketWeatherRepository::getInstance()->getLatestObjectListByStationIdAndLimit($station->id, $rows, $offset, $maxDays); - $count = PacketWeatherRepository::getInstance()->getLatestNumberOfPacketsByStationIdAndLimit($station->id, $maxDays); - $pages = ceil($count / $rows); - ?> - - <title><?php echo $station->name; ?> Weather</title> - <div class="modal-inner-content"> - <div class="modal-inner-content-menu"> - <a class="tdlink" title="Overview" href="/views/overview.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Overview</a> - <a class="tdlink" title="Statistics" href="/views/statistics.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Statistics</a> - <a class="tdlink" title="Trail Chart" href="/views/trail.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Trail Chart</a> - <span>Weather</span> - <a class="tdlink" title="Telemetry" href="/views/telemetry.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Telemetry</a> - <a class="tdlink" title="Raw packets" href="/views/raw.php?id=<?php echo $station->id ?>&imperialUnits=<?php echo $_GET['imperialUnits'] ?? 0; ?>">Raw packets</a> - </div> - - <div class="horizontal-line"> </div> - - <?php if (count($weatherPackets) > 0) : ?> - - <p>This is the latest recevied weather packets stored in our database for station/object <?php echo $station->name; ?>. If no packets are shown the sender has not sent any weather packets the latest <?php echo $maxDays; ?> day(s).</p> - - <div class="form-container"> - <select id="weather-rows" style="float:left; margin-right: 5px;" class="pagination-rows"> - <option <?php echo ($rows == 25 ? 'selected' : ''); ?> value="25">25 rows</option> - <option <?php echo ($rows == 50 ? 'selected' : ''); ?> value="50">50 rows</option> - <option <?php echo ($rows == 100 ? 'selected' : ''); ?> value="100">100 rows</option> - <option <?php echo ($rows == 200 ? 'selected' : ''); ?> value="200">200 rows</option> - <option <?php echo ($rows == 300 ? 'selected' : ''); ?> value="300">300 rows</option> - </select> - </div> - - <?php if ($pages > 1): ?> - <div class="pagination"> - <a class="tdlink" href="/views/weather.php?id=<?php echo $station->id; ?>&rows=<?php echo $rows; ?>&page=1"><<</a> - <?php for($i = max(1, $page - 3); $i <= min($pages, $page + 3); $i++) : ?> - <a href="/views/weather.php?id=<?php echo $station->id; ?>&rows=<?php echo $rows; ?>&page=<?php echo $i; ?>" <?php echo ($i == $page ? 'class="tdlink active"': 'class="tdlink"')?>><?php echo $i ?></a> - <?php endfor; ?> - <a class="tdlink" href="/views/weather.php?id=<?php echo $station->id; ?>&rows=<?php echo $rows; ?>&page=<?php echo $pages; ?>">>></a> - </div> - <?php endif; ?> - - - <div class="datagrid datagrid-weather" style="max-width:1000px;"> - <table> - <thead> - <tr> - <th>Time</th> - <th>Temp.</th> - <th>Humidity</th> - <th>Pressure</th> - <th>Rain*</th> - <th>Wind**</th> - <th>Luminosity</th> - <th>Snow</th> - </tr> - </thead> - <tbody> - <?php foreach ($weatherPackets as $packetWeather) : ?> - - <tr> - <td class="weathertime"> - <?php echo ($packetWeather->wxRawTimestamp != null?$packetWeather->wxRawTimestamp:$packetWeather->timestamp); ?> - </td> - <td> - <?php if ($packetWeather->temperature !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertCelciusToFahrenheit($packetWeather->temperature), 2); ?>° F - <?php else : ?> - <?php echo round($packetWeather->temperature, 2); ?>° C - <?php endif; ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <td> - <?php if ($packetWeather->humidity !== null) : ?> - <?php echo $packetWeather->humidity; ?>% - <?php else : ?> - - - <?php endif; ?> - </td> - <td> - <?php if ($packetWeather->pressure !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertMbarToMmhg($packetWeather->pressure),1); ?> mmHg - <?php else : ?> - <?php echo round($packetWeather->pressure,1); ?> hPa - <?php endif; ?> - - <?php else : ?> - - - <?php endif; ?> - </td> - - <?php if ($weatherPackets[0]->rain_1h !== null) : ?> - <td title="<?php echo $packetWeather->getRainSummary(false, true, true); ?>"> - <?php if ($packetWeather->rain_1h !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertMmToInch($packetWeather->rain_1h), 2); ?> in - <?php else : ?> - <?php echo round($packetWeather->rain_1h, 2); ?> mm - <?php endif; ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <?php elseif ($weatherPackets[0]->rain_24h !== null) : ?> - <td title="<?php echo $packetWeather->getRainSummary(true, false, true); ?>"> - <?php if ($packetWeather->rain_24h !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertMmToInch($packetWeather->rain_24h), 2); ?> in - <?php else : ?> - <?php echo round($packetWeather->rain_24h, 2); ?> mm - <?php endif; ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <?php else : ?> - <td title="<?php echo $packetWeather->getRainSummary(true, true, false); ?>"> - <?php if ($packetWeather->rain_since_midnight !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertMmToInch($packetWeather->rain_since_midnight), 2); ?> in - <?php else : ?> - <?php echo round($packetWeather->rain_since_midnight, 2); ?> mm - <?php endif; ?> - <?php else : ?> - - - <?php endif; ?> - </td> - <?php endif; ?> - - <td title="Wind gust: <?php echo ($packetWeather->wind_gust !== null?round($packetWeather->wind_gust,2):'-'); ?> m/s"> - - <?php if (isImperialUnitUser()) : ?> - <?php if ($packetWeather->wind_speed !== null && $packetWeather->wind_speed > 0) : ?> - <?php echo round(convertMpsToMph($packetWeather->wind_speed), 2); ?> mph, <?php echo $packetWeather->wind_direction; ?>° - <?php elseif($packetWeather->wind_speed !== null) : ?> - <?php echo round(convertMpsToMph($packetWeather->wind_speed), 2); ?> mph - <?php else : ?> - - - <?php endif; ?> - - <?php else : ?> - <?php if ($packetWeather->wind_speed !== null && $packetWeather->wind_speed > 0) : ?> - <?php echo round($packetWeather->wind_speed, 2); ?> m/s, <?php echo $packetWeather->wind_direction; ?>° - <?php elseif($packetWeather->wind_speed !== null) : ?> - <?php echo round($packetWeather->wind_speed, 2); ?> m/s - <?php else : ?> - - - <?php endif; ?> - <?php endif; ?> - </td> - - <td> - <?php if ($packetWeather->luminosity !== null) : ?> - <?php echo round($packetWeather->luminosity,0); ?> W/m² - <?php else : ?> - - - <?php endif; ?> - </td> - - <td> - <?php if ($packetWeather->snow !== null) : ?> - <?php if (isImperialUnitUser()) : ?> - <?php echo round(convertMmToInch($packetWeather->snow), 0); ?> in - <?php else : ?> - <?php echo round($packetWeather->snow, 0); ?> mm - <?php endif; ?> - <?php else : ?> - - - <?php endif; ?> - </td> - </tr> - - <?php endforeach; ?> - </tbody> - </table> - </div> - <p> - <?php if ($weatherPackets[0]->rain_1h !== null) : ?> - * Rain latest hour (hover to see other rain measurements)<br/> - <?php elseif ($weatherPackets[0]->rain_24h !== null) : ?> - * Rain latest 24 hours (hover to see other rain measurements)<br/> - <?php else : ?> - * Rain since midnight (hover to see other rain measurements)<br/> - <?php endif; ?> - ** Current wind speed in m/s (hover to see current wind gust speed) - </p> - - <?php endif; ?> - - <?php if (count($weatherPackets) == 0) : ?> - <p><i><b>No recent weather reports.</b></i></p> - <?php endif; ?> - - </div> - - <script> - $(document).ready(function() { - var locale = window.navigator.userLanguage || window.navigator.language; - moment.locale(locale); - - $('.weathertime').each(function() { - if ($(this).html().trim() != '' && !isNaN($(this).html().trim())) { - $(this).html(moment(new Date(1000 * $(this).html())).format('L LTSZ')); - } - }); - - $('#weather-rows').change(function () { - loadView("/views/weather.php?id=<?php echo $station->id ?>&rows=" + $('#weather-rows').val() + "&page=1"); - }); - - - if (window.trackdirect) { - <?php if ($station->latestConfirmedLatitude != null && $station->latestConfirmedLongitude != null) : ?> - window.trackdirect.addListener("map-created", function() { - if (!window.trackdirect.focusOnStation(<?php echo $station->id ?>, true)) { - window.trackdirect.setCenter(<?php echo $station->latestConfirmedLatitude ?>, <?php echo $station->latestConfirmedLongitude ?>); - } - }); - <?php endif; ?> - } - }); - </script> -<?php endif; ?> diff --git a/jslib/build.sh b/jslib/build.sh deleted file mode 100755 index 335d841..0000000 --- a/jslib/build.sh +++ /dev/null @@ -1,38 +0,0 @@ -#!/bin/bash -CURRENTDIR=$(dirname $0) - -cd $CURRENTDIR/../htdocs -mkdir -p tmp - -# -# Minimize and move to build dir -# -for file in $(find ../jslib/src/ -name '*.js') -do - if [[ ${file} != *".min."* ]];then - newFile="${file##*/}" - newFile="tmp/${newFile//.js/}.min.js" - echo "Processing $file -> $newFile" - python -m jsmin $file > $newFile - #cp $file $newFile - else - newFile="tmp/${file##*/}" - echo "Processing $file -> $newFile" - cp $file $newFile - fi -done - -# -# Create the full js file -# -cp tmp/trackdirect.min.js public/js/trackdirect.min.js -rm tmp/trackdirect.min.js -# Note that the order is important (may need to start adding digits in beginning of each js-file) -ls -vr tmp/*.js | xargs cat >> public/js/trackdirect.min.js - -# -# Remove temp dir -# -rm -R tmp - -exit 0 diff --git a/jslib/src/other/common.js b/jslib/src/other/common.js deleted file mode 100755 index 886d75d..0000000 --- a/jslib/src/other/common.js +++ /dev/null @@ -1,206 +0,0 @@ -if (!Date.now) { - Date.now = function () { - return new Date().getTime(); - }; -} - -function escapeRegExp(str) { - return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&"); -} - -String.prototype.replaceAll = function (search, replacement) { - var target = this; - return target.replace(new RegExp(escapeRegExp(search), "gi"), replacement); -}; - -function isNumeric(n) { - return !isNaN(parseFloat(n)) && isFinite(n); -} - -Number.prototype.mod = function (n) { - return ((this % n) + n) % n; -}; - -function isDate(str) { - var d = new Date(str); - var now = new Date(); - if (Object.prototype.toString.call(d) === "[object Date]") { - if (isNaN(d.getTime())) { - return false; - } else { - if (d.getTime() > 0) { - return true; - } else { - return false; - } - } - } else { - return false; - } -} - -if (!Array.prototype.fill) { - Array.prototype.fill = function (value) { - // Steps 1-2. - if (this == null) { - throw new TypeError("this is null or not defined"); - } - - var O = Object(this); - - // Steps 3-5. - var len = O.length >>> 0; - - // Steps 6-7. - var start = arguments[1]; - var relativeStart = start >> 0; - - // Step 8. - var k = - relativeStart < 0 - ? Math.max(len + relativeStart, 0) - : Math.min(relativeStart, len); - - // Steps 9-10. - var end = arguments[2]; - var relativeEnd = end === undefined ? len : end >> 0; - - // Step 11. - var final = - relativeEnd < 0 - ? Math.max(len + relativeEnd, 0) - : Math.min(relativeEnd, len); - - // Step 12. - while (k < final) { - O[k] = value; - k++; - } - - // Step 13. - return O; - }; -} - -if (!Array.prototype.indexOf) { - Array.prototype.indexOf = function (elt /*, from*/) { - var len = this.length; - var from = Number(arguments[1]) || 0; - from = from < 0 ? Math.ceil(from) : Math.floor(from); - - if (from < 0) from += len; - - for (; from < len; from++) { - if (from in this && this[from] === elt) return from; - } - return -1; - }; -} - -if (typeof String.prototype.endsWith !== "function") { - String.prototype.endsWith = function (suffix) { - return this.indexOf(suffix, this.length - suffix.length) !== -1; - }; -} - -if (!String.prototype.trim) { - (function () { - // Make sure we trim BOM and NBSP - var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; - String.prototype.trim = function () { - return this.replace(rtrim, ""); - }; - })(); -} - -if (!Object.keys) { - Object.keys = function (obj) { - var keys = [], - k; - for (k in obj) { - if (Object.prototype.hasOwnProperty.call(obj, k)) { - keys.push(k); - } - } - return keys; - }; -} - -if (!Date.prototype.toISOString) { - (function () { - function pad(number) { - var r = String(number); - if (r.length === 1) { - r = "0" + r; - } - return r; - } - - Date.prototype.toISOString = function () { - return ( - this.getUTCFullYear() + - "-" + - pad(this.getUTCMonth() + 1) + - "-" + - pad(this.getUTCDate()) + - "T" + - pad(this.getUTCHours()) + - ":" + - pad(this.getUTCMinutes()) + - ":" + - pad(this.getUTCSeconds()) + - "." + - String((this.getUTCMilliseconds() / 1000).toFixed(3)).slice(2, 5) + - "Z" - ); - }; - })(); -} - -// Returnes true if we are in a iframe -function inIframe() { - try { - return window.self !== window.top; - } catch (e) { - return true; - } -} - -/** - * Returnes true if screen has high density - * @return boolean - */ -function isHighDensity() { - return ( - (window.matchMedia && - (window.matchMedia( - "only screen and (min-resolution: 124dpi), only screen and (min-resolution: 1.3dppx), only screen and (min-resolution: 48.8dpcm)" - ).matches || - window.matchMedia( - "only screen and (-webkit-min-device-pixel-ratio: 1.3), only screen and (-o-min-device-pixel-ratio: 2.6/2), only screen and (min--moz-device-pixel-ratio: 1.3), only screen and (min-device-pixel-ratio: 1.3)" - ).matches)) || - (window.devicePixelRatio && window.devicePixelRatio > 1.3) - ); -} - -/** - * htmlspecialchars equivalent - * @param {string} text - * @return string - */ -function escapeHtml(text) { - if (typeof text === "undefined" || text == null) { - return null; - } - - var map = { - "&": "&", - "<": "<", - ">": ">", - '"': """, - "'": "'", - }; - return text.replace(/[&<>"']/g, function (m) { - return map[m]; - }); -} diff --git a/jslib/src/trackdirect.js b/jslib/src/trackdirect.js deleted file mode 100755 index 4c7f33f..0000000 --- a/jslib/src/trackdirect.js +++ /dev/null @@ -1,2422 +0,0 @@ -var trackdirect = { - services: {}, - models: {}, - - _time: null, // How many minutes of history to show - _timetravel: null, // Unix timestamp to travel to - _center: null, // Position to center on (for example "46.52108,14.63379") - _zoom: null, // Zoom level - _maptype: null, // May be "roadmap", "terrain" or "satellite" - _mid: null, - - _rulers: [], - - _filterTimeoutId: null, - _waitForFilterResponse: false, - _doNotChangeLocationOnFilterResponse: false, - _doNotChangeLocationOnFilterResponseTmp: false, - - _filters: {}, - - _defaultLatitude: null, - _defaultLongitude: null, - - _eventListeners: {}, - _eventListenersOnce: {}, - - _cordinatesContainerElementId: null, - _statusContainerElementId: "td-status-text", - _mapElementId: null, - - _wsServerUrl: null, - - _map: null, - _websocket: null, - - _mapCreated: false, - _trackdirectInitDone: false, - - isMobile: false, - coverageDataUrl: null, - coveragePercentile: 95, - settings: {}, - - /** - * Initialize - * @param {string} wsServerUrl - * @param {string} mapElementId - * @param {object} options - */ - init: function (wsServerUrl, mapElementId, options) { - this._initSettings(); - this._wsServerUrl = wsServerUrl; - this._mapElementId = mapElementId; - - if ($("#" + mapElementId).length <= 0) { - // map element does not exists, nothing to do... - console.log("ERROR: Specified map element missing"); - return; - } - - if (typeof google === "object" && typeof google.maps === "object") { - // Google maps is slow with to many labels - this.settings.defaultMinZoomForMarkerLabel = 12; - this.settings.minZoomForMarkerLabel = 12; - } - - this._parseOptions(options); - - var me = this; - this.addListener("map-created", function () { - me._initTime(); - - me._websocket = new trackdirect.Websocket(me._wsServerUrl); - me._initWebsocketListeners(); - me._handleWebsocketStateChange(); - - me._initMapListeners(); - if (!me._initFilterUrlRequest()) { - trackdirect.services.callbackExecutor.add( - me, - me._sendPositionRequest, - [] - ); - } - - me._setWebsocketStateIdle(); - - if (inIframe()) { - // Somebody has included trackdirect inside an iframe... In the future we may STOP this but currently we allow it... - var parentUrl = ""; - try { - parentUrl = - window.location != window.parent.location - ? document.referrer - : document.location.href; - } catch (e) { - parentUrl = "Unknown"; - } - } - - me._emitEventListeners("trackdirect-init-done"); - }); - - this._mapInit(options); - }, - - /** - * Enable Imperial units - * @return null - */ - enableImperialUnits: function () { - this._map.state.useImperialUnit = true; - if (this._map.state.openInfoWindow !== null) { - this._map.state.openInfoWindow.hide(); - } - }, - - /** - * Enable Metric units - * @return null - */ - enableMetricUnits: function () { - this._map.state.useImperialUnit = false; - if (this._map.state.openInfoWindow !== null) { - this._map.state.openInfoWindow.hide(); - } - }, - - /** - * Enable/Disable Imperial units - * @return null - */ - toggleImperialUnits: function () { - if (this._map.state.useImperialUnit) { - this.enableMetricUnits(); - } else { - this.enableImperialUnits(); - } - }, - - /** - * Returns true if Imperial units is active - * @return boolean - */ - isImperialUnits: function () { - return this._map.state.useImperialUnit; - }, - - /** - * Add new event listener - * @param {string} event - * @param {string} handler - * @param {boolean} execOnce - * @return null - */ - addListener: function (event, handler, execOnce) { - execOnce = typeof execOnce !== "undefined" ? execOnce : false; - if ( - (event == "map-created" && this._mapCreated) || - (event == "trackdirect-init-done" && this._trackdirectInitDone) - ) { - handler(); - if (execOnce) { - return; - } - } - - if (execOnce) { - if (!(event in this._eventListenersOnce)) { - this._eventListenersOnce[event] = []; - } - this._eventListenersOnce[event].push(handler); - } else { - if (!(event in this._eventListeners)) { - this._eventListeners[event] = []; - } - this._eventListeners[event].push(handler); - } - }, - - /** - * Set map center - * @param {float} latitude - * @param {float} longitude - * @param {int} zoom - * @return None - */ - setCenter: function (latitude, longitude, zoom) { - latitude = - typeof latitude !== "undefined" ? latitude : this._defaultLatitude; - longitude = - typeof longitude !== "undefined" ? longitude : this._defaultLongitude; - zoom = - typeof zoom !== "undefined" ? zoom : this._map.getZoom(); - - if (this._map !== null) { - this._map.setCenter({ lat: latitude, lng: longitude }, zoom); - } - }, - - /** - * Set zoom - * @param {int} value - * @return None - */ - setZoom: function (value) { - if (this._map !== null) { - this._map.setZoom(value); - } - }, - - /** - * Add a ruler - * @return None - */ - addRuler: function () { - if (this._rulers.length > 0) { - var ruler = this._rulers.pop(); - ruler.hide(); - } else { - var ruler = new trackdirect.models.Ruler( - (this._map.getCurrentRadiusInKm() * 1000) / 2, - this._map - ); - this._rulers.push(ruler); - } - }, - - /** - * Returns true if we are filtering on one or several stations - * @return {boolean} - */ - isFilteredMode: function () { - return this._map.state.isFilterMode; - }, - - /** - * Stop filter on station - * @return {int} stationId - */ - stopFilterOnStationId: function (stationId) { - var currentFilterStationIds = this._map.state.getFilterStationIds(); - if ( - currentFilterStationIds.length == 1 && - currentFilterStationIds.indexOf(stationId) >= 0 - ) { - this.filterOnStationId([]); - } else { - if (this._map.state.getTrackStationId() == stationId) { - this.stopTrackStation(); - } - this._setWebsocketStateLoading(false); - this._websocket.doSendStopFilterRequest(stationId); - } - }, - - /** - * Filter on station - * @return {array} stationIdArray - */ - filterOnStationId: function (stationIdArray) { - if (!Array.isArray(stationIdArray)) { - stationIdArray = [stationIdArray]; - } - - // If user wants to start filtering and we are tracking something else, stop tracking - var currentFilterStationIds = this._map.state.getFilterStationIds(); - if (currentFilterStationIds.length == 0) { - if ( - this._map.state.getTrackStationId() !== null && - stationIdArray.indexOf(this._map.state.getTrackStationId()) == -1 - ) { - this.stopTrackStation(); - } - } - - this._setWebsocketStateLoading(false); - this._websocket.doSendFilterRequest( - stationIdArray, - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp() - ); - }, - - /** - * Filter on station by name - * @return {array} stationNameArray - */ - filterOnStationName: function (stationNameArray) { - if (!Array.isArray(stationNameArray)) { - stationNameArray = [stationNameArray]; - } - - // If user wants to start filtering and we are tracking something else, stop tracking - var currentFilterStationIds = this._map.state.getFilterStationIds(); - if (currentFilterStationIds.length == 0) { - if ( - this._map.state.getTrackStationId() !== null && - stationIdArray.indexOf(this._map.state.getTrackStationId()) == -1 - ) { - this.stopTrackStation(); - } - } - - this._setWebsocketStateLoading(false); - this._websocket.doSendFilterRequestByName( - stationNameArray, - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp() - ); - }, - - /** - * Stop track station - * @return {int} stationId - */ - stopTrackStation: function () { - this._map.state.onlyTrackRecentPackets = false; - this._map.state.trackStationId = null; - this._emitEventListeners("track-changed", [null, null]); - }, - - /** - * Track station - * @param {int} stationId - * @param {string} stationName - * @param {boolean} alsofilterOnStation - * @param {boolean} onlyTrackRecentPackets - * @return null - */ - trackStation: function ( - stationId, - stationName, - alsoFilterOnStation, - onlyTrackRecentPackets - ) { - onlyTrackRecentPackets = - typeof onlyTrackRecentPackets !== "undefined" - ? onlyTrackRecentPackets - : false; - - // if user are filtering and want to track a station that we do not filter in, start filtering on that station - if (alsoFilterOnStation) { - var currentFilterStationIds = this._map.state.getFilterStationIds(); - if (currentFilterStationIds.length > 0) { - if (currentFilterStationIds.indexOf(stationId) == -1) { - this.filterOnStationId(stationId); - } - } - } - - if (stationId !== null) { - var trackLinkElementClass = "trackStationLink" + stationId; - $("." + trackLinkElementClass).html("Untrack"); - } - - if (this._map.state.trackStationId !== null) { - var trackLinkElementClass = - "trackStationLink" + this._map.state.trackStationId; - $("." + trackLinkElementClass).html("Track"); - } - - this._map.state.onlyTrackRecentPackets = onlyTrackRecentPackets; - this._map.state.trackStationId = stationId; - - this._emitEventListeners("track-changed", [stationId, stationName]); - }, - - /** - * Move focus to specified station - * @param {int} stationId - * @param {boolean} openInfoWindow - * @return Boolean - */ - focusOnStation: function (stationId, openInfoWindow) { - var map = this._map; - openInfoWindow = - typeof openInfoWindow !== "undefined" ? openInfoWindow : false; - var marker = map.markerCollection.getStationLatestMarker(stationId); - if (marker !== null) { - marker.show(); - marker.showLabel(); - - // Set focus - if (openInfoWindow) { - map.openMarkerInfoWindow(marker, false); - } else { - this.setCenter(marker.packet.latitude, marker.packet.longitude); - } - - // This method will hide marker when infowindow is closed, if nessecery - marker.hide(5000, true); - return true; - } else { - return false; - } - }, - - /** - * Move focus to specified marker - * @param {int} markerId - * @param {int} zoom - * @return None - */ - focusOnMarkerId: function (markerId, zoom) { - var map = this._map; - var markerIdKey = map.markerCollection.getMarkerIdKey(markerId); - if (map.markerCollection.isExistingMarker(markerIdKey)) { - var marker = map.markerCollection.getMarker(markerIdKey); - - if (map.markerCollection.hasRelatedDashedPolyline(marker)) { - newerMarker = map.markerCollection.getMarker( - marker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey - ); - if (newerMarker.packet.hasConfirmedMapId()) { - return this.focusOnMarkerId(newerMarker.packet.marker_id); - } - } - - marker.show(); - marker.showLabel(); - - // Set focus - this.setCenter(marker.packet.latitude, marker.packet.longitude, zoom); - map.openMarkerInfoWindow(marker); - - // This method will hide marker when infowindow is closed, if nessecery - marker.hide(5000, true); - } - }, - - /** - * Toggle station coverage - * @param {int} stationId - * @param {string} coverageLinkElementClass - */ - toggleStationCoverage: function (stationId, coverageLinkElementClass) { - coverageLinkElementClass = - typeof coverageLinkElementClass !== "undefined" - ? coverageLinkElementClass - : null; - - var coveragePolygon = - this._map.markerCollection.getStationCoverage(stationId); - if (coveragePolygon !== null && coveragePolygon.isRequestedToBeVisible()) { - coveragePolygon.hide(); - if (coverageLinkElementClass !== null) { - $("." + coverageLinkElementClass).html("Coverage"); - } - } else { - if (coveragePolygon !== null) { - coveragePolygon.show(); - - if (!coveragePolygon.hasContent()) { - alert( - "Currently we do not have enough data to create a max range coverage plot for this station. Try again later!" - ); - } else { - if (coverageLinkElementClass !== null) { - $("." + coverageLinkElementClass).html("Hide coverage"); - } - } - } else { - var packet = - this._map.markerCollection.getStationLatestPacket(stationId); - var center = { - lat: parseFloat(packet.latitude), - lng: parseFloat(packet.longitude), - }; - var coveragePolygon = new trackdirect.models.StationCoveragePolygon( - center, - this._map, - true - ); - this._map.markerCollection.addStationCoverage( - stationId, - coveragePolygon - ); - coveragePolygon.showWhenDone(); - - if (coverageLinkElementClass !== null) { - $("." + coverageLinkElementClass).html( - 'Loading <i class="fa fa-spinner fa-spin" style="font-size:12px"></i>' - ); - coveragePolygon.addTdListener( - "visible", - function () { - if (!coveragePolygon.hasContent()) { - coveragePolygon.hide(); - alert( - "Currently we do not have enough data to create a max range coverage plot for this station. Try again later!" - ); - $("." + coverageLinkElementClass).html("Coverage"); - } else { - $("." + coverageLinkElementClass).html("Hide coverage"); - } - }, - true - ); - } - - var me = this; - $.getJSON(this.coverageDataUrl + "?id=" + stationId, function (data) { - if ("station_id" in data && "coverage" in data) { - coveragePolygon.setData(data["coverage"], me.coveragePercentile); - var marker = - me._map.markerCollection.getStationLatestMarker(stationId); - if (marker.isVisible()) { - if (coveragePolygon.isRequestedToBeVisible()) { - coveragePolygon.show(); - } - } - } - }) - .fail(function () { - coveragePolygon.hide(); - alert("Failed to fetch coverage data. Try again later!"); - $("." + coverageLinkElementClass).html("Coverage"); - }) - .always(function () {}); - } - } - }, - - /** - * Set map type - * @param {string} mapType - * @return None - */ - setMapType: function (mapType) { - if (this._map !== null) { - this._map.setMapType(mapType); - } - }, - - /** - * Set map type - * @return {string} - */ - getMapType: function () { - if (this._map !== null) { - return this._map.getMapType(); - } - }, - - /** - * Set map default location - * @param {boolean} setDefaultZoom - * @return None - */ - setMapDefaultLocation: function (setDefaultZoom) { - this._map.setMapDefaultLocation(setDefaultZoom); - }, - - /** - * Set map location based on user position by using geo location functionality - * @param {function} failCallBack - * @param {function} successCallBack - * @param int timeout - * @return None - */ - setMapLocationByGeoLocation: function ( - failCallBack, - successCallBack, - timeout - ) { - var me = this; - if (navigator && navigator.geolocation) { - navigator.geolocation.getCurrentPosition( - function (position) { - var pos = { - lat: position.coords.latitude, - lng: position.coords.longitude, - }; - me._map.setCenter(pos, 12); - if (successCallBack !== null) { - successCallBack(); - } - }, - function (error) { - // User said NO (or other error) - // Note that you will not end up here if browser is Firefox and user just says "Not now" - if (failCallBack !== null) { - failCallBack(error.message); - } - }, - { - enableHighAccuracy: false, - timeout: timeout, - maximumAge: 5000, - } - ); - } else { - // Browser doesn't support Geolocation - if (failCallBack !== null) { - failCallBack(); - } - } - }, - - /** - * Open station information dialog - * @param {int} stationId - * @return null - */ - openStationInformationDialog: function (stationId) { - var packet = this._map.markerCollection.getStationLatestPacket(stationId); - if (packet == null) { - packet = { station_id: stationId, id: null }; - } - - // Ask listener to open dialog - this._emitEventListeners("station-name-clicked", packet); - }, - - /** - * Open marker info window - * @param {int} markerId - * @return None - */ - openMarkerInfoWindow: function (markerId) { - var markerIdKey = this._map.markerCollection.getMarkerIdKey(markerId); - if (this._map.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - this._map.openMarkerInfoWindow(marker); - } - }, - - /** - * Close any open info window - * @return None - */ - closeAnyOpenInfoWindow: function () { - if (this._map !== null) { - var state = this._map.state; - if (state.isInfoWindowOpen()) { - state.openInfoWindow.hide(); - } - } - }, - - /** - * Set timetravel timestamp - * @param {int} ts - * @param {boolean} sendRequestToServer - * @return null - */ - setTimeTravelTimestamp: function (ts, sendRequestToServer) { - if (ts != 0 || this._map.state.endTimeTravelTimestamp != null) { - sendRequestToServer = - typeof sendRequestToServer !== "undefined" ? sendRequestToServer : true; - - if (this._map.state.endTimeTravelTimestamp != ts) { - if (ts != null && ts != 0 && ts != "") { - this._map.state.endTimeTravelTimestamp = ts; - } else { - this._map.state.endTimeTravelTimestamp = null; - } - - if (sendRequestToServer) { - trackdirect.services.callbackExecutor.add( - this, - this._handleTimeChange, - [] - ); - } - } - - this._emitEventListeners("time-travel-changed", ts); - this._emitEventListeners("mode-changed"); - } - }, - - /** - * Returns the time travel timestamp currently used - * @return {int} - */ - getTimeTravelTimestamp: function () { - return this._map.state.endTimeTravelTimestamp; - }, - - /** - * Set time in minutes - * @param {int} time - * @param {boolean} sendRequestToServer - */ - setTimeLength: function (time, sendRequestToServer) { - sendRequestToServer = - typeof sendRequestToServer !== "undefined" ? sendRequestToServer : true; - - if (this._map.state.getTimeLength() / 60 != time) { - this._map.state.setTimeLength(time * 60); - - if (sendRequestToServer) { - trackdirect.services.callbackExecutor.add( - this, - this._handleTimeChange, - [] - ); - } - } - - this._emitEventListeners("time-length-changed", time); - this._updateMinZoomLevels(); - }, - - /** - * Toggle PHG circles - * @return None - */ - togglePHGCircles: function () { - var state = this._map.state; - if (state.showPHGCircles == 0) { - state.showPHGCircles = 1; - } else if (state.showPHGCircles == 1) { - state.showPHGCircles = 2; - } else { - state.showPHGCircles = 0; - } - this._map.showHidePHGCircles(); - }, - - /** - * Toggle PHG circles - * @return None - */ - toggleRNGCircles: function () { - var state = this._map.state; - if (state.showRNGCircles == 0) { - state.showRNGCircles = 1; - } else if (state.showRNGCircles == 1) { - state.showRNGCircles = 2; - } else { - state.showRNGCircles = 0; - } - this._map.showHideRNGCircles(); - }, - - /** - * Toggle Stationary positions - * @return None - */ - toggleStationaryPositions: function () { - if (this.isStationaryMarkersVisible()) { - this._map.state.isStationaryMarkersVisible = false; - } else { - this._map.state.isStationaryMarkersVisible = true; - } - this._map.showHideMarkers(); - }, - - /** - * Toggle Unknown positions - * @return None - */ - toggleUnknownPositions: function () { - if (this.isUnknownMarkersVisible()) { - this._map.state.isUnknownMarkersVisible = false; - } else { - this._map.state.isUnknownMarkersVisible = true; - } - this._map.showHideMarkers(); - }, - - /** - * Toggle Ogflym positions - * @return None - */ - toggleOgflymPositions: function () { - if (this.isOgflymMarkersVisible()) { - this._map.state.isOgflymMarkersVisible = false; - } else { - this._map.state.isOgflymMarkersVisible = true; - } - this._map.showHideMarkers(); - }, - - /** - * Toggle Stationary positions - * @return None - */ - toggleInternetPositions: function () { - if (this.isInternetMarkersVisible()) { - this._map.state.isInternetMarkersVisible = false; - } else { - this._map.state.isInternetMarkersVisible = true; - } - this._map.showHideMarkers(); - }, - - /** - * Toggle the CWOP positions option - * @return None - */ - toggleCwopPositions: function () { - if (this.isCwopMarkersVisible()) { - this._map.state.isCwopMarkersVisible = false; - } else { - this._map.state.isCwopMarkersVisible = true; - } - this._map.showHideMarkers(); - }, - - /** - * Toggle the ghost positions option - * Ghost positions are positions that some filter has removed since it is unlikly - * @return None - */ - toggleGhostPositions: function () { - if (this.isGhostMarkersVisible()) { - this._map.state.isGhostMarkersVisible = false; - } else { - this._map.state.isGhostMarkersVisible = true; - } - this._map.showHideMarkers(); - }, - - /** - * Returns true if ghost markers is visible - * @return {boolean} - */ - isGhostMarkersVisible: function () { - return this._map.state.isGhostMarkersVisible; - }, - - /** - * Returns true if CWOP markers is visible - * @return {boolean} - */ - isCwopMarkersVisible: function () { - return this._map.state.isCwopMarkersVisible; - }, - - /** - * Returns true if INTERNET markers is visible - * @return {boolean} - */ - isInternetMarkersVisible: function () { - return this._map.state.isInternetMarkersVisible; - }, - - /** - * Returns true if stationary markers is visible - * @return {boolean} - */ - isStationaryMarkersVisible: function () { - return this._map.state.isStationaryMarkersVisible; - }, - - /** - * Set visible symbols, argument should be an array of two value arrays (first value should be the ascii value for the symbol code and the second should be the ascii value for the symbol table) - * @param {array} symbols - * @return None - */ - setVisibleSymbols: function (symbols) { - this._map.state.visibleSymbols = symbols; - this._map.showHideMarkers(); - }, - - /** - * Add visible symbol, argument should be a two value array (first value should be the ascii value for the symbol code and the second should be the ascii value for the symbol table) - * @param {array} symbols - * @return None - */ - addVisibleSymbol: function (symbol) { - this._map.state.visibleSymbols.push(symbol); - this._map.showHideMarkers(); - }, - - /** - * Remove visible symbol, argument should be a two value array (first value should be the ascii value for the symbol code and the second should be the ascii value for the symbol table) - * @param {array} symbols - * @return None - */ - removeVisibleSymbol: function (symbol) { - var indexToRemove = null; - for (var i = 0; i < this._map.state.visibleSymbols.length; i++) { - if ( - this._map.state.visibleSymbols[i][0] == symbol[0] && - this._map.state.visibleSymbols[i][1] == symbol[1] - ) { - indexToRemove = i; - break; - } - } - if (indexToRemove !== null) { - this._map.state.visibleSymbols.splice(indexToRemove, 1); - } - this._map.showHideMarkers(); - }, - - /** - * Returns array of visible symbols - * @return {array} - */ - getVisibleSymbols: function () { - return this._map.state.visibleSymbols; - }, - - /** - * Returns true if unknown markers is visible - * @return {boolean} - */ - isUnknownMarkersVisible: function () { - return this._map.state.isUnknownMarkersVisible; - }, - - /** - * Returns true if ogflym markers is visible - * @return {boolean} - */ - isOgflymMarkersVisible: function () { - return this._map.state.isOgflymMarkersVisible; - }, - - /** - * Handle filter station request - * @param {int} stationId - * @param {string} linkElementId - * @return {boolean} - */ - handleFilterStationRequest: function (stationId, filterLinkElementClass) { - filterLinkElementClass = - typeof filterLinkElementClass !== "undefined" - ? filterLinkElementClass - : null; - if ( - this._map.state.filterStationIds.length > 0 && - this._map.state.filterStationIds.indexOf(stationId) > -1 - ) { - // We want to stop filtering - this.stopFilterOnStationId(stationId); - if (filterLinkElementClass !== null) { - $("." + filterLinkElementClass).html("Filter"); - } - } else { - this.filterOnStationId(stationId); - if (filterLinkElementClass !== null) { - $("." + filterLinkElementClass).html("Unfilter"); - } - } - }, - - /** - * Handle track station request - * @param {int} stationId - * @param {string} trackLinkElementClass - * @return null - */ - handleTrackStationRequest: function (stationId, trackLinkElementClass) { - stationId = typeof stationId !== "undefined" ? stationId : 0; - trackLinkElementClass = - typeof trackLinkElementClass !== "undefined" - ? trackLinkElementClass - : null; - - if ( - this._map.state.getTrackStationId() !== null && - (stationId === 0 || this._map.state.getTrackStationId() == stationId) - ) { - // We want to stop tracking - if (trackLinkElementClass !== null) { - $("." + trackLinkElementClass).html("Track"); - } else if (this._map.state.openInfoWindow !== null) { - this._map.state.openInfoWindow.hide(); - } - this.stopTrackStation(); - } else if (stationId !== 0) { - if (trackLinkElementClass !== null) { - $("." + trackLinkElementClass).html("Untrack"); - } - - var packet = this._map.markerCollection.getStationLatestPacket(stationId); - if (packet !== null) { - var stationName = packet.station_name; - if (packet.sender_name != packet.station_name) { - stationName = packet.station_name + " (" + packet.sender_name + ")"; - } - this.trackStation(stationId, stationName, true); - } - } - }, - - /** - * Init settings - * @return null - */ - _initSettings: function () { - this.settings = { - animate: true, - - defaultMinZoomForMarkerLabel: 11, - defaultMinZoomForMarkerPrevPosition: 11, - defaultMinZoomForMarkerTail: 9, - defaultMinZoomForMarkers: 8, - - minZoomForMarkerLabel: 11, - minZoomForMarkerPrevPosition: 11, - minZoomForMarkerTail: 9, - minZoomForMarkers: 8, - - markerSymbolBaseDir: "/symbols/", - imagesBaseDir: "/images/", - - defaultCurrentZoom: 11, - defaultCurrentZoomMobile: 11, - - dateFormat: "L LTSZ", - dateFormatNoTimeZone: "L LTS", - - host: "www.aprsdirect.com", - baseUrl: "https://www.aprsdirect.com", - - defaultTimeLength: 60, - - symbolsToScale: [], - - // Contains ascii values that corresponds to symbols without support for direction polyline (for symbols in the primary table) - primarySymbolWithNoDirectionPolyline: [87, 64, 95], - - // Contains ascii values that corresponds to symbols without support for direction polyline (for symbols in the alterantive table) - alternativeSymbolWithNoDirectionPolyline: [ - 40, 42, 64, 74, 84, 85, 96, 98, 101, 102, 112, 116, 119, 121, 123, - ], - }; - }, - - /** - * Parse the options - * @param {object} options - */ - _parseOptions: function (options) { - if (typeof options["cordinatesContainerElementId"] !== undefined) { - this._cordinatesContainerElementId = - options["cordinatesContainerElementId"]; - } - if (typeof options["statusContainerElementId"] !== undefined) { - this._statusContainerElementId = options["statusContainerElementId"]; - } - if (typeof options["isMobile"] !== undefined) { - this.isMobile = options["isMobile"]; - } - if (typeof options["coverageDataUrl"] !== undefined) { - this.coverageDataUrl = options["coverageDataUrl"]; - } - if (typeof options["coveragePercentile"] !== undefined) { - this.coveragePercentile = options["coveragePercentile"]; - } - if (typeof options["time"] !== undefined) { - this._time = options["time"]; - } - if (typeof options["timetravel"] !== undefined) { - this._timetravel = options["timetravel"]; - } - if (typeof options["center"] !== undefined) { - this._center = options["center"]; - } - if (typeof options["zoom"] !== undefined) { - this._zoom = options["zoom"]; - } - if (typeof options["maptype"] !== undefined) { - this._maptype = options["maptype"]; - } - if (typeof options["mid"] !== undefined) { - this._mid = options["mid"]; - } - if ( - typeof options["filters"] !== undefined && - options["filters"] !== null - ) { - for (var i in options["filters"]) { - if (options["filters"][i] !== null && options["filters"][i] != "") { - this._filters[i] = options["filters"][i]; - } - } - } - if ( - typeof options["disableLocationChangeOnFilterResponse"] !== undefined && - options["disableLocationChangeOnFilterResponse"] - ) { - this._doNotChangeLocationOnFilterResponse = true; - } - if ( - typeof options["defaultMinZoomForMarkerLabel"] !== undefined && - options["defaultMinZoomForMarkerLabel"] != null - ) { - this.settings.defaultMinZoomForMarkerLabel = - options["defaultMinZoomForMarkerLabel"]; - } - if ( - typeof options["defaultMinZoomForMarkerPrevPosition"] !== undefined && - options["defaultMinZoomForMarkerPrevPosition"] != null - ) { - this.settings.defaultMinZoomForMarkerPrevPosition = - options["defaultMinZoomForMarkerPrevPosition"]; - } - if ( - typeof options["defaultMinZoomForMarkerTail"] !== undefined && - options["defaultMinZoomForMarkerTail"] != null - ) { - this.settings.defaultMinZoomForMarkerTail = - options["defaultMinZoomForMarkerTail"]; - } - if ( - typeof options["defaultMinZoomForMarkers"] !== undefined && - options["defaultMinZoomForMarkers"] != null - ) { - this.settings.defaultMinZoomForMarkers = - options["defaultMinZoomForMarkers"]; - } - - if (typeof options["animate"] !== undefined && options["animate"] != null) { - this.settings.animate = options["animate"]; - } - - if (typeof options["host"] !== undefined && options["host"] != null) { - this.settings.host = options["host"]; - this.settings.baseUrl = this._getMapBaseUrl(options["host"]); - } else { - this.settings.baseUrl = this._getMapBaseUrl(); - } - - if ( - typeof options["defaultTimeLength"] !== undefined && - options["defaultTimeLength"] != null - ) { - this.settings.defaultTimeLength = options["defaultTimeLength"]; - } - - if ( - typeof options["symbolsToScale"] !== undefined && - options["symbolsToScale"] !== null - ) { - this.settings.symbolsToScale = options["symbolsToScale"]; - } - - this._initDefaultLocation(options); - }, - - /** - * Initialize default location - * @param {object} options - */ - _initDefaultLocation: function (options) { - if ( - typeof options["defaultLatitude"] !== "undefined" && - typeof options["defaultLongitude"] !== "undefined" - ) { - this._defaultLatitude = options["defaultLatitude"]; - this._defaultLongitude = options["defaultLongitude"]; - } else { - this._defaultLatitude = 0; - this._defaultLongitude = 0; - } - }, - - /** - * Init time - * @return null - */ - _initTime: function () { - var filterMode = false; - if ( - "sid" in this._filters || - "sidlist" in this._filters || - "sname" in this._filters || - "snamelist" in this._filters - ) { - filterMode = true; - } - - if (this._time != null && this._isValidTime(this._time, filterMode)) { - this.setTimeLength(this._time, false); - } else { - this.setTimeLength(this.settings.defaultTimeLength, false); - } - - now = new Date(); - if ( - this._timetravel != null && - this._timetravel >= 0 && - this._timetravel <= now.getTime() / 1000 - ) { - this.setTimeTravelTimestamp(this._timetravel, false); - } - - this._updateMinZoomLevels(); - }, - - /** - * Init map - * @param {object} options - * @return null - */ - _mapInit: function (options) { - if ( - "sid" in this._filters || - "sidlist" in this._filters || - "sname" in this._filters || - "snamelist" in this._filters - ) { - // To avoid flicker we wait with sending feed requests until we get the filter response - this._waitForFilterResponse = true; - if (window.location.href.indexOf("/center/") >= 0) { - this._doNotChangeLocationOnFilterResponseTmp = true; - } - } - - var tdMapOptions = this._getMapInitOptions(options); - var me = this; - - $(document).ready(function () { - me._map = new trackdirect.models.Map(me._mapElementId, tdMapOptions); - me._markerCreator = new trackdirect.MarkerCreator(me._map); - - if ( - typeof options["useImperialUnit"] !== "undefined" && - options["useImperialUnit"] == true - ) { - me.enableImperialUnits(); - } - - me._emitEventListeners("map-created"); - }); - }, - - /** - * Returns the map init options - * @param {array} options - * @return string - */ - _getMapInitOptions: function (options) { - var center = this._getMapInitCenter(); - var tdMapOptions = { - zoom: this._getMapInitZoom(), - maptype: this._getMapInitMapType(), - cordinatesContainer: this._cordinatesContainerElementId, - defaultLatitude: this._defaultLatitude, - defaultLongitude: this._defaultLongitude, - initCenter: center, - mid: this._getMapInitMid(), - }; - - if ("supportedMapTypes" in options) { - tdMapOptions["supportedMapTypes"] = options["supportedMapTypes"]; - } - - if ("mapboxGLStyle" in options) { - tdMapOptions["mapboxGLStyle"] = options["mapboxGLStyle"]; - } - - if ("mapboxGLAccessToken" in options) { - tdMapOptions["mapboxGLAccessToken"] = options["mapboxGLAccessToken"]; - } - - if ("mapboxGLAttribution" in options) { - tdMapOptions["mapboxGLAttribution"] = options["mapboxGLAttribution"]; - } - - return tdMapOptions; - }, - - /** - * Returns the map init center - * @return string - */ - _getMapInitCenter: function () { - if (this._center != null) { - var centerParts = this._center.split(","); - if ( - centerParts.length == 2 && - this._isValidLatitude(centerParts[0]) && - this._isValidLongitude(centerParts[1]) - ) { - return { - lat: parseFloat(centerParts[0]), - lng: parseFloat(centerParts[1]), - }; - } - } - return null; - }, - - /** - * Returns the map init zoom - * @return string - */ - _getMapInitZoom: function () { - var zoom = null; - if (this._zoom != null && this._isValidZoom(this._zoom)) { - zoom = this._zoom; - } - return zoom; - }, - - /** - * Returns the map init mid value - * @return string - */ - _getMapInitMid: function () { - var mid = null; - if (this._mid != null) { - mid = this._mid; - } - return mid; - }, - - /** - * Returns the map init map type - * @return string - */ - _getMapInitMapType: function () { - var maptype = null; - if (this._maptype != null) { - maptype = this._maptype; - } - return maptype; - }, - - /** - * Init filter url request, returnes true if filter request is sent otherwise false - * @return boolean - */ - _initFilterUrlRequest: function () { - if ("sid" in this._filters) { - stationId = this._filters["sid"]; - if (isNumeric(stationId)) { - this.filterOnStationId(stationId); - } - } else if ("sname" in this._filters) { - stationName = this._filters["sname"]; - if (stationName != "") { - this.filterOnStationName(stationName); - } - } else if ("sidlist" in this._filters) { - stationIdArray = this._filters["sidlist"].split(","); - var isValid = true; - for (var i = 0; i < stationIdArray.length; i++) { - if (!isNumeric(stationIdArray[i])) { - isValid = false; - } - } - if (isValid) { - this.filterOnStationId(stationIdArray); - } - } else if ("snamelist" in this._filters) { - stationNameArray = this._filters["snamelist"].split(","); - var isValid = true; - for (var i = 0; i < stationNameArray.length; i++) { - if ( - typeof stationNameArray[i] == "undefined" || - stationNameArray[i] == "" - ) { - isValid = false; - } - } - if (isValid) { - this.filterOnStationName(stationNameArray); - } - } else { - return false; - } - - // This timeout is just to be safe, if we get a bad station request we should at least show regular aprs data after a while - var me = this; - this._filterTimeoutId = window.setTimeout(function () { - // Remember to clear _filterTimeoutId and _waitForFilterResponse when we have received a filter response - if (me._waitForFilterResponse) { - // We give up, we have not received any filter response, ask for everything instead - me._waitForFilterResponse = false; - trackdirect.services.callbackExecutor.add( - me, - me._sendPositionRequest, - [] - ); - } - }, 5000); - - return true; - }, - - /** - * Returns true if parameter is a valid zoom - * @param {int} time - * @param {boolean} filteredMode - * @return {boolean} - */ - _isValidTime: function (time, filteredMode) { - if (isNumeric(time)) { - if (filteredMode && time <= 14400 && time > 0) { - return true; - } else if (filteredMode == false && time <= 1440 && time > 0) { - return true; - } - } - return false; - }, - - /** - * Returns true if parameter is a valid zoom - * @param {int} zoom - * @return {boolean} - */ - _isValidZoom: function (zoom) { - if (isNumeric(zoom)) { - if (zoom <= 21 && zoom >= 0) { - return true; - } - } - return false; - }, - - /** - * Returns true if parameter is a valid latitude - * @param {object} lat - * @return {boolean} - */ - _isValidLatitude: function (lat) { - if (isNumeric(lat)) { - if (lat <= 90 && lat >= -90) { - return true; - } - } - return false; - }, - - /** - * Returns true if parameter is a valid longitude - * @param {object} lng - * @return {boolean} - */ - _isValidLongitude: function (lng) { - if (isNumeric(lng)) { - if (lng <= 180 && lng >= -180) { - return true; - } - } - return false; - }, - - /** - * Initializes the map listeners - * @return null - */ - _initMapListeners: function () { - var me = this; - this._map.addTdListener("change", function () { - trackdirect.services.callbackExecutor.add( - me, - me._sendPositionRequest, - [] - ); - trackdirect.services.mapAttributionModifier.update(me._map); - }); - this._map.addTdListener("moving", function () { - // This event will happen many times, but same message will never be sent twice (handled by both ws-part and queue) - trackdirect.services.callbackExecutor.addIfUnique( - me, - me._sendIdleRequest, - [] - ); - }); - this._map.addTdListener("station-tail-needed", function (stationId) { - me._websocket.doSendCompleteStationRequest( - stationId, - me._map.state.getTimeLength() / 60, - me.getTimeTravelTimestamp() - ); - }); - this._map.addTdListener("station-information", function (stationId) { - me.openStationInformationDialog(stationId); - }); - }, - - /** - * Initializes the websocket listeners - * @return null - */ - _initWebsocketListeners: function () { - this._initWebsocketStateChangeListener(); - this._initWebsocketAprsPacketListener(); - this._initWebsocketPayloadDoneListener(); - this._initWebsocketFilterResponseListener(); - this._initWebsocketServerTimestampResponseListener(); - this._initWebsocketResetListener(); - }, - - /** - * Initializes websocket state change listener - * @return null - */ - _initWebsocketStateChangeListener: function () { - var me = this; - this._websocket.addListener("state-change", function () { - var callback = function () { - me._handleWebsocketStateChange(); - }; - trackdirect.services.callbackExecutor.add(this, callback, []); - }); - }, - - /** - * Initializes websocket new aprs packet listener - * @return null - */ - _initWebsocketAprsPacketListener: function () { - var me = this; - this._websocket.addListener("aprs-packet", function (packetData) { - var packet = new trackdirect.models.Packet(packetData); - - var queueTimestamp = Math.floor(Date.now() / 1000); - var callback = function () { - var dequeueTimestamp = Math.floor(Date.now() / 1000); - if (dequeueTimestamp - queueTimestamp > 5 || !this.settings.animate) { - // More than 5 seconds has passed since queued or we do not want to animate - me._handleAprsPacket(packet, false); - } else { - me._handleAprsPacket(packet, true); - } - }; - trackdirect.services.callbackExecutor.add(me, callback, []); - }); - }, - - /** - * Initializes websocket payload done listener - * @return null - */ - _initWebsocketPayloadDoneListener: function () { - var me = this; - this._websocket.addListener("aprs-packet-payload-done", function () { - var callback = function () { - me._map.showNewMarkersInQueue(true); - }; - trackdirect.services.callbackExecutor.add(this, callback, []); - }); - }, - - /** - * Initializes websocket filter response listener - * @return null - */ - _initWebsocketFilterResponseListener: function () { - var me = this; - this._websocket.addListener("filter-response", function (data) { - var callback = function () { - me._handleFilterResponse(data); - }; - trackdirect.services.callbackExecutor.add(this, callback, []); - }); - }, - - /** - * Initializes websocket server timestamp response listener - * @return null - */ - _initWebsocketServerTimestampResponseListener: function () { - var me = this; - this._websocket.addListener("server-timestamp-response", function (data) { - var callback = function () { - me._map.state.setServerCurrentTimestamp(data.timestamp); - }; - trackdirect.services.callbackExecutor.add(this, callback, []); - - // Just make sure we have not forgotten any markers in queue (should not be needed, but just to be safe) - if (me._map.getNumberOfNewMarkersToShow() > 0) { - var callback2 = function () { - me._map.showNewMarkersInQueue(true); - }; - trackdirect.services.callbackExecutor.addIfUnique(this, callback2, []); - } - }); - }, - - /** - * Initializes websocket reset listener - * @return null - */ - _initWebsocketResetListener: function () { - var me = this; - this._websocket.addListener("reset", function () { - // Important that everything happens in order!!! - trackdirect.services.callbackExecutor.add( - me._map, - me._map.resetAllMarkers, - [] - ); - }); - }, - - /** - * Update min zoom level based on time settings - * @return null - */ - _updateMinZoomLevels: function () { - if (this._map.state.getTimeLength() / 60 > 720) { - trackdirect.settings.minZoomForMarkerPrevPosition = - trackdirect.settings.defaultMinZoomForMarkerPrevPosition + 1; - trackdirect.settings.minZoomForMarkerTail = - trackdirect.settings.defaultMinZoomForMarkerTail + 1; - trackdirect.settings.minZoomForMarkerLabel = - trackdirect.settings.defaultMinZoomForMarkerLabel + 1; - trackdirect.settings.minZoomForMarkers = - trackdirect.settings.defaultMinZoomForMarkers; - } else { - trackdirect.settings.minZoomForMarkerPrevPosition = - trackdirect.settings.defaultMinZoomForMarkerPrevPosition; - trackdirect.settings.minZoomForMarkerTail = - trackdirect.settings.defaultMinZoomForMarkerTail; - trackdirect.settings.minZoomForMarkerLabel = - trackdirect.settings.defaultMinZoomForMarkerLabel; - trackdirect.settings.minZoomForMarkers = - trackdirect.settings.defaultMinZoomForMarkers; - } - }, - - /** - * Handle time change request - * @return null - */ - _handleTimeChange: function () { - this._updateMinZoomLevels(); - - // A reset request will soon be sent by server, but if server takes time we do it now also so user will notice that something happens - this._map.resetAllMarkers(); - - this._websocket.clearLastSentPositionRequest(); - trackdirect.services.callbackExecutor.add( - this, - this._sendPositionRequest, - [] - ); - this._emitEventListeners("mode-changed"); - }, - - /** - * Handle filter response - * @param {array} data - * @return null - */ - _handleFilterResponse: function (data) { - // We have received a filter response, reset timeout and stop waiting for response - if (this._filterTimeoutId !== null) { - clearTimeout(this._filterTimeoutId); - this._filterTimeoutId = null; - } - - if (data.length == 0) { - this._handleEmptyFilterResponse(); - } else { - this._handleNonEmptyFilterResponse(data); - } - }, - - /** - * Unmark all stations as filtered that has no packet in the specified array - * @param {array} data - * @return null - */ - _unMarkMissingStationsAsFiltered: function (data) { - var filterStationIds = this._map.state.getFilterStationIds(); - for (var key in filterStationIds) { - var stationId = filterStationIds[key]; - var foundStation = false; - for (var i = 0; i < data.length; i++) { - var packetData = data[i]; - if (packetData.station_id == stationId && packetData["related"] == 0) { - foundStation = true; - } - } - if (!foundStation) { - this._unMarkStationAsFiltered(stationId); - } - } - }, - - /** - * Unmark station as a station that we are filtering on - * @param {int} stationId - * @return None - */ - _unMarkStationAsFiltered: function (stationId) { - var map = this._map; - var index = map.state.filterStationIds.indexOf(stationId); - if (index > -1) { - map.state.filterStationIds.splice(index, 1); - - // If we for some reason have infoWindow open and doesn't close it, update link name - var filterLinkElementClass = "filterStationLink" + stationId; - $("." + filterLinkElementClass).html("Filter"); - - // We only hide the marker since it may exist in a station transmit event - for (var markerIdKey in map.markerCollection.getStationMarkerIdKeys( - stationId - )) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - if (marker !== null) { - marker.hideCompleteMarker(); - } - } - } - }, - - /** - * Returns the number of uniqe stations in array (excluding packets marked as related) - * @param {array} data - * @return int - */ - _getNumberOfUniqeStationsInArray: function (data) { - var numberOfStationPackets = 0; - for (var i = 0; i < data.length; i++) { - var packetData = data[i]; - if (packetData["related"] == 0) { - numberOfStationPackets++; - } - } - return numberOfStationPackets; - }, - - /** - * Track station in packet array (only if only one uniqe station exists) - * @param {array} data - * @param {boolean} onlyTrackRecentPackets - * @return null - */ - _trackStationInArray: function (data, onlyTrackRecentPackets) { - if (this._getNumberOfUniqeStationsInArray(data) == 1) { - for (var i = 0; i < data.length; i++) { - var packet = new trackdirect.models.Packet(data[i]); - if (packet["related"] == 0) { - // If we filter on only one station, track it - this.trackStation( - packet.station_id, - escapeHtml(packet.getStationName()), - false, - onlyTrackRecentPackets - ); - } - } - } - }, - - /** - * Add a packet from a filter response - * @param {array} data - * @return null - */ - _addFilterResponsePacketsToMap: function (data) { - // We add packet to map if it is so old that it will not be replaced by a newPositionRequest or if we will not call a newPositionRequest (if info window is open) - var tryToShowPacket = this._isAnyPacketInArrayOlderThanCurrentLimit(data); - for (var i = 0; i < data.length; i++) { - var packet = new trackdirect.models.Packet(data[i]); - if (packet["related"] == 0) { - this._markStationAsFiltered(packet.station_id); - } - - // This may look unnessecery since we will add it later again (by calling doSendNewPositionRequest), - // but if latest packet is old it may not be received any more, so don't remove the following calls... - var markerIdKey = this._markerCreator.addPacket(packet, tryToShowPacket); - var marker = this._map.markerCollection.getMarker(markerIdKey); - if (marker !== null) { - marker.markToBeOverWritten(); - } - } - }, - - /** - * Mark station as a station that we are filtering on - * @param {int} stationId - * @return None - */ - _markStationAsFiltered: function (stationId) { - var map = this._map; - if (map.state.filterStationIds.indexOf(stationId) == -1) { - map.state.filterStationIds.push(stationId); - } - - // If we for some reason have infoWindow open and doesn't close it, update link name - var filterLinkElementClass = "filterStationLink" + stationId; - $("." + filterLinkElementClass).html("Unfilter"); - - // If we allready have markers for this station we should show them - for (var markerIdKey in map.markerCollection.getStationMarkerIdKeys( - stationId - )) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - if (marker !== null) { - marker.showCompleteMarker(); - } - } - }, - - /** - * Handle non empty filter response - * @param {array} data - * @return null - */ - _handleNonEmptyFilterResponse: function (data) { - var isFilterModeNew = !this.isFilteredMode(); - this._map.activateFilteredMode(); - this._waitForFilterResponse = false; - - if (isFilterModeNew) { - this._map.resetAllMarkers(); - - this._emitEventListeners("mode-changed"); - } else { - this._unMarkMissingStationsAsFiltered(data); - } - - this._addFilterResponsePacketsToMap(data); - - var packets = []; - for (var i = 0; i < data.length; i++) { - packets.push(new trackdirect.models.Packet(data[i])); - } - this._emitEventListeners("filter-changed", packets); - - if (isFilterModeNew) { - var onlyTrackRecentPackets = true; - if ( - !this._doNotChangeLocationOnFilterResponse && - !this._doNotChangeLocationOnFilterResponseTmp - ) { - onlyTrackRecentPackets = false; - this._setFilteredMapBounds(data); - } - this._doNotChangeLocationOnFilterResponseTmp = false; - this._trackStationInArray(data, onlyTrackRecentPackets); - this._emitEventListeners("filter-new"); - } - trackdirect.services.callbackExecutor.add( - this, - this._requestFilteredUpdate, - [] - ); - }, - - /** - * Request filtered update from server - * @return null - */ - _requestFilteredUpdate: function () { - // request update from server (request is filtered), but if information dialog is open we wait until it closes - this._websocket.clearLastSentPositionRequest(); - this._setWebsocketStateLoading(false); - this._websocket.doSendNewPositionRequest( - 90, - 180, - -90, - -180, - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp(), - false - ); - }, - - /** - * Handle empty filter response - * @param {array} data - * @return null - */ - _handleEmptyFilterResponse: function () { - // Response indicate that user are not demanding anything, we will reset and restart everything - this._deactivateFiltered(true); - this._waitForFilterResponse = false; - }, - - /** - * Returns true if any packet in array is older than current timelimit - * @param {array} data - * @return {boolean} - */ - _isAnyPacketInArrayOlderThanCurrentLimit: function (data) { - for (var i = 0; i < data.length; i++) { - var packetData = data[i]; - if (packetData["related"] == 0) { - // The 60 seconds is just a marginal - if (packetData.timestamp < packetData.requested_timestamp + 60) { - return true; - } - - if (packetData["source"] == 0 || packetData["source_id"] == 0) { - // packet seems to be simulated, we better treat it as a very old packet - return true; - } - } - } - return false; - }, - - /** - * Set map bounds after receiving a filter response - * @param {array} data - * @return {int} - */ - _setFilteredMapBounds: function (data) { - if (data.length == 1) { - this._map.setCenter( - { - lat: parseFloat(data[0].latitude), - lng: parseFloat(data[0].longitude), - }, - 12 - ); - } else { - var positions = []; - for (var i = 0; i < data.length; i++) { - var packetData = data[i]; - if (packetData["related"] == 0) { - positions.push({ - lat: parseFloat(packetData.latitude), - lng: parseFloat(packetData.longitude), - }); - } - } - - this._map.fitBounds(positions); - if (this._map.getZoom() > 12) { - this._map.setZoom(12); - } - } - }, - - /** - * Handle a received APRS packet! - * @param {trackdirect.models.Packet} packet - * @param {boolean} animate - * @return null - */ - _handleAprsPacket: function (packet, animate) { - var markerIdKey = this._markerCreator.addPacket(packet, true); - if (markerIdKey !== null) { - var highlight = false; - var autoRender = false; - var marker = this._map.markerCollection.getMarker(markerIdKey); - if ( - animate && - packet.db == 0 && - packet.station_name == packet.sender_name && - marker.shouldMarkerBeVisible() && - (this.isFilteredMode() || this._isPacketOnMap(packet)) - ) { - highlight = true; - - var tdTransmitAnimation = new trackdirect.models.TransmitAnimation( - marker, - this._map - ); - tdTransmitAnimation.show(); - } - - if (packet.realtime == 1 && animate) { - autoRender = true; - } - } - }, - - /** - * Returns linkified packet.raw - * @param {trackdirect.models.Packet} packet - * @return {string} - */ - _linkifyPacketRaw: function (packet) { - if (typeof packet.raw !== "undefined" && typeof packet.raw == "string") { - var raw = escapeHtml(packet.raw); - var stationNameReplacement = - '<a href="#" onclick="trackdirect.focusOnMarkerId(' + - packet.marker_id + - '); return false;">' + - escapeHtml(packet.sender_name) + - "</a>"; - raw = raw.replaceAll( - escapeHtml(packet.sender_name) + ">", - stationNameReplacement + ">" - ); - - for (var i = 0; i < packet.station_id_path.length; i++) { - var relatedStationId = packet.station_id_path[i]; - var relatedStationLatestPacket = - this._map.markerCollection.getStationLatestPacket(relatedStationId); - if (relatedStationLatestPacket !== null) { - var relatedStationNameReplacement = - '<a href="#" onclick="trackdirect.focusOnStation(' + - relatedStationId + - ', true); return false;">' + - escapeHtml(relatedStationLatestPacket.sender_name) + - "</a>"; - - var relatedStationSenderName = escapeHtml( - relatedStationLatestPacket.sender_name - ); - raw = raw.replaceAll( - ">" + relatedStationSenderName + ":", - ">" + relatedStationNameReplacement + ":" - ); - raw = raw.replaceAll( - ">" + relatedStationSenderName + ",", - ">" + relatedStationNameReplacement + "," - ); - raw = raw.replaceAll( - ">" + relatedStationSenderName + "*", - ">" + relatedStationNameReplacement + "*" - ); - - raw = raw.replaceAll( - "," + relatedStationSenderName + ":", - "," + relatedStationNameReplacement + ":" - ); - raw = raw.replaceAll( - "," + relatedStationSenderName + ",", - "," + relatedStationNameReplacement + "," - ); - raw = raw.replaceAll( - "," + relatedStationSenderName + "*", - "," + relatedStationNameReplacement + "*" - ); - } - } - - // Before returning we also linkify any url - raw = Autolinker.link(raw, { newWindow: true }); - return raw; - } - return ""; - }, - - /** - * Returns true if packet is on map, false otherwise - * @param {trackdirect.models.Packet} packet - * @return boolean - */ - _isPacketOnMap: function (packet) { - if ( - packet.latitude <= this._map.getNorthEastLat() && - packet.latitude >= this._map.getSouthWestLat() - ) { - if ( - packet.longitude <= this._map.getNorthEastLng() && - packet.longitude >= this._map.getSouthWestLng() - ) { - return true; - } - } - return false; - }, - - /** - * Modify website when websocket state has changed - * @return null - */ - _handleWebsocketStateChange: function () { - switch (this._websocket.getState()) { - case this._websocket.State.CONNECTING: - this._setWebsocketStateConnecting(); - break; - - case this._websocket.State.CONNECTED: - this._setWebsocketStateConnected(); - - // Trigger map change event since we now have access to websocket - trackdirect.services.callbackExecutor.add( - this, - this._sendPositionRequest, - [] - ); - break; - - case this._websocket.State.CLOSED: - case this._websocket.State.ERROR: - this._setWebsocketStateError(); - break; - - case this._websocket.State.LOADING: - this._setWebsocketStateLoading(true, false); - break; - - case this._websocket.State.LOADING_DONE: - this._setWebsocketStateLoadingDone(); - break; - - case this._websocket.State.LISTENING_APRSIS: - this._setWebsocketStateAprsISConnected(); - break; - - case this._websocket.State.CONNECTING_APRSIS: - this._setWebsocketStateAprsISConnecting(); - break; - - case this._websocket.State.IDLE: - this._setWebsocketStateIdle(); - break; - - case this._websocket.State.INACTIVE: - this._setWebsocketStateInactive(); - break; - } - }, - - /** - * Show that websocket is Connecting - * @return null - */ - _setWebsocketStateConnecting: function () { - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Connecting") - .css("color", "blue"); - } - }, - - /** - * Show that websocket is Connected - * @return null - */ - _setWebsocketStateConnected: function () { - this._map.resetAllMarkers(); - - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Connected") - .css("color", "green"); - } - }, - - /** - * Show that websocket has a problem - * @return null - */ - _setWebsocketStateError: function () { - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Disconnected") - .css("color", "red"); - } - - this._map.resetAllMarkers(); - this._deactivateFiltered(false); - - var me = this; - if ( - confirm( - "You have been disconnected, this can be caused by a network error, by the timeout limit or if maintenance occurs while you’re logged in. Do you want to reconnect?" - ) - ) { - me._websocket = new trackdirect.Websocket(me._wsServerUrl); - me._initWebsocketListeners(); - trackdirect.services.callbackExecutor.add( - me, - me._sendPositionRequest, - [] - ); - } - }, - - /** - * Show that websocket is loading - * @param {boolean} isStateConfirmed - * @param {boolean} showOnMobile - * @return null - */ - _setWebsocketStateLoading: function (isStateConfirmed, showOnMobile) { - isStateConfirmed = - typeof isStateConfirmed !== "undefined" ? isStateConfirmed : true; - showOnMobile = typeof showOnMobile !== "undefined" ? showOnMobile : true; - - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html( - 'Loading <i class="fa fa-spinner fa-spin" style="font-size:14px"></i>' - ) - .css("color", "green"); - } - }, - - /** - * Show that websocket is done loading - * @return null - */ - _setWebsocketStateLoadingDone: function () { - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Complete") - .css("color", "green"); - } - }, - - /** - * Show that websocket is receiving packets from APRS-IS - * @return null - */ - _setWebsocketStateAprsISConnected: function () { - // APRS-IS Connection is up for this area! - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Connected to APRS feed") - .css("color", "green"); - } - }, - - /** - * Show that websocket waiting for packets from APRS-IS - * @return null - */ - _setWebsocketStateAprsISConnecting: function () { - // Waiting for APRS-IS Connection - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Waiting for APRS feed") - .css("color", "green"); - } - }, - - /** - * Show that websocket is IDLE - * @return null - */ - _setWebsocketStateIdle: function () { - // We are zoomed out and not doing anything - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Idle") - .css("color", "green"); - } - }, - - /** - * Show that websocket is INACTIVE - * @return null - */ - _setWebsocketStateInactive: function () { - if (this._statusContainerElementId !== null) { - $("#" + this._statusContainerElementId) - .html("Inactive") - .css("color", "orange"); - } - - this._websocket.close(); - this._map.resetAllMarkers(); - var me = this; - if ( - confirm( - "No activity for a long time, map updates has been stopped. Do you want to reconnect?" - ) - ) { - me._websocket = new trackdirect.Websocket(me._wsServerUrl); - me._initWebsocketListeners(); - trackdirect.services.callbackExecutor.add( - me, - me._sendPositionRequest, - [] - ); - } - }, - - /** - * Send a position request to server - * @return null - */ - _sendPositionRequest: function () { - if (!this._waitForFilterResponse && this._map.isMapReady()) { - if (!this.isFilteredMode()) { - if (this._map.getZoom() < trackdirect.settings.minZoomForMarkers) { - // Just stop connection to APRS-IS - this._websocket.doSendNewPositionRequest( - 0, - 0, - 0, - 0, - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp(), - false - ); - } else if ( - this._map.getZoom() >= trackdirect.settings.minZoomForMarkerTail - ) { - // We need all details, send regular request - this._websocket.doSendNewPositionRequest( - this._map.getNorthEastLat(), - this._map.getNorthEastLng(), - this._map.getSouthWestLat(), - this._map.getSouthWestLng(), - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp(), - false - ); - } else { - // We only need markers, only request the last packet for each station (server my still send everything, but we do not force server to do that) - this._websocket.doSendNewPositionRequest( - this._map.getNorthEastLat(), - this._map.getNorthEastLng(), - this._map.getSouthWestLat(), - this._map.getSouthWestLng(), - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp(), - true - ); - } - } else { - // We are filtering, request everything everywhere for our filter - this._websocket.doSendNewPositionRequest( - 90, - 180, - -90, - -180, - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp(), - false - ); - } - - var data = { - center: this._map.getCenterLiteral(), - zoom: this._map.getZoom(), - }; - this._emitEventListeners("position-request-sent", data); - } - }, - - /** - * Send a idle request to server if needed - * @return null - */ - _sendIdleRequest: function () { - // The position 0,0,0,0 means that we request server to be IDLE - if (this._websocket.isPositionRequestSent()) { - this._websocket.doSendNewPositionRequest( - 0, - 0, - 0, - 0, - this._map.state.getTimeLength() / 60, - this.getTimeTravelTimestamp(), - false - ); - } - }, - - /** - * Deactivate filtered mode is confirmed - * @param {boolean} sendNewRequest - * @return null - */ - _deactivateFiltered: function (sendNewRequest) { - // Reset Time travel - this.setTimeTravelTimestamp(null); - - // clear everything - this._map.resetAllMarkers(); - - if (this._map.state.openInfoWindow !== null) { - this._map.state.openInfoWindow.hide(); - } - this._map.deactivateFilteredMode(); - - // If we was tracking one station that we was filtering on, stop tracking it - this.stopTrackStation(); - this.setTimeLength(this.settings.defaultTimeLength, false); - - this._emitEventListeners("filter-changed", []); - this._emitEventListeners("filter-stopped"); - - if (sendNewRequest) { - trackdirect.services.callbackExecutor.add( - this, - this._sendPositionRequest, - [] - ); - } - - this._emitEventListeners("mode-changed"); - }, - - /** - * Returns the website base URL - * @param {string} host - * @return string - */ - _getMapBaseUrl: function (host) { - host = typeof host !== "undefined" ? host : ""; - host = host.replace("http://", ""); - host = host.replace("https://", ""); - if (host == "") { - host = window.location.host; - } - if (location.protocol === "https:") { - return "https://" + host; - } else { - return "http://" + host; - } - }, - - /** - * Call all listeners that are listening on specified event - * @param {string} event - * @param {string} arg - * @return null - */ - _emitEventListeners: function (event, arg) { - if (event in this._eventListeners) { - for (var i = 0; i < this._eventListeners[event].length; i++) { - this._eventListeners[event][i](arg); - } - } - - if (event in this._eventListenersOnce) { - for (var i = 0; i < this._eventListenersOnce[event].length; i++) { - this._eventListenersOnce[event][i](arg); - this._eventListenersOnce[event].splice(i, 1); - i--; - } - } - - if (event == "trackdirect-init-done") { - this._trackdirectInitDone = true; - } - - if (event == "map-created") { - this._mapCreated = true; - } - }, -}; diff --git a/jslib/src/trackdirect/MarkerCreator.js b/jslib/src/trackdirect/MarkerCreator.js deleted file mode 100755 index 4c6a6a8..0000000 --- a/jslib/src/trackdirect/MarkerCreator.js +++ /dev/null @@ -1,914 +0,0 @@ -/** - * Class trackdirect.MarkerCreator - * @param {trackdirect.models.Map} map - */ -trackdirect.MarkerCreator = function (map) { - this._map = map; - - // Station id for the packet sequence that is currenly being added to the map - this._currentPacketSequenceStationId = null; -}; - -/** - * Add new packet to map - * @param {object} packet - * @param {boolean} tryToShowPacket - * @return {int} markerIdKey - */ -trackdirect.MarkerCreator.prototype.addPacket = function ( - packet, - tryToShowPacket -) { - if (this.isBadPacket(packet)) { - return null; - } - var markerIdKey = this._map.markerCollection.getMarkerIdKey(packet.marker_id); - - if (this._map.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - if ( - marker.packet.is_moving == 1 && - packet.is_moving != 1 - ) { - // If server for some reason decides to change move-type we keep the original moving since we have started to plot it - // Server should not do this... - packet.is_moving = 1; - } - } else { - if (packet.packet_order_id == 2) { - // Something is wrong, a packet should not have order id 2 if no marker exists - packet.packet_order_id = 3; // Force first packet - } - } - - markerIdKeyToOverwrite = this._getMarkerIdKeyToOverwrite(packet); - if (markerIdKeyToOverwrite !== null) { - this._overwriteMarker(markerIdKeyToOverwrite, markerIdKey); - } - - if (this._map.markerCollection.isPacketReplacingMarker(packet)) { - this._replaceMarker(markerIdKey); - } - - this._setCurrentPacketSequenceStationId(packet); - this._convertLostMarkersToGhost(packet); - this._connectToPreviousMarker(packet); - - marker = this._createMarker(packet); - - // Add to map sector and show it if that should be done - this._map.addMarkerToMapSectors(markerIdKey, packet, tryToShowPacket); - - if (packet.overwrite == 1) { - marker.overwrite = true; // Mark it to be overwritten - } - return markerIdKey; -}; - -/** - * Should packet overwrite any previous marker? - * If so the markerIdKey will be returned otherwise null - * @param {object} packet - * @return {int} - */ -trackdirect.MarkerCreator.prototype._getMarkerIdKeyToOverwrite = function ( - packet -) { - var markerIdKey = this._map.markerCollection.getMarkerIdKey(packet.marker_id); - if (this._map.markerCollection.isExistingMarker(markerIdKey)) { - // This marker exists on map, overwrite if it is marked to be overwritten - var marker = this._map.markerCollection.getMarker(markerIdKey); - if (marker.overwrite == true && packet.overwrite == 0) { - return markerIdKey; - } - } else { - // If packet is stationary and station has another marker allready, check if it may be the same thing - // It may be the same thing but different marker id's if it is more than 24h between packets - // (collector only connects packets that has less than 24h apart from eachother) - var prevMarker = this._map.markerCollection.getStationLatestMarker( - packet.station_id - ); - if (prevMarker !== null) { - if ( - packet.is_moving == 0 && - packet.station_id == prevMarker.packet.station_id && - packet.timestamp - prevMarker.packet.timestamp > 86400 && - Math.round(prevMarker.packet.latitude * 100000) == - Math.round(packet.latitude * 100000) && - Math.round(prevMarker.packet.longitude * 100000) == - Math.round(packet.longitude * 100000) && - prevMarker.packet.symbol == packet.symbol && - prevMarker.packet.symbol_table == packet.symbol_table - ) { - return prevMarker.markerIdKey; - } - } - } - return null; -}; - -/** - * Replace marker - * Replace is bit different from overwrite: - * - replace is just replacing the latest position, used for stationary when a new packet for the same position is received - * - overwrite is used when only the latest packet has been added to map and we now want to add the history - * @param {int} markerIdKey - * @return {null} - */ -trackdirect.MarkerCreator.prototype._replaceMarker = function (markerIdKey) { - if (this._map.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - if (this._map.state.isMarkerInfoWindowOpen(marker)) { - this._map.state.openInfoWindowForMarkerIdKey = markerIdKey; - } - - // We hide old marker since we will just overwrite the variable which will not remove it from map - marker.hide(0, false, false); - marker.stopDirectionPolyline(); - } -}; - -/** - * Prepare marker to be overwritten - * @param {int} prevMarkerIdKey - * @param {int} newMarkerIdKey - * @return {null} - */ -trackdirect.MarkerCreator.prototype._overwriteMarker = function ( - prevMarkerIdKey, - newMarkerIdKey -) { - var prevMarker = this._map.markerCollection.getMarker(prevMarkerIdKey); - if (this._map.state.isMarkerInfoWindowOpen(prevMarker)) { - this._map.state.openInfoWindowForMarkerIdKey = newMarkerIdKey; - } - - var markerLabel = prevMarker.label; - var markerPolyLine = - this._map.markerCollection.getMarkerPolyline(prevMarkerIdKey); - var markerDotMarkers = - this._map.markerCollection.getDotMarkers(prevMarkerIdKey); - var markerOriginDashedPolyline = - this._map.markerCollection.getMarkerDashedPolyline(prevMarkerIdKey); - - clearTimeout(prevMarker.toOldTimerId); - if (markerDotMarkers != null) { - for (var i = 0; i < markerDotMarkers.length; i++) { - clearTimeout(markerDotMarkers[i].toOldTimerId); - } - } - - this._map.markerCollection.resetMarker(prevMarkerIdKey); - if (this._map.oms) { - this._map.oms.removeMarker(prevMarker); - } - - if ( - prevMarker != null && - typeof prevMarker.packet.latitude != "undefined" && - typeof prevMarker.packet.longitude != "undefined" - ) { - this._map.markerCollection.removePostionMarkerId( - prevMarker.packet.latitude, - prevMarker.packet.longitude, - prevMarkerIdKey - ); - this._map.showTopLabelOnPosition( - prevMarker.packet.latitude, - prevMarker.packet.longitude - ); - } - - // Note that the marker needs to be hidden after it has been removed from array - // (otherwise it may be shown again before it is removed) - prevMarker.hide(0, false, false); - if (markerPolyLine !== null) { - markerPolyLine.hide(); - } - if (markerDotMarkers != null) { - for (var i = 0; i < markerDotMarkers.length; i++) { - markerDotMarkers[i].hide(); - } - } - if (markerOriginDashedPolyline !== null) { - markerOriginDashedPolyline.hide(); - - // Remove dashed polyline from related marker also - if ( - typeof markerOriginDashedPolyline.relatedMarkerIdKey !== "undefined" && - markerOriginDashedPolyline.relatedMarkerIdKey !== null - ) { - var prevMarker = this._map.markerCollection.getMarker( - markerOriginDashedPolyline.relatedMarkerIdKey - ); - if ( - prevMarker !== null && - typeof prevMarker._relatedMarkerOriginDashedPolyLine !== "undefined" - ) { - prevMarker._relatedMarkerOriginDashedPolyLine = null; - } - } - } - - prevMarker.hidePHGCircle(); - prevMarker.hideRNGCircle(); - - if (prevMarker.directionPolyLine !== null) { - prevMarker.directionPolyLine.stop(); - } -}; - -/** - * Remember the station that we are currently working, if we receive a series of packet for a station - * @param {object} packet - */ -trackdirect.MarkerCreator.prototype._setCurrentPacketSequenceStationId = - function (packet) { - if (packet.packet_order_id == 3) { - this._currentPacketSequenceStationId = packet.station_id; - } - - if ( - packet.packet_order_id == 2 && - this._currentPacketSequenceStationId === null - ) { - // Looks like we marked the start-packet as bad... - this._currentPacketSequenceStationId = packet.station_id; - packet.packet_order_id = 3; - } - - if (packet.packet_order_id == 1) { - this._currentPacketSequenceStationId = null; - } - }; - -/** - * Create a new marker! - * @param {object} packet - */ -trackdirect.MarkerCreator.prototype._createMarker = function (packet) { - var markerIdKey = this._map.markerCollection.getMarkerIdKey(packet.marker_id); - var prevmarker = this._map.markerCollection.getMarker(markerIdKey); - this._map.state.currentMarkerZindex += 1; - - if (packet.packet_order_id == 1 || packet.is_moving == 0) { - if (prevmarker !== null) { - if ( - prevmarker.packet.latitude != packet.latitude && - prevmarker.packet.longitude != packet.longitude - ) { - this._map.markerCollection.removePostionMarkerId( - prevmarker.latitude, - prevmarker.longitude, - markerIdKey - ); - this._map.showTopLabelOnPosition( - prevmarker.latitude, - prevmarker.longitude - ); - } - } - var marker = new trackdirect.models.Marker(packet, false, this._map); - this._addInfoWindowClickListener(marker, true); - } else { - var marker = new trackdirect.models.Marker(packet, true, this._map); - this._map.markerCollection.addDotMarker(markerIdKey, marker); - this._addInfoWindowClickListener(marker, false); - } - marker.markerIdKey = markerIdKey; - - if (prevmarker !== null) { - if (!this._map.markerCollection.isPacketReplacingMarker(packet)) { - // We need to extend the marker polyline since this is not the first dotmarker - this._extendTail(prevmarker, marker); - } else { - // update marker for the latest polyline point - this._replaceTailMarker(markerIdKey); - } - } - - if (packet.packet_order_id == 1) { - if (packet.hasDirectionSupport() && packet.hasConfirmedMapId()) { - marker.directionPolyLine = new trackdirect.models.DirectionPolyline( - marker, - this._map - ); - } - } - - this._map.markerCollection.setMarker(markerIdKey, marker); - - if (!marker.isDotMarker()) { - this._createMarkerLabel(marker); - this._map.showTopLabelOnPosition(packet.latitude, packet.longitude); - } - - return marker; -}; - -/** - * Add listener for InfoWindow - * @param {object} marker - * @param {boolean} useOmsIfExists - */ -trackdirect.MarkerCreator.prototype._addInfoWindowClickListener = function ( - marker, - useOmsIfExists -) { - var me = this; - if (useOmsIfExists && this._map.oms) { - me._map.oms.addMarker(marker); - } else if (typeof google === "object" && typeof google.maps === "object") { - marker.addListener("click", function () { - me._map.openMarkerInfoWindow(marker, false); - }); - } else if (typeof L === "object") { - marker.on("click", function () { - me._map.openMarkerInfoWindow(marker, false); - }); - } -}; - -/** - * Convert marker to dot marker - * @param {int} markerIdKey - * @param {object} packet - */ -trackdirect.MarkerCreator.prototype._convertToDotMarker = function ( - markerIdKey, - packet -) { - // Check that marker has not allready been converted to dot-marker - var dotMarker = this._map.markerCollection.getMarker(markerIdKey); - if (dotMarker != null && dotMarker.showAsMarker) { - dotMarker.stopDirectionPolyline(); - - if (this._map.state.isMarkerInfoWindowOpen(dotMarker)) { - this._map.state.openInfoWindowForMarkerIdKey = markerIdKey; - } - - if (!this._map.state.isFilterMode) { - if ( - this._map.getZoom() < trackdirect.settings.minZoomForMarkerPrevPosition - ) { - dotMarker.hide(); - } - } - - var icon = this._getDotMarkerIcon(packet); - dotMarker.setOpacity(1.0); - dotMarker.setIcon(icon); - if (typeof google === "object" && typeof google.maps === "object") { - dotMarker.setOptions({ anchorPoint: null }); - } - this._map.markerCollection.addDotMarker(markerIdKey, dotMarker); - - // Remove from oms - if (this._map.oms) { - this._map.oms.removeMarker(dotMarker); - - // markers that is not handled by oms need to have their own clicklistener - var me = this; - if (typeof google === "object" && typeof google.maps === "object") { - dotMarker.addListener("click", function () { - me._map.openMarkerInfoWindow(dotMarker, false); - }); - } else if (typeof L === "object") { - dotMarker.on("click", function () { - me._map.openMarkerInfoWindow(dotMarker, false); - }); - } - } - - // Allways hide label for marker that is converted to dot-marker (we are not sure if label will still be used) - if (this._map.markerCollection.hasMarkerLabel(markerIdKey)) { - var markerLabel = this._map.markerCollection.getMarkerLabel(markerIdKey); - markerLabel.hide(); - } - dotMarker.hasLabel = false; - - // Mark that marker has been converted to dot marker - dotMarker.showAsMarker = false; - } -}; - -/** - * Get dot marker icon - * @param {object} packet - * @return {object} - */ -trackdirect.MarkerCreator.prototype._getDotMarkerIcon = function (packet) { - var colorId = trackdirect.services.stationColorCalculator.getColorId(packet); - if (typeof google === "object" && typeof google.maps === "object") { - var icon = { - url: - trackdirect.settings.baseUrl + - trackdirect.settings.imagesBaseDir + - "dotColor" + - colorId + - ".png", - size: new google.maps.Size(12, 12), - origin: new google.maps.Point(0, 0), - anchor: new google.maps.Point(6, 6), - }; - } else if (typeof L === "object") { - var icon = L.icon({ - iconUrl: - trackdirect.settings.baseUrl + - trackdirect.settings.imagesBaseDir + - "dotColor" + - colorId + - ".png", - iconSize: [12, 12], - iconAnchor: [6, 6], - popupAnchor: [-3, -12], - }); - } - return icon; -}; - -/** - * Remove existing related marker origin dashed polyline if it should no longer be used - * @param {object} prevMarker - * @param {int} newMarkerIdKey - */ -trackdirect.MarkerCreator.prototype._removeExistingRelatedMarkerOriginDashedPolyLine = - function (prevMarker, newMarkerIdKey) { - // We only connect confirmed and moving previous markers with longer length than 1 packet - if ( - typeof prevMarker._relatedMarkerOriginDashedPolyLine !== "undefined" && - prevMarker._relatedMarkerOriginDashedPolyLine !== null - ) { - // - // Check if it should be overwritten! - // (If this marker allready has a related-origin-dashed-polyline and the owner marker is alone we exclude it from path) - // - var ownerMarkerIdKey = - prevMarker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey; - var ownerMarker = this._map.markerCollection.getMarker(ownerMarkerIdKey); - var isConfirmedMapId = true; - if ( - ownerMarker !== null && - ownerMarker.packet.map_id != 1 && - ownerMarker.packet.map_id != 2 && - ownerMarker.packet.map_id != 12 - ) { - isConfirmedMapId = false; - } - - if ( - ownerMarkerIdKey != newMarkerIdKey && - (!isConfirmedMapId || - !this._map.markerCollection.hasDotMarkers(ownerMarkerIdKey)) && - ownerMarker.showAsMarker - ) { - // overwrite it! - this._map.markerCollection.resetMarkerDashedPolyline( - prevMarker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey - ); - prevMarker._relatedMarkerOriginDashedPolyLine.hide(); - prevMarker._relatedMarkerOriginDashedPolyLine = null; - } - } - }; - -/** - * Create related marker origin dashed polyline if possible - * @param {object} prevMarker - * @param {object} packet - * @param {int} newMarkerIdKey - */ -trackdirect.MarkerCreator.prototype._createMarkerOriginDashedPolyLine = - function (prevMarker, packet, newMarkerIdKey) { - if ( - this._map.state.getClientTimestamp(prevMarker.packet.timestamp) <= - this._map.state.getOldestAllowedPacketTimestamp() - ) { - // previous marker is to old, no need to connect them - return; - } - - if ( - typeof prevMarker._relatedMarkerOriginDashedPolyLine === "undefined" || - prevMarker._relatedMarkerOriginDashedPolyLine === null - ) { - var color = trackdirect.services.stationColorCalculator.getColor(packet); - var newDashedPolyline = new trackdirect.models.DashedTailPolyline( - color, - this._map - ); - newDashedPolyline.setMarkerIdKey(newMarkerIdKey); // Add alias for owner - newDashedPolyline.setRelatedMarkerIdKey(prevMarker.markerIdKey); - newDashedPolyline.addPacket(prevMarker.packet); - newDashedPolyline.addPacket(packet); - - this._map.markerCollection.setMarkerDashedPolyline( - newMarkerIdKey, - newDashedPolyline - ); - prevMarker._relatedMarkerOriginDashedPolyLine = newDashedPolyline; - - this._map.addMarkerToMapSectorInterval( - newMarkerIdKey, - prevMarker.packet.getLatLngLiteral(), - packet.getLatLngLiteral() - ); - } - }; - -/** - * Looks for lost markers and converts them to ghost markers - * @param {object} newPacket - */ -trackdirect.MarkerCreator.prototype._convertLostMarkersToGhost = function ( - newPacket -) { - // Look for lost markers if this is a confirmed and moving marker - if ( - newPacket.packet_order_id != 2 && - newPacket.hasConfirmedMapId() && - newPacket.is_moving == 1 && - this._map.markerCollection.isPacketReplacingMarker(newPacket) == false - ) { - if (this._map.markerCollection.hasNonRelatedMovingMarkerId(newPacket)) { - // Loop over all markers for this station - list = this._map.markerCollection.getStationMarkerIdKeys( - newPacket.station_id - ); - for (var markerIdKey in list) { - var newMarkerIdKey = this._map.markerCollection.getMarkerIdKey( - newPacket.marker_id - ); - var marker = this._map.markerCollection.getMarker(markerIdKey); - if ( - marker !== null && - markerIdKey !== newMarkerIdKey && - marker.packet.is_moving == 1 && - marker.packet.timestamp <= newPacket.timestamp && - marker.packet.hasConfirmedMapId() && - marker.isSingleMovingMarker() - ) { - // This marker is considered lost - // This is the CLIENT PART of the adaptive speed filter - // If we have a confirmed previous marker but it has no dot-markers, we convert it to a ghost marker - - // If marker has a dashed polyline (it is a origin of another marker), that dashed polyline should be removed - // Actually this should not happen (or it may happen for OBJECTS) - if (this._map.markerCollection.hasRelatedDashedPolyline(marker)) { - masterMarkerIdKey = - this._map.markerCollection.getMarkerMasterMarkerKeyId( - markerIdKey - ); - if ( - masterMarkerIdKey !== markerIdKey && - this._map.markerCollection.isExistingMarker(masterMarkerIdKey) !== - null - ) { - // Another packet is connected to this one with a dashed polyline, this marker is probably an OBJECT sent by several senders - continue; - } else { - // This on the other hand should never happen... - // but if it does the dashed polyline should be removed - this._map.markerCollection.resetMarkerDashedPolyline( - marker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey - ); - marker._relatedMarkerOriginDashedPolyLine.hide(); - marker._relatedMarkerOriginDashedPolyLine = null; - } - } - - marker.packet.map_id = 9; // Abnormal position (not releted to any previous or any newer positions) - marker.setOpacity(0.5); - marker.hasLabel = false; - marker.hideLabel(); - marker.stopDirectionPolyline(); - - if (!this._map.state.isGhostMarkersVisible) { - marker.hide(); - } - } - } - } - } -}; - -/** - * Get the latest markerIdKey to connect new marker to, regular polyline if possible, otherwise dashed polyline - * @param {object} newPacket - * @param {int} newMarkerIdKey - * @return {int} - */ -trackdirect.MarkerCreator.prototype._getLatestStationMarkerToConnectTo = - function (newPacket, newMarkerIdKey) { - if ( - this._map.markerCollection.getStationLatestMovingMarkerIdKey( - newPacket.station_id - ) === newMarkerIdKey - ) { - // This markerId is known and is the latest, just go on and use it - return newMarkerIdKey; - } - - var latestPrevMarkerIdKey = null; - var latestPrevMarkerIdKeyTimestamp = null; - // Loop over all markers for this station - - var list = this._map.markerCollection.getStationMarkerIdKeys( - newPacket.station_id - ); - for (var markerIdKey in list) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - if (marker !== null) { - if (markerIdKey === newMarkerIdKey) { - return markerIdKey; - } else if ( - marker.packet.hasConfirmedMapId() && - marker.packet.is_moving == 1 && - marker.overwrite !== true && - marker.isSingleMovingMarker() == false && - (latestPrevMarkerIdKeyTimestamp === null || - latestPrevMarkerIdKeyTimestamp < marker.packet.timestamp) - ) { - // We exclude single packet markers from the same station since they will allways be converted to ghost-markers by server when found - // (This is not allways true when we speak about objects with different stations) - latestPrevMarkerIdKey = markerIdKey; - latestPrevMarkerIdKeyTimestamp = marker.packet.timestamp; - } - } - } - return latestPrevMarkerIdKey; - }; - -/** - * Convert all stations previous markers to dot markers since a new packet has been received - * @param {object} newPacket - */ -trackdirect.MarkerCreator.prototype._connectToPreviousMarker = function ( - newPacket -) { - var newMarkerIdKey = this._map.markerCollection.getMarkerIdKey( - newPacket.marker_id - ); - // Create dot-marker for old position (is needed even if marker is new since same station may have other markers) - if ( - newPacket.packet_order_id != 2 && - newPacket.is_moving == 1 && - this._map.markerCollection.isPacketReplacingMarker(newPacket) == false - ) { - var latestPrevMarkerIdKey = this._getLatestStationMarkerToConnectTo( - newPacket, - newMarkerIdKey - ); - var latestPrevMarker = this._map.markerCollection.getMarker( - latestPrevMarkerIdKey - ); - if (latestPrevMarker !== null) { - // Since we will add a new packet for this station any direction polylines should be stopped - if (newPacket.hasConfirmedMapId()) { - latestPrevMarker.stopDirectionPolyline(); - } - - if (latestPrevMarkerIdKey == newMarkerIdKey) { - if ( - this._map.markerCollection.hasDashedPolyline(latestPrevMarkerIdKey) && - newPacket.hasConfirmedMapId() - ) { - // If previous marker is connected to a prev marker by a origin dashed polyline, - // we need to convert that marker to a dot-marker also (this happens when the prev marker is a mapId 7) - // We don't do this until our new markerId gets a packet with mapId 1 (some never get it and will be abandoned) - var dashedPolyline = - this._map.markerCollection.getMarkerDashedPolyline( - latestPrevMarkerIdKey - ); - var latestPrevRelatedMarkerIdKey = dashedPolyline.relatedMarkerIdKey; - this._convertToDotMarker(latestPrevRelatedMarkerIdKey, newPacket); - } - - // We can use the new packet here since it will only be used to get the correct color - this._convertToDotMarker(latestPrevMarkerIdKey, newPacket); - } else { - // Connect it with previous polyline with a dashed polyline - // Remember that we should create a origin dashed polyline even if new packet has mapId 7 since it may be converted to 1 later - // If it wont't be converted to a mapId 1 the origin dashed polyline will be removed when next packet with mapId 1 or is received for this station - this._removeExistingRelatedMarkerOriginDashedPolyLine( - latestPrevMarker, - newMarkerIdKey - ); - this._createMarkerOriginDashedPolyLine( - latestPrevMarker, - newPacket, - newMarkerIdKey - ); - - if (newPacket.hasConfirmedMapId()) { - // We only convert previous packet to a dot-marker if this marker has mapId 1 (or equal) - // We can use the new packet here since it will only be used to get the correct color - this._convertToDotMarker(latestPrevMarkerIdKey, newPacket); - } - } - } - } -}; - -/** - * Create label for marker - * @param {trackdirect.models.Marker} marker - */ -trackdirect.MarkerCreator.prototype._createMarkerLabel = function (marker) { - var position = marker.packet.getLatLngLiteral(); - - if (this._map.markerCollection.hasMarkerLabel(marker.markerIdKey)) { - // Just move existing label - this._map.markerCollection.setMarkerLabelPosition( - marker.markerIdKey, - position - ); - } else if (marker.packet.packet_order_id == 1) { - if (marker.packet.getOgnRegistration() != null) { - labelText = marker.packet.getOgnRegistration(); - if (marker.packet.getOgnCN() !== null) { - labelText += " [" + marker.packet.getOgnCN() + "]"; - } - } else { - if (marker.packet.station_name == marker.packet.sender_name) { - labelText = escapeHtml(marker.packet.station_name); - } else { - labelText = - escapeHtml(marker.packet.station_name) + - ' <span style="font-weight: normal;">(' + - escapeHtml(marker.packet.sender_name) + - ")</span>"; - } - - // Add operator in comment to label - if (marker.packet.comment) { - var opIndex = marker.packet.comment.indexOf("OP:"); - if (opIndex > -1) { - opStr = marker.packet.comment.substring(opIndex + 3).replace(/^\s+/, "") + " "; - opStr = opStr.substring(0, opStr.indexOf(" ")); - if (opStr.length <= 10 && opStr.length > 0) { - labelText += - ' <span style="font-weight: normal;">[' + - escapeHtml(opStr) + - "]</span>"; - } - } - } - } - - var markerLabel = new trackdirect.models.Label( - { - position: position, - text: labelText, - }, - this._map - ); - this._map.markerCollection.setMarkerLabel(marker.markerIdKey, markerLabel); - } -}; - -/** - * Extend marker tail polyline with another position - * @param {trackdirect.models.Marker} prevmarker - * @param {trackdirect.models.Marker} newmarker - */ -trackdirect.MarkerCreator.prototype._extendTail = function ( - prevmarker, - newmarker -) { - if ( - this._map.state.getClientTimestamp(newmarker.packet.timestamp) <= - this._map.state.getOldestAllowedPacketTimestamp() - ) { - // received packet is allready to old... - return; - } - - if (this._map.markerCollection.hasPolyline(newmarker.markerIdKey)) { - var polyline = this._map.markerCollection.getMarkerPolyline( - newmarker.markerIdKey - ); - polyline.addMarker(newmarker); - } else { - if ( - this._map.state.getClientTimestamp( - this._map.markerCollection.getMarker(newmarker.markerIdKey).packet.timestamp - ) <= this._map.state.getOldestAllowedPacketTimestamp() - ) { - // previous marker is to old, no need to connect them - return; - } else { - var color = trackdirect.services.stationColorCalculator.getColor( - newmarker.packet - ); - var newTailPolyline = new trackdirect.models.TailPolyline( - color, - this._map - ); - newTailPolyline.setMarkerIdKey(newmarker.markerIdKey); - newTailPolyline.addMarker(prevmarker); - newTailPolyline.addMarker(newmarker); - this._map.markerCollection.setMarkerPolyline( - newmarker.markerIdKey, - newTailPolyline - ); - } - } -}; - -/** - * Replace latest marker in marker tail polyline - * @param {int} markerIdKey - */ -trackdirect.MarkerCreator.prototype._replaceTailMarker = function ( - markerIdKey -) { - if (this._map.markerCollection.hasPolyline(markerIdKey)) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - var polylines = this._map.markerCollection.getMarkerPolyline(markerIdKey); - var latestIndex = polylines.getPath().length - 1; - if (latestIndex >= 0) { - polylines.getPathItem(latestIndex).marker = marker; - } - } -}; - -/** - * Return true if packet is bad (if it should not be added to map) - * @param {trackdirect.models.Packet} markerCollection - * @return {boolean} - */ -trackdirect.MarkerCreator.prototype.isBadPacket = function (packet) { - if ( - typeof packet.latitude === "undefined" || - typeof packet.longitude === "undefined" || - packet.marker_id == null - ) { - return true; - } - var markerIdKey = this._map.markerCollection.getMarkerIdKey(packet.marker_id); - if (this._map.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this._map.markerCollection.getMarker(markerIdKey); - if ( - packet.packet_order_id == 1 && - this._currentPacketSequenceStationId == packet.station_id - ) { - // This is the last packet in an ongoing serie, do not mark this packet as bad - return false; - } - if (packet.db == 0) { - if (this._map.markerCollection.isDuplicate(packet)) { - return true; // We think this is a duplicate - } - } - if ( - packet.db == 1 && - marker.packet.db == 1 && - marker.packet.source === 0 && - packet.id === marker.packet.id - ) { - // For some reason we got the same packet again, duplicate! - // (this may happen when filtering on a station with only non confirmed packets) - return true; - } - - if (marker.overwrite == true && packet.overwrite == 0) { - return false; - } else { - if (marker.packet.timestamp >= packet.timestamp) { - // It's important that we do not allow two packets with the same timestamp since they may be the same packet, which can cause wierd problems - return true; - } - - if ( - marker.packet.reported_timestamp !== null && - packet.reported_timestamp !== null && - Math.abs(marker.packet.reported_timestamp - packet.reported_timestamp) < 600 - ) { - if (marker.packet.reported_timestamp > packet.reported_timestamp) { - return true; - } - } - } - } - - if (packet.is_moving == 1) { - var list = this._map.markerCollection.getStationMarkerIdKeys( - packet.station_id - ); - for (var relatedMarkerIdKey in list) { - var relatedMarker = - this._map.markerCollection.getMarker(relatedMarkerIdKey); - // Do not add packet to map if other packet with earlier timestamp exists - if ( - relatedMarker !== null && - relatedMarker.overwrite == false && - relatedMarker.packet.timestamp > packet.timestamp - ) { - return true; - } - } - } - - return false; -}; diff --git a/jslib/src/trackdirect/Websocket.js b/jslib/src/trackdirect/Websocket.js deleted file mode 100755 index 40bdb5e..0000000 --- a/jslib/src/trackdirect/Websocket.js +++ /dev/null @@ -1,464 +0,0 @@ -/** - * Class trackdirect.Websocket - * @param {string} wsServerUrl - */ -trackdirect.Websocket = function (wsServerUrl) { - this._wsServerUrl = wsServerUrl; - this._init(); - - this._state = this.State.CONNECTING; - this._emitEventListeners("state-change"); - - // Call the parent constructor - this._instance = new WebSocket(this._wsServerUrl); - - var me = this; - this._instance.onopen = function (evt) { - me._onOpen(evt); - }; - this._instance.onclose = function (evt) { - me._onClose(evt); - }; - this._instance.onmessage = function (evt) { - me._onMessage(evt); - }; - this._instance.onerror = function (evt) { - me._onError(evt); - }; -}; - -/** - * Init object - */ -trackdirect.Websocket.prototype._init = function () { - this._instance = null; - this._eventListeners = {}; - this._lastSentPositionRequest = ""; - this._state = 0; - this._lastMessageTimestamp = null; - this._queue = []; - this._running = false; - this._sendPositionRequestIntervalId = null; - - this.State = { - CONNECTING: 0, // Not connected! - CONNECTED: 1, - CLOSING: 2, // Not connected! - CLOSED: 3, // Not connected! - ERROR: 4, // Not connected! - LOADING: 5, // Loading history from database - LOADING_DONE: 6, - LISTENING_APRSIS: 7, // Listening on APRS-IS Feed - CONNECTING_APRSIS: 8, - IDLE: 9, - INACTIVE: 10, - }; -}; - -/** - * Send data - * @param {string} data - */ -trackdirect.Websocket.prototype.send = function (data) { - this._instance.send(data); -}; - -/** - * Close websocket connection - */ -trackdirect.Websocket.prototype.close = function () { - this._instance.close(); -}; - -/** - * Get current state of websocket connection - * @return {int} - */ -trackdirect.Websocket.prototype.getState = function () { - return this._state; -}; - -/** - * Clear the last sent filter cache - */ -trackdirect.Websocket.prototype.clearLastSentPositionRequest = function () { - this._lastSentPositionRequest = ""; -}; - -/** - * Clear the last sent filter cache - */ -trackdirect.Websocket.prototype.isPositionRequestSent = function () { - if (this._lastSentPositionRequest != "") { - return true; - } else { - return false; - } -}; - -/** - * Send new filter request - * @param {array} list - * @param {int} historyMinutes - * @return {boolean} - */ -trackdirect.Websocket.prototype.doSendFilterRequest = function ( - list, - historyMinutes, - referenceTime -) { - var request = {}; - request.payload_request_type = 4; - request.list = list; - request.minutes = historyMinutes; - if (referenceTime != "") { - request.time = parseInt(referenceTime, 10); - } else { - request.time = null; - } - return this._addToSendQueue(request); -}; - -/** - * Send new filter request by names - * @param {array} list - * @param {int} historyMinutes - * @return {boolean} - */ -trackdirect.Websocket.prototype.doSendFilterRequestByName = function ( - namelist, - historyMinutes, - referenceTime -) { - var request = {}; - request.payload_request_type = 8; - request.namelist = namelist; - request.minutes = historyMinutes; - if (referenceTime != "") { - request.time = parseInt(referenceTime, 10); - } else { - request.time = null; - } - return this._addToSendQueue(request); -}; - -/** - * Send station request - * @param {int} stationId - * @param {int} historyMinutes - * @param {string} referenceTime - * @return {boolean} - */ -trackdirect.Websocket.prototype.doSendCompleteStationRequest = function ( - stationId, - historyMinutes, - referenceTime -) { - var request = {}; - request.payload_request_type = 7; - request.station_id = stationId; - request.minutes = historyMinutes; - if (referenceTime != "") { - request.time = parseInt(referenceTime, 10); - } else { - request.time = null; - } - return this._addToSendQueue(request); -}; - -/** - * Send new stop filter request - * @param {int} stationId - * @return {boolean} - */ -trackdirect.Websocket.prototype.doSendStopFilterRequest = function (stationId) { - var request = {}; - request.payload_request_type = 6; - request.station_id = stationId; - return this._addToSendQueue(request); -}; - -/** - * Send new position request - * @param {float} neLat - * @param {float} neLng - * @param {float} swLat - * @param {float} swLng - * @param {int} historyMinutes - * @param {string} referenceTime - * @param {boolean} onlyRequestLatestPacket - * @return {boolean} - */ -trackdirect.Websocket.prototype.doSendNewPositionRequest = function ( - neLat, - neLng, - swLat, - swLng, - historyMinutes, - referenceTime, - onlyRequestLatestPacket -) { - var request = {}; - request.payload_request_type = 1; - request.neLat = neLat; - request.neLng = neLng; - request.swLat = swLat; - request.swLng = swLng; - request.minutes = historyMinutes; - if (referenceTime != "") { - request.time = parseInt(referenceTime, 10); - } else { - request.time = null; - } - - - if (onlyRequestLatestPacket) { - request.onlyLatestPacket = 1; - } else { - request.onlyLatestPacket = 0; - } - - var requestStr = JSON.stringify(request); - if (requestStr != this._lastSentPositionRequest) { - this._lastSentPositionRequest = requestStr; - - if (this._sendPositionRequestIntervalId !== null) { - clearInterval(this._sendPositionRequestIntervalId); - } - - if (this._addToSendQueue(request)) { - var me = this; - this._sendPositionRequestIntervalId = window.setInterval(function () { - // Real-time update functionality may discard packets during high load, - // so it is good to send an extra update request now and then - request.payload_request_type = 11; - if (me._lastSentPositionRequest == requestStr) { - me._addToSendQueue(request); - } - }, 60 * 1000); - return true; - } - return false; - } else { - // No need to send this request... - return true; - } -}; - -/** - * Add new event listener - * @param {string} event - * @param {string} handler - */ -trackdirect.Websocket.prototype.addListener = function (event, handler) { - if (!(event in this._eventListeners)) { - this._eventListeners[event] = []; - } - this._eventListeners[event].push(handler); -}; - -/** - * On open - * @param {string} evt - */ -trackdirect.Websocket.prototype._onOpen = function (evt) { - // We still consider this to be "connecting", first when server says it ready we consider us connected - this._state = this.State.CONNECTING; - this._emitEventListeners("state-change"); -}; - -/** - * On close - * @param {string} evt - */ -trackdirect.Websocket.prototype._onClose = function (evt) { - this._state = this.State.CLOSED; - this._emitEventListeners("state-change"); -}; - -/** - * On error - * @param {string} evt - */ -trackdirect.Websocket.prototype._onError = function (evt) { - this._state = this.State.ERROR; - this._emitEventListeners("state-change"); -}; - -/** - * On message - * @param {string} evt - */ -trackdirect.Websocket.prototype._onMessage = function (evt) { - this._lastMessageTimestamp = Math.floor(Date.now() / 1000); - - // We skip try-catch since it affects performance - var packet = JSON.parse(evt.data); - - // Add to queue to make sure packets are handled in order - trackdirect.services.callbackExecutor.add(this, this._handleMessage, [ - packet, - ]); -}; - -/** - * Handle message - * @param {object} packet - */ -trackdirect.Websocket.prototype._handleMessage = function (packet) { - switch (packet.payload_response_type) { - case 1: - this._emitEventListeners("aprs-packet", packet.data); - this._emitEventListeners("aprs-packet-payload-done"); - break; - - case 2: - for ( - i = 0; - typeof packet.data !== "undefined" && i < packet.data.length; - i++ - ) { - this._emitEventListeners("aprs-packet", packet.data[i]); - } - this._emitEventListeners("aprs-packet-payload-done"); - break; - - case 5: - this._emitEventListeners("filter-response", packet.data); - this._emitEventListeners("aprs-packet-payload-done"); - break; - - case 41: - this._emitEventListeners("server-timestamp-response", packet.data); - break; - - case 31: - this._state = this.State.LISTENING_APRSIS; - this._emitEventListeners("state-change"); - break; - - case 32: - this._state = this.State.LOADING; - this._emitEventListeners("state-change"); - break; - - case 33: - this._state = this.State.IDLE; - this._emitEventListeners("state-change"); - break; - - case 34: - this._state = this.State.CONNECTING_APRSIS; - this._emitEventListeners("state-change"); - break; - - case 35: - this._state = this.State.LOADING_DONE; - this._emitEventListeners("state-change"); - break; - - case 36: - this._state = this.State.INACTIVE; - this._emitEventListeners("state-change"); - this.clearLastSentPositionRequest(); - break; - - case 40: - this._emitEventListeners("reset"); - break; - - case 42: - this.clearLastSentPositionRequest(); - this._state = this.State.CONNECTED; - this._emitEventListeners("state-change"); - break; - } - - return true; -}; - -/** - * Add object to send queue - * @param {object} request - * @return {boolean} - */ -trackdirect.Websocket.prototype._addToSendQueue = function (request) { - if (this.readyState > 1) { - return false; - } - - var currentTs = Math.floor(Date.now() / 1000); - if ( - this._lastMessageTimestamp !== null && - this._lastMessageTimestamp < currentTs - 60 - ) { - // We havn't heard anything from server in 60s, server should send a message every 10s, - // we better close the connection and force user of this class to reconnect - this.close(); // This should trigger the onClose event which should reset the map - return false; - } - - var me = this; - this._queue.push(function () { - var data = JSON.stringify(request); - if (data != null) { - me.send(data); - } - me._dequeue(); - }); - this._start(); - return true; -}; - -/** - * Start the execution - */ -trackdirect.Websocket.prototype._start = function () { - if (!this._running) { - this._dequeue(); - } -}; - -/** - * Execute the first call in queue - * @return {function} - */ -trackdirect.Websocket.prototype._dequeue = function () { - this._running = true; - var me = this; - setTimeout(function () { - if (me._instance.readyState === 1) { - // Open - var shift = me._queue.shift(); - if (shift) { - shift(); - } else { - me._running = false; - } - return; - } else if (me._instance.readyState > 1) { - // Closed (or closing) - me._running = false; - return; - } else { - // Probably on the way to open, just wait - me._dequeue(); - } - }, 5); // wait 5 milisecond for the connection... -}; - -/** - * Call all listeners that are listening on specified event - * @param {string} event - * @param {string} arg - */ -trackdirect.Websocket.prototype._emitEventListeners = function (event, arg) { - if ( - typeof this._eventListeners !== "undefined" && - event in this._eventListeners - ) { - for (var i = 0; i < this._eventListeners[event].length; i++) { - this._eventListeners[event][i](arg); - } - } -}; diff --git a/jslib/src/trackdirect/models/DashedTailPolyline.js b/jslib/src/trackdirect/models/DashedTailPolyline.js deleted file mode 100755 index 7e90e24..0000000 --- a/jslib/src/trackdirect/models/DashedTailPolyline.js +++ /dev/null @@ -1,264 +0,0 @@ -/** - * Class trackdirect.models.DashedTailPolyline - * @see https://developers.google.com/maps/documentation/javascript/reference#Polyline - * @param {string} color - * @param {trackdirect.models.Map} map - */ -trackdirect.models.DashedTailPolyline = function (color, map) { - this._defaultMap = map; - this.markerIdKey = null; - this.ownerMarkerIdKey = null; - this.relatedMarkerIdKey = null; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Polyline.call(this, this._getGooglePolylineOptions(color)); - } else if (typeof L === "object") { - L.Polyline.call(this, {}, this._getLeafletPolylineOptions(color)); - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.DashedTailPolyline.prototype = Object.create( - google.maps.Polyline.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.DashedTailPolyline.prototype = Object.create( - L.Polyline.prototype - ); -} -trackdirect.models.DashedTailPolyline.prototype.constructor = - trackdirect.models.DashedTailPolyline; - -/** - * Get latLng object by index - */ -trackdirect.models.DashedTailPolyline.prototype.getPathItem = function (index) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - return path.getAt(index); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - if (typeof list[index] !== "undefined") { - return list[index]; - } else { - return null; - } - } - return null; -}; - -/** - * Push latLng object to path - */ -trackdirect.models.DashedTailPolyline.prototype.pushPathItem = function ( - latLng -) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - path.push(latLng); - } else if (typeof L === "object") { - this.addLatLng(latLng); - } -}; - -/** - * Remove latLng object by index - */ -trackdirect.models.DashedTailPolyline.prototype.removePathItem = function ( - index -) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - path.removeAt(index); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - if (typeof list[index] !== "undefined") { - list.splice(index, 1); - this.setLatLngs(list); - } - } -}; - -/** - * Get Path length - */ -trackdirect.models.DashedTailPolyline.prototype.getPathLength = function ( - index -) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - return path.getLength(); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - return list.length; - } -}; - -/** - * Get latLng array - */ -trackdirect.models.DashedTailPolyline.prototype.getPath = function () { - if (typeof google === "object" && typeof google.maps === "object") { - return google.maps.Polyline.prototype.getPath.call(this).getArray(); - } else if (typeof L === "object") { - return this.getLatLngs(); - } - return []; -}; - -/** - * Get Polyline currently active Map - * @return {google.maps.Map} - */ -trackdirect.models.DashedTailPolyline.prototype.getMap = function () { - if (typeof google === "object" && typeof google.maps === "object") { - var map = google.maps.Polyline.prototype.getMap.call(this); - if (typeof map !== "undefined") { - return map; - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - return this._defaultMap; - } - } - return null; -}; - -/** - * Set markerIdKey - * @param {int} markerIdKey - */ -trackdirect.models.DashedTailPolyline.prototype.setMarkerIdKey = function ( - markerIdKey -) { - // Two names for the same thing... - this.markerIdKey = markerIdKey; - this.ownerMarkerIdKey = markerIdKey; - this._addInfoWindowListener(markerIdKey); -}; - -/** - * Set related markerIdKey - * @param {int} markerIdKey - */ -trackdirect.models.DashedTailPolyline.prototype.setRelatedMarkerIdKey = - function (markerIdKey) { - this.relatedMarkerIdKey = markerIdKey; - }; - -/** - * Show polyline on default map - */ -trackdirect.models.DashedTailPolyline.prototype.show = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - } else if (typeof L === "object") { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - } -}; - -/** - * Hide polyline - */ -trackdirect.models.DashedTailPolyline.prototype.hide = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (this.getMap() !== null) { - this.setMap(null); - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - } -}; - -/** - * Add packet to polyline - * @param {trackdirect.models.Packet} packet - */ -trackdirect.models.DashedTailPolyline.prototype.addPacket = function (packet) { - if (typeof google === "object" && typeof google.maps === "object") { - var latLng = new google.maps.LatLng( - parseFloat(packet.latitude), - parseFloat(packet.longitude) - ); - this.pushPathItem(latLng); - } else if (typeof L === "object") { - var latLng = new L.latLng( - parseFloat(packet.latitude), - parseFloat(packet.longitude) - ); - this.addLatLng(latLng); - } -}; - -/** - * Add infowindow listener - * @param {int} markerIdKey - */ -trackdirect.models.DashedTailPolyline.prototype._addInfoWindowListener = - function (markerIdKey) { - var me = this; - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.event.addListener(this, "click", function (event) { - var marker = me._defaultMap.markerCollection.getMarker(markerIdKey); - me._defaultMap.openPolylineInfoWindow(marker, event.latLng); - }); - } else if (typeof L === "object") { - this.on("click", function (event) { - var marker = me._defaultMap.markerCollection.getMarker(markerIdKey); - me._defaultMap.openPolylineInfoWindow(marker, event.latlng); - }); - } - }; - -/** - * Get a suitable google polyline options object - * @param {string} color - * @return {object} - */ -trackdirect.models.DashedTailPolyline.prototype._getGooglePolylineOptions = - function (color) { - var lineSymbol = { - path: "M 0,-1 0,1", - strokeOpacity: 0.4, - scale: 3, - }; - - var options = { - geodesic: false, - strokeOpacity: 0, - strokeColor: color, - icons: [ - { - icon: lineSymbol, - offset: "20px", - repeat: "15px", - }, - ], - map: null, - zIndex: 100, - }; - - return options; - }; - -/** - * Get a suitable leaflet polyline options object - * @param {string} color - * @return {object} - */ -trackdirect.models.DashedTailPolyline.prototype._getLeafletPolylineOptions = - function (color) { - return { - opacity: 0.6, - weight: 3, - dashArray: "6,8", - lineJoin: "round", - color: color, - }; - }; diff --git a/jslib/src/trackdirect/models/DirectionPolyline.js b/jslib/src/trackdirect/models/DirectionPolyline.js deleted file mode 100755 index fb2af92..0000000 --- a/jslib/src/trackdirect/models/DirectionPolyline.js +++ /dev/null @@ -1,245 +0,0 @@ -/** - * Class trackdirect.models.DirectionPolyline - * @see https://developers.google.com/maps/documentation/javascript/reference#Polyline - * @param {trackdirect.models.Marker} marker - * @param {trackdirect.models.Map} map - */ -trackdirect.models.DirectionPolyline = function (marker, map) { - this._marker = marker; - this._defaultMap = map; - - this.startTimestamp = this._marker.packet.timestamp; - this.speed = this._marker.packet.speed; - this.course = this._marker.packet.course; - this.stopped = false; - this.timerId = null; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Polyline.call(this, this._getGooglePolylineOptions()); - } else if (typeof L === "object") { - L.Polyline.call(this, {}, this._getLeafletPolylineOptions()); - this.setLatLngs([ - this._getFirstCoordinate(), - this._getExpectedCoordinate(), - ]); - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.DirectionPolyline.prototype = Object.create( - google.maps.Polyline.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.DirectionPolyline.prototype = Object.create( - L.Polyline.prototype - ); -} -trackdirect.models.DirectionPolyline.prototype.constructor = - trackdirect.models.DirectionPolyline; - -/** - * Set new path - */ -trackdirect.models.DirectionPolyline.prototype.setPathItems = function ( - pathItems -) { - if (typeof google === "object" && typeof google.maps === "object") { - this.setPath(pathItems); - } else if (typeof L === "object") { - this.setLatLngs(pathItems); - } -}; - -/** - * Get Polyline currently active Map - * @return {google.maps.Map} - */ -trackdirect.models.DirectionPolyline.prototype.getMap = function () { - if (typeof google === "object" && typeof google.maps === "object") { - var map = google.maps.Polyline.prototype.getMap.call(this); - if (typeof map !== "undefined") { - return map; - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - return this._defaultMap; - } - } - return null; -}; - -/** - * Show polyline on default map - */ -trackdirect.models.DirectionPolyline.prototype.show = function () { - var timeInSeconds = this._getAgeInSeconds(); - - if ( - this.stopped === false && - timeInSeconds <= 900 && - this._marker.packet.hasConfirmedMapId() && - (this._defaultMap.state.isFilterMode || - this._defaultMap.getZoom() >= trackdirect.settings.minZoomForMarkerTail) - ) { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - } else if (typeof L === "object") { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - } - - this.recalculate(); - } -}; - -/** - * Hide polyline - */ -trackdirect.models.DirectionPolyline.prototype.hide = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (this.getMap() !== null) { - this.setMap(null); - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - } -}; - -/** - * Stop it and hide it - */ -trackdirect.models.DirectionPolyline.prototype.stop = function () { - this.stopped = true; - this.hide(); -}; - -/** - * Get a suitable google polyline options object - * @return {object} - */ -trackdirect.models.DirectionPolyline.prototype._getGooglePolylineOptions = - function () { - var lineCoordinates = [ - this._getFirstCoordinate(), - this._getExpectedCoordinate(), - ]; - - var lineSymbol = { - path: google.maps.SymbolPath.FORWARD_OPEN_ARROW, - strokeOpacity: 1, - scale: 0.65, - }; - - var options = { - path: lineCoordinates, - strokeOpacity: 0, - strokeColor: trackdirect.services.stationColorCalculator.getColor( - this._marker.packet - ), - map: null, - icons: [ - { - icon: lineSymbol, - offset: "0px", - repeat: "8px", - }, - ], - }; - return options; - }; - -/** - * Get a suitable leaflet polyline options object - * @return {object} - */ -trackdirect.models.DirectionPolyline.prototype._getLeafletPolylineOptions = - function () { - return { - color: trackdirect.services.stationColorCalculator.getColor( - this._marker.packet - ), - weight: 4, - opacity: 0.7, - - dashArray: "2,8", - lineJoin: "round", - }; - }; - -/** - * Returns coordinates for the transmit polyline - * @return {array} - */ -trackdirect.models.DirectionPolyline.prototype._getFirstCoordinate = - function () { - return this._marker.packet.getLatLngLiteral(); - }; - -/** - * Returns coordinates for the transmit polyline - * @return {array} - */ -trackdirect.models.DirectionPolyline.prototype._getExpectedCoordinate = - function () { - var timeInSeconds = this._getAgeInSeconds(); - var distance = (this.speed / 3.6) * timeInSeconds; - var startPosition = this._getFirstCoordinate(); - if (startPosition != null) { - return trackdirect.services.distanceCalculator.getPositionByDistance( - startPosition, - this.course, - distance - ); - } - return null; - }; - -/** - * Animate direction polyline - */ -trackdirect.models.DirectionPolyline.prototype.recalculate = function () { - var interval = 1000; - var me = this; - this.timerId = window.setInterval(function () { - if (!me._marker.isVisible() || me.stopped || !me._marker.showAsMarker) { - me.hide(); - clearInterval(me.timerId); - return; - } - var timeInSeconds = me._getAgeInSeconds(); - if (timeInSeconds > 900) { - // After 15 minutes we stop drawing directionPolyline - me.stop(); - if (me.timerId !== null) { - clearInterval(me.timerId); - } - } else { - var firstPosition = me._getFirstCoordinate(); - var newPosition = me._getExpectedCoordinate(); - if (firstPosition != null && newPosition != null) { - me.setPathItems([firstPosition, newPosition]); - } - } - }, interval); -}; - -/** - * Returnes the marker age in seconds - */ -trackdirect.models.DirectionPolyline.prototype._getAgeInSeconds = function () { - var timeInSeconds = 0; - var startTimestamp = this._defaultMap.state.getClientTimestamp( - this.startTimestamp - ); - - if (startTimestamp < Date.now() / 1000) { - timeInSeconds = Date.now() / 1000 - startTimestamp; - } - - return timeInSeconds; -}; diff --git a/jslib/src/trackdirect/models/HeatMap.js b/jslib/src/trackdirect/models/HeatMap.js deleted file mode 100755 index 25d7c53..0000000 --- a/jslib/src/trackdirect/models/HeatMap.js +++ /dev/null @@ -1,141 +0,0 @@ -/** - * Class trackdirect.models.HeatMap - * @see https://developers.google.com/maps/documentation/javascript/reference#ImageMapType - * @param {trackdirect.models.Map} map - */ -trackdirect.models.HeatMap = function (map) { - this._defaultMap = map; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.ImageMapType.call(this, this._getGoogleMapOptions()); - } else if (typeof L === "object") { - L.TileLayer.call(this, this._getUrlTemplate(), this._getLeafletOptions()); - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.HeatMap.prototype = Object.create( - google.maps.ImageMapType.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.HeatMap.prototype = Object.create(L.TileLayer.prototype); -} -trackdirect.models.HeatMap.prototype.constructor = trackdirect.models.HeatMap; - -/** - * Get a suitable leaflet heatmap options object - * @return {object} - */ -trackdirect.models.HeatMap.prototype._getLeafletOptions = function () { - var options = { - errorTileUrl: trackdirect.settings.baseUrl + "/heatmaps/transparent.png", - tileSize: 256, - maxZoom: 9, - minZoom: 0, - }; - return options; -}; - -/** - * Get a suitable google heatmap options object - * @return {object} - */ -trackdirect.models.HeatMap.prototype._getGoogleMapOptions = function () { - var me = this; - var options = { - getTileUrl: function (coord, zoom) { - if (zoom > trackdirect.settings.minZoomForMarkers - 1) { - // It should be possible to return null here, but chrome tries to fetch www.website.com/null - return trackdirect.settings.baseUrl + "/heatmaps/transparent.png"; - } - - var normalizedCoord = me._getNormalizedCoord(coord, zoom); - if (!normalizedCoord) { - // It should be possible to return null here, but chrome tries to fetch www.website.com/null - return trackdirect.settings.baseUrl + "/heatmaps/transparent.png"; - } - - var xString = String(normalizedCoord.x); - var yString = String(normalizedCoord.y); - - return me - ._getUrlTemplate() - .replace("{z}", zoom) - .replace("{y}", yString) - .replace("{x}", xString); - }, - tileSize: new google.maps.Size(256, 256), - maxZoom: 9, - minZoom: 0, - radius: 1738000, - name: "APRSHEAT", - }; - return options; -}; - -/** - * Get tile url - * @return {object} - */ -trackdirect.models.HeatMap.prototype._getUrlTemplate = function () { - return ( - trackdirect.settings.baseUrl + - "/heatmaps/latest-heatmap.{z}.{y}.{x}.png?version=" + - this._getHeatMapVersion() - ); -}; - -/** - * Returns the heat map version - * (This method is just used to force update of heatmap at least once every day) - * @return String - */ -trackdirect.models.HeatMap.prototype._getHeatMapVersion = function () { - var today = new Date(); - var dd = today.getDate(); - var mm = today.getMonth() + 1; //January is 0! - var yyyy = today.getFullYear(); - var hh = today.getHours(); - - if (dd < 10) { - dd = "0" + dd; - } - - if (mm < 10) { - mm = "0" + mm; - } - - return yyyy + "-" + mm + "-" + dd + "-" + hh; -}; - -/** - * get normalized coords - * Normalizes the coords that tiles repeat across the x axis (horizontally) - * like the standard Google map tiles. - * @param {object} coord - * @param {int} zoom - * @return {object} - */ -trackdirect.models.HeatMap.prototype._getNormalizedCoord = function ( - coord, - zoom -) { - var y = coord.y; - var x = coord.x; - - // tile range in one direction range is dependent on zoom level - // 0 = 1 tile, 1 = 2 tiles, 2 = 4 tiles, 3 = 8 tiles, etc - var tileRange = 1 << zoom; - - // don't repeat across y-axis (vertically) - if (y < 0 || y >= tileRange) { - return null; - } - - // repeat across x-axis - if (x < 0 || x >= tileRange) { - x = ((x % tileRange) + tileRange) % tileRange; - } - - return { x: x, y: y }; -}; diff --git a/jslib/src/trackdirect/models/InfoWindow.js b/jslib/src/trackdirect/models/InfoWindow.js deleted file mode 100755 index 1ba0d47..0000000 --- a/jslib/src/trackdirect/models/InfoWindow.js +++ /dev/null @@ -1,1757 +0,0 @@ -/** - * Class trackdirect.models.InfoWindow - * @see https://developers.google.com/maps/documentation/javascript/reference#InfoWindow - * @param {trackdirect.models.Marker} marker - * @param {trackdirect.models.Map} map - * @param {boolean} disableAutoPan - */ -trackdirect.models.InfoWindow = function (marker, map, disableAutoPan) { - disableAutoPan = - typeof disableAutoPan !== "undefined" ? disableAutoPan : true; - this._marker = marker; - this._defaultMap = map; - this._polyline = null; - this._tdEventListeners = {}; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.InfoWindow.call(this, { - disableAutoPan: disableAutoPan, - }); - } else if (typeof L === "object") { - var yOffset = 2; - if (!marker.isDotMarker()) { - yOffset = -5; - } - L.Popup.call(this, { - autoPan: !disableAutoPan, - offset: [0, yOffset], - maxWidth: 440, - className: "leaflet-infowindow-content", - }); - } - - // Handle close click - var me = this; - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.event.addListener(this, "closeclick", function () { - me._hideRelatedMarkerTail(); - }); - } else if (typeof L === "object") { - this.on("popupclose", function () { - me._hideRelatedMarkerTail(); - }); - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.InfoWindow.prototype = Object.create( - google.maps.InfoWindow.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.InfoWindow.prototype = Object.create(L.Popup.prototype); -} -trackdirect.models.InfoWindow.prototype.constructor = - trackdirect.models.InfoWindow; - -/** - * set new info window marker - * @param {trackdirect.models.Marker} marker - */ -trackdirect.models.InfoWindow.prototype.setMarker = function (marker) { - this._marker = marker; -}; - -/** - * get info window marker - * @return trackdirect.models.Marker - */ -trackdirect.models.InfoWindow.prototype.getMarker = function () { - return this._marker; -}; - -/** - * get info window marker polyline - * @return trackdirect.models.Marker - */ -trackdirect.models.InfoWindow.prototype.getPolyline = function () { - return this._polyline; -}; - -/** - * Is info window open - */ -trackdirect.models.InfoWindow.prototype.isInfoWindowOpen = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (this.getMap() !== null) { - return true; - } - } else if (typeof L === "object" && typeof windyInit === "function") { - return this._defaultMap.hasLayer(this); - } else if (typeof L === "object") { - return this.isOpen(); - } - - return false; -}; - -/** - * show info window - * @param {boolean} compactVersion - * @param {LatLngLiteral} position - */ -trackdirect.models.InfoWindow.prototype.show = function ( - compactVersion, - position -) { - compactVersion = - typeof compactVersion !== "undefined" ? compactVersion : false; - position = typeof position !== "undefined" ? position : null; - this._create(compactVersion); - - if (typeof google === "object" && typeof google.maps === "object") { - if (position !== null) { - this.setPosition(position); - this.open(this._defaultMap); - } else { - this.open(this._defaultMap, this._marker); - } - - this.addListener("domready", function () { - this._addPhgLinkListeners(); - this._addRngLinkListeners(); - }); - } else if (typeof L === "object") { - if (this.isOpen()) { - this._addPhgLinkListeners(); - this._addRngLinkListeners(); - } else { - this.on("add", function () { - this._addPhgLinkListeners(); - this._addRngLinkListeners(); - }); - } - - if (position !== null) { - this.setLatLng(position); - this.openOn(this._defaultMap); - } else { - this.setLatLng(this._marker.packet.getLatLngLiteral()); - this.openOn(this._defaultMap); - } - } - - // Show tail related to station related to this info-window - if (this._defaultMap.getZoom() < trackdirect.settings.minZoomForMarkerTail) { - if (this._marker.overwrite) { - this._emitTdEventListeners( - "station-tail-needed", - this._marker.packet.station_id - ); - } - this._marker.showMarkerTail(true); - } -}; - -/** - * hide info window - */ -trackdirect.models.InfoWindow.prototype.hide = function () { - if (typeof google === "object" && typeof google.maps === "object") { - this.close(); - if (this.getMap() !== null) { - this.setMap(null); - } - } else if (typeof L === "object") { - this._defaultMap.removeLayer(this); - } - - this._hideRelatedMarkerTail(); - - if ( - this._defaultMap.state.openInfoWindow !== null && - this._defaultMap.state.openInfoWindow === this - ) { - this._defaultMap.state.openInfoWindow = null; - } -}; - -/** - * Add listener to events - * @param {string} event - * @param {string} handler - */ -(trackdirect.models.InfoWindow.prototype.addTdListener = function ( - event, - handler -) { - if (!(event in this._tdEventListeners)) { - this._tdEventListeners[event] = []; - } - this._tdEventListeners[event].push(handler); -}), - /** - * Emit all event listeners for a specified event - * @param {string} event - * @param {object} arg - */ - (trackdirect.models.InfoWindow.prototype._emitTdEventListeners = function ( - event, - arg - ) { - if (event in this._tdEventListeners) { - for (var i = 0; i < this._tdEventListeners[event].length; i++) { - this._tdEventListeners[event][i](arg); - } - } - }); - -/** - * Create marker info window - * @param {boolean} compactVersion - */ -trackdirect.models.InfoWindow.prototype._create = function (compactVersion) { - if (compactVersion) { - var mainDiv = this._getCompactMainDiv(); - var menuwrapper = this._getMenuDiv(false); - - this._polyline = this._defaultMap.markerCollection.getMarkerPolyline( - this._marker.markerIdKey - ); - } else { - var mainDiv = this._getMainDiv(); - if (!trackdirect.isMobile) { - mainDiv.append(this._getIconDiv()); - } - - mainDiv.append(this._getCompletePacketDiv()); - var menuwrapper = this._getMenuDiv(true); - } - - mainDiv.append(menuwrapper); - var wrapperDiv = $(document.createElement("div")); - wrapperDiv.append(mainDiv); - if (typeof google === "object" && typeof google.maps === "object") { - this.setContent(wrapperDiv.html()); - } else if (typeof L === "object") { - this.setContent(wrapperDiv.html()); - } -}; - -/** - * Hide tail for marker related to the current open info-window - */ -trackdirect.models.InfoWindow.prototype._hideRelatedMarkerTail = function () { - if (this._polyline !== null) { - if ( - !this._defaultMap.state.isFilterMode && - this._defaultMap.getZoom() < trackdirect.settings.minZoomForMarkerTail - ) { - var markerIdKey = this._polyline.markerIdKey; - if (this._defaultMap.markerCollection.isExistingMarker(markerIdKey)) { - var stationId = - this._defaultMap.markerCollection.getMarker(markerIdKey).packet - .station_id; - var stationLatestMarker = - this._defaultMap.markerCollection.getStationLatestMarker(stationId); - if (stationLatestMarker !== null) { - stationLatestMarker.hideMarkerTail(); - } - } - } - } else if (this._marker !== null) { - if ( - !this._defaultMap.state.isFilterMode && - this._defaultMap.getZoom() < trackdirect.settings.minZoomForMarkerTail - ) { - this._marker.hideMarkerTail(); - } - } -}; - -/** - * Get info window main div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMainDiv = function () { - var mainDiv = $(document.createElement("div")); - mainDiv.css("font-family", "Verdana,Arial,sans-serif"); - if (!trackdirect.isMobile) { - mainDiv.css("font-size", "11px"); - } else { - mainDiv.css("font-size", "10px"); - } - mainDiv.css("line-height", "1.42857143"); - mainDiv.css("color", "#333"); - mainDiv.css("text-align", "left"); - return mainDiv; -}; - -/** - * Get info window main div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getIconDiv = function () { - var iconUrl64 = trackdirect.services.symbolPathFinder.getFilePath( - this._marker.packet.symbol_table, - this._marker.packet.symbol, - null, - null, - null, - 64, - 64 - ); - var iconImg = $(document.createElement("img")); - iconImg.css("width", "64px"); - iconImg.css("height", "64px"); - iconImg.attr("src", iconUrl64); - iconImg.attr("alt", ""); // Set the icon description - iconImg.attr("title", ""); // Set the icon description - - var leftIconDiv = $(document.createElement("div")); - leftIconDiv.css("display", "inline-block"); - leftIconDiv.css("vertical-align", "top"); - leftIconDiv.css("padding-right", "15px"); - leftIconDiv.css("padding-bottom", "5px"); - leftIconDiv.append(iconImg); - return leftIconDiv; -}; - -/** - * Get info window packet div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getPacketDiv = function () { - var packetDiv = $(document.createElement("div")); - packetDiv.css("display", "inline-block"); - packetDiv.css("vertical-align", "top"); - packetDiv.css("max-width", "350px"); - return packetDiv; -}; - -/** - * Get info window name div icon - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getNameIconDiv = function () { - var iconUrl24 = trackdirect.services.symbolPathFinder.getFilePath( - this._marker.packet.symbol_table, - this._marker.packet.symbol, - null, - null, - null, - 24, - 24 - ); - var iconImg = $(document.createElement("img")); - iconImg.css("width", "24px"); - iconImg.css("height", "24px"); - iconImg.css("vertical-align", "middle"); - iconImg.attr("src", iconUrl24); - iconImg.attr("alt", "symbol"); - iconImg.attr("title", ""); // Set the icon description? - return iconImg; -}; - -/** - * Get info window name link element - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getNameLink = function () { - var nameLink = $(document.createElement("a")); - nameLink.css("color", "#337ab7"); - if (trackdirect.isMobile) { - nameLink.css("vertical-align", "-2px"); - } - - nameLink.attr("href", ""); - nameLink.attr( - "onclick", - "trackdirect.openStationInformationDialog(" + - this._marker.packet.station_id + - "); return false;" - ); - - nameLink.html(escapeHtml(this._marker.packet.station_name)); - return nameLink; -}; - -/** - * Get info window sender name link element - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getSenderNameLink = function () { - var nameLink = $(document.createElement("span")); - if (trackdirect.isMobile) { - nameLink.css("vertical-align", "-2px"); - } - - nameLink.html(escapeHtml(this._marker.packet.sender_name)); - return nameLink; -}; - -/** - * Get info window name div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getNameDiv = function () { - var nameDiv = $(document.createElement("div")); - nameDiv.css("clear", "both"); - nameDiv.css("font-size", "12px"); - nameDiv.css("font-weight", "bold"); - if (trackdirect.isMobile) { - nameDiv.append(this._getNameIconDiv()); - nameDiv.append(" "); - nameDiv.append(" "); - } - nameDiv.append(this._getNameLink()); - if (this._marker.packet.getOgnRegistration() != null) { - var name = escapeHtml(this._marker.packet.getOgnRegistration()); - if (this._marker.packet.getOgnCN() !== null) { - name += " [" + escapeHtml(this._marker.packet.getOgnCN()) + "]"; - } - nameDiv.append(", "); - nameDiv.append(name); - } - - if (this._marker.packet.sender_name != this._marker.packet.station_name) { - nameDiv.append(" ("); - nameDiv.append(this._getSenderNameLink()); - nameDiv.append(")"); - } - return nameDiv; -}; - -/** - * Get info window packet div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getCompletePacketDiv = function () { - var packetDiv = this._getPacketDiv(); - packetDiv.append(this._getNameDiv()); - packetDiv.append(this._getPacketTimeDiv()); - if (this._marker.packet.timestamp > 0) { - if ($(window).height() >= 300) { - packetDiv.append(this._getPacketPathDiv()); - } - var phgRange = this._marker.packet.getPHGRange(); - var rngRange = this._marker.packet.getRNGRange(); - if (phgRange !== null || rngRange !== null) { - packetDiv.append(this._getSpaceDiv()); - packetDiv.append(this._getPhgDiv(phgRange)); - packetDiv.append(this._getRngDiv(rngRange)); - } - if ($(window).height() >= 300) { - var transmitDistance = this._getTransmitDistance(this._marker.packet); - var tailDistance = this._getTailDistance( - this._defaultMap.markerCollection.getMarkerMasterMarkerKeyId( - this._marker.markerIdKey - ) - ); - if ( - (transmitDistance !== null && - Math.round(transmitDistance / 100) != 0) || - (tailDistance !== null && Math.round(tailDistance) > 0) - ) { - packetDiv.append(this._getSpaceDiv()); - packetDiv.append(this._getTransmitDistanceDiv(transmitDistance)); - packetDiv.append(this._getTailDistanceDiv(tailDistance)); - } - } - if ( - this._marker.packet.speed !== null || - this._marker.packet.course !== null || - this._marker.packet.altitude !== null - ) { - packetDiv.append(this._getSpaceDiv()); - packetDiv.append(this._getPacketSpeedAltitudeCourseDiv()); - } - if ( - typeof this._marker.packet.weather !== "undefined" && - this._marker.packet.weather !== null - ) { - packetDiv.append(this._getSpaceDiv()); - packetDiv.append(this._getWeatherDiv()); - } - if ( - typeof this._marker.packet.latest_telemetry_packet_timestamp !== - "undefined" && - this._marker.packet.latest_telemetry_packet_timestamp !== null - ) { - packetDiv.append(this._getSpaceDiv()); - packetDiv.append(this._getTelemetryDiv()); - } - - var commentDiv = this._getPacketCommentDiv(); - if (commentDiv != null) { - packetDiv.append(this._getSpaceDiv()); - packetDiv.append(commentDiv); - } - } - return packetDiv; -}; - -/** - * Get info window packet time div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getPacketTimeDiv = function () { - if (this._marker.packet.timestamp == 0) { - dateString = - '<span style="color: grey;">No known packet for specified limits.</span>'; - } else { - var date = new Date(this._marker.packet.timestamp * 1000); - var dateString = moment(date).format( - trackdirect.settings.dateFormatNoTimeZone - ); - if ( - this._marker.packet.timestamp > this._marker.packet.position_timestamp && - !trackdirect.isMobile - ) { - var positionDate = new Date( - this._marker.packet.position_timestamp * 1000 - ); - dateString = - moment(positionDate).format(trackdirect.settings.dateFormatNoTimeZone) + - " - " + - moment(date).format(trackdirect.settings.dateFormatNoTimeZone); - } - if ( - this._defaultMap.state.endTimeTravelTimestamp !== null && - this._marker.packet.map_id == 12 - ) { - dateString += - '<br/><span style="color: grey;">(exact time for this is not known)</span>'; - } - } - var timeDiv = $(document.createElement("div")); - timeDiv.css("clear", "both"); - timeDiv.html(dateString); - return timeDiv; -}; - -/** - * Get info window packet path div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getPacketPathDiv = function () { - var rawPath = this._marker.packet.getLinkifiedRawPath(); // Html allready escaped - if (rawPath !== null) { - var rawPathDiv = $(document.createElement("div")); - rawPathDiv.css("clear", "both"); - rawPathDiv.html("[" + rawPath + "]"); - return rawPathDiv; - } - return null; -}; - -/** - * Get info window space div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getSpaceDiv = function () { - var spaceDiv = $(document.createElement("div")); - spaceDiv.css("clear", "both"); - spaceDiv.css("line-height", "4px"); - spaceDiv.html(" "); - return spaceDiv; -}; - -/** - * Get info window phg div - * @param {float} phgRange - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getPhgDiv = function (phgRange) { - if (phgRange !== null) { - if (this._defaultMap.state.useImperialUnit) { - var phgRange = - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - phgRange / 1000 - ) * 10 - ) / 10; // converted to miles - var phgRangeUnit = "miles"; - } else { - var phgRange = Math.round(phgRange / 10) / 100; // converted to km - var phgRangeUnit = "km"; - } - var phgDiv = $(document.createElement("div")); - phgDiv.attr( - "id", - "phglinks-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id - ); - var halfPhgLink = $( - "<a style='color: #337ab7;' id='half-phg-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id + - "' href='#'>Half</a>" - ); - var fullPhgLink = $( - "<a style='color: #337ab7;' id='full-phg-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id + - "' href='#'>Full</a>" - ); - var nonePhgLink = $( - "<a style='color: #337ab7;' id='none-phg-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id + - "' href='#'>None</a>" - ); - phgDiv.css("clear", "both"); - phgDiv.css("display", "none"); - phgDiv.css("color", "#440B2A"); - phgDiv.append("PHG calculated range: " + phgRange + " " + phgRangeUnit); - - if (typeof L === "object" && L.version <= "0.7.7") { - // Skip PHG links for older Leaflet version - return phgDiv; - } - - if (phgRange > 0) { - phgDiv.append("<br/>"); - phgDiv.append("PHG circle: "); - phgDiv.append(fullPhgLink); - phgDiv.append('<span style="color:#000"> - </span>'); - phgDiv.append(halfPhgLink); - phgDiv.append('<span style="color:#000"> - </span>'); - phgDiv.append(nonePhgLink); - } - return phgDiv; - } - return null; -}; - -/** - * Get info window rng div - * @param {float} rngRange - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getRngDiv = function (rngRange) { - if (rngRange !== null) { - if (this._defaultMap.state.useImperialUnit) { - var rngRange = - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - rngRange / 1000 - ) * 10 - ) / 10; // converted to miles - var rngRangeUnit = "miles"; - } else { - var rngRange = Math.round(rngRange * 100) / 100; // converted to km - var rngRangeUnit = "km"; - } - var rngDiv = $(document.createElement("div")); - rngDiv.attr( - "id", - "rnglinks-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id - ); - var halfRngLink = $( - "<a style='color: #337ab7;' id='half-rng-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id + - "' href='#'>Half</a>" - ); - var fullRngLink = $( - "<a style='color: #337ab7;' id='full-rng-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id + - "' href='#'>Full</a>" - ); - var noneRngLink = $( - "<a style='color: #337ab7;' id='none-rng-" + - this._marker.packet.station_id + - "-" + - this._marker.packet.id + - "' href='#'>None</a>" - ); - rngDiv.css("clear", "both"); - rngDiv.css("display", "none"); - rngDiv.css("color", "#440B2A"); - rngDiv.append("RNG precalculated range: " + rngRange + " " + rngRangeUnit); - - if (typeof L === "object" && L.version <= "0.7.7") { - // Skip RNG links for older Leaflet version - return rngDiv; - } - - if (rngRange > 0) { - rngDiv.append("<br/>"); - rngDiv.append("RNG circle: "); - rngDiv.append(fullRngLink); - rngDiv.append('<span style="color:#000"> - </span>'); - rngDiv.append(halfRngLink); - rngDiv.append('<span style="color:#000"> - </span>'); - rngDiv.append(noneRngLink); - } - return rngDiv; - } - return null; -}; - -/** - * Get info window transmit distance div - * @param {float} transmitDistance - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getTransmitDistanceDiv = function ( - transmitDistance -) { - if (transmitDistance !== null && Math.round(transmitDistance / 100) != 0) { - var transmitDistanceDiv = $(document.createElement("div")); - transmitDistanceDiv.css("clear", "both"); - transmitDistanceDiv.css("color", "#273c20"); - if (this._defaultMap.state.useImperialUnit) { - transmitDistance = - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - transmitDistance / 1000 - ) * 10 - ) / 10; - transmitDistanceUnit = "miles"; - } else { - transmitDistance = Math.round(transmitDistance / 100) / 10; - transmitDistanceUnit = "km"; - } - transmitDistanceDiv.append( - '<span title="Transmit distance to receiving digipeater/igate">Transmit distance: ' + - transmitDistance + - " " + - transmitDistanceUnit + - "</span>" - ); - return transmitDistanceDiv; - } - return null; -}; - -/** - * Get info window tail distance div - * @param {float} tailDistance - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getTailDistanceDiv = function ( - tailDistance -) { - if (tailDistance !== null && Math.round(tailDistance) > 0) { - var distanceDiv = $(document.createElement("div")); - distanceDiv.css("clear", "both"); - distanceDiv.css("color", "#273c20"); - if (tailDistance < 1000) { - if (this._defaultMap.state.useImperialUnit) { - tailDistance = Math.round( - trackdirect.services.imperialConverter.convertMeterToYard( - tailDistance - ) - ); - tailDistanceUnit = "yd"; - } else { - tailDistance = Math.round(tailDistance); - tailDistanceUnit = "m"; - } - } else { - if (this._defaultMap.state.useImperialUnit) { - tailDistance = - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - tailDistance / 1000 - ) * 10 - ) / 10; - tailDistanceUnit = "miles"; - } else { - tailDistance = Math.round(tailDistance / 100) / 10; - tailDistanceUnit = "km"; - } - } - distanceDiv.append( - '<span title="Current shown tail distance (depends on the time settings)">Current tail distance: ' + - tailDistance + - " " + - tailDistanceUnit + - "</span>" - ); - return distanceDiv; - } - return null; -}; - -/** - * Get info window packet speed altitude and course div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getPacketSpeedAltitudeCourseDiv = - function () { - if ( - Math.round(this._marker.packet.speed) != 0 || - Math.round(this._marker.packet.course) != 0 || - Math.round(this._marker.packet.altitude) != 0 - ) { - var speedDiv = $(document.createElement("div")); - speedDiv.css("clear", "both"); - speedDiv.css("font-weight", "bold"); - - if (this._marker.packet.speed !== null) { - if (this._defaultMap.state.useImperialUnit) { - speedDiv.append( - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - this._marker.packet.speed - ) - ) + " mph " - ); - } else { - speedDiv.append(Math.round(this._marker.packet.speed) + " km/h "); - } - } - - if (this._marker.packet.course !== null) { - speedDiv.append(Math.round(this._marker.packet.course) + "° "); - } - - if (this._marker.packet.altitude !== null) { - if (this._defaultMap.state.useImperialUnit) { - speedDiv.append( - " alt " + - Math.round( - trackdirect.services.imperialConverter.convertMeterToFeet( - this._marker.packet.altitude - ) - ) + - " ft " - ); - } else { - speedDiv.append( - " alt " + Math.round(this._marker.packet.altitude) + " m " - ); - } - } - - return speedDiv; - } - return null; - }; - -/** - * Get info window weather div rain string - * @return {string} - */ -trackdirect.models.InfoWindow.prototype._getWeatherDivRainString = function () { - if (isNumeric(this._marker.packet.weather.rain_1h)) { - if (this._defaultMap.state.useImperialUnit) { - var rain1h = "-"; - if (isNumeric(this._marker.packet.weather.rain_1h)) { - rain1h = - Math.round( - trackdirect.services.imperialConverter.convertMmToInch( - this._marker.packet.weather.rain_1h - ) - ) + "in"; - } - var rain24h = "-"; - if (isNumeric(this._marker.packet.weather.rain_24h)) { - rain24h = - Math.round( - trackdirect.services.imperialConverter.convertMmToInch( - this._marker.packet.weather.rain_24h - ) - ) + "in"; - } - var rainSinceMidnight = "-"; - if (isNumeric(this._marker.packet.weather.rain_since_midnight)) { - rainSinceMidnight = - Math.round( - trackdirect.services.imperialConverter.convertMmToInch( - this._marker.packet.weather.rain_since_midnight - ) - ) + "in"; - } - } else { - var rain1h = "-"; - if (isNumeric(this._marker.packet.weather.rain_1h)) { - rain1h = Math.round(this._marker.packet.weather.rain_1h) + "mm"; - } - var rain24h = "-"; - if (isNumeric(this._marker.packet.weather.rain_24h)) { - rain24h = Math.round(this._marker.packet.weather.rain_24h) + "mm"; - } - var rainSinceMidnight = "-"; - if (isNumeric(this._marker.packet.weather.rain_since_midnight)) { - rainSinceMidnight = - Math.round(this._marker.packet.weather.rain_since_midnight) + "mm"; - } - } - return ( - "<b>Rain</b> " + - rain1h + - "/" + - rain24h + - "/" + - rainSinceMidnight + - " (1h/24h/midnight)<br/>" - ); - } - return null; -}; - -/** - * Get info window weather div temperature string - * @return {string} - */ -trackdirect.models.InfoWindow.prototype._getWeatherDivTemperatureString = - function () { - if (isNumeric(this._marker.packet.weather.temperature)) { - if (this._defaultMap.state.useImperialUnit) { - return ( - "<b>Temperature</b> " + - Math.round( - trackdirect.services.imperialConverter.convertCelciusToFahrenheit( - this._marker.packet.weather.temperature - ) - ) + - "°F" + - "<br/>" - ); - } else { - return ( - "<b>Temperature</b> " + - Math.round(this._marker.packet.weather.temperature) + - "°C" + - "<br/>" - ); - } - } - return null; - }; - -/** - * Get info window weather div humidity string - * @return {string} - */ -trackdirect.models.InfoWindow.prototype._getWeatherDivHumidityString = - function () { - if (isNumeric(this._marker.packet.weather.humidity)) { - return ( - "<b>Humidity</b> " + - Math.round(this._marker.packet.weather.humidity) + - "%<br/>" - ); - } - return null; - }; - -/** - * Get info window weather div pressure string - * @return {string} - */ -trackdirect.models.InfoWindow.prototype._getWeatherDivPressureString = - function () { - if (isNumeric(this._marker.packet.weather.pressure)) { - if (this._defaultMap.state.useImperialUnit) { - return ( - "<b>Pressure</b> " + - Math.round( - trackdirect.services.imperialConverter.convertMbarToMmhg( - this._marker.packet.weather.pressure - ) - ) + - " mmHg<br/>" - ); - } else { - return ( - "<b>Pressure</b> " + - Math.round(this._marker.packet.weather.pressure) + - " hPa<br/>" - ); - } - } - return null; - }; - -/** - * Get info window weather div wind string - * @return {string} - */ -trackdirect.models.InfoWindow.prototype._getWeatherDivWindString = function () { - if (isNumeric(this._marker.packet.weather.wind_speed)) { - var windDir = ""; - if ( - typeof this._marker.packet.weather.wind_direction !== "undefined" && - isNumeric(this._marker.packet.weather.wind_direction) - ) { - windDir = - this._marker.packet.weather.wind_direction.toString() + "° "; - } - - if (this._defaultMap.state.useImperialUnit) { - if (isNumeric(this._marker.packet.weather.wind_gust)) { - return ( - "<b>Wind</b> " + - windDir + - Math.round( - trackdirect.services.imperialConverter.convertMpsToMph( - this._marker.packet.weather.wind_speed - ) * 10 - ) / - 10 + - " mph" + - " (" + - Math.round( - trackdirect.services.imperialConverter.convertMpsToMph( - this._marker.packet.weather.wind_gust - ) * 10 - ) / - 10 + - " mph)<br/>" - ); - } else { - return ( - "<b>Wind</b> " + - windDir + - Math.round( - trackdirect.services.imperialConverter.convertMpsToMph( - this._marker.packet.weather.wind_speed - ) * 10 - ) / - 10 + - " mph<br/>" - ); - } - } else { - if (isNumeric(this._marker.packet.weather.wind_gust)) { - return ( - "<b>Wind</b> " + - windDir + - Math.round(this._marker.packet.weather.wind_speed * 10) / 10 + - " m/s" + - " (" + - Math.round(this._marker.packet.weather.wind_gust * 10) / 10 + - " m/s)<br/>" - ); - } else { - return ( - "<b>Wind</b> " + - windDir + - Math.round(this._marker.packet.weather.wind_speed * 10) / 10 + - " m/s <br/>" - ); - } - } - } - return null; -}; - -/** - * Get info window weather div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getWeatherDiv = function () { - var weatherDiv = $(document.createElement("div")); - weatherDiv.css("clear", "both"); - weatherDiv.css("color", "#227152"); - - var weatherDate = new Date(this._marker.packet.timestamp * 1000); - if ( - typeof this._marker.packet.weather.timestamp !== "undefined" && - this._marker.packet.weather.timestamp !== null - ) { - weatherDate = new Date(this._marker.packet.weather.timestamp * 1000); - } - weatherDateString = moment(weatherDate).format( - trackdirect.settings.dateFormatNoTimeZone - ); - weatherDiv.append("<b>Latest Weather</b> " + weatherDateString + "<br/>"); - - if (!trackdirect.isMobile && $(window).height() >= 300) { - weatherDiv.append(this._getWeatherDivTemperatureString()); - weatherDiv.append(this._getWeatherDivHumidityString()); - weatherDiv.append(this._getWeatherDivPressureString()); - weatherDiv.append(this._getWeatherDivRainString()); - weatherDiv.append(this._getWeatherDivWindString()); - } - return weatherDiv; -}; - -/** - * Get info window telemetry div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getTelemetryDiv = function () { - var telemetryDiv = $(document.createElement("div")); - telemetryDiv.css("clear", "both"); - telemetryDiv.css("color", "#823030"); - - var telemetryDate = new Date( - this._marker.packet.latest_telemetry_packet_timestamp * 1000 - ); - telemetryDateString = moment(telemetryDate).format( - trackdirect.settings.dateFormatNoTimeZone - ); - telemetryDiv.append("Latest Telemetry " + telemetryDateString + "<br/>"); - - return telemetryDiv; -}; - -/** - * Get info window comment div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getPacketCommentDiv = function () { - var comment = ""; - var ognSummary = escapeHtml(this._marker.packet.getOgnSummary()); - if (ognSummary != "") { - comment = ognSummary; - } else if ( - typeof this._marker.packet.comment !== "undefined" && - this._marker.packet.comment !== null - ) { - comment = Autolinker.link(escapeHtml(this._marker.packet.comment), { - newWindow: true, - }); - } - if (comment == "") { - return null; - } - var commentDiv = $(document.createElement("div")); - commentDiv.css("clear", "both"); - commentDiv.css("font-weight", "bold"); - if (!trackdirect.isMobile) { - commentDiv.css("font-size", "11px"); - } else { - commentDiv.css("font-size", "10px"); - } - commentDiv.html(comment); - return commentDiv; -}; - -/** - * Add info window PHG link listeners - * @return none - */ -trackdirect.models.InfoWindow.prototype._addPhgLinkListeners = function () { - var marker = this._marker; - $("#half-phg-" + marker.packet.station_id + "-" + marker.packet.id).click( - function (e) { - marker.showPHGCircle(true); - return false; - } - ); - - $("#full-phg-" + marker.packet.station_id + "-" + marker.packet.id).click( - function (e) { - marker.showPHGCircle(false); - return false; - } - ); - - $( - "#none-phg-" + this._marker.packet.station_id + "-" + marker.packet.id - ).click(function (e) { - marker.hidePHGCircle(); - return false; - }); - - if ( - $("#phglinks-" + marker.packet.station_id + "-" + marker.packet.id).length - ) { - $("#phglinks-" + marker.packet.station_id + "-" + marker.packet.id).show(); - } -}; - -/** - * Add info window RNG link listeners - * @return none - */ -trackdirect.models.InfoWindow.prototype._addRngLinkListeners = function () { - var marker = this._marker; - $("#half-rng-" + marker.packet.station_id + "-" + marker.packet.id).click( - function (e) { - marker.showRNGCircle(true); - return false; - } - ); - - $("#full-rng-" + marker.packet.station_id + "-" + marker.packet.id).click( - function (e) { - marker.showRNGCircle(false); - return false; - } - ); - - $("#none-rng-" + marker.packet.station_id + "-" + marker.packet.id).click( - function (e) { - marker.hideRNGCircle(); - return false; - } - ); - - if ( - $("#rnglinks-" + marker.packet.station_id + "-" + marker.packet.id).length - ) { - $("#rnglinks-" + marker.packet.station_id + "-" + marker.packet.id).show(); - } -}; - -/** - * Returns html element that contains the info window menu - * @param {boolean} isInfoWindowOpen - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDiv = function ( - isInfoWindowOpen -) { - var menuWrapperDiv = this._getMenuDivWrapperDiv(); - - var menuDiv = this._getMenuDivMainDiv(); - menuWrapperDiv.append(menuDiv); - - var menuUl = this._getMenuDivUlDiv(); - menuDiv.append(menuUl); - - menuUl.append(this._getMenuDivTrackLink()); - menuUl.append(this._getMenuDivFilterLink()); - if (!trackdirect.isMobile) { - menuUl.append(this._getMenuDivCenterLink(isInfoWindowOpen)); - } - menuUl.append(this._getMenuDivZoomLink(isInfoWindowOpen)); - if ( - !trackdirect.isEmbedded && - !inIframe() && - !this._marker.isMovingStation() && - this._marker.packet.source_id != 2 - ) { - menuUl.append(this._getMenuDivCoverageLink()); - } - return menuWrapperDiv; -}; - -/** - * Get the info window menu wrapper div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivWrapperDiv = function () { - var menuWrapperDiv = $(document.createElement("div")); - menuWrapperDiv.addClass("infowindow-menu-wrapper"); - menuWrapperDiv.css("clear", "both"); - menuWrapperDiv.css("width", "100%"); - menuWrapperDiv.css("padding-top", "8px"); - return menuWrapperDiv; -}; - -/** - * Get the info window menu main div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivMainDiv = function () { - var menuDiv = $(document.createElement("div")); - menuDiv.addClass("infowindow-menu"); - menuDiv.css("width", "100%"); - menuDiv.css("border-top", "1px solid #cecece"); - return menuDiv; -}; - -/** - * Get the info window menu ul div - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivUlDiv = function () { - var menuUl = $(document.createElement("ul")); - menuUl.css("list-style-type", "none"); - menuUl.css("list-style", "none"); - menuUl.css("text-align", "center"); - menuUl.css("margin", "0"); - menuUl.css("padding", "0"); - menuUl.css("display", "table"); - return menuUl; -}; - -/** - * Get the info window menu link CSS - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivLinkCss = function () { - var liLinkCss = { - "list-style": "none", - display: "table-cell", - "text-align": "center", - "padding-right": "10px", - width: "auto", - }; - return liLinkCss; -}; - -/** - * Get the info window menu track link - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivTrackLink = function () { - var trackLinkElementClass = - "trackStationLink" + this._marker.packet.station_id; - var menuLi = $(document.createElement("li")); - menuLi.css(this._getMenuDivLinkCss()); - var menuLink = $(document.createElement("a")); - menuLink.css("color", "#337ab7"); - menuLink.attr("href", "#"); - menuLink.addClass(trackLinkElementClass); - menuLink.attr( - "onclick", - "trackdirect.handleTrackStationRequest(" + - this._marker.packet.station_id + - ', "' + - trackLinkElementClass + - '"); return false;' - ); - if ( - this._defaultMap.state.getTrackStationId() !== null && - this._defaultMap.state.getTrackStationId() == this._marker.packet.station_id - ) { - menuLink.html("Untrack"); - } else { - menuLink.html("Track"); - } - menuLi.append(menuLink); - return menuLi; -}; - -/** - * Get the info window menu filter link - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivFilterLink = function () { - var filterLinkElementClass = - "filterStationLink" + this._marker.packet.station_id; - var menuLi = $(document.createElement("li")); - menuLi.css(this._getMenuDivLinkCss()); - var menuLink = $(document.createElement("a")); - menuLink.css("color", "#337ab7"); - menuLink.addClass(filterLinkElementClass); - menuLink.attr( - "onclick", - "trackdirect.handleFilterStationRequest(" + - this._marker.packet.station_id + - ', "' + - filterLinkElementClass + - '"); return false;' - ); - if ( - this._defaultMap.state.filterStationIds.length > 0 && - this._defaultMap.state.filterStationIds.indexOf( - this._marker.packet.station_id - ) > -1 - ) { - menuLink.html("Unfilter"); - var center = this._defaultMap.getCenterLiteral(); - menuLink.attr( - "href", - "/center/" + - Number.parseFloat(center.lat).toFixed(5) + - "," + - Number.parseFloat(center.lng).toFixed(5) + - "/zoom/" + - this._defaultMap.getZoom() - ); - } else { - menuLink.html("Filter"); - menuLink.attr("href", "/sid/" + this._marker.packet.station_id); - } - menuLi.append(menuLink); - return menuLi; -}; - -/** - * Get the info window menu coverage link - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivCoverageLink = function () { - var coverageLinkElementClass = - "stationCoverageLink" + this._marker.packet.station_id; - var menuLi = $(document.createElement("li")); - menuLi.css(this._getMenuDivLinkCss()); - var menuLink = $(document.createElement("a")); - menuLink.css("color", "#337ab7"); - menuLink.css("white-space", "nowrap"); - menuLink.attr("href", "#"); - menuLink.addClass(coverageLinkElementClass); - menuLink.attr( - "onclick", - "trackdirect.toggleStationCoverage(" + - this._marker.packet.station_id + - ', "' + - coverageLinkElementClass + - '"); return false;' - ); - - var coveragePolygon = this._defaultMap.markerCollection.getStationCoverage( - this._marker.packet.station_id - ); - if (coveragePolygon !== null && coveragePolygon.isRequestedToBeVisible()) { - menuLink.html("Hide Coverage"); - } else { - menuLink.html("Coverage"); - } - menuLi.append(menuLink); - return menuLi; -}; - -/** - * Get the info window menu center link - * @param {boolean} isInfoWindowOpen - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivCenterLink = function ( - isInfoWindowOpen -) { - var menuLi = $(document.createElement("li")); - menuLi.css(this._getMenuDivLinkCss()); - var menuLink = $(document.createElement("a")); - menuLink.css("color", "#337ab7"); - if (isInfoWindowOpen) { - menuLink.attr( - "href", - "/center/" + - this._marker.packet.latitude.toFixed(5) + - "," + - this._marker.packet.longitude.toFixed(5) + - "/zoom/" + - this._defaultMap.getZoom() - ); - menuLink.attr( - "onclick", - "trackdirect.setCenter(" + - this._marker.packet.latitude + - "," + - this._marker.packet.longitude + - "); return false;" - ); - menuLink.html("Center"); - } else { - menuLink.attr( - "href", - "/center/" + - this._marker.packet.latitude.toFixed(5) + - "," + - this._marker.packet.longitude.toFixed(5) + - "/zoom/" + - this._defaultMap.getZoom() - ); - menuLink.attr( - "onclick", - "trackdirect.focusOnMarkerId(" + - this._marker.packet.marker_id + - "); return false;" - ); - menuLink.html("Focus"); - } - menuLi.append(menuLink); - return menuLi; -}; - -/** - * Get the info window menu zoom link - * @param {boolean} isInfoWindowOpen - * @return {object} - */ -trackdirect.models.InfoWindow.prototype._getMenuDivZoomLink = function ( - isInfoWindowOpen -) { - var menuLi = $(document.createElement("li")); - menuLi.css(this._getMenuDivLinkCss()); - var menuLink = $(document.createElement("a")); - menuLink.css("color", "#337ab7"); - if (isInfoWindowOpen) { - menuLink.attr( - "href", - "/center/" + - this._marker.packet.latitude.toFixed(5) + - "," + - this._marker.packet.longitude.toFixed(5) + - "/zoom/14" - ); - menuLink.attr( - "onclick", - "trackdirect.setCenter(" + - this._marker.packet.latitude + - "," + - this._marker.packet.longitude + - ", 14); return false;" - ); - menuLink.html("Zoom"); - } else { - menuLink.attr( - "href", - "/center/" + - this._marker.packet.latitude.toFixed(5) + - "," + - this._marker.packet.longitude.toFixed(5) + - "/zoom/14" - ); - menuLink.attr( - "onclick", - "trackdirect.focusOnMarkerId(" + - this._marker.packet.marker_id + - ", 14); return false;" - ); - menuLink.html("Zoom"); - } - menuLi.append(menuLink); - return menuLi; -}; - -/** - * Create infowindow content (compact version)) - * @return string - */ -trackdirect.models.InfoWindow.prototype._getCompactMainDiv = function () { - var packet = this._marker.packet; - - // Init main div - var mainDiv = $(document.createElement("div")); - mainDiv.css("font-family", "Verdana,Arial,sans-serif"); - if (!trackdirect.isMobile) { - mainDiv.css("font-size", "11px"); - } else { - mainDiv.css("font-size", "10px"); - } - mainDiv.css("line-height", "1.42857143"); - mainDiv.css("color", "#333"); - mainDiv.css("text-align", "left"); - - // Init polyline div - var polylineDiv = $(document.createElement("div")); - polylineDiv.css("float", "left"); - - // Name - var nameDiv = $(document.createElement("div")); - nameDiv.css("clear", "both"); - nameDiv.css("font-size", "12px"); - nameDiv.css("font-weight", "bold"); - - // Init img - var iconUrl24 = trackdirect.services.symbolPathFinder.getFilePath( - packet.symbol_table, - packet.symbol, - null, - null, - null, - 24, - 24 - ); - var iconImg = $(document.createElement("img")); - iconImg.css("vertical-align", "middle"); - iconImg.css("width", "24px"); - iconImg.css("height", "24px"); - iconImg.attr("src", iconUrl24); - iconImg.attr("alt", ""); // Set the icon description - iconImg.attr("title", ""); // Set the icon description - nameDiv.append(iconImg); - nameDiv.append(" "); - nameDiv.append(" "); - - var nameLink = $(document.createElement("a")); - nameLink.css("color", "#337ab7"); - if (trackdirect.isMobile) { - nameLink.css("vertical-align", "-2px"); - } - - nameLink.attr("href", ""); - nameLink.attr( - "onclick", - "trackdirect.openStationInformationDialog(" + - packet.station_id + - "); return false;" - ); - - nameLink.html(escapeHtml(packet.station_name)); - nameDiv.append(nameLink); - - if (packet.sender_name != packet.station_name) { - nameDiv.append(" ("); - var nameLink2 = $(document.createElement("span")); - if (trackdirect.isMobile) { - nameLink2.css("vertical-align", "-2px"); - } - - nameLink2.html(escapeHtml(packet.sender_name)); - nameDiv.append(nameLink2); - nameDiv.append(")"); - } - polylineDiv.append(nameDiv); - - var tailDistance = this._getTailDistance( - this._defaultMap.markerCollection.getMarkerMasterMarkerKeyId( - this._marker.markerIdKey - ) - ); - if (tailDistance !== null && Math.round(tailDistance) > 0) { - var distanceDiv = $(document.createElement("div")); - distanceDiv.css("clear", "both"); - distanceDiv.css("padding-top", "4px"); - distanceDiv.append("Tail distance: "); - if (tailDistance < 1000) { - if (this._defaultMap.state.useImperialUnit) { - distanceDiv.append( - Math.round( - trackdirect.services.imperialConverter.convertMeterToYard( - tailDistance - ) - ) + " yd " - ); - } else { - distanceDiv.append(Math.round(tailDistance) + " m "); - } - } else { - if (this._defaultMap.state.useImperialUnit) { - distanceDiv.append( - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - tailDistance / 1000 - ) * 10 - ) / - 10 + - " miles " - ); - } else { - distanceDiv.append(Math.round(tailDistance / 100) / 10 + " km "); - } - } - - polylineDiv.append(distanceDiv); - } - - mainDiv.append(polylineDiv); - return mainDiv; -}; - -/** - * Returns the tail distance in meters for specified marker - * @param {int} markerIdKey - * @return int - */ -trackdirect.models.InfoWindow.prototype._getTailDistance = function ( - markerIdKey -) { - if (this._defaultMap.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this._defaultMap.markerCollection.getMarker(markerIdKey); - if ( - marker.packet.hasConfirmedMapId() && - marker.packet.is_moving == 1 && - marker.overwrite !== true - ) { - var distance = 0; - if (this._defaultMap.markerCollection.hasDotMarkers(markerIdKey)) { - var prevLatLng = null; - var dotMarkers = - this._defaultMap.markerCollection.getDotMarkers(markerIdKey); - for (var i = 0; i < dotMarkers.length; i++) { - var dotMarker = dotMarkers[i]; - var latLng = dotMarker.packet.getLatLngLiteral(); - - if (prevLatLng !== null) { - distance += trackdirect.services.distanceCalculator.getDistance( - prevLatLng, - latLng - ); - } - prevLatLng = latLng; - } - - if (prevLatLng !== null) { - var latLng = marker.packet.getLatLngLiteral(); - if (prevLatLng !== latLng) { - distance += trackdirect.services.distanceCalculator.getDistance( - prevLatLng, - latLng - ); - } - } - } - - var dashedPolyline = - this._defaultMap.markerCollection.getMarkerDashedPolyline(markerIdKey); - if (dashedPolyline !== null) { - // We are connected to a previous marker - if (dashedPolyline.getPathLength() == 2) { - distance += trackdirect.services.distanceCalculator.getDistance( - dashedPolyline.getPathItem(0), - dashedPolyline.getPathItem(1) - ); - - // Add previous markers distance - distance += this._getTailDistance(dashedPolyline.relatedMarkerIdKey); - } - } - return distance; - } - } - return null; -}; - -/** - * Returns the transmit distance in meters for specified packet - * @param {trackdirect.models.Packet} packet - * @return int - */ -trackdirect.models.InfoWindow.prototype._getTransmitDistance = function ( - packet -) { - if ( - typeof packet.station_location_path !== "undefined" && - packet.station_location_path !== null && - packet.station_location_path.length >= 1 - ) { - var relatedStationLatLng = { - lat: parseFloat(packet.station_location_path[0][0]), - lng: parseFloat(packet.station_location_path[0][1]), - }; - var distance = trackdirect.services.distanceCalculator.getDistance( - packet.getLatLngLiteral(), - relatedStationLatLng - ); - if (distance !== null) { - return distance; - } - } - - if ( - typeof packet.station_id_path !== "undefined" && - packet.station_id_path !== null && - packet.station_id_path.length >= 1 - ) { - for (var i = 0; i < packet.station_id_path.length; i++) { - var relatedStationId = packet.station_id_path[i]; - var relatedStationPacket = - this._defaultMap.markerCollection.getStationLatestPacket( - relatedStationId - ); - if (relatedStationPacket !== null) { - // found first station! - break; - } - } - - if (relatedStationPacket !== null) { - var relatedStationLatLng = { - lat: parseFloat(relatedStationPacket.latitude), - lng: parseFloat(relatedStationPacket.longitude), - }; - var distance = trackdirect.services.distanceCalculator.getDistance( - packet.getLatLngLiteral(), - relatedStationLatLng - ); - if (distance !== null) { - return distance; - } - } - } - return null; -}; diff --git a/jslib/src/trackdirect/models/Label.js b/jslib/src/trackdirect/models/Label.js deleted file mode 100755 index 31a6be4..0000000 --- a/jslib/src/trackdirect/models/Label.js +++ /dev/null @@ -1,239 +0,0 @@ -if (typeof google === "object" && typeof google.maps === "object") { - /** - * Class trackdirect.models.Label inherit google.maps.OverlayView - * @see https://developers.google.com/maps/documentation/javascript/reference#OverlayView - * @param {array} options - * @param {trackdirect.models.Map} map - */ - trackdirect.models.Label = function (options, map) { - this._defaultMap = map; - options.map = null; - this.setValues(options); - this.div_ = null; - }; - trackdirect.models.Label.prototype = new google.maps.OverlayView(); - - /** - * show if it is not shown - */ - trackdirect.models.Label.prototype.show = function () { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - }; - - /** - * hide if it is visible - */ - trackdirect.models.Label.prototype.hide = function () { - if (this.getMap() !== null) { - this.setMap(null); - } - }; - - /** - * Override onAdd - */ - trackdirect.models.Label.prototype.onAdd = function () { - if (this.div_ === null) { - var jqSpan = $(document.createElement("span")); - jqSpan.css("color", "#101010"); - jqSpan.css( - "text-shadow", - "1px 1px 1px #FFF, -1px -1px 1px #FFF, 1px -1px 1px #FFF, -1px 1px 1px #FFF, 1px 1px 1px #FFF" - ); - jqSpan.css("position", "relative"); - jqSpan.css("top", "10px"); - jqSpan.css("white-space", "nowrap"); - jqSpan.css("font-family", "Helvetica"); - jqSpan.css("font-weight", "bold"); - jqSpan.css("font-size", "10px"); - jqSpan.css("padding", "0px"); - jqSpan.css("z-index", "1000"); - jqSpan.css("margin", "0"); - jqSpan.css("line-height", "10px"); - var span = (this.span_ = jqSpan[0]); - span.innerHTML = this.get("text").toString(); - - var div = (this.div_ = document.createElement("div")); - div.appendChild(span); - div.style.cssText = "position: absolute; display: none"; - } - - var pane = this.getPanes().overlayLayer; - pane.appendChild(this.div_); - - // Ensures the label is redrawn if the text or position is changed. - var me = this; - this.listeners_ = [ - google.maps.event.addListener(this, "position_changed", function () { - me.draw(); - }), - google.maps.event.addListener(this, "text_changed", function () { - me.draw(); - }), - ]; - }; - - /** - * Override onRemove - */ - trackdirect.models.Label.prototype.onRemove = function () { - if (this.div_ !== null && this.div_.parentNode !== null) { - this.div_.parentNode.removeChild(this.div_); - - // Label is removed from the map, stop updating its position/text. - for (var i = 0, I = this.listeners_.length; i < I; ++i) { - google.maps.event.removeListener(this.listeners_[i]); - } - } - }; - - /** - * Draw the label - */ - trackdirect.models.Label.prototype.draw = function () { - var projection = this.getProjection(); - if (typeof this.get("position").lat === "function") { - var latLng = new google.maps.LatLng({ - lat: this.get("position").lat(), - lng: this.get("position").lng(), - }); - } else { - var latLng = new google.maps.LatLng({ - lat: this.get("position").lat, - lng: this.get("position").lng, - }); - } - var position = projection.fromLatLngToDivPixel(latLng); - - var div = this.div_; - var span = this.span_; - span.innerHTML = this.get("text").toString(); - div.style.left = position.x + "px"; - div.style.top = position.y + "px"; - - div.style.display = "block"; - }; -} else if (typeof L === "object" && typeof L.Tooltip !== "undefined") { - /** - * Class trackdirect.models.Label - * @param {array} options - * @param {trackdirect.models.Map} map - */ - trackdirect.models.Label = function (options, map) { - this._defaultMap = map; - - // Call the parent constructor - L.Tooltip.call(this, this._getBasicOptions(options)); - - this.setContent(options.text); - if ( - typeof options.position !== "undefined" && - typeof options.position.lat !== "undefined" && - typeof options.position.lng !== "undefined" - ) { - this.setLatLng(new L.LatLng(options.position.lat, options.position.lng)); - } - }; - trackdirect.models.Label.prototype = new L.Tooltip(); - - /** - * show if it is not shown - */ - trackdirect.models.Label.prototype.show = function () { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - }; - - /** - * hide if it is visible - */ - trackdirect.models.Label.prototype.hide = function () { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - }; - - /** - * Get a suitable leaflet options object - * @return {object} - */ - trackdirect.models.Label.prototype._getBasicOptions = function (options) { - return { - direction: "right", - noWrap: true, - offset: L.point(2, 10), - className: "leaflet-marker-labeltext", - permanent: true, - }; - }; -} else if (typeof L === "object") { - /** - * Class trackdirect.models.Label - * @param {array} options - * @param {trackdirect.models.Map} map - */ - trackdirect.models.Label = function (options, map) { - this._defaultMap = map; - - var position = null; - if ( - typeof options.position !== "undefined" && - typeof options.position.lat !== "undefined" && - typeof options.position.lng !== "undefined" - ) { - position = [options.position.lat, options.position.lng]; - } - - // Call the parent constructor - L.Marker.call(this, position, this._getBasicOptions(options)); - }; - trackdirect.models.Label.prototype = Object.create(L.Marker.prototype); - trackdirect.models.Label.prototype.constructor = trackdirect.models.Label; - - /** - * show if it is not shown - */ - trackdirect.models.Label.prototype.show = function () { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - }; - - /** - * hide if it is visible - */ - trackdirect.models.Label.prototype.hide = function () { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - }; - - /** - * Get a suitable leaflet options object - * @return {object} - */ - trackdirect.models.Label.prototype._getBasicOptions = function (options) { - var strlen = options.text.length; - - var myIcon = L.divIcon({ - iconSize: new L.Point(strlen * 10, 20), - className: "leaflet-marker-labeltext", - html: options.text, - iconAnchor: new L.Point(-2, -10), - }); - - return { - icon: myIcon, - clickable: false, - keyboard: false, - }; - }; -} else { - // If no Label is supported we use a dummy class - trackdirect.models.Label = function (options, map) {}; - trackdirect.models.Label.prototype.show = function () {}; - trackdirect.models.Label.prototype.hide = function () {}; -} diff --git a/jslib/src/trackdirect/models/Map.js b/jslib/src/trackdirect/models/Map.js deleted file mode 100755 index 47d0221..0000000 --- a/jslib/src/trackdirect/models/Map.js +++ /dev/null @@ -1,1568 +0,0 @@ -/** - * Class trackdirect.models.Map - * @see https://developers.google.com/maps/documentation/javascript/reference#Map - * @param {string} mapElementId - * @param {object} options - */ -trackdirect.models.Map = function (mapElementId, options) { - this._init(mapElementId, options); - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Map.call( - this, - document.getElementById(mapElementId), - this._getGoolgeMapOptions() - ); - } else if (typeof L === "object") { - L.Map.call( - this, - document.getElementById(mapElementId), - this._getLeafletMapOptions() - ); - this._updateLeafletTileLayer(); - L.control - .zoom({ - position: "bottomright", - }) - .addTo(this); - } - - this._initMap(); -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.Map.prototype = Object.create(google.maps.Map.prototype); -} else if (typeof L === "object") { - trackdirect.models.Map.prototype = Object.create(L.Map.prototype); -} -trackdirect.models.Map.prototype.constructor = trackdirect.models.Map; - -/** - * Init - */ -trackdirect.models.Map.prototype._init = function (mapElementId, options) { - this._mapElementId = mapElementId; - this._tdMapOptions = options; - this._initBasic(); - this._initMapTypes(); -}; - -/** - * Init basic stuff - */ -trackdirect.models.Map.prototype._initBasic = function () { - this._tdEventListeners = {}; - this._tdEventTimeout = null; - this._currentContentZoom = null; - this._visibleMapSectors = []; - this._newMarkersToShow = []; - - this._leafletTileLayer = null; - this._heatMap = null; - - // Init public variables - this.markerCollection = new trackdirect.models.MarkerCollection(); - this.state = new trackdirect.models.MapState(); -}; - -/** - * Init map types - */ -trackdirect.models.Map.prototype._initMapTypes = function () { - this._supportedMapTypes = {}; - if ( - typeof this._tdMapOptions.supportedMapTypes !== "undefined" && - this._tdMapOptions.supportedMapTypes !== null && - Object.keys(this._tdMapOptions.supportedMapTypes).length > 0 - ) { - this._supportedMapTypes = this._tdMapOptions.supportedMapTypes; - } else if (typeof google === "object" && typeof google.maps === "object") { - this._supportedMapTypes["roadmap"] = google.maps.MapTypeId.ROADMAP; - this._supportedMapTypes["terrain"] = google.maps.MapTypeId.TERRAIN; - this._supportedMapTypes["satellite"] = google.maps.MapTypeId.SATELLITE; - this._supportedMapTypes["hybrid"] = google.maps.MapTypeId.HYBRID; - } else if (typeof L === "object") { - this._supportedMapTypes["roadmap"] = "OpenStreetMap.Mapnik"; - this._supportedMapTypes["terrain"] = "OpenTopoMap"; - } - - if ( - typeof this._tdMapOptions.maptype !== "undefined" && - this._tdMapOptions.maptype !== null && - this._tdMapOptions.maptype in this._supportedMapTypes - ) { - this._mapType = this._tdMapOptions.maptype; - } else { - this._mapType = Object.keys(this._supportedMapTypes)[0]; - } -}; - -/** - * Init the map - */ -trackdirect.models.Map.prototype._initMap = function () { - this._heatMap = new trackdirect.models.HeatMap(this); - this._setMapInitialLocation(); - this._initOms(); - this._initInfoWindowEvent(); - this._updateMapContent(); - this._initMapEvents(); - - // create kmlLayer object from URL - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this._tdMapOptions.mid !== "undefined") { - var kmlUrl = - "https://www.google.com/maps/d/u/0/kml?mid=" + this._tdMapOptions.mid; - var kmlLayer = new google.maps.KmlLayer(kmlUrl, { map: this }); - } - } -}; - -/** - * Trigger a resize event - */ -trackdirect.models.Map.prototype.triggerResize = function () { - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.event.trigger(this, "resize"); - } else if (typeof L === "object") { - L.Map.prototype._onResize.call(this); - } -}; - -/** - * Set Map center - * @param {LatLngLiteral} pos - * @param {int} zoom - */ -trackdirect.models.Map.prototype.setCenter = function (pos, zoom) { - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Map.prototype.setCenter.call(this, pos); - if (typeof zoom !== "undefined") { - google.maps.Map.prototype.setZoom.call(this, zoom); - } - } else if (typeof L === "object") { - zoom = typeof zoom !== "undefined" ? zoom : this.getZoom(); - L.Map.prototype.setView.call(this, pos, zoom); - } - this._renderCordinatesContainer(pos); -}; - -/** - * Get Map center literal - * @return LatLngLiteral - */ -trackdirect.models.Map.prototype.getCenterLiteral = function () { - if (typeof google === "object" && typeof google.maps === "object") { - var latLng = google.maps.Map.prototype.getCenter.call(this); - if (typeof latLng !== "undefined" && typeof latLng.lat === "function") { - return { lat: latLng.lat(), lng: latLng.lng() }; - } else { - return latLng; - } - } else if (typeof L === "object") { - var latLng = L.Map.prototype.getCenter.call(this); - if (typeof latLng !== "undefined") { - return { lat: latLng.lat, lng: latLng.lng }; - } else { - return latLng; - } - } - return null; -}; - -/** - * Fit bounds - * @param {Array} bounds - */ -trackdirect.models.Map.prototype.fitBounds = function (bounds) { - if (typeof google === "object" && typeof google.maps === "object") { - var latLngBounds = new google.maps.LatLngBounds(); - for (var i = 0; i < bounds.length; i++) { - latLngBounds.extend(bounds[i]); - } - google.maps.Map.prototype.fitBounds.call(this, latLngBounds); - } else if (typeof L === "object") { - L.Map.prototype.fitBounds.call(this, bounds); - } -}; - -/** - * set Map center by station position - * @param {LatLngLiteral} pos - */ -trackdirect.models.Map.prototype.setCenterByStationId = function (stationId) { - var latestVisibleMarker = - this.markerCollection.getStationLatestVisibleMarker(stationId); - if (latestVisibleMarker !== null) { - this.setCenter(latestVisibleMarker.packet.getLatLngLiteral()); - } -}; - -/** - * Get map DOM element id - * @return {string} - */ -trackdirect.models.Map.prototype.getMapElementId = function () { - return this._mapElementId; -}; - -/** - * Get map options - * @return {object} - */ -trackdirect.models.Map.prototype.getTdMapOptions = function () { - return this._tdMapOptions; -}; - -/** - * Returns true if specified map sector is visible - * If we are filtering we consider all mapsectors visible - * @param {int} mapSector - * @return {boolean} - */ -trackdirect.models.Map.prototype.isMapSectorVisible = function (mapSector) { - if ( - this._visibleMapSectors.indexOf(mapSector) >= 0 || - this.state.isFilterMode - ) { - return true; - } - return false; -}; - -/** - * Returnes the number of new markers in queue - * @return {int} - */ -trackdirect.models.Map.prototype.getNumberOfNewMarkersToShow = function () { - return this._newMarkersToShow; -}; - -/** - * Show all markers that has recently been added - * @param {boolean} track - */ -trackdirect.models.Map.prototype.showNewMarkersInQueue = function (track) { - track = typeof track !== "undefined" ? track : true; - - var oldestAllowedTrackingTimestamp = 0; - if (this.state.onlyTrackRecentPackets) { - oldestAllowedTrackingTimestamp = Math.floor(Date.now() / 1000) - 60; - } - - while ((markerIdKey = this._newMarkersToShow.pop()) != null) { - if (!this.markerCollection.isExistingMarker(markerIdKey)) { - continue; - } - var marker = this.markerCollection.getMarker(markerIdKey); - trackdirect.services.callbackExecutor.addWithPriority( - marker, - marker.showCompleteMarker, - [] - ); - - // Track - if (track && marker.packet.packet_order_id == 1) { - if ( - marker.shouldMarkerBeVisible() && - marker.showAsMarker && - this.state.trackStationId !== null && - this.state.trackStationId == marker.packet.station_id && - this.state.getClientTimestamp(marker.packet.timestamp) > - oldestAllowedTrackingTimestamp - ) { - trackdirect.services.callbackExecutor.addWithPriority( - this, - this.setCenterByStationId, - [marker.packet.station_id] - ); - } - } - - // Open previoulsy open info window - if ( - this.state.openInfoWindowForMarkerIdKey !== null && - this.state.openInfoWindowForMarkerIdKey == markerIdKey && - marker.packet.packet_order_id == 1 && - marker.shouldMarkerBeVisible() && - marker.showAsMarker - ) { - trackdirect.services.callbackExecutor.addWithPriority( - this, - this.openLatestStationInfoWindow, - [marker.packet.station_id] - ); - } - } - this.state.openInfoWindowForMarkerIdKey = null; -}; - -/** - * Activate filtered mode - */ -trackdirect.models.Map.prototype.activateFilteredMode = function () { - this.state.isFilterMode = true; - this._deactivateHeatMap(); - this._updateMapContent(); -}; - -/** - * Deactivate filtered mode - */ -trackdirect.models.Map.prototype.deactivateFilteredMode = function () { - if (this.state.isFilterMode) { - this._activateHeatMap(); - this.state.isFilterMode = false; - this.state.filterStationIds = []; - this._updateMapContent(); - } -}; - -/** - * Get the north east latitude of the current map view - * @return {float} - */ -trackdirect.models.Map.prototype.getNorthEastLat = function () { - if (this.getBounds() != null) { - if (typeof google === "object" && typeof google.maps === "object") { - return this.getBounds().getNorthEast().lat(); - } else if (typeof L === "object") { - return this.getBounds().getNorthEast().lat; - } - } - return 0; -}; - -/** - * Get the north east longtitue of the current map view - * @return {float} - */ -trackdirect.models.Map.prototype.getNorthEastLng = function () { - if (this.getBounds() != null) { - if (typeof google === "object" && typeof google.maps === "object") { - return this.getBounds().getNorthEast().lng(); - } else if (typeof L === "object") { - return this.getBounds().getNorthEast().lng; - } - } - return 0; -}; - -/** - * Get the south west latitude of the current map view - * @return {float} - */ -trackdirect.models.Map.prototype.getSouthWestLat = function () { - if (this.getBounds() != null) { - if (typeof google === "object" && typeof google.maps === "object") { - return this.getBounds().getSouthWest().lat(); - } else if (typeof L === "object") { - return this.getBounds().getSouthWest().lat; - } - } - return 0; -}; - -/** - * Get the south west longitude of the current map view - * @return {float} - */ -trackdirect.models.Map.prototype.getSouthWestLng = function () { - if (this.getBounds() != null) { - if (typeof google === "object" && typeof google.maps === "object") { - return this.getBounds().getSouthWest().lng(); - } else if (typeof L === "object") { - return this.getBounds().getSouthWest().lng; - } - } - return 0; -}; - -/** - * Returns true if map is ready - * @return {boolean} - */ -trackdirect.models.Map.prototype.isMapReady = function () { - if (this.getBounds() != null) { - return true; - } - return false; -}; - -/** - * Set map type - * @param {string} mapType - */ -trackdirect.models.Map.prototype.setMapType = function (mapType) { - if (mapType in this._supportedMapTypes) { - this._mapType = mapType; - if (typeof google === "object" && typeof google.maps === "object") { - this._updateGoogleMapTileLayer(); - } else if (typeof L === "object") { - this._updateLeafletTileLayer(); - } - this._emitTdEventListeners("change"); - } -}; - -/** - * Get map type - * @return {string} - */ -trackdirect.models.Map.prototype.getMapType = function () { - return this._mapType; -}; - -/** - * Get leaflet tile layer - * @return {string} - */ -trackdirect.models.Map.prototype.getLeafletTileLayer = function () { - return this._leafletTileLayer; -}; - -/** - * Returns current mid - * @return {String} - */ -trackdirect.models.Map.prototype.getMid = function () { - if (typeof this._tdMapOptions.mid !== "undefined") { - return this._tdMapOptions.mid; - } - return null; -}; - -/** - * Reset all markers, this will remove everything from map and memory - */ -trackdirect.models.Map.prototype.resetAllMarkers = function () { - while (this.markerCollection.getNumberOfMarkers() > 0) { - var i = this.markerCollection.getNumberOfMarkers(); - while (i--) { - var marker = this.markerCollection.getMarker(i); - if (marker !== null) { - marker.stopToOldTimeout(); - marker.stopDirectionPolyline(); - marker.hide(); - marker.hideMarkerPrevPosition(); - marker.hideMarkerTail(); - - var stationCoverage = this.markerCollection.getStationCoverage(marker.packet.station_id); - if (stationCoverage) { - stationCoverage.hide(); - } - } - this.markerCollection.removeMarker(i); - } - } - if (this.state.openInfoWindow !== null) { - this.state.openInfoWindow.hide(); - } - if (this.oms) { - this.oms.clearMarkers(); - } - this.markerCollection.resetAllMarkers(); -}; - -/** - * Open marker info window - * @param {trackdirect.models.Marker} marker - * @param {boolean} disableAutoPan - */ -trackdirect.models.Map.prototype.openMarkerInfoWindow = function ( - marker, - disableAutoPan -) { - disableAutoPan = - typeof disableAutoPan !== "undefined" ? disableAutoPan : true; - if (marker.getMap() !== null) { - if ( - this.state.openInfoWindow !== null && - this.state.openInfoWindow.getMarker().packet.id != marker.packet.id - ) { - this.state.openInfoWindow.hide(); - } - - if ( - this.state.openInfoWindow !== null && - this.state.openInfoWindow.getMarker().packet.id == marker.packet.id - ) { - // Just update existing infoWindow - this.state.openInfoWindow.setMarker(marker); - } else { - this.state.openInfoWindow = new trackdirect.models.InfoWindow( - marker, - this, - disableAutoPan - ); - } - this._addInfoWindowListeners(this.state.openInfoWindow); - this.state.openInfoWindow.show(); - } -}; - -/** - * Open latest station info window - * @param {int} stationId - */ -trackdirect.models.Map.prototype.openLatestStationInfoWindow = function ( - stationId -) { - var latestVisibleMarker = - this.markerCollection.getStationLatestVisibleMarker(stationId); - if (latestVisibleMarker !== null) { - // open marker info-window since this marker replaced a previous one - this.openMarkerInfoWindow(latestVisibleMarker); - } -}; - -/** - * Open polyline info window - * @param {trackdirect.models.Marker} marker - * @param {LatLng} position - */ -trackdirect.models.Map.prototype.openPolylineInfoWindow = function ( - marker, - position -) { - if (this.state.openInfoWindow !== null) { - this.state.openInfoWindow.hide(); - } - this.state.openInfoWindow = new trackdirect.models.InfoWindow(marker, this); - this._addInfoWindowListeners(this.state.openInfoWindow); - this.state.openInfoWindow.show(true, position); -}; - -/** - * Add some trackdirect.models.InfoWindow listeners - * @param {trackdirect.models.InfoWindow} infoWindow - */ -trackdirect.models.Map.prototype._addInfoWindowListeners = function ( - infoWindow -) { - var me = this; - infoWindow.addTdListener("station-tail-needed", function (stationId) { - me._emitTdEventListeners("station-tail-needed", stationId); - }); -}; - -/** - * Add listener to events - * @param {string} event - * @param {string} handler - */ -(trackdirect.models.Map.prototype.addTdListener = function (event, handler) { - if (!(event in this._tdEventListeners)) { - this._tdEventListeners[event] = []; - } - this._tdEventListeners[event].push(handler); -}), - /** - * Emit all event listeners for a specified event - * @param {string} event - * @param {object} arg - */ - (trackdirect.models.Map.prototype._emitTdEventListeners = function ( - event, - arg - ) { - if (event in this._tdEventListeners) { - for (var i = 0; i < this._tdEventListeners[event].length; i++) { - this._tdEventListeners[event][i](arg); - } - } - }); - -/** - * Make sure all listener that are waiting for a map change event gets called - */ -(trackdirect.models.Map.prototype._triggerMapChangeEvent = function () { - // Execute event "change", but wait some to avoid to many events - if (this._tdEventTimeout != null) { - clearTimeout(this._tdEventTimeout); - } - var me = this; - this._tdEventTimeout = window.setTimeout(function () { - me._emitTdEventListeners("change"); - me._tdEventTimeout = null; - }, 5); -}), - /** - * Deactivate heatmap - */ - (trackdirect.models.Map.prototype._deactivateHeatMap = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if ( - typeof this.overlayMapTypes !== "undefined" && - this.overlayMapTypes.length > 0 - ) { - this.overlayMapTypes.clear(); - } - } else if (typeof L === "object") { - if (this._heatMap !== null) { - this.removeLayer(this._heatMap); - } - } - }); - -/** - * Activate heatmap - */ -trackdirect.models.Map.prototype._activateHeatMap = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if ( - typeof this.overlayMapTypes !== "undefined" && - this.overlayMapTypes.length == 0 - ) { - this.overlayMapTypes.setAt(0, this._heatMap); - } - } else if (typeof L === "object") { - if (this._heatMap !== null) { - this._heatMap.addTo(this); - this._heatMap.bringToFront(); - this._heatMap.setZIndex(1000); - } - } -}; - -/** - * Update google map tile layer - */ -trackdirect.models.Map.prototype._updateGoogleMapTileLayer = function () { - this.setMapTypeId(this._supportedMapTypes[this._mapType]); -}; - -/** - * Update Leaflet Map Tile Layer - */ -trackdirect.models.Map.prototype._updateLeafletTileLayer = function () { - // Skip this part if we are running the Windy API or if embedded - if (typeof windyInit !== "function") { - if (this._leafletTileLayer !== null) { - this._leafletTileLayer.remove(); - } - - if (typeof L.mapboxGL === "function") { - var attribution = ""; - var accessToken = "no-token"; - var style = ""; - - if ("mapboxGLStyle" in this._tdMapOptions) { - style = this._tdMapOptions["mapboxGLStyle"]; - } - if ("mapboxGLAccessToken" in this._tdMapOptions) { - accessToken = this._tdMapOptions["mapboxGLAccessToken"]; - } - if ("mapboxGLAttribution" in this._tdMapOptions) { - attribution = this._tdMapOptions["mapboxGLAttribution"]; - } - - this._leafletTileLayer = L.mapboxGL({ - accessToken: accessToken, - style: style, - }); - this.addLayer(this._leafletTileLayer); - this.attributionControl.addAttribution(attribution); - } else { - var options = {}; - if (isHighDensity()) { - options["ppi"] = "320"; - options["size"] = "512"; - } else if (trackdirect.isMobile) { - options["ppi"] = "250"; - } - - this._leafletTileLayer = L.tileLayer.provider( - this._supportedMapTypes[this._mapType], - options - ); - this.addLayer(this._leafletTileLayer); - this._leafletTileLayer.bringToBack(); - } - } -}; - -/** - * Handle map change event, show markers in new map sectors and hide markers in previous map sectors - */ -trackdirect.models.Map.prototype._updateMapContent = function () { - if (this.getBounds() != null) { - var previousVisibleMapSectors = []; - for (var i = 0; i < this._visibleMapSectors.length; i++) { - previousVisibleMapSectors.push(this._visibleMapSectors[i]); - } - - this._visibleMapSectors = - trackdirect.services.MapSectorCalculator.getMapSectors(this.getBounds()); - this._triggerMapChangeEvent(); - if (!this.state.isFilterMode) { - if (this.getZoom() < trackdirect.settings.minZoomForMarkers) { - // When all markers should be hidden we also make sure that markers in current visible map-sectors are removed - this.hideAllMarkers(); - this._activateHeatMap(); - } else { - this._deactivateHeatMap(); - - this._hideMarkersInPreviousVisibleMapSectors(previousVisibleMapSectors); - this._showMarkersInNewVisibleMapSectors(previousVisibleMapSectors); - if (this._isAnyMarkerDetailsVisible()) { - this._showVisibleMarkerDetails(); - } - if (this._isAnyMarkerDetailsHidden()) { - this._hideVisibleMarkerDetails(); - } - } - } - } - this._currentContentZoom = this.getZoom(); -}; - -/** - * Returns true if any marker details should be visible - * @return {boolean} - */ -trackdirect.models.Map.prototype._isAnyMarkerDetailsVisible = function () { - // This is only needed when zooming (when moving the regular show-marker will also show the details) - var showPrevPosition = - this.getZoom() >= trackdirect.settings.minZoomForMarkerPrevPosition && - this._currentContentZoom < - trackdirect.settings.minZoomForMarkerPrevPosition; - var showMarkerTail = - this.getZoom() >= trackdirect.settings.minZoomForMarkerTail && - this._currentContentZoom < trackdirect.settings.minZoomForMarkerTail; - var showMarkerLabel = - this.getZoom() >= trackdirect.settings.minZoomForMarkerLabel && - this._currentContentZoom < trackdirect.settings.minZoomForMarkerLabel; - - if (showPrevPosition || showMarkerTail || showMarkerLabel) { - return true; - } - return false; -}; - -/** - * Returns true if any marker details should be hidden - * @return {boolean} - */ -trackdirect.models.Map.prototype._isAnyMarkerDetailsHidden = function () { - // This is only needed when zooming (when moving the regular show-marker will also show the details) - var hidePrevPosition = - this.getZoom() < trackdirect.settings.minZoomForMarkerPrevPosition && - this._currentContentZoom >= - trackdirect.settings.minZoomForMarkerPrevPosition; - var hideMarkerTail = - this.getZoom() < trackdirect.settings.minZoomForMarkerTail && - this._currentContentZoom >= trackdirect.settings.minZoomForMarkerTail; - var hideMarkerLabel = - this.getZoom() < trackdirect.settings.minZoomForMarkerLabel && - this._currentContentZoom >= trackdirect.settings.minZoomForMarkerLabel; - - if (hidePrevPosition || hideMarkerTail || hideMarkerLabel) { - return true; - } - return false; -}; - -/** - * Show markers details that should be visible in visible map sectors - */ -trackdirect.models.Map.prototype._showVisibleMarkerDetails = function () { - for (var i = 0; i < this._visibleMapSectors.length; i++) { - var mapSector = this._visibleMapSectors[i]; - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - // Array with markers fo this sector exists, we have something to show - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - var marker = this.markerCollection.getMarker(markerIdKey); - if (marker === null) { - continue; - } - trackdirect.services.callbackExecutor.addWithPriority( - marker, - marker.showMarkerDetails, - [] - ); - } - } -}; - -/** - * Hide markers details that should not be visible in visible map sectors - */ -trackdirect.models.Map.prototype._hideVisibleMarkerDetails = function () { - for (var i = 0; i < this._visibleMapSectors.length; i++) { - var mapSector = this._visibleMapSectors[i]; - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - // Array with markers fo this sector exists, we have something to hide - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - var marker = this.markerCollection.getMarker(markerIdKey); - if (marker === null) { - continue; - } - trackdirect.services.callbackExecutor.addWithPriority( - marker, - marker.hideMarkerDetails, - [] - ); - } - } -}; - -/** - * Show all markers that should be visible and hide alla markers that should not be visible - * This is used to show or hide markers when user activate/deactivate filters - */ -trackdirect.models.Map.prototype.showHideMarkers = function () { - if (this.oms) { - this.oms.unspiderfy(); - } - if (this.state.isFilterMode) { - for (var markerIdKey in this.markerCollection.getAllMarkers()) { - if (this.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this.markerCollection.getMarker(markerIdKey); - - if (marker) { - if (marker.shouldMarkerBeVisible()) { - marker.showCompleteMarker(); - } else { - marker.hideCompleteMarker(); - } - } - if (marker.packet) { - this.showTopLabelOnPosition( - marker.packet.latitude, - marker.packet.longitude - ); - } - } - } - } else { - for (var i = 0; i < this._visibleMapSectors.length; i++) { - var mapSector = this._visibleMapSectors[i]; - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - - // Array with markers for this sector exists, we have something to show/hide - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - - if (this.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this.markerCollection.getMarker(markerIdKey); - if (marker.shouldMarkerBeVisible()) { - marker.showCompleteMarker(); - } else { - marker.hideCompleteMarker(); - } - this.showTopLabelOnPosition( - marker.packet.latitude, - marker.packet.longitude - ); - } - } - } - } -}; - -/** - * Show or hide ALL PHG Circles - * This is used to show or hide circles when user activate/deactivate PHG circles - */ -trackdirect.models.Map.prototype.showHidePHGCircles = function () { - if (this.getZoom() >= trackdirect.settings.minZoomForMarkers) { - if (this.state.isFilterMode) { - for (var markerIdKey in this.markerCollection.getAllMarkers()) { - if (this.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this.markerCollection.getMarker(markerIdKey); - - if ( - marker.showAsMarker && - marker.packet.phg != null && - marker.getMap() !== null && - marker.shouldMarkerBeVisible() - ) { - if (this.state.showPHGCircles == 0) { - marker.hidePHGCircle(); - } else if (this.state.showPHGCircles == 1) { - marker.showPHGCircle(true); - } else if (this.state.showPHGCircles == 2) { - marker.showPHGCircle(false); - } - } - } - } - } else { - for (var i = 0; i < this._visibleMapSectors.length; i++) { - var mapSector = this._visibleMapSectors[i]; - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - // Array with markers for this sector exists, we have something to show/hide - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - - if (this.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this.markerCollection.getMarker(markerIdKey); - - if ( - marker.showAsMarker && - marker.packet.phg != null && - marker.getMap() !== null && - marker.shouldMarkerBeVisible() - ) { - if (this.state.showPHGCircles == 0) { - marker.hidePHGCircle(); - } else if (this.state.showPHGCircles == 1) { - marker.showPHGCircle(true); - } else if (this.state.showPHGCircles == 2) { - marker.showPHGCircle(false); - } - } - } - } - } - } - } -}; - -/** - * Show or hide ALL RNG Circles - * This is used to show or hide circles when user activate/deactivate PHG circles - */ -trackdirect.models.Map.prototype.showHideRNGCircles = function () { - if (this.getZoom() >= trackdirect.settings.minZoomForMarkers) { - if (this.state.isFilterMode) { - for (var markerIdKey in this.markerCollection.getAllMarkers()) { - if (this.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this.markerCollection.getMarker(markerIdKey); - if ( - marker.showAsMarker && - marker.packet.rng != null && - marker.getMap() !== null && - marker.shouldMarkerBeVisible() - ) { - if (this.state.showRNGCircles == 0) { - marker.hideRNGCircle(); - } else if (this.state.showRNGCircles == 1) { - marker.showRNGCircle(true); - } else if (this.state.showRNGCircles == 2) { - marker.showRNGCircle(false); - } - } - } - } - } else { - for (var i = 0; i < this._visibleMapSectors.length; i++) { - var mapSector = this._visibleMapSectors[i]; - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - // Array with markers for this sector exists, we have something to show/hide - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - - if (this.markerCollection.isExistingMarker(markerIdKey)) { - var marker = this.markerCollection.getMarker(markerIdKey); - if ( - marker.showAsMarker && - marker.packet.rng != null && - marker.getMap() !== null && - marker.shouldMarkerBeVisible() - ) { - if (this.state.showRNGCircles == 0) { - marker.hideRNGCircle(); - } else if (this.state.showRNGCircles == 1) { - marker.showRNGCircle(true); - } else if (this.state.showRNGCircles == 2) { - marker.showRNGCircle(false); - } - } - } - } - } - } - } -}; - -/** - * Make sure that all markers that we know is hidden - */ -trackdirect.models.Map.prototype.hideAllMarkers = function () { - for (var markerIdKey in this.markerCollection.getAllMarkers()) { - var marker = this.markerCollection.getMarker(markerIdKey); - if (marker !== null) { - // hide this marker - marker.hideCompleteMarker(); - } - } -}; - -/** - * Make the label of the latest received marker show on specified position - * @param {number} latitude - * @param {number} longitude - */ -trackdirect.models.Map.prototype.showTopLabelOnPosition = function ( - latitude, - longitude -) { - var topMarkerIdKey = -1; - var topMarkerZindex = 0; - - if ( - Object.keys( - this.markerCollection.getPositionMarkerIdKeys(latitude, longitude) - ).length > 1 - ) { - for (var markerIdKey in this.markerCollection.getPositionMarkerIdKeys( - latitude, - longitude - )) { - var marker = this.markerCollection.getMarker(markerIdKey); - if (marker !== null && marker.shouldMarkerBeVisible()) { - if (marker.getZIndex() > topMarkerZindex) { - topMarkerZindex = marker.getZIndex(); - topMarkerIdKey = markerIdKey; - } - marker.hideLabel(); - marker.hasLabel = false; - } - } - - if (topMarkerIdKey != -1) { - var topMarker = this.markerCollection.getMarker(topMarkerIdKey); - topMarker.hasLabel = true; - var topMarkerMapSector = - trackdirect.services.MapSectorCalculator.getMapSector( - topMarker.getPositionLiteral().lat, - topMarker.getPositionLiteral().lng - ); - if (this.state.isFilterMode) { - topMarker.showLabel(); - } else if ( - this.isMapSectorVisible(topMarkerMapSector) && - this.getZoom() >= trackdirect.settings.minZoomForMarkerLabel - ) { - topMarker.showLabel(); - } - } - } -}; - -/** - * Hide markers in previously visible map sectors - * (This should handle both zooming and moving) - * @param {array} previousVisibleMapSectors - */ -trackdirect.models.Map.prototype._hideMarkersInPreviousVisibleMapSectors = - function (previousVisibleMapSectors) { - // IMPORTANT: Do this before showing marker since marker may exist in both previus shown sectors and visible sectors - // (if we show first we may hide something that should be visible) - - if (this._currentContentZoom >= trackdirect.settings.minZoomForMarkers) { - var markerIdKeyListToMaybeHide = {}; - var markerIdKeyListNotToHide = {}; - for (var i = 0; i < previousVisibleMapSectors.length; i++) { - var mapSector = previousVisibleMapSectors[i]; - if ( - !this.isMapSectorVisible(mapSector) || - this.getZoom() < trackdirect.settings.minZoomForMarkers - ) { - // Seems like this sector is not visible any more (or we have zoomed out), hide markers - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - markerIdKeyListToMaybeHide[markerIdKey] = markerIdKey; - } - } else if (this.getZoom() >= trackdirect.settings.minZoomForMarkers) { - // Seems like this map sector is still visible (and we have not zoomed out) - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - // Marker exists in map sector that is still visible, do not hide it - markerIdKeyListNotToHide[markerIdKey] = markerIdKey; - } - } - } - for (var markerIdKey in markerIdKeyListToMaybeHide) { - if (markerIdKey in markerIdKeyListNotToHide) { - continue; - } - var marker = this.markerCollection.getMarker(markerIdKey); - if (marker !== null) { - // hide this marker - trackdirect.services.callbackExecutor.addWithPriority( - marker, - marker.hideCompleteMarker, - [] - ); - } - } - } - }; - -/** - * Show markers in new visible map sectors - * @param {array} previousVisibleMapSectors - */ -trackdirect.models.Map.prototype._showMarkersInNewVisibleMapSectors = function ( - previousVisibleMapSectors -) { - // Show new markers that is visible in new map sectors - // This should handle both zooming and moving - - if (this.getZoom() >= trackdirect.settings.minZoomForMarkers) { - for (var i = 0; i < this._visibleMapSectors.length; i++) { - var mapSector = this._visibleMapSectors[i]; - if ( - previousVisibleMapSectors.indexOf(mapSector) == -1 || - this._currentContentZoom < trackdirect.settings.minZoomForMarkers - ) { - // Seems like this sector is new (or we have zoomed in now), show markers - var mapSectorMarkerKeys = - this.markerCollection.getMapSectorMarkerKeys(mapSector); - for (var j = 0; j < mapSectorMarkerKeys.length; j++) { - var markerIdKey = mapSectorMarkerKeys[j]; - var marker = this.markerCollection.getMarker(markerIdKey); - if (marker !== null) { - trackdirect.services.callbackExecutor.addWithPriority( - marker, - marker.showCompleteMarker, - [] - ); - } - } - } - } - - // Also make sure all stations with a visible coverage is shown - var stationIdList = - this.markerCollection.getStationIdListWithVisibleCoverage(); - for (var i = 0; i < stationIdList.length; i++) { - var latestMarker = this.markerCollection.getStationLatestMarker( - stationIdList[i] - ); - if (latestMarker !== null) { - if (latestMarker.shouldMarkerBeVisible() && latestMarker.showAsMarker) { - latestMarker.show(); - } - } - } - } -}; - -/** - * Set map initial position - */ -trackdirect.models.Map.prototype._setMapInitialLocation = function () { - var zoom = this._getInitialZoom(); - if ( - typeof this._tdMapOptions.initCenter !== "undefined" && - this._tdMapOptions.initCenter !== null - ) { - var pos = this._tdMapOptions.initCenter; - this.setCenter(pos, zoom); - } else { - this.setMapDefaultLocation(); - this.setZoom(zoom); - } - this._emitTdEventListeners("change"); -}; - -/** - * Set map default location - */ -trackdirect.models.Map.prototype.setMapDefaultLocation = function ( - setDefaultZoom -) { - setDefaultZoom = - typeof setDefaultZoom !== "undefined" ? setDefaultZoom : false; - - var defaultLatitude = - typeof this._tdMapOptions.defaultLatitude !== "undefined" - ? this._tdMapOptions.defaultLatitude - : 59.35; - var defaultLongitude = - typeof this._tdMapOptions.defaultLongitude !== "undefined" - ? this._tdMapOptions.defaultLongitude - : 18.05; - - var pos = { - lat: parseFloat(defaultLatitude), - lng: parseFloat(defaultLongitude), - }; - - if (setDefaultZoom) { - if (trackdirect.isMobile) { - this.setCenter(pos, trackdirect.settings.defaultCurrentZoomMobile); - } else { - this.setCenter(pos, trackdirect.settings.defaultCurrentZoom); - } - } else { - this.setCenter(pos); - } -}; - -/** - * Add marker to multiple Map-Sectors, useful for very long polylines related to a marker - * @param {int} markerIdKey - * @param {LatLngLiteral} startLatLng - * @param {LatLngLiteral} endLatLng - */ -trackdirect.models.Map.prototype.addMarkerToMapSectorInterval = function ( - markerIdKey, - startLatLng, - endLatLng -) { - var minLat = startLatLng.lat; - var maxLat = endLatLng.lat; - var minLng = startLatLng.lng; - var maxLng = endLatLng.lng; - if (endLatLng.lat < minLat) { - minLat = endLatLng.lat; - maxLat = startLatLng.lat; - } - if (endLatLng.lng < minLng) { - minLng = endLatLng.lng; - maxLng = startLatLng.lng; - } - for (var lat = Math.floor(minLat); lat <= Math.ceil(maxLat); lat++) { - for (var lng = Math.floor(minLng); lng <= Math.ceil(maxLng); lng++) { - var markerMapSector = - trackdirect.services.MapSectorCalculator.getMapSector(lat, lng); - - this.markerCollection.addMarkerToMapSector(markerIdKey, markerMapSector); - - if (this.isMapSectorVisible(markerMapSector)) { - if (this._newMarkersToShow.indexOf(markerIdKey) < 0) { - this._newMarkersToShow.push(markerIdKey); - } - } - } - } -}; - -/** - * Add marker the related map sector based in latest packet - * @param {int} markerIdKey - * @param {object} packet - * @param {boolean} tryToShowPacket - */ -trackdirect.models.Map.prototype.addMarkerToMapSectors = function ( - markerIdKey, - packet, - tryToShowPacket -) { - var markerMapSectors = []; - - markerMapSectors.push(packet.map_sector); - if ( - typeof packet.related_map_sectors !== "undefined" && - packet.related_map_sectors !== null - ) { - for (var i = 0; i < packet.related_map_sectors.length; i++) { - markerMapSectors.push(packet.related_map_sectors[i]); - } - } - - for (var i = 0; i < markerMapSectors.length; i++) { - var markerMapSector = markerMapSectors[i]; - this.markerCollection.addMarkerToMapSector(markerIdKey, markerMapSector); - - if (tryToShowPacket) { - if (this.isMapSectorVisible(markerMapSector)) { - if (this._newMarkersToShow.indexOf(markerIdKey) < 0) { - this._newMarkersToShow.push(markerIdKey); - } - } - } - } -}; - -/** - * Initialize map basic events - */ -trackdirect.models.Map.prototype._initMapEvents = function () { - if (typeof google === "object" && typeof google.maps === "object") { - this._initGoogleMapEvents(); - } else if (typeof L === "object") { - this._initLeafletMapEvents(); - } -}; - -/** - * Initialize google map basic events - */ -trackdirect.models.Map.prototype._initGoogleMapEvents = function () { - var me = this; - google.maps.event.addListener(this, "mousemove", function (event) { - me._renderCordinatesContainer(event.latLng); - }); - - google.maps.event.addListener(this, "idle", function () { - me._updateMapContent(); - }); - - google.maps.event.addListener(this, "maptypeid_changed", function () { - me._updateMapContent(); - }); - - google.maps.event.addListener(this, "bounds_changed", function () { - if (me.isMapReady()) { - me._emitTdEventListeners("moving"); - } - }); -}; - -/** - * Initialize leaflet map basic events - */ -trackdirect.models.Map.prototype._initLeafletMapEvents = function () { - var me = this; - this.on("mousemove", function (event) { - me._renderCordinatesContainer(event.latlng); - }); - - this.on("moveend", function () { - me._updateMapContent(); - }); - /* - this.on('maptypeid_changed', function() { - me._updateMapContent(); - }); -*/ - this.on("move", function () { - if (me.isMapReady()) { - me._emitTdEventListeners("moving"); - } - }); -}; - -/** - * Initialize OMS - */ -trackdirect.models.Map.prototype._initOms = function () { - var options = {}; - options["nearbyDistance"] = 12; - if (typeof google === "object" && typeof google.maps === "object") { - var mti = google.maps.MapTypeId; - this.oms = new OverlappingMarkerSpiderfier(this, options); - this.oms.legColors.usual[mti.HYBRID] = this.oms.legColors.usual[ - mti.SATELLITE - ] = "#fff"; - this.oms.legColors.usual[mti.TERRAIN] = this.oms.legColors.usual[ - mti.ROADMAP - ] = "#222"; - this.oms.legColors.highlighted[mti.HYBRID] = this.oms.legColors.highlighted[ - mti.SATELLITE - ] = "#f00"; - this.oms.legColors.highlighted[mti.TERRAIN] = - this.oms.legColors.highlighted[mti.ROADMAP] = "#f00"; - } else if (typeof L === "object") { - this.oms = new OverlappingMarkerSpiderfier(this, options); - } -}; - -/** - * Initialize info window for markers - */ -trackdirect.models.Map.prototype._initInfoWindowEvent = function () { - var me = this; - if (this.oms) { - this.oms.addListener("click", function (marker, event) { - me.openMarkerInfoWindow(marker, false); - }); - } else { - } -}; - -/** - * Get default google "map options", used for initializing google map - * @return {object} - */ -trackdirect.models.Map.prototype._getGoolgeMapOptions = function () { - var zoom = this._getInitialZoom(); - var mapOptions = { - zoom: zoom, - panControl: false, - zoomControl: true, - zoomControlOptions: { - position: google.maps.ControlPosition.RIGHT_BOTTOM, - }, - mapTypeControl: false, - scaleControl: false, - streetViewControl: false, - overviewMapControl: false, - fullscreenControl: false, - mapTypeId: google.maps.MapTypeId.ROADMAP, - gestureHandling: "greedy", - }; - - mapOptions.mapTypeId = this._supportedMapTypes[this._mapType]; - return mapOptions; -}; - -/** - * Get default leaflet "map options", used for initializing google map - * @return {object} - */ -trackdirect.models.Map.prototype._getLeafletMapOptions = function () { - var zoom = this._getInitialZoom(); - var mapOptions = { - zoom: zoom, - zoomControl: true, - attributionControl: true, - zoomControl: false, - minZoom: 3, - maxZoom: 16, - closePopupOnClick: false, - }; - - return mapOptions; -}; - -/** - * Get initial zoom - * @return {int} - */ -trackdirect.models.Map.prototype._getInitialZoom = function () { - var zoom = trackdirect.settings.defaultCurrentZoom; - if ( - typeof this._tdMapOptions.zoom !== "undefined" && - this._tdMapOptions.zoom !== null - ) { - zoom = parseInt(this._tdMapOptions.zoom); - } else if (trackdirect.isMobile) { - zoom = trackdirect.settings.defaultCurrentZoomMobile; - } - - return zoom; -}; - -/** - * Get radius in Km (radius is from center of current map view to the most north east position) - * @return {int} - */ -trackdirect.models.Map.prototype.getCurrentRadiusInKm = function () { - if (this.getBounds() != null) { - if (typeof google === "object" && typeof google.maps === "object") { - var latLng = this.getBounds().getNorthEast(); - var latLngLiteral = { lat: latLng.lat(), lng: latLng.lng() }; - } else if (typeof L === "object") { - var latLng = this.getBounds().getNorthEast(); - var latLngLiteral = { lat: latLng.lat, lng: latLng.lng }; - } - return ( - trackdirect.services.distanceCalculator.getDistance( - this.getCenterLiteral(), - latLngLiteral - ) / 1000 - ); - } - return 0; -}; - -/** - * Print position in the cordinates container - * @return {google.maps.LatLng/L.LatLng/LatLngLiteral} mouseLatLng - */ -trackdirect.models.Map.prototype._renderCordinatesContainer = function ( - mouseLatLng -) { - var options = this.getTdMapOptions(); - if (typeof options.cordinatesContainer === "undefined") { - return; - } - if (options.cordinatesContainer == null) { - return; - } - - var lat = null; - var lng = null; - if (typeof mouseLatLng.lat == "function") { - lat = mouseLatLng.lat(); - lng = mouseLatLng.lng(); - } else { - lat = mouseLatLng.lat; - lng = mouseLatLng.lng; - } - - if (lat <= 90 && lat >= -90 && lng <= 180 && lng >= -180) { - var content = ""; - content += this._getGpsDegreeFromGpsDecimal(lat.toFixed(5), "lat"); - content += " " + this._getGpsDegreeFromGpsDecimal(lng.toFixed(5), "lon"); - content += "<br>" + lat.toFixed(5) + ", " + lng.toFixed(5); - content += "<br>" + this._getMaidenheadLocatorFromGpsDecimal(lat, lng); - - $("#" + options.cordinatesContainer).html(content); - } -}; - -/** - * Convert decimal gps position to degree format - * @param {float} dms - * @param {string} type - * @return {string} - */ -trackdirect.models.Map.prototype._getGpsDegreeFromGpsDecimal = function ( - dms, - type -) { - var sign = 1, - Abs = 0; - var days, minutes, secounds, direction; - - if (dms < 0) { - sign = -1; - } - Abs = Math.abs(Math.round(dms * 1000000)); - //Math.round is used to eliminate the small error caused by rounding in the computer: - //e.g. 0.2 is not the same as 0.20000000000284 - //Error checks - if (type == "lat" && Abs > 90 * 1000000) { - //alert(" Degrees Latitude must be in the range of -90. to 90. "); - return false; - } else if (type == "lon" && Abs > 180 * 1000000) { - //alert(" Degrees Longitude must be in the range of -180 to 180. "); - return false; - } - - days = Math.floor(Abs / 1000000); - minutes = Math.floor((Abs / 1000000 - days) * 60); - secounds = ( - (Math.floor(((Abs / 1000000 - days) * 60 - minutes) * 100000) * 60) / - 100000 - ).toFixed(); - days = days * sign; - if (type == "lat") direction = days < 0 ? "S" : "N"; - if (type == "lon") direction = days < 0 ? "W" : "E"; - //else return value - return days * sign + "º " + minutes + "' " + secounds + "'' " + direction; -}; - -/** - * Convert decimal gps position to maidenhead locator - * @param {float} lat - * @param {float} lng - * @return {string} - */ -trackdirect.models.Map.prototype._getMaidenheadLocatorFromGpsDecimal = function ( - lat, - lng, -) { - const chars = 'ABCDEFGHIJKLMNOPQRSTUVX'; - var result = ''; - lng = lng + 180; - lat = lat + 90; - result = chars.charAt(parseInt(lng / 20)); - result += chars.charAt(parseInt(lat / 10)); - result += parseInt(lng / 2 % 10); - result += parseInt(lat % 10); - lng_r = (lng - parseInt(lng/2)*2) * 60; - lat_r = (lat - parseInt(lat)) * 60; - result += chars.charAt(parseInt(lng_r/5)); - result += chars.charAt(parseInt(lat_r/2.5)); - return result; -}; diff --git a/jslib/src/trackdirect/models/MapState.js b/jslib/src/trackdirect/models/MapState.js deleted file mode 100755 index 418cbd5..0000000 --- a/jslib/src/trackdirect/models/MapState.js +++ /dev/null @@ -1,175 +0,0 @@ -/** - * Class trackdirect.models.MapState - */ -trackdirect.models.MapState = function () { - this._init(); -}; - -/** - * Init object - */ -trackdirect.models.MapState.prototype._init = function () { - // Filtering on stations - this.isFilterMode = false; - this.filterStationIds = []; - - // Booleans that controls what is visible - this.isGhostMarkersVisible = false; - this.isCwopMarkersVisible = true; - this.isStationaryMarkersVisible = true; - this.isInternetMarkersVisible = true; - this.isUnknownMarkersVisible = true; - this.isOgflymMarkersVisible = true; - - // Array of vissible symbols (each value is an array with two values) - this.visibleSymbols = []; - - /// Imperial och Metric - this.useImperialUnit = false; - - // Show PHG and RNG circles? - this.showPHGCircles = 0; - this.showRNGCircles = 0; - - // Tracking - this.trackStationId = null; - this.onlyTrackRecentPackets = false; - - this.timeLengthInSeconds = 3600; - this.endTimeTravelTimestamp = null; - - // Z-index counter - this.currentMarkerZindex = 200; - - // Diff between client and server unix timestamp - this.serverClientTimestampDiff = 0; - - // Currently open trackdirect.models.InfoWindow - this.openInfoWindow = null; - - // markerIdKey to open info window for as soon as possible - this.openInfoWindowForMarkerIdKey = null; -}; - -/** - * Returns the currently oldest allowed packet timestamp - * @return int - */ -trackdirect.models.MapState.prototype.getOldestAllowedPacketTimestamp = - function () { - var oldestAllowedTimestamp = - Math.floor(Date.now() / 1000) - this.timeLengthInSeconds; - if (this.endTimeTravelTimestamp !== null) { - oldestAllowedTimestamp = - this.endTimeTravelTimestamp - this.timeLengthInSeconds; - } - return oldestAllowedTimestamp; - }; - -/** - * Set the time length currently used, how old a packet may be (in seconds) - * @param {int} seconds - */ -trackdirect.models.MapState.prototype.setTimeLength = function (seconds) { - this.timeLengthInSeconds = seconds; -}; - -/** - * Returns the time length currently used, how old a packet may be (in seconds) - * @return {int} - */ -trackdirect.models.MapState.prototype.getTimeLength = function () { - return this.timeLengthInSeconds; -}; - -/** - * Get client timestamp based on server timestamp - * @param {int} serverTimestamp - * @return {int} - */ -trackdirect.models.MapState.prototype.getClientTimestamp = function ( - serverTimestamp -) { - return serverTimestamp - this.serverClientTimestampDiff; -}; - -/** - * Set normal performance by not forcing user to zoom more for details - * @param {int} serverTimestamp - */ -trackdirect.models.MapState.prototype.setServerCurrentTimestamp = function ( - serverTimestamp -) { - this.serverClientTimestampDiff = - serverTimestamp - Math.floor(Date.now() / 1000); -}; - -/** - * Is info window open - */ -trackdirect.models.MapState.prototype.isInfoWindowOpen = function () { - if (this.openInfoWindow === null) { - return false; - } - return this.openInfoWindow.isInfoWindowOpen(); -}; - -/** - * Is info window open for specified marker - * @param {trackdirect.models.Marker} marker - */ -trackdirect.models.MapState.prototype.isMarkerInfoWindowOpen = function ( - marker -) { - if (!this.isInfoWindowOpen()) { - return false; - } - - if (this.openInfoWindow.getPolyline() !== null) { - return false; - } - - if (this.openInfoWindow.getMarker() === marker) { - return true; - } - - return false; -}; - -/** - * Is info window open for specified polyline - * @param {google.maps.Polyline} polyline - */ -trackdirect.models.MapState.prototype.isPolylineInfoWindowOpen = function ( - polyline -) { - if (!this.isInfoWindowOpen()) { - return false; - } - - if (this.openInfoWindow.getPolyline() === null) { - return false; - } - - if (this.openInfoWindow.getPolyline() === polyline) { - return true; - } - - return false; -}; - -/** - * Returns an array of stationIds that we are fitlering on - * @return {array} - */ -trackdirect.models.MapState.prototype.getFilterStationIds = function () { - return this.filterStationIds; -}; - -/** - * get track station - * @return {int} - */ -trackdirect.models.MapState.prototype.getTrackStationId = function () { - return this.trackStationId; -}; diff --git a/jslib/src/trackdirect/models/Marker.js b/jslib/src/trackdirect/models/Marker.js deleted file mode 100755 index 1b2c254..0000000 --- a/jslib/src/trackdirect/models/Marker.js +++ /dev/null @@ -1,1471 +0,0 @@ -/** - * Class trackdirect.models.Marker - * @see https://developers.google.com/maps/documentation/javascript/reference#Marker - * @param {trackdirect.models.Packet} packet - * @param {boolean} isDotMarker - * @param {trackdirect.models.Map} map - */ -trackdirect.models.Marker = function (packet, isDotMarker, map) { - this.packet = packet; - this._isDotMarker = isDotMarker; - this._defaultMap = map; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Marker.call(this, this._getGoogleMarkerOptions()); - } else if (typeof L === "object") { - L.Marker.call( - this, - this.packet.getLatLngLiteral(), - this._getLeafletMarkerOptions() - ); - } - - this._init(); - if (typeof google === "object" && typeof google.maps === "object") { - this.setMap(null); - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.Marker.prototype = Object.create( - google.maps.Marker.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.Marker.prototype = Object.create(L.Marker.prototype); -} -trackdirect.models.Marker.prototype.constructor = trackdirect.models.Marker; - -/** - * Init object - */ -trackdirect.models.Marker.prototype._init = function () { - // Init variables - this._tdEventListeners = {}; - - this.hasLabel = false; - this.showAsMarker = false; - this.overwrite = false; - - this.markerIdKey = null; - this.label = null; - - this.transmitPolyLine = null; - this.directionPolyLine = null; - - this.phgCircle = null; - this.rngCircle = null; - - this.hideTimerId = null; - this.toOldTimerId = null; - - if (!this._isDotMarker) { - this.showAsMarker = true; - if ( - this.packet.map_id != 1 && - this.packet.map_id != 2 && - this.packet.map_id != 12 - ) { - // Ghost marker! - this.setOpacity(0.5); - } else { - this.hasLabel = true; - } - } - - if (this._defaultMap.state.endTimeTravelTimestamp === null) { - this._addMarkerToOldTimeout(0); - } - this._addMarkerTooltip(); -}; - -/** - * Add listener to events - * @param {string} event - * @param {string} handler - */ -trackdirect.models.Marker.prototype.addTdListener = function (event, handler) { - if (!(event in this._tdEventListeners)) { - this._tdEventListeners[event] = []; - } - this._tdEventListeners[event].push(handler); -}; - -/** - * Returns true if marker is of type "dot-marker" - */ -trackdirect.models.Marker.prototype.isDotMarker = function () { - return this._isDotMarker; -}; - -/** - * Returns true if marker is visible - * @return {boolean} - */ -trackdirect.models.Marker.prototype.isVisible = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() !== "undefined" && this.getMap() !== null) { - return true; - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - return true; - } - } - return false; -}; - -/** - * Get position literal - * @return {LatLngLiteral} - */ -trackdirect.models.Marker.prototype.getPositionLiteral = function () { - if (typeof google === "object" && typeof google.maps === "object") { - var latLng = this.getPosition(); - if (typeof latLng !== "undefined" && typeof latLng.lat === "function") { - return { lat: latLng.lat(), lng: latLng.lng() }; - } else { - return latLng; - } - } else if (typeof L === "object") { - var latLng = this.getLatLng(); - if (typeof latLng !== "undefined") { - return { lat: latLng.lat, lng: latLng.lng }; - } else { - return latLng; - } - } - return {}; -}; - -/** - * Show marker on default map - */ -trackdirect.models.Marker.prototype.show = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - } else if (typeof L === "object") { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - } - - if (this.hideTimerId !== null) { - clearTimeout(this.hideTimerId); - } - - this._emitTdEventListeners("onshow"); -}; - -/** - * Hide marker - * @param {int} delayInMilliSeconds - * @param {boolean} onlyHideIfNeeded - */ -trackdirect.models.Marker.prototype.hide = function ( - delayInMilliSeconds, - onlyHideIfNeeded, - hideOpenInfoWindow -) { - delayInMilliSeconds = - typeof delayInMilliSeconds !== "undefined" ? delayInMilliSeconds : 0; - onlyHideIfNeeded = - typeof onlyHideIfNeeded !== "undefined" ? onlyHideIfNeeded : false; - hideOpenInfoWindow = - typeof hideOpenInfoWindow !== "undefined" ? hideOpenInfoWindow : true; - - if (delayInMilliSeconds > 0) { - this._hideLater(delayInMilliSeconds, onlyHideIfNeeded); - return; - } - - if (onlyHideIfNeeded && this.shouldMarkerBeVisible()) { - return; - } - - if ( - hideOpenInfoWindow && - this._defaultMap.state.isMarkerInfoWindowOpen(this) - ) { - this._defaultMap.state.openInfoWindow.hide(); - } - - if (this.isVisible()) { - if (typeof google === "object" && typeof google.maps === "object") { - this.setMap(null); - } else if (typeof L === "object") { - this._defaultMap.removeLayer(this); - } - } - - if (this.showAsMarker) { - this.hideLabel(); - } - - this.hidePHGCircle(); - this.hideRNGCircle(); - - if (this.hideTimerId !== null) { - clearTimeout(this.hideTimerId); - } - - this._emitTdEventListeners("onhide"); -}; - -/** - * get Marker default Map - * @return {trackdirect.models} - */ -trackdirect.models.Marker.prototype.getDefaultMap = function () { - return this._defaultMap; -}; - -/** - * get Marker currently active Map - * @return {trackdirect.models} - */ -trackdirect.models.Marker.prototype.getMap = function () { - if (typeof google === "object" && typeof google.maps === "object") { - var map = google.maps.Marker.prototype.getMap.call(this); - if (typeof map !== "undefined") { - return map; - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - return this._defaultMap; - } - } - return null; -}; - -/** - * get Marker Map State - * @return {trackdirect.models.MapState} - */ -trackdirect.models.Marker.prototype.getState = function () { - return this._defaultMap.state; -}; - -/** - * get Marker zIndex - * @return {int} - */ -trackdirect.models.Marker.prototype.getZIndex = function () { - if (typeof google === "object" && typeof google.maps === "object") { - return this.zIndex; - } else if (typeof L === "object") { - return this.options.zIndexOffset; - } - return 0; -}; - -/** - * Show marker including all realted that should be visible at current zoom level - */ -trackdirect.models.Marker.prototype.showCompleteMarker = function () { - // In filter-mode we only show stations that we filter on - if ( - this._defaultMap.state.isFilterMode && - this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id) == -1 - ) { - return; - } - - // We check that marker is not to old (if we are filtering we show station latest marker even if it is to old) - if (this.shouldMarkerBeVisible()) { - if (this.showAsMarker) { - this.show(); - } - - if (this._defaultMap.state.isFilterMode) { - this.showMarkerPrevPosition(); - this.showMarkerTail(); - this.showLabel(); - } else { - if ( - this._defaultMap.getZoom() >= - trackdirect.settings.minZoomForMarkerPrevPosition - ) { - // If we also should show details, do it - this.showMarkerPrevPosition(); - } - if ( - this._defaultMap.getZoom() >= trackdirect.settings.minZoomForMarkerTail - ) { - // If we also should show tail, do it - this.showMarkerTail(); - } - if ( - this._defaultMap.getZoom() >= trackdirect.settings.minZoomForMarkerLabel - ) { - // If we also should show label, do it - this.showLabel(); - } - } - - if (this._defaultMap.state.showPHGCircles == 1) { - this.showPHGCircle(true); - } else if (this._defaultMap.state.showPHGCircles == 2) { - this.showPHGCircle(false); - } - - if (this._defaultMap.state.showRNGCircles == 1) { - this._showRNGCircle(true); - } else if (this._defaultMap.state.showRNGCircles == 2) { - this._showRNGCircle(false); - } - } -}; - -/** - * Hide marker including all related - */ -trackdirect.models.Marker.prototype.hideCompleteMarker = function () { - this.hide(); - - // If markers is hidden also the details should be - this.hideMarkerPrevPosition(); - this.hideMarkerTail(); -}; - -/** - * Show markers details that should be visible - */ -trackdirect.models.Marker.prototype.showMarkerDetails = function () { - if ( - this._defaultMap.getZoom() >= - trackdirect.settings.minZoomForMarkerPrevPosition - ) { - // If we also should show details, do it - this.showMarkerPrevPosition(); - } - - if (this._defaultMap.getZoom() >= trackdirect.settings.minZoomForMarkerTail) { - // If we also should show details, do it - this.showMarkerTail(); - } - - if ( - this._defaultMap.getZoom() >= trackdirect.settings.minZoomForMarkerLabel - ) { - // If we also should show label, do it - this.showLabel(); - } -}; - -/** - * Hide markers details that should not be visible - */ -trackdirect.models.Marker.prototype.hideMarkerDetails = function () { - if ( - this._defaultMap.getZoom() < - trackdirect.settings.minZoomForMarkerPrevPosition - ) { - this.hideMarkerPrevPosition(); - } - - if (this._defaultMap.getZoom() < trackdirect.settings.minZoomForMarkerTail) { - this.hideMarkerTail(); - } - - if (this._defaultMap.getZoom() < trackdirect.settings.minZoomForMarkerLabel) { - this.hideLabel(); - } -}; - -/** - * Show marker label - */ -trackdirect.models.Marker.prototype.showLabel = function () { - if ( - !this._defaultMap.state.isFilterMode || - this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id) > -1 - ) { - if ( - this.isVisible() && - this.label !== null && - (this._defaultMap.getZoom() >= - trackdirect.settings.minZoomForMarkerLabel || - this._defaultMap.state.filterStationIds.indexOf( - this.packet.station_id - ) > -1) && - this.hasLabel && - this.packet.hasConfirmedMapId() - ) { - this.label.show(); - } - } -}; - -/** - * Hide marker label - */ -trackdirect.models.Marker.prototype.hideLabel = function () { - if (this.label !== null && this.hasLabel) { - this.label.hide(); - } -}; - -/** - * Show marker previous positions (the dot markers) - */ -trackdirect.models.Marker.prototype.showMarkerPrevPosition = function () { - if (this.shouldMarkerBeVisible() && this.packet.hasConfirmedMapId()) { - // Handle the history dots - - var oldestAllowedPacketTimestamp = - this._defaultMap.state.getOldestAllowedPacketTimestamp(); - var dotMarkers = this._defaultMap.markerCollection.getDotMarkers( - this.markerIdKey - ); - for (var i = 0; i < dotMarkers.length; i++) { - var dotMarker = dotMarkers[i]; - - // Only show prev positions that is not to old (not even prev positions for filtered stations) - if ( - this._defaultMap.state.getClientTimestamp(dotMarker.packet.timestamp) > - oldestAllowedPacketTimestamp - ) { - dotMarker.show(); - } - } - - // Handle markers that still is marker but shown as dotmarker (this happens when a newer marker exists) - if (!this.showAsMarker) { - this.show(); - } - } -}; - -/** - * Hide marker previous positions (the dot markers) - */ -trackdirect.models.Marker.prototype.hideMarkerPrevPosition = function () { - if (this.packet.hasConfirmedMapId()) { - // Handle the history dots - var dotMarkers = this._defaultMap.markerCollection.getDotMarkers( - this.markerIdKey - ); - for (var i = 0; i < dotMarkers.length; i++) { - var dotMarker = dotMarkers[i]; - dotMarker.hide(); - } - - if (!this.showAsMarker) { - // Handle markers that still is marker but shown as dotmarker (this happens when a newer packet with another markerId exists) - this.hide(); - } - } -}; - -/** - * Show marker tail (the polyline) - */ -trackdirect.models.Marker.prototype.showMarkerTail = function () { - if (this.shouldMarkerBeVisible()) { - if ( - this.packet.hasConfirmedMapId() === false && - this._defaultMap.state.showGhostPosition - ) { - // Ghost markers is calculated as tail - this.show(); - } - - // Handle polylines - if ( - this._defaultMap.markerCollection.hasPolyline(this.markerIdKey) && - this.packet.hasConfirmedMapId() - ) { - var polyline = this._defaultMap.markerCollection.getMarkerPolyline( - this.markerIdKey - ); - // Before we show polyline we remove all points that is to old - while ( - this._defaultMap.state.getClientTimestamp( - polyline.getPathItem(0).marker.packet.timestamp - ) < this._defaultMap.state.getOldestAllowedPacketTimestamp() - ) { - var relatedMarker = polyline.getPathItem(0).marker; - if (relatedMarker.getMap() === null) { - // related marker is to old and is not visible, it will never be shown. - // We let the regular remove-functionality remove the marker - polyline.removePathItem(0); - } else { - break; - } - } - polyline.show(); - } - - // Handle dashed polylines - var dashedPolyline = - this._defaultMap.markerCollection.getMarkerDashedPolyline( - this.markerIdKey - ); - if (dashedPolyline !== null && this.packet.hasConfirmedMapId()) { - // The related marker is the marker where the dashed polyline STARTS - var dashedPolyLineRelatedMarker = - this._defaultMap.markerCollection.getMarker( - dashedPolyline.relatedMarkerIdKey - ); - - // Validate that the related marker is shown or will be shown before showing dashed polyline - // Since related marker is older than current we never need to show it if it is to old (not even when we are filtering) - if ( - this._defaultMap.state.getClientTimestamp( - dashedPolyLineRelatedMarker.packet.timestamp - ) > this._defaultMap.state.getOldestAllowedPacketTimestamp() - ) { - dashedPolyline.show(); - - if (typeof dashedPolyline.relatedMarkerIdKey !== "undefined") { - var relatedMarker = this._defaultMap.markerCollection.getMarker( - dashedPolyline.relatedMarkerIdKey - ); - if ( - relatedMarker !== null && - relatedMarker.markerIdKey !== this.markerIdKey - ) { - relatedMarker.showMarkerTail(); - } - } - } - } - - // Handle direction polyline - if (this.directionPolyLine !== null) { - this.directionPolyLine.show(); - } - } -}; - -/** - * Hide marker tail (the polyline) - * @param {int} markerIdKey - */ -trackdirect.models.Marker.prototype.hideMarkerTail = function (markerIdKey) { - var latestMarker = this._defaultMap.markerCollection.getStationLatestMarker( - this.packet.station_id - ); - if ( - this._defaultMap.state.isMarkerInfoWindowOpen(this) || - this._defaultMap.state.isMarkerInfoWindowOpen(latestMarker) - ) { - // do not hide if info window is open - return; - } - - if ( - this.packet.map_id != 1 && - this.packet.map_id != 2 && - this.packet.map_id != 12 - ) { - // Ghost markers is calculated as tail - this.hide(); - if (this.showAsMarker) { - this.hideLabel(); - } - } - - // Handle polylines - var polyline = this._defaultMap.markerCollection.getMarkerPolyline( - this.markerIdKey - ); - if (polyline !== null) { - if (this._defaultMap.state.isPolylineInfoWindowOpen(polyline)) { - this._defaultMap.state.openInfoWindow.hide(); - } - - polyline.hide(); - } - - // TODO: NEEDED? - // Handle dashed polylines that STARTS at this marker - /* - if (this._defaultMap.markerCollection.hasRelatedDashedPolyline(this)) { - if (this._defaultMap.state.isPolylineInfoWindowOpen(this._relatedMarkerOriginDashedPolyLine)) { - this._defaultMap.state.openInfoWindow.hide(); - } - this._relatedMarkerOriginDashedPolyLine.hide(); - } - */ - - // Handle dashed polylines that ENDS at this marker - // Since tail for this marker is hidden also the dashed tail should be hidden - var dashedPolyline = - this._defaultMap.markerCollection.getMarkerDashedPolyline(this.markerIdKey); - if (dashedPolyline !== null) { - dashedPolyline.hide(); - - if (typeof dashedPolyline.relatedMarkerIdKey !== "undefined") { - var relatedMarker = this._defaultMap.markerCollection.getMarker( - dashedPolyline.relatedMarkerIdKey - ); - if ( - relatedMarker !== null && - relatedMarker.markerIdKey !== this.markerIdKey - ) { - relatedMarker.hideMarkerTail(); - } - } - } - - // Handle direction polyline - if (this.directionPolyLine !== null) { - this.directionPolyLine.hide(); - } -}; - -/** - * Hide RNG Cirlce - */ -trackdirect.models.Marker.prototype.hideRNGCircle = function () { - if (this.rngCircle !== null) { - this.rngCircle.hide(); - } -}; - -/** - * Show marker RNG Cirlce - * @param {boolean} isHalf - */ -trackdirect.models.Marker.prototype.showRNGCircle = function (isHalf) { - this.hideRNGCircle(); - this.rngCircle = new trackdirect.models.RngCircle( - this.packet, - this._defaultMap, - isHalf - ); - this.rngCircle.show(); -}; - -/** - * Hide RNG Cirlce - */ -trackdirect.models.Marker.prototype.hidePHGCircle = function () { - if (this.phgCircle !== null) { - this.phgCircle.hide(); - } -}; - -/** - * Show marker RNG Cirlce - * @param {boolean} isHalf - */ -trackdirect.models.Marker.prototype.showPHGCircle = function (isHalf) { - this.hidePHGCircle(); - this.phgCircle = new trackdirect.models.PhgCircle( - this.packet, - this._defaultMap, - isHalf - ); - this.phgCircle.show(); -}; - -/** - * Set this marker to be overwritten by next packet from this station - */ -trackdirect.models.Marker.prototype.markToBeOverWritten = function () { - this.overwrite = true; -}; - -/** - * Returns true if marker is moving and is based on only one single packet - * @return boolean - */ -trackdirect.models.Marker.prototype.isSingleMovingMarker = function () { - var markerCounter = 0; - if ( - typeof this.packet.marker_counter !== "undefined" && - this.packet.marker_counter !== null - ) { - markerCounter = this.packet.marker_counter; - } - - if ( - this.packet.position_timestamp == this.packet.timestamp && - this.packet.is_moving == 1 && - [1, 2, 7, 12].indexOf(this.packet.map_id) >= 0 && - markerCounter <= 1 && - !this._defaultMap.markerCollection.hasDotMarkers(this.markerIdKey) - ) { - return true; - } - return false; -}; - -/** - * Returns true if marker should be visible, otherwise false - * @return {boolean} - */ -trackdirect.models.Marker.prototype.shouldMarkerBeVisible = function () { - if (this.packet.map_id == 14) { - // A kill-packet should never be visible - return false; - } - - if ( - this.packet.source_id == 2 && - !this._defaultMap.state.isCwopMarkersVisible - ) { - // CWOP weather stations should not be visible - return false; - } - - if (!this._defaultMap.state.isStationaryMarkersVisible) { - if (!this.isMovingStation()) { - return false; - } - } - - if (!this._defaultMap.state.isUnknownMarkersVisible) { - if (this.packet.station_name.substring(0, 7) == "UNKNOWN") { - return false; - } - } - - if (!this._defaultMap.state.isOgflymMarkersVisible) { - if (this.packet.raw_path.indexOf("OGFLYM") >= 0) { - return false; - } - } - - if (!this._defaultMap.state.isInternetMarkersVisible) { - if ( - this.packet.raw_path.indexOf("TCPIP") >= 0 || - this.packet.raw_path.indexOf("qAC") >= 0 || - this.packet.raw_path.indexOf("qAX") >= 0 || - this.packet.raw_path.indexOf("qAU") >= 0 || - this.packet.raw_path.indexOf("qAS") >= 0 - ) { - if (this.packet.station_id_path.length == 0) { - // Internet stations should not be visible - return false; - } - } - } - - if (this._defaultMap.state.visibleSymbols.length > 0) { - var symbolFound = false; - for (var key in this._defaultMap.state.visibleSymbols) { - var visibleSymbol = this._defaultMap.state.visibleSymbols[key]; - if ( - this.packet.symbol.charCodeAt(0) == visibleSymbol[0] && - this.packet.symbol_table.charCodeAt(0) == visibleSymbol[1] - ) { - symbolFound = true; - } - } - if (!symbolFound) { - return false; - } - } - - if ( - this.packet.map_id != 1 && - this.packet.map_id != 2 && - this.packet.map_id != 12 && - !this._defaultMap.state.isGhostMarkersVisible - ) { - // Ghost positions should not be visible - return false; - } - - if ( - this._defaultMap.state.isFilterMode && - this._defaultMap.state.filterStationIds.indexOf(this.packet.station_id) > -1 - ) { - // We are filtering and we are filtering on this station - var latestStationMarker = - this._defaultMap.markerCollection.getStationLatestMarker( - this.packet.station_id - ); - if ( - this._defaultMap.state.getClientTimestamp(this.packet.timestamp) <= - this._defaultMap.state.getOldestAllowedPacketTimestamp() && - typeof latestStationMarker !== "undefined" && - latestStationMarker !== null && - !this._isMarkersEqual(latestStationMarker) - ) { - // Is to old (and later confirmed markers exists) - return false; - } - - return true; - } else { - if ( - this._defaultMap.state.isFilterMode && - this._defaultMap.state.filterStationIds.indexOf( - this.packet.station_id - ) === -1 - ) { - // We are filtering and we are not filtering on this station - return false; - } - - if ( - this.packet.map_id != 1 && - this.packet.map_id != 2 && - this.packet.map_id != 12 && - this._defaultMap.getZoom() < trackdirect.settings.minZoomForMarkerTail - ) { - // Ghost markers is only visible when tail is visible (when we are not in filtering mode) - return false; - } - - if ( - this._defaultMap.state.getClientTimestamp(this.packet.timestamp) <= - this._defaultMap.state.getOldestAllowedPacketTimestamp() - ) { - // Is to old - return false; - } - - if ( - this._defaultMap.getZoom() < trackdirect.settings.minZoomForMarkers - ) { - // We are to much zoomed out - return false; - } - - return true; - } -}; - -/** - * Returnes true if it looks like it is a moving marker - * @return {boolean} - */ -trackdirect.models.Marker.prototype.isMovingStation = function () { - if (this.packet.is_moving == 0) { - return false; - } - - if ( - this._defaultMap.state.getClientTimestamp(this.packet.position_timestamp) < - this._defaultMap.state.getOldestAllowedPacketTimestamp() - ) { - // This marker is supposed to be moving but has not moved for a long time - // Check that we have no later marker for this station that is considered moving - var stationLatestMovingMarkerIdKey = - this._defaultMap.markerCollection.getStationLatestMovingMarkerIdKey( - this.packet.station_id - ); - if (stationLatestMovingMarkerIdKey == this.markerIdKey) { - // Stationary stations should not be visible - return false; - } - } - - return true; -}; - -/** - * Stop existing direction polyline is exists and is active - */ -trackdirect.models.Marker.prototype.stopDirectionPolyline = function () { - if (this.directionPolyLine !== null) { - this.directionPolyLine.stop(); - } -}; - -/** - * Stop the marker to old timeout that removes marker - */ -trackdirect.models.Marker.prototype.stopToOldTimeout = function () { - clearTimeout(this.toOldTimerId); - var dotMarkers = this._defaultMap.markerCollection.getDotMarkers( - this.markerIdKey - ); - for (var j = 0; j < dotMarkers.length; j++) { - clearTimeout(dotMarkers[j].toOldTimerId); - } -}; - -/** - * Get tooltip content for this marker - * @return {string} - */ -trackdirect.models.Marker.prototype.getToolTipContent = function () { - var iconUrl = trackdirect.services.symbolPathFinder.getFilePath( - this.packet.symbol_table, - this.packet.symbol, - null, - null, - null, - 20, - 20 - ); - var date = new Date(this.packet.timestamp * 1000); - var positionDate = new Date(this.packet.position_timestamp * 1000); - - var dateString = moment(date).format( - trackdirect.settings.dateFormatNoTimeZone - ); - if (this.packet.timestamp > this.packet.position_timestamp) { - dateString = - moment(positionDate).format(trackdirect.settings.dateFormatNoTimeZone) + - " - " + - moment(date).format(trackdirect.settings.dateFormatNoTimeZone); - } - - if (this.packet.getOgnRegistration() != null) { - var name = escapeHtml(this.packet.station_name); - name += ", "; - name += escapeHtml(this.packet.getOgnRegistration()); - if (this.packet.getOgnCN() !== null) { - name += " [" + escapeHtml(this.packet.getOgnCN()) + "]"; - } - return ( - '<div><img style="float: left; width:20px; height:20px;" src="' + - iconUrl + - '" />' + - '<span style="font-weight: bold; font-family: Helvetica; font-size: 10px; line-height: 22px; margin-left: 5px; margin-right: 25px">' + - name + - "</span></div>" + - '<div style="clear:both; font-family: Helvetica; font-size: 9px;">' + - dateString + - "</div>" - ); - } else if (this.packet.station_name == this.packet.sender_name) { - return ( - '<div><img style="float: left; width:20px; height:20px;" src="' + - iconUrl + - '" />' + - '<span style="font-weight: bold; font-family: Helvetica; font-size: 10px; line-height: 22px; margin-left: 5px; margin-right: 25px">' + - escapeHtml(this.packet.station_name) + - "</span></div>" + - '<div style="clear:both; font-family: Helvetica; font-size: 9px;">' + - dateString + - "</div>" - ); - } else { - return ( - '<div><img style="float: left; width:20px; height:20px;" src="' + - iconUrl + - '" />' + - '<span style="font-weight: bold; font-family: Helvetica; font-size: 10px; line-height: 22px; margin-left: 5px; margin-right: 25px">' + - escapeHtml(this.packet.station_name) + - "</span></div>" + - '<div style="clear:both; font-family: Helvetica; font-size: 9px;">Sent by ' + - escapeHtml(this.packet.sender_name) + - "</div>" + - '<div style="clear:both; font-family: Helvetica; font-size: 9px;">' + - dateString + - "</div>" - ); - } -}; - -/** - * Get a suitable google marker options object - * @return {object} - */ -trackdirect.models.Marker.prototype._getGoogleMarkerOptions = function () { - var anchorPoint = null; - if (this._isDotMarker) { - var colorId = trackdirect.services.stationColorCalculator.getColorId( - this.packet - ); - var iconUrl = - trackdirect.settings.baseUrl + - trackdirect.settings.imagesBaseDir + - "dotColor" + - colorId + - ".png"; - var scaledImageSize = new google.maps.Size(12, 12); - var imageSize = new google.maps.Size(12, 12); - var imageAnchor = new google.maps.Point(6, 6); - var opacity = 1.0; - } else { - var scalePx = 24; - var sizePx = 24; - if (this._shouldMarkerSymbolBeScaled()) { - scalePx = 48; - } - if (this.packet.course !== null) { - sizePx = sizePx + 7; - if (scalePx < sizePx) { - scalePx = sizePx; - } - } - - var imageSize = new google.maps.Size(scalePx, scalePx); - var imageAnchor = new google.maps.Point( - Math.floor(scalePx / 2), - Math.floor(scalePx / 2) - ); - var scaledImageSize = new google.maps.Size(scalePx, scalePx); - var iconUrl = trackdirect.services.symbolPathFinder.getFilePath( - this.packet.symbol_table, - this.packet.symbol, - this.packet.course, - sizePx, - sizePx, - scalePx, - scalePx - ); - if (isHighDensity()) { - imageSize = new google.maps.Size(scalePx * 2, scalePx * 2); - anchorPoint = new google.maps.Point(0, -Math.floor(scalePx / 2)); - iconUrl = trackdirect.services.symbolPathFinder.getFilePath( - this.packet.symbol_table, - this.packet.symbol, - this.packet.course, - sizePx, - sizePx, - scalePx * 2, - scalePx * 2 - ); - } - - var opacity = 1.0; - } - - return { - position: this.packet.getLatLngLiteral(), - zIndex: this._defaultMap.state.currentMarkerZindex, - icon: { - url: iconUrl, - size: imageSize, - scaledSize: scaledImageSize, - origin: new google.maps.Point(0, 0), - anchor: imageAnchor, - }, - opacity: opacity, - anchorPoint: anchorPoint, - }; -}; - -/** - * Get a suitable leaflet marker options object - * @return {object} - */ -trackdirect.models.Marker.prototype._getLeafletMarkerOptions = function () { - if (this._isDotMarker) { - var colorId = trackdirect.services.stationColorCalculator.getColorId( - this.packet - ); - var iconUrl = - trackdirect.settings.baseUrl + - trackdirect.settings.imagesBaseDir + - "dotColor" + - colorId + - ".png"; - var icon = L.icon({ - iconUrl: iconUrl, - iconSize: [12, 12], - iconAnchor: [6, 6], - }); - var opacity = 0.8; - } else { - var scalePx = 24; - var sizePx = 24; - if (this._shouldMarkerSymbolBeScaled()) { - scalePx = 48; - } - if (this.packet.course !== null) { - sizePx = sizePx + 7; - if (scalePx < sizePx) { - scalePx = sizePx; - } - } - - var iconUrl = trackdirect.services.symbolPathFinder.getFilePath( - this.packet.symbol_table, - this.packet.symbol, - this.packet.course, - sizePx, - sizePx, - scalePx, - scalePx - ); - var iconRetinaUrl = trackdirect.services.symbolPathFinder.getFilePath( - this.packet.symbol_table, - this.packet.symbol, - this.packet.course, - sizePx, - sizePx, - scalePx * 2, - scalePx * 2 - ); - var icon = L.icon({ - iconUrl: iconUrl, - iconRetinaUrl: iconRetinaUrl, - iconSize: [scalePx, scalePx], - iconAnchor: [Math.floor(scalePx / 2), Math.floor(scalePx / 2)], - }); - - var opacity = 1.0; - } - - var tooltipTitle = ""; - if (typeof L.tooltip == "undefined") { - tooltipTitle = this.packet.station_name; - } - - return { - zIndexOffset: this._defaultMap.state.currentMarkerZindex, - icon: icon, - opacity: opacity, - title: tooltipTitle, - }; -}; - -/** - * Returnes ture for symbols that that look better if they are scaled to twice the size - * @param {boolean} - */ -trackdirect.models.Marker.prototype._shouldMarkerSymbolBeScaled = function () { - if (typeof trackdirect.settings.symbolsToScale === "undefined") { - return false; - } - - for (var i = 0; i < trackdirect.settings.symbolsToScale.length; i++) { - var symbol = trackdirect.settings.symbolsToScale[i][0]; - var symbolTable = trackdirect.settings.symbolsToScale[i][1]; - - if (symbolTable == null && this.packet.symbol.charCodeAt() == symbol) { - return true; - } else if ( - this.packet.symbol.charCodeAt() == symbol && - this.packet.symbol_table.charCodeAt() == symbolTable - ) { - return true; - } - } - - return false; -}; - -/** - * Hide marker - * @param {int} delayInMilliSeconds - * @param {boolean} hideIfNeeded - */ -trackdirect.models.Marker.prototype._hideLater = function ( - delayInMilliSeconds, - onlyHideIfNeeded -) { - var me = this; - this.hideTimerId = window.setTimeout(function () { - if (me._defaultMap.state.isMarkerInfoWindowOpen(me)) { - // User is looking at this marker, try to hide it later - me.hide(500); - } else { - // Only hide it if we are not filtering or if station has newer markers - if (!me.shouldMarkerBeVisible()) { - me.hide(0, onlyHideIfNeeded); - } - } - }, delayInMilliSeconds); -}; - -/** - * Create marker tooltip - */ -trackdirect.models.Marker.prototype._addMarkerTooltip = function () { - if (typeof google === "object" && typeof google.maps === "object") { - this._addMarkerGoogleMapTooltip(); - } else if (typeof L === "object") { - this._addMarkerLeafletMapTooltip(); - } -}; - -/** - * Create Leaflet map tooltip on marker - */ -trackdirect.models.Marker.prototype._addMarkerLeafletMapTooltip = function () { - if (!trackdirect.isMobile) { - if (typeof L.tooltip != "undefined") { - var tooltip = L.tooltip({ - direction: "right", - noWrap: true, - offset: [6, 30], - className: "leaflet-marker-tooltiptext", - }); - } - - var me = this; - var isMyTooltipVisible = false; - this.on("mouseover", function (e) { - if (typeof tooltip !== "undefined") { - tooltip.setContent(me.getToolTipContent()); - tooltip.setLatLng( - new L.LatLng(me.packet.latitude, me.packet.longitude) - ); - tooltip.addTo(me._defaultMap); - isMyTooltipVisible = true; - } - - if (me.transmitPolyLine == null) { - me.transmitPolyLine = new trackdirect.models.TransmitPolyline( - me.packet, - me._defaultMap - ); - } - me.transmitPolyLine.show(); - }); - - this.on("mouseout", function (e) { - if (me.transmitPolyLine != null && me.transmitPolyLine.isVisible()) { - me.transmitPolyLine.hide(2000); - } - - if ( - typeof tooltip !== "undefined" && - isMyTooltipVisible && - me._defaultMap.hasLayer(tooltip) - ) { - tooltip.remove(); - isMyTooltipVisible = false; - } - }); - - this.on("remove", function (e) { - if (me.transmitPolyLine != null && me.transmitPolyLine.isVisible()) { - me.transmitPolyLine.hide(0); - } - - if ( - typeof tooltip !== "undefined" && - isMyTooltipVisible && - me._defaultMap.hasLayer(tooltip) - ) { - tooltip.remove(); - isMyTooltipVisible = false; - } - }); - } -}; - -/** - * Create Google map tooltip on marker - */ -trackdirect.models.Marker.prototype._addMarkerGoogleMapTooltip = function () { - if (!trackdirect.isMobile) { - if (!$("#marker-tooltip").length) { - // Does not exists, create it - var tooltip = $(document.createElement("div")); - tooltip.attr("id", "marker-tooltip"); - tooltip.css("display", "none"); - tooltip.css("position", "absolute"); - - tooltip.css("margin", "15px"); - tooltip.css("z-index", "90"); - tooltip.css("padding", "3px"); - - // opacity - tooltip.css("opacity", "0.95"); - tooltip.css("filter", "alpha(opacity=95)"); // For IE8 and earlier - - // Radius - tooltip.css("-webkit-border-radius", "1px"); - tooltip.css("-moz-border-radius", "1px"); - tooltip.css("border-radius", "1px"); - - // Shadow - tooltip.css("-webkit-box-shadow", "0px 0px 3px 0px rgba(0,0,0,0.3)"); - tooltip.css("-moz-box-shadow", "0px 0px 3px 0px rgba(0,0,0,0.3)"); - tooltip.css("box-shadow", "0px 0px 3px 0px rgba(0,0,0,0.3)"); - - tooltip.css("background-color", "#fff"); - tooltip.css("background", "#ffffff"); - - $("body").append(tooltip); - } - - var me = this; - var isMyTooltipVisible = false; - google.maps.event.addListener(this, "mouseover", function () { - var point = this._fromGoogleLatLngToPoint(me.getPosition()); - var mapElementId = this._defaultMap.getMapElementId(); - $("#marker-tooltip") - .html(me.getToolTipContent()) - .css({ - left: point.x + $("#" + mapElementId).offset().left, - top: point.y + $("#" + mapElementId).offset().top, - }) - .show(); - isMyTooltipVisible = true; - - if (me.transmitPolyLine == null) { - me.transmitPolyLine = new trackdirect.models.TransmitPolyline( - me.packet, - me._defaultMap - ); - } - me.transmitPolyLine.show(); - }); - - google.maps.event.addListener(this, "mouseout", function () { - if (me.transmitPolyLine != null && me.transmitPolyLine.isVisible()) { - me.transmitPolyLine.hide(2000); - } - - if (isMyTooltipVisible) { - $("#marker-tooltip").hide(); - isMyTooltipVisible = false; - } - }); - - this.addTdListener("onhide", function () { - if (me.transmitPolyLine != null && me.transmitPolyLine.isVisible()) { - me.transmitPolyLine.hide(0); - } - - if (isMyTooltipVisible) { - $("#marker-tooltip").hide(); - isMyTooltipVisible = false; - } - }); - } -}; - -/** - * Convert Google latlng to Point - * @param {object} LatLng - * @return {object} Point - */ -trackdirect.models.Marker.prototype._fromGoogleLatLngToPoint = function ( - latLng -) { - var topRight = this._defaultMap - .getProjection() - .fromLatLngToPoint(this._defaultMap.getBounds().getNorthEast()); - var bottomLeft = this._defaultMap - .getProjection() - .fromLatLngToPoint(this._defaultMap.getBounds().getSouthWest()); - var scale = Math.pow(2, this._defaultMap.getZoom()); - var worldPoint = this._defaultMap.getProjection().fromLatLngToPoint(latLng); - return new google.maps.Point( - (worldPoint.x - bottomLeft.x) * scale, - (worldPoint.y - topRight.y) * scale - ); -}; - -/** - * Returns true if markers are equal - * @param {object} marker2 - * @return {boolean} - */ -trackdirect.models.Marker.prototype._isMarkersEqual = function (marker2) { - var marker1 = this; - if ( - typeof marker2 !== "undefined" && - marker2 !== null && - typeof marker1.packet !== "undefined" && - typeof marker2.packet !== "undefined" && - marker1.packet.station_id === marker2.packet.station_id && - marker1.packet.timestamp === marker2.packet.timestamp && - Math.round(marker1.packet.latitude * 100000) === - Math.round(marker2.packet.latitude * 100000) && - Math.round(marker1.packet.longitude * 100000) === - Math.round(marker2.packet.longitude * 100000) && - marker1.packet.map_id === marker2.packet.map_id - ) { - return true; - } else { - return false; - } -}; - -/** - * Create timeout that removes marker when it it to old - * @param {int} altDelayMilliSeconds - */ -(trackdirect.models.Marker.prototype._addMarkerToOldTimeout = function ( - altDelayMilliSeconds -) { - var markerCollection = this._defaultMap.markerCollection; - var state = this._defaultMap.state; - var delay = - (this._defaultMap.state.getClientTimestamp(this.packet.timestamp) - - state.getOldestAllowedPacketTimestamp()) * - 1000; - if (altDelayMilliSeconds !== 0) { - delay = altDelayMilliSeconds; - } - - if (delay < 0) { - // Looks like this marker should be hidden allready, make sure it is soon - delay = 10; - } - - if (typeof this.toOldTimerId !== "undefined" && this.toOldTimerId !== null) { - clearTimeout(this.toOldTimerId); - } - - var me = this; - this.toOldTimerId = window.setTimeout(function () { - if (me._defaultMap.state.isMarkerInfoWindowOpen(me)) { - // User is looking at this marker, try again later... - me._addMarkerToOldTimeout(500); - } else { - var latestStationMarker = markerCollection.getStationLatestMarker( - me.packet.station_id - ); - var latestMarker = markerCollection.getMarker(me.markerIdKey); - - // Only hide it if we are not filtering or if station has newer markers - if ( - !me._isMarkersEqual(latestStationMarker) || - state.filterStationIds.indexOf(me.packet.station_id) == -1 - ) { - if (latestMarker === me) { - // This is the latest marker for this markerId, hide all of it! - var callback = function () { - me.hideCompleteMarker(); - markerCollection.resetMarkerPolyline(me.markerIdKey); - markerCollection.resetDotMarkers(me.markerIdKey); - }; - trackdirect.services.callbackExecutor.add(me, callback, []); - } else if (markerCollection.hasDotMarkers(me.markerIdKey)) { - // We should hide a dotmarker that we know exists - var index = markerCollection.getDotMarkerIndex(me.markerIdKey, me); - if (index == 0) { - var callback = function () { - if (markerCollection.hasDotMarkers(me.markerIdKey)) { - var success = markerCollection.removeOldestDotMarker( - me.markerIdKey - ); - if (!success) { - // Failed (should not happen), we try again later - me._addMarkerToOldTimeout(500); - } - } - }; - - trackdirect.services.callbackExecutor.add(me, callback, []); - } else if (index > 0) { - // Reschedule first marker removal (just to be sure) - var dotMarkers = markerCollection.getDotMarkers(me.markerIdKey); - dotMarkers[0]._addMarkerToOldTimeout(0); - - // Try again later - me._addMarkerToOldTimeout(100); - } - } - } else { - // Check again in a while if station has got a new marker - me._addMarkerToOldTimeout(1000); - } - } - }, delay); -}), - /** - * Emit all event listeners for a specified event - * @param {string} event - * @param {object} arg - */ - (trackdirect.models.Marker.prototype._emitTdEventListeners = function ( - event, - arg - ) { - if (event in this._tdEventListeners) { - for (var i = 0; i < this._tdEventListeners[event].length; i++) { - this._tdEventListeners[event][i](arg); - } - } - }); diff --git a/jslib/src/trackdirect/models/MarkerCollection.js b/jslib/src/trackdirect/models/MarkerCollection.js deleted file mode 100755 index 2f8b5b5..0000000 --- a/jslib/src/trackdirect/models/MarkerCollection.js +++ /dev/null @@ -1,960 +0,0 @@ -/** - * Class trackdirect.models.MarkerCollection - */ -trackdirect.models.MarkerCollection = function () { - // Contains markerKeys and is indexed by markerId - this._markerKeys = {}; - - // Array of all markers - this._markers = []; - - // Contains markerKeys indexed by stationId - this._stationMarkers = {}; - - // Contains markerIdKey indexed by stationId - this._stationLastMovingMarkerIdKey = {}; - - // Contains markerIdKey indexed by stationId - this._stationLastMarker = {}; - - // Contains markerIdKey indexed by senderId - this._senderLastMarker = {}; - - // Contains markerKeys indexed by latitude:longitude - this._positionMarkersIdKeys = {}; - - // Array of all marker dot markers, using the same index as in the array _markers - this._dotMarkers = []; - - // Array of all marker polylines, using the same index as in the array _markers - this._markerPolyLines = []; - - //Array of all marker dashed polylines, using the same index as in the array _markers - this._markerOriginDashedPolyLines = []; - - // Contains arrays of markerKeys and is indexed by mapSectorId - this._mapSectorMarkerIdKeys = {}; - - // Contains coverage values indexed by stationId - this._stationCoverage = {}; - - this.resetAllMarkers(); -}; - -/** - * Returns markerIdKey based on specified markerId - * @param {int} markerId - * @return {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.getMarkerIdKey = function ( - markerId -) { - if (!(markerId in this._markerKeys)) { - this._markers.push(null); - this._markerPolyLines.push(null); - this._dotMarkers.push(null); - this._markerOriginDashedPolyLines.push(null); - - var markerIdKey = this._markers.length - 1; - this._markerKeys[markerId] = markerIdKey; - - return markerIdKey; - } else { - return this._markerKeys[markerId]; - } -}; - -/** - * Returns true if marker exists - * @param {int} markerIdKey - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.isExistingMarker = function ( - markerIdKey -) { - if (markerIdKey in this._markers && this._markers[markerIdKey] !== null) { - return true; - } - return false; -}; - -/** - * Set marker for specified markerIdKey - * @param {int} markerIdKey - * @param {trackdirect.models.Marker} marker - */ -trackdirect.models.MarkerCollection.prototype.setMarker = function ( - markerIdKey, - marker -) { - if (marker !== null && typeof marker.packet !== "undefined") { - var packet = marker.packet; - - this._markers[markerIdKey] = marker; - this._addStationMarkerId(markerIdKey, packet); - this._addStationLastMarker(packet, marker); - this.addPostionMarkerId(markerIdKey, packet); - } -}; - -/** - * Returns the marker that has the specified markerIdKey - * @param {int} markerIdKey - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getMarker = function ( - markerIdKey -) { - if (markerIdKey !== null && markerIdKey in this._markers) { - return this._markers[markerIdKey]; - } - return null; -}; - -/** - * Returns all markers - * @return {array} - */ -trackdirect.models.MarkerCollection.prototype.getAllMarkers = function () { - return this._markers; -}; - -/** - * Remove marker with specified markerIdKey - * @param {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.removeMarker = function ( - markerIdKey -) { - if (markerIdKey !== null && markerIdKey in this._markers) { - this._markers.splice(markerIdKey, 1); - } -}; - -/** - * Returns the number of markers - * @return {int} - */ -trackdirect.models.MarkerCollection.prototype.getNumberOfMarkers = function () { - return this._markers.length; -}; - -/* - * Set marker label for specified markerIdKey - * @param {int} markerIdKey - * @param {object} label - */ -trackdirect.models.MarkerCollection.prototype.setMarkerLabel = function ( - markerIdKey, - label -) { - if (markerIdKey in this._markers && this._markers[markerIdKey] !== null) { - this._markers[markerIdKey].label = label; - } -}; - -/** - * Returns the marker label that has the specified markerIdKey - * @param {int} markerIdKey - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getMarkerLabel = function ( - markerIdKey -) { - if (markerIdKey in this._markers && this._markers[markerIdKey] !== null) { - return this._markers[markerIdKey].label; - } - return null; -}; - -/** - * Returns true if specified marker has a label - * @param {int} markerIdKey - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.hasMarkerLabel = function ( - markerIdKey -) { - if ( - markerIdKey in this._markers && - this._markers[markerIdKey] !== null && - this._markers[markerIdKey].label !== null - ) { - return true; - } - return false; -}; - -/** - * Set a new position for the marker label - * @param {int} markerIdKey - * @param {object} position - */ -trackdirect.models.MarkerCollection.prototype.setMarkerLabelPosition = - function (markerIdKey, position) { - if ( - markerIdKey in this._markers && - this._markers[markerIdKey] !== null && - this._markers[markerIdKey].label !== null - ) { - this._markers[markerIdKey].label.position = position; - } - }; - -/** - * Returns true if packet is a duplicate, - * this method should be used on realtime-packet since they will not be checked on server - * @param {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.isDuplicate = function (packet) { - if (packet.is_moving == 0) { - // We don't care for duplicates for stationary stations - return false; - } - - for (var markerIdKey in this.getPositionMarkerIdKeys( - packet.latitude, - packet.longitude - )) { - var marker = this.getMarker(markerIdKey); - if ( - marker !== null && - marker.packet.station_id == packet.station_id && - marker.packet.symbol == packet.symbol && - marker.packet.symbol_table == packet.symbol_table && - marker.packet.course == packet.course - ) { - // My guess is that this is a duplicate - return true; - } - } - return false; -}; - -/* - * Add dot marker for specified markerIdKey - * @param {int} markerIdKey - * @param {object} dotMarker - */ -trackdirect.models.MarkerCollection.prototype.addDotMarker = function ( - markerIdKey, - dotMarker -) { - if (markerIdKey in this._dotMarkers) { - if (this._dotMarkers[markerIdKey] === null) { - this._dotMarkers[markerIdKey] = []; - } - this._dotMarkers[markerIdKey].push(dotMarker); - } -}; - -/** - * Returns the marker dot markers - * @param {int} markerIdKey - * @return {array} - */ -trackdirect.models.MarkerCollection.prototype.getDotMarkers = function ( - markerIdKey -) { - if ( - markerIdKey in this._dotMarkers && - this._dotMarkers[markerIdKey] !== null - ) { - return this._dotMarkers[markerIdKey]; - } - return []; -}; - -/** - * Returns true if specified marker has dot markers - * @param {int} markerIdKey - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.hasDotMarkers = function ( - markerIdKey -) { - if ( - markerIdKey in this._dotMarkers && - this._dotMarkers[markerIdKey] !== null && - this._dotMarkers[markerIdKey].length > 0 - ) { - return true; - } - return false; -}; - -/* - * Add dot marker for specified markerIdKey - * @param {int} markerIdKey - * @param {object} dotMarker - */ -trackdirect.models.MarkerCollection.prototype.addStationCoverage = function ( - stationId, - stationCoveragePolygon -) { - this._stationCoverage[stationId] = stationCoveragePolygon; -}; - -/** - * Returns the station coverage - * @param {int} stationId - * @return {StationCoveragePolygon} - */ -trackdirect.models.MarkerCollection.prototype.getStationCoverage = function ( - stationId -) { - if ( - stationId in this._stationCoverage && - this._stationCoverage[stationId] !== null - ) { - return this._stationCoverage[stationId]; - } - return null; -}; - -/** - * Returns an array of stations the has a visible coverage - * @return {array} - */ -trackdirect.models.MarkerCollection.prototype.getStationIdListWithVisibleCoverage = - function () { - var result = []; - for (var stationId in this._stationCoverage) { - if (this._stationCoverage[stationId].isRequestedToBeVisible()) { - result.push(stationId); - } - } - return result; - }; - -/** - * Returns true if specified station has a coverage polygon - * @param {int} stationId - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.hasCoveragePolygon = function ( - stationId -) { - if ( - stationId in this._stationCoverage && - this._stationCoverage[stationId] !== null - ) { - return true; - } - return false; -}; - -/** - * Reset the dot markers for a specified marker - * @param {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.resetDotMarkers = function ( - markerIdKey -) { - if ( - markerIdKey in this._dotMarkers && - this._dotMarkers[markerIdKey] !== null - ) { - this._dotMarkers[markerIdKey] = []; - } -}; - -/** - * Remove the oldest dot markers for a specified marker - * @param {int} markerIdKey - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.removeOldestDotMarker = function ( - markerIdKey -) { - if (this.hasDotMarkers(markerIdKey)) { - latestMarker = this.getMarker(markerIdKey); - var latestMarkerIndex = this.getDotMarkerIndex(markerIdKey, latestMarker); - var dotMarkers = this.getDotMarkers(markerIdKey); - var maxNumberOfPolyLinePoints = dotMarkers.length; - if (latestMarkerIndex > -1) { - // Seems like the latest marker also is a dotmarker, this may happen if it is a moving object - maxNumberOfPolyLinePoints = maxNumberOfPolyLinePoints - 1; - } - - var removedItems = this._dotMarkers[markerIdKey].splice(0, 1); - if (removedItems.length == 1) { - var removedMarker = removedItems[0]; - removedMarker.hide(); - if (this.hasPolyline(removedMarker.markerIdKey)) { - var polyline = this.getMarkerPolyline(removedMarker.markerIdKey); - while (polyline.getPathLength() > maxNumberOfPolyLinePoints) { - polyline.removePathItem(0); - } - } - removedMarker = null; - - return true; - } - } - return false; -}; - -/** - * Get dot marker index - * @param {int} markerIdKey - * @param {trackdirect.models.Marker} marker - * @return int - */ -trackdirect.models.MarkerCollection.prototype.getDotMarkerIndex = function ( - markerIdKey, - marker -) { - if (!this.hasDotMarkers(markerIdKey)) { - return -1; - } - for (var i = 0, len = this._dotMarkers[markerIdKey].length; i < len; i++) { - var foundMarker = this._dotMarkers[markerIdKey][i]; - if (foundMarker === null) { - continue; - } - - if ( - typeof marker.packet.id !== "undefined" && - marker.packet.id !== null && - foundMarker.packet.id === marker.packet.id && - foundMarker.packet.map_id === marker.packet.map_id - ) { - return i; - } - - if ( - foundMarker.packet.station_id === marker.packet.station_id && - foundMarker.packet.timestamp === marker.packet.timestamp && - Math.round(foundMarker.packet.latitude * 100000) === - Math.round(marker.packet.latitude * 100000) && - Math.round(foundMarker.packet.longitude * 100000) === - Math.round(marker.packet.longitude * 100000) && - foundMarker.packet.map_id === marker.packet.map_id - ) { - return i; - } - } - return -1; -}; - -/* - * Add marker polyline for specified markerIdKey - * @param {int} markerIdKey - * @param {object} polyline - */ -trackdirect.models.MarkerCollection.prototype.setMarkerPolyline = function ( - markerIdKey, - polyline -) { - if (markerIdKey in this._markerPolyLines) { - this._markerPolyLines[markerIdKey] = polyline; - } -}; - -/** - * Returns the marker polyline - * @param {int} markerIdKey - * @return {array} - */ -trackdirect.models.MarkerCollection.prototype.getMarkerPolyline = function ( - markerIdKey -) { - if (this.hasPolyline(markerIdKey)) { - return this._markerPolyLines[markerIdKey]; - } - return null; -}; - -/** - * Returns true if specified marker has a polyline - * @param {int} markerIdKey - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.hasPolyline = function ( - markerIdKey -) { - if ( - markerIdKey in this._markerPolyLines && - this._markerPolyLines[markerIdKey] !== null - ) { - if (this._markerPolyLines[markerIdKey].getPathLength() > 1) { - return true; - } else { - // We only consider polyline to exists if it has a path length of 2 or more - this._markerPolyLines[markerIdKey].hide(); - this._markerPolyLines[markerIdKey] = null; - return false; - } - } - return false; -}; - -/** - * Reset the marker polyline - * @param {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.resetMarkerPolyline = function ( - markerIdKey -) { - if (markerIdKey in this._markerPolyLines) { - this._markerPolyLines[markerIdKey] = null; - } -}; - -/* - * Add marker dashed polyline for specified markerIdKey - * @param {int} markerIdKey - * @param {object} polyline - */ -trackdirect.models.MarkerCollection.prototype.setMarkerDashedPolyline = - function (markerIdKey, polyline) { - if (markerIdKey in this._markerOriginDashedPolyLines) { - this._markerOriginDashedPolyLines[markerIdKey] = polyline; - } - }; - -/** - * Returns the marker dashed polyline - * @param {int} markerIdKey - * @return {array} - */ -trackdirect.models.MarkerCollection.prototype.getMarkerDashedPolyline = - function (markerIdKey) { - if (this.hasDashedPolyline(markerIdKey)) { - return this._markerOriginDashedPolyLines[markerIdKey]; - } - return null; - }; - -/** - * Returns true if specified marker has a dashed polyline - * @param {int} markerIdKey - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.hasDashedPolyline = function ( - markerIdKey -) { - if ( - markerIdKey in this._markerOriginDashedPolyLines && - this._markerOriginDashedPolyLines[markerIdKey] !== null - ) { - if (this._markerOriginDashedPolyLines[markerIdKey].getPathLength() > 1) { - return true; - } else { - // We only consider polyline to exists if it has a path length of 2 or more - this._markerOriginDashedPolyLines[markerIdKey].hide(); - this._markerOriginDashedPolyLines[markerIdKey] = null; - return false; - } - } - return false; -}; - -/** - * Reset the marker dashed polyline - * @param {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.resetMarkerDashedPolyline = - function (markerIdKey) { - if (markerIdKey in this._markerOriginDashedPolyLines) { - this._markerOriginDashedPolyLines[markerIdKey] = null; - } - }; - -/** - * returnes the latest packet of the specified station - * @param {int} stationId - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getStationLatestPacket = - function (stationId) { - if ( - typeof this._stationLastMarker[stationId] !== "undefined" && - this._stationLastMarker[stationId] !== null && - typeof this._stationLastMarker[stationId].packet !== "undefined" - ) { - return this._stationLastMarker[stationId].packet; - } else { - return null; - } - }; - -/** - * returnes the latest marker of the specified station - * @param {int} stationId - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getStationLatestMarker = - function (stationId) { - if ( - typeof this._stationLastMarker[stationId] !== "undefined" && - this._stationLastMarker[stationId] !== null - ) { - return this._stationLastMarker[stationId]; - } else { - return null; - } - }; - -/** - * returnes the latest packet of the specified sender - * @param {int} senderId - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getSenderLatestPacket = function ( - senderId -) { - if ( - typeof this._senderLastMarker[senderId] !== "undefined" && - this._senderLastMarker[senderId] !== null && - typeof this._senderLastMarker[senderId].packet !== "undefined" - ) { - return this._senderLastMarker[senderId].packet; - } else { - return null; - } -}; - -/** - * Returns the latest moving marker for station with specified id - * @param {int} stationId - * @return {int} - */ -trackdirect.models.MarkerCollection.prototype.getStationLatestMovingMarkerIdKey = - function (stationId) { - if ( - this._stationLastMovingMarkerIdKey !== null && - typeof this._stationLastMovingMarkerIdKey[stationId] !== "undefined" && - this._stationLastMovingMarkerIdKey[stationId] !== null && - this.isExistingMarker(this._stationLastMovingMarkerIdKey[stationId]) - ) { - return this._stationLastMovingMarkerIdKey[stationId]; - } - return null; - }; - -/** - * Get the latest markerIdKey connected to specified markerIdKey - * @param {int} markerIdKey - * @return int - */ -trackdirect.models.MarkerCollection.prototype.getMarkerMasterMarkerKeyId = - function (markerIdKey) { - if (this.isExistingMarker(markerIdKey)) { - var marker = this._markers[markerIdKey]; - if (this.hasRelatedDashedPolyline(marker)) { - return this.getMarkerMasterMarkerKeyId( - marker._relatedMarkerOriginDashedPolyLine.ownerMarkerIdKey - ); - } - } - return markerIdKey; - }; - -/** - * Get latest visible marker for a stationId - * @param {int} stationId - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getStationLatestVisibleMarker = - function (stationId) { - var latestVisibleMarker = null; - var latestVisibleMarkerTimestamp = null; - for (var markerIdKey in this._stationMarkers[stationId]) { - var marker = this._markers[markerIdKey]; - if ( - typeof marker !== "undefined" && - marker !== null && - typeof marker.getMap() !== "undefined" && - marker.getMap() !== null - ) { - if ( - latestVisibleMarkerTimestamp === null || - marker.packet.timestamp > latestVisibleMarkerTimestamp - ) { - latestVisibleMarker = marker; - latestVisibleMarkerTimestamp = marker.packet.timestamp; - } - } - } - return latestVisibleMarker; - }; - -/** - * Get an object with all station markerKeyIds as keys - * @param {int} stationId - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getStationMarkerIdKeys = - function (stationId) { - if (stationId in this._stationMarkers) { - return this._stationMarkers[stationId]; - } - return {}; - }; - -/** - * Get an object with all markerKeyIds at a specified position as keys - * @param {number} latitude - * @param {number} longitude - * @return {object} - */ -trackdirect.models.MarkerCollection.prototype.getPositionMarkerIdKeys = - function (latitude, longitude) { - var key = this._getCompareablePosition(latitude, longitude); - if (key in this._positionMarkersIdKeys) { - return this._positionMarkersIdKeys[key]; - } - return {}; - }; - -/** - * Add marker to postition - * @param {int} markerIdKey - * @param {trackdirect.models.Packet} packet - */ -trackdirect.models.MarkerCollection.prototype.addPostionMarkerId = function ( - markerIdKey, - packet -) { - var key = this._getCompareablePosition(packet.latitude, packet.longitude); - if (!(key in this._positionMarkersIdKeys)) { - this._positionMarkersIdKeys[key] = {}; - } - this._positionMarkersIdKeys[key][markerIdKey] = true; -}; - -/** - * Remove marker from postition - * @param {number} latitude - * @param {number} longitude - * @param {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.removePostionMarkerId = function ( - latitude, - longitude, - markerIdKey -) { - var key = this._getCompareablePosition(latitude, longitude); - if (key in this._positionMarkersIdKeys) { - if (markerIdKey in this._positionMarkersIdKeys[key]) { - this._positionMarkersIdKeys[key][markerIdKey] = false; - } - } -}; - -/** - * Add marker specified map sector - * @param {int} markerIdKey - * @param {int} markerMapSector - */ -trackdirect.models.MarkerCollection.prototype.addMarkerToMapSector = function ( - markerIdKey, - markerMapSector -) { - if (!(markerMapSector in this._mapSectorMarkerIdKeys)) { - this._mapSectorMarkerIdKeys[markerMapSector] = []; - } - - if (this._mapSectorMarkerIdKeys[markerMapSector].indexOf(markerIdKey) < 0) { - // only add markerIdKey to map-sector if it is not allready there - this._mapSectorMarkerIdKeys[markerMapSector].push(markerIdKey); - } -}; - -/** - * Add marker specified map sector - * @param {int} markerIdKey - * @param {int} markerMapSector - */ -trackdirect.models.MarkerCollection.prototype.getMapSectorMarkerKeys = - function (mapSector) { - if (mapSector in this._mapSectorMarkerIdKeys) { - return this._mapSectorMarkerIdKeys[mapSector]; - } - return []; - }; - -/** - * Reset all markers, this will remove everything from memory - */ -trackdirect.models.MarkerCollection.prototype.resetAllMarkers = function () { - this._markerKeys = {}; - this._markers = []; - this._markerPolyLines = []; - this._dotMarkers = []; - this._markerOriginDashedPolyLines = []; - this._stationMarkers = {}; - this._stationLastMovingMarkerIdKey = {}; - this._stationLastMarker = {}; - this._senderLastMarker = {}; - this._positionMarkersIdKeys = {}; - this._mapSectorMarkerIdKeys = {}; - this._stationCoverage = {}; -}; - -/** - * Remove marker from memory - * @param {int} markerIdKey - */ -trackdirect.models.MarkerCollection.prototype.resetMarker = function ( - markerIdKey -) { - if (this.isExistingMarker(markerIdKey)) { - var marker = this._markers[markerIdKey]; - - this._markers[markerIdKey] = null; - this._markerPolyLines[markerIdKey] = null; - this._dotMarkers[markerIdKey] = null; - this._markerOriginDashedPolyLines[markerIdKey] = null; - - if ( - typeof marker.packet.latitude != "undefined" && - typeof marker.packet.longitude != "undefined" - ) { - this.removePostionMarkerId( - marker.packet.latitude, - marker.packet.longitude, - markerIdKey - ); - } - } -}; - -/** - * Returns true if marker has a related marker origin dashed polyline. - * A related dashed poly line is a dashed polyline ending at this marker. - * @param {trackdirect.models.Marker} marker - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.hasRelatedDashedPolyline = - function (marker) { - if ( - typeof marker._relatedMarkerOriginDashedPolyLine !== "undefined" && - marker._relatedMarkerOriginDashedPolyLine !== null - ) { - return true; - } - return false; - }; - -/** - * Returns true if this station has a marker id not equal to this that is moving - * @param {trackdirect.models.Packet} packet - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.hasNonRelatedMovingMarkerId = - function (packet) { - // If latest marker is related we will have no non related that is visible, - // since we only allow one moving marker per station. - // So we only need to compare latest moving marker... - var latestStationMovingMarkerIdKey = this.getStationLatestMovingMarkerIdKey( - packet.station_id - ); - var newMarkerIdKey = this.getMarkerIdKey(packet.marker_id); - if ( - latestStationMovingMarkerIdKey !== null && - latestStationMovingMarkerIdKey !== newMarkerIdKey - ) { - var latestStationMovingMarker = this.getMarker( - latestStationMovingMarkerIdKey - ); - if (latestStationMovingMarker.packet.hasConfirmedMapId()) { - return true; - } - } - return false; - }; - -/** - * Returns true if new packet should replace current marker - * @param {trackdirect.models.Packet} packet - * @return {boolean} - */ -trackdirect.models.MarkerCollection.prototype.isPacketReplacingMarker = - function (packet) { - var markerIdKey = this.getMarkerIdKey(packet.marker_id); - if (this.isExistingMarker(markerIdKey)) { - var marker = this.getMarker(markerIdKey); - if (marker !== null) { - if (packet.map_id == 14) { - // Packets that kill other packets should allways replace previous packet - return true; - } - - if (packet.is_moving == 0) { - // Stationary allways replace previous marker if they have the same marker_id - return true; - } - - if ([1, 2, 7, 12].indexOf(packet.map_id) < 0) { - // For ghost packets we allways replace markers with the same marker_id - return true; - } - } - } - return false; - }; - -/** - * Add markerId to station - * @param {int} markerIdKey - * @param {trackdirect.models.Packet} packet - */ -trackdirect.models.MarkerCollection.prototype._addStationMarkerId = function ( - markerIdKey, - packet -) { - if (!(packet.station_id in this._stationMarkers)) { - this._stationMarkers[packet.station_id] = {}; - } - this._stationMarkers[packet.station_id][markerIdKey] = true; - - if (packet.is_moving == 1 && packet.hasConfirmedMapId()) { - this._stationLastMovingMarkerIdKey[packet.station_id] = markerIdKey; - } -}; - -/** - * Add station latest marker - * @param {trackdirect.models.Packet} packet - * @param {trackdirect.models.Marker} marker - */ -trackdirect.models.MarkerCollection.prototype._addStationLastMarker = function ( - packet, - marker -) { - if (packet.hasConfirmedMapId()) { - if ( - typeof this._stationLastMarker[packet.station_id] === "undefined" || - this._stationLastMarker[packet.station_id] === null - ) { - this._stationLastMarker[packet.station_id] = marker; - if (packet.station_name == packet.sender_name) { - this._senderLastMarker[packet.sender_id] = marker; - } - } else if ( - this._stationLastMarker[packet.station_id].packet.timestamp <= - packet.timestamp - ) { - this._stationLastMarker[packet.station_id] = marker; - if (packet.station_name == packet.sender_name) { - this._senderLastMarker[packet.sender_id] = marker; - } - } - } -}; - -/** - * Get string representation of a position that may be used for comparison - * @param {number} latitude - * @param {number} longitude - * @return {string} - */ -trackdirect.models.MarkerCollection.prototype._getCompareablePosition = - function (latitude, longitude) { - var latCmp = Math.round(latitude * 100000); - var lngCmp = Math.round(longitude * 100000); - return String(latCmp) + ":" + String(lngCmp); - }; diff --git a/jslib/src/trackdirect/models/Packet.js b/jslib/src/trackdirect/models/Packet.js deleted file mode 100755 index c1227c0..0000000 --- a/jslib/src/trackdirect/models/Packet.js +++ /dev/null @@ -1,628 +0,0 @@ -/** - * Class trackdirect.models.Packet - * @param {object} data - */ -trackdirect.models.Packet = function (data) { - this.init(); - for (var key in data) { - this[key] = data[key]; - } -}; - -trackdirect.models.Packet.prototype.init = function () { - this["altitude"] = null; - this["comment"] = ""; - this["course"] = null; - this["db"] = null; - this["id"] = null; - this["latest_phg_timestamp"] = null; - this["latest_rng_timestamp"] = null; - this["latitude"] = null; - this["longitude"] = null; - this["map_id"] = null; - this["map_sector"] = null; - this["marker_counter"] = null; - this["marker_id"] = null; - this["ogn"] = null; - this["overwrite"] = null; // 1 if it should be overwritten by next packet from station - this["is_moving"] = 1; - this["packet_order_id"] = null; - this["packet_tail_timestamp"] = null; - this["packet_type_id"] = null; - this["phg"] = null; - this["posambiguity"] = 0; - this["position_timestamp"] = null; - this["raw"] = ""; - this["raw_path"] = ""; - this["realtime"] = 0; // 1 if not fetched from database - this["related_map_sectors"] = []; - this["reported_timestamp"] = null; - this["rng"] = null; - this["sender_id"] = null; - this["sender_name"] = null; - this["source_id"] = null; - this["speed"] = null; - this["station_id"] = null; - this["station_id_path"] = []; - this["station_location_path"] = []; - this["station_name"] = null; - this["station_name_path"] = []; - this["symbol"] = null; - this["symbol_table"] = null; - this["telemetry"] = null; - this["timestamp"] = null; - this["weather"] = null; -}; - -/** - * Returns the packet station name (including sender if needed) - * @return {string} - */ -trackdirect.models.Packet.prototype.getStationName = function () { - if (this.station_name == this.sender_name) { - return escapeHtml(this.station_name); - } else { - return escapeHtml(this.station_name + " (" + this.sender_name + ")"); - } -}; - -/** - * Returns the packet position - * @return {LatLngLiteral} - */ -trackdirect.models.Packet.prototype.getLatLngLiteral = function () { - return { lat: parseFloat(this.latitude), lng: parseFloat(this.longitude) }; -}; - -/** - * Returns true if packet map ID is considered to be visible - * @return boolean - */ -trackdirect.models.Packet.prototype.hasConfirmedMapId = function () { - if ([1, 2, 12].indexOf(this.map_id) >= 0) { - return true; - } - return false; -}; - -/** - * Returns OGN aircraft type name - * @return {string} - */ -trackdirect.models.Packet.prototype.getOgnAircraftType = function () { - if (typeof this.ogn !== "undefined" && this.ogn !== null) { - if ( - typeof this.ogn.ogn_aircraft_type_id !== "undefined" && - this.ogn.ogn_aircraft_type_id != "" - ) { - if (this.ogn.ogn_aircraft_type_id == 1) { - return "Glider"; - } else if (this.ogn.ogn_aircraft_type_id == 2) { - return "Tow Plane"; - } else if (this.ogn.ogn_aircraft_type_id == 3) { - return "Helicopter"; - } else if (this.ogn.ogn_aircraft_type_id == 4) { - return "Parachute"; - } else if (this.ogn.ogn_aircraft_type_id == 5) { - return "Drop Plane"; - } else if (this.ogn.ogn_aircraft_type_id == 6) { - return "Hang Glider"; - } else if (this.ogn.ogn_aircraft_type_id == 7) { - return "Para Glider"; - } else if (this.ogn.ogn_aircraft_type_id == 8) { - return "Powered Aircraft"; - } else if (this.ogn.ogn_aircraft_type_id == 9) { - return "Jet Aircraft"; - } else if (this.ogn.ogn_aircraft_type_id == 10) { - return "UFO"; - } else if (this.ogn.ogn_aircraft_type_id == 11) { - return "Balloon"; - } else if (this.ogn.ogn_aircraft_type_id == 12) { - return "Airship"; - } else if (this.ogn.ogn_aircraft_type_id == 13) { - return "UAV"; - } else if (this.ogn.ogn_aircraft_type_id == 14) { - return ""; - } else if (this.ogn.ogn_aircraft_type_id == 15) { - return "Static Object"; - } - } - } - return null; -}; - -/** - * Returns OGN device DB aircraft type name - * @return {string} - */ -trackdirect.models.Packet.prototype.getOgnDdbAircraftType = function () { - if (typeof this.ogn_device !== "undefined" && this.ogn_device !== null) { - if ( - typeof this.ogn_device.ddb_aircraft_type !== "undefined" && - this.ogn_device.ddb_aircraft_type != "" - ) { - if (this.ogn_device.ddb_aircraft_type == 1) { - return "Glider/Motoglider"; - } else if (this.ogn_device.ddb_aircraft_type == 2) { - return "Plane"; - } else if (this.ogn_device.ddb_aircraft_type == 3) { - return "Ultralight"; - } else if (this.ogn_device.ddb_aircraft_type == 4) { - return "Helicopter"; - } else if (this.ogn_device.ddb_aircraft_type == 5) { - return "Drone/UAV"; - } else if (this.ogn_device.ddb_aircraft_type == 6) { - return "Other"; - } - } - } - return null; -}; - -/** - * Returns OGN address type name - * @return {string} - */ -trackdirect.models.Packet.prototype.getOgnAddressType = function () { - if (typeof this.ogn !== "undefined" && this.ogn !== null) { - if ( - typeof this.ogn.ogn_address_type_id !== "undefined" && - this.ogn.ogn_address_type_id != "" - ) { - if (this.ogn.ogn_address_type_id == 1) { - return "ICAO"; - } else if (this.ogn.ogn_address_type_id == 2) { - return "FLARM"; - } else if (this.ogn.ogn_address_type_id == 3) { - return "OGN"; - } - } - } - return null; -}; - -/** - * Returns OGN sender address - * @return {string} - */ -trackdirect.models.Packet.prototype.getOgnSenderAddress = function () { - if (typeof this.ogn !== "undefined" && this.ogn !== null) { - if ( - typeof this.ogn.ogn_sender_address !== "undefined" && - this.ogn.ogn_sender_address != "" - ) { - return this.ogn.ogn_sender_address; - } - } - return null; -}; - -/** - * Returns OGN registration - * @return {string} - */ -trackdirect.models.Packet.prototype.getOgnRegistration = function () { - if (typeof this.ogn_device !== "undefined" && this.ogn_device !== null) { - if ( - typeof this.ogn_device.registration !== "undefined" && - this.ogn_device.registration != "" - ) { - return this.ogn_device.registration; - } - } - return null; -}; - -/** - * Returns OGN CN - * @return {string} - */ -trackdirect.models.Packet.prototype.getOgnCN = function () { - if (typeof this.ogn_device !== "undefined" && this.ogn_device !== null) { - if (typeof this.ogn_device.cn !== "undefined" && this.ogn_device.cn != "") { - return this.ogn_device.cn; - } - } - return null; -}; - -/** - * Returns OGN summary - * @return {string} - */ -trackdirect.models.Packet.prototype.getOgnSummary = function () { - var senderAddress = this.getOgnSenderAddress(); - var aircraftType = this.getOgnAircraftType(); - var ddbAircraftType = this.getOgnDdbAircraftType(); - var addressType = this.getOgnAddressType(); - - var summary = ""; - if (ddbAircraftType !== null) { - summary += ddbAircraftType; - } else if (aircraftType !== null) { - summary += aircraftType; - } - if (senderAddress !== null) { - if (summary != "") { - summary += " "; - } - summary += senderAddress; - - if (addressType !== null) { - summary += " (" + addressType + ")"; - } - } - return summary; -}; - -/** - * Returns true if packet has direction support - * @return boolean - */ -trackdirect.models.Packet.prototype.hasDirectionSupport = function () { - if ( - this.course !== null && - this.speed !== null && - this.speed > 0 && - this.source_id == 1 && - this.packet_order_id == 1 && - this.is_moving == 1 && - this.hasConfirmedMapId() - ) { - var symbolCategory = 1; - if (this.symbol_table.charCodeAt(0) == "92") { - symbolCategory = 2; - } - - if ( - symbolCategory == 1 && - trackdirect.settings.primarySymbolWithNoDirectionPolyline.indexOf( - parseInt(this.symbol.charCodeAt(0)) - ) > -1 - ) { - // This icon does not support direction polyline, avoid drawing anything since speed could be windspeed - return false; - } - - if ( - symbolCategory == 2 && - trackdirect.settings.alternativeSymbolWithNoDirectionPolyline.indexOf( - parseInt(this.symbol.charCodeAt(0)) - ) > -1 - ) { - // This icon does not support direction polyline, avoid drawing anything since speed could be windspeed - return false; - } - return true; - } - return false; -}; - -/** - * Get PGH string - * @return string - */ -trackdirect.models.Packet.prototype.getPhg = function () { - if (this.phg !== null) { - if (this.phg == 0) { - return null; // 0000 is considered not to be used (power == 0!) - } else if (this.phg < 10) { - return "000" + String(this.phg); - } else if (this.phg < 100) { - return "00" + String(this.phg); - } else if (this.phg < 1000) { - return "0" + String(this.phg); - } else { - return String(this.phg); - } - } - return null; -}; - -/** - * Get RNG range in meters - * @return float - */ -trackdirect.models.Packet.prototype.getRNGRange = function () { - if (this.rng !== null) { - return this.rng; - } - return null; -}; - -/** - * Get PGH range in meters - * @return float - */ -trackdirect.models.Packet.prototype.getPHGRange = function () { - if (this.getPhg() !== null) { - var p = this.getPhgPower(); - var h = this.getPhgHaat(false); - var g = this.getPhgGain(); - - var gain = Math.pow(10, g / 10); //converts from DB to decimal - var range = Math.sqrt(2 * h * Math.sqrt((p / 10) * (gain / 2))); - return range / 0.000621371192; // convert to m and return - } - return null; -}; - -/** - * Get PGH description - * @return String - */ -trackdirect.models.Packet.prototype.getPHGDescription = function () { - if (this.getPhg() !== null) { - var power = this.getPhgPower(); - var haat = this.getPhgHaat(); - var gain = this.getPhgGain(); - var direction = this.getPhgDirection(); - - var description = ""; - if (power !== null) { - description += "Power " + power + "W"; - } - - if (haat !== null) { - if (description.length > 0) { - description += ", "; - } - description += "Height " + haat + "m"; - } - - if (gain !== null && direction !== null) { - if (description.length > 0) { - description += ", "; - } - description += "Gain " + gain + "dB " + direction; - } - return description; - } - return null; -}; - -/** - * Get PGH power - * @return int - */ -trackdirect.models.Packet.prototype.getPhgPower = function () { - if (this.getPhg() !== null) { - return Math.pow(parseInt(this.getPhg().substring(0, 1)), 2); - } - return null; -}; - -/** - * Get PGH hight (above averange terrain) - * @param {boolean} inMeters - * @return int - */ -trackdirect.models.Packet.prototype.getPhgHaat = function (inMeters) { - inMeters = typeof inMeters !== "undefined" ? inMeters : true; - if (this.getPhg() != null) { - value = parseInt(this.getPhg().substring(1, 2)); - - var haat = 10; - if (value == 1) { - haat = 20; - } else if (value > 1) { - haat = 10 * Math.pow(value, 2); - } - - if (inMeters) { - return Math.round(haat * 0.3048, 0); - } else { - return haat; - } - } - return null; -}; - -/** - * Get PGH Gain - * @return int - */ -trackdirect.models.Packet.prototype.getPhgGain = function () { - if (this.getPhg() != null) { - return parseInt(this.getPhg().substring(2, 3)); - } - return null; -}; - -/** - * Get PGH Direction - * @return String - */ -trackdirect.models.Packet.prototype.getPhgDirection = function () { - if (this.getPhg() != null) { - switch (parseInt(this.getPhg().substring(3, 4))) { - case 0: - return "omni"; - break; - case 1: - return "North East"; - break; - case 2: - return "East"; - break; - case 3: - return "South East"; - break; - case 4: - return "South"; - break; - case 5: - return "South West"; - break; - case 6: - return "West"; - break; - case 7: - return "North West"; - break; - case 8: - return "North"; - break; - } - } - return null; -}; - -/** - * Get PGH Direction Degree - * @return int - */ -trackdirect.models.Packet.prototype.getPhgDirectionDegree = function () { - if (this.getPhg() != null) { - switch (parseInt(this.getPhg().substring(3, 4))) { - case 0: - return null; - break; - case 1: - return 45; - break; - case 2: - return 90; - break; - case 3: - return 135; - break; - case 4: - return 180; - break; - case 5: - return 225; - break; - case 6: - return 270; - break; - case 7: - return 315; - break; - case 8: - return 360; - break; - } - } - return null; -}; - -/** - * Get distance between packet latest position for specified marker - * @param {trackdirect.models.Marker} marker - * @return {float} - */ -trackdirect.models.Packet.prototype.getMarkerDistance = function (marker) { - var packetLatLng = { - lat: parseFloat(this.latitude), - lng: parseFloat(this.longitude), - }; - var markerPacketLatLng = { - lat: parseFloat(marker.packet.latitude), - lng: parseFloat(marker.packet.longitude), - }; - return trackdirect.services.distanceCalculator.getDistance( - packetLatLng, - markerPacketLatLng - ); -}; - -/** - * Returns true if both packet has same symbol as marker latest packet - * @param {trackdirect.models.Marker} marker - * @return {boolean} - */ -trackdirect.models.Packet.prototype.hasSameSymbol = function (marker) { - if ( - marker.packet.symbol == this.symbol && - marker.packet.symbol_table == this.symbol_table - ) { - return true; - } - return false; -}; - -/** - * Returns linkified packet.raw_path - * @return {string} - */ -trackdirect.models.Packet.prototype.getLinkifiedRawPath = function () { - if ( - typeof this.raw_path !== "undefined" && - this.raw_path !== null && - this.raw_path !== "" - ) { - var rawPath = escapeHtml(this.raw_path); - rawPath = "#" + rawPath + "#"; - for (var i = 0; i < this.station_id_path.length; i++) { - var relatedStationId = this.station_id_path[i]; - if ( - typeof this.station_name_path !== "undefined" && - this.station_name_path !== null - ) { - var relatedStationName = escapeHtml(this.station_name_path[i]); - var relatedStationNameReplacement = - '<a href="#" onclick="' + - " var relatedStationLatestPacket = trackdirect._map.markerCollection.getStationLatestPacket(" + - relatedStationId + - ");" + - " if (relatedStationLatestPacket !== null) {" + - " trackdirect.focusOnStation(" + - relatedStationId + - ", true);" + - " } else {" + - " alert('Can not go to " + - relatedStationName + - ", station has not been heard for a long time.');" + - " }" + - ' return false;">' + - relatedStationName + - "</a>"; - - rawPath = rawPath.replaceAll( - "#" + relatedStationName + ",", - "#" + relatedStationNameReplacement + "," - ); - rawPath = rawPath.replaceAll( - "#" + relatedStationName + "*", - "#" + relatedStationNameReplacement + "*" - ); - rawPath = rawPath.replaceAll( - "#" + relatedStationName + ":", - "#" + relatedStationNameReplacement + ":" - ); - rawPath = rawPath.replaceAll( - "#" + relatedStationName + "#", - "#" + relatedStationNameReplacement + "#" - ); - rawPath = rawPath.replaceAll( - "," + relatedStationName + ",", - "," + relatedStationNameReplacement + "," - ); - rawPath = rawPath.replaceAll( - "," + relatedStationName + "*", - "," + relatedStationNameReplacement + "*" - ); - rawPath = rawPath.replaceAll( - "," + relatedStationName + ":", - "," + relatedStationNameReplacement + ":" - ); - rawPath = rawPath.replaceAll( - "," + relatedStationName + "#", - "," + relatedStationNameReplacement + "#" - ); - } - } - rawPath = rawPath.replace(/#+$/, ""); - rawPath = rawPath.replace(/^#+/, ""); - var rawPathArray = rawPath.split(","); - if (rawPathArray.length > 0) { - var rawPath = - rawPathArray[0] + - " via " + - rawPathArray.join(",").replace(rawPathArray[0] + ",", ""); - } - return rawPath; - } - return null; -}; diff --git a/jslib/src/trackdirect/models/PhgCircle.js b/jslib/src/trackdirect/models/PhgCircle.js deleted file mode 100755 index 702923f..0000000 --- a/jslib/src/trackdirect/models/PhgCircle.js +++ /dev/null @@ -1,175 +0,0 @@ -/** - * Class trackdirect.models.PhgCircle - * @see https://developers.google.com/maps/documentation/javascript/reference#Circle - * @param {trackdirect.models.Packet} packet - * @param {trackdirect.models.Map} map - * @param {boolean} isHalf - */ -trackdirect.models.PhgCircle = function (packet, map, isHalf) { - this._defaultMap = map; - - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Circle.call(this, this._getGoogleCircleOptions(packet, isHalf)); - } else if (typeof L === "object") { - if (L.version <= "0.7.7") { - var range = this._getCircleRadius(packet, isHalf); - var center = this._getCircleCenter(packet, isHalf); - L.Circle.call( - this, - [center.lat, center.lng], - range, - this._getLeafletCircleOptions(packet, isHalf) - ); - } else { - L.Circle.call( - this, - this._getCircleCenter(packet, isHalf), - this._getLeafletCircleOptions(packet, isHalf) - ); - } - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.PhgCircle.prototype = Object.create( - google.maps.Circle.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.PhgCircle.prototype = Object.create(L.Circle.prototype); -} -trackdirect.models.PhgCircle.prototype.constructor = - trackdirect.models.PhgCircle; - -/** - * show the circle if it is not shown - */ -trackdirect.models.PhgCircle.prototype.show = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - } else if (typeof L === "object") { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - } -}; - -/** - * hide circle if it is visible - */ -trackdirect.models.PhgCircle.prototype.hide = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (this.getMap() !== null) { - this.setMap(null); - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - } -}; - -/** - * Get default options used for initializing circle - * @param {trackdirect.models.Packet} packet - * @param {boolean} isHalf - * @return {object} - */ -trackdirect.models.PhgCircle.prototype._getGoogleCircleOptions = function ( - packet, - isHalf -) { - var color = trackdirect.services.stationColorCalculator.getColor(packet); - var range = this._getCircleRadius(packet, isHalf); - var center = this._getCircleCenter(packet, isHalf); - - var options = { - strokeColor: color, - strokeOpacity: 0.6, - strokeWeight: 1, - fillColor: color, - fillOpacity: 0.3, - map: null, - center: center, - radius: range, - }; - - return options; -}; - -/** - * Get default options used for initializing circle - * @param {trackdirect.models.Packet} packet - * @param {boolean} isHalf - * @return {object} - */ -trackdirect.models.PhgCircle.prototype._getLeafletCircleOptions = function ( - packet, - isHalf -) { - var color = trackdirect.services.stationColorCalculator.getColor(packet); - var range = this._getCircleRadius(packet, isHalf); - var options = { - color: color, - opacity: 0.6, - weight: 1, - fillColor: color, - fillOpacity: 0.3, - radius: range, - }; - - return options; -}; - -/** - * Get circle radius based on packet - * @param {trackdirect.models.Packet} packet - * @param {boolean} isHalf - * @return {float} - */ -trackdirect.models.PhgCircle.prototype._getCircleRadius = function ( - packet, - isHalf -) { - var range = packet.getPHGRange(); - if (range === null) { - range = 0; - } - if (isHalf) { - range = range / 2; - } - return range; -}; - -/** - * Get circle center based on packet - * @param {trackdirect.models.Packet} packet - * @param {boolean} isHalf - * @return {object} - */ -trackdirect.models.PhgCircle.prototype._getCircleCenter = function ( - packet, - isHalf -) { - var direction = packet.getPhgDirectionDegree(); - var center = packet.getLatLngLiteral(); - if (direction != null) { - var range = packet.getPHGRange(); - if (range === null) { - range = 0; - } - - if (isHalf) { - range = range / 2; - } - - var distance = (range * 2) / 3 / 2; - center = trackdirect.services.distanceCalculator.getPositionByDistance( - center, - direction, - distance - ); - } - - return center; -}; diff --git a/jslib/src/trackdirect/models/RngCircle.js b/jslib/src/trackdirect/models/RngCircle.js deleted file mode 100755 index c236d33..0000000 --- a/jslib/src/trackdirect/models/RngCircle.js +++ /dev/null @@ -1,144 +0,0 @@ -/** - * Class trackdirect.models.RngCircle inherits google.maps.Circle - * @see https://developers.google.com/maps/documentation/javascript/reference#Circle - * @param {trackdirect.models.Packet} packet - * @param {trackdirect.models.Map} map - * @param {boolean} isHalf - */ -trackdirect.models.RngCircle = function (packet, map, isHalf) { - this._defaultMap = map; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Circle.call(this, this._getGoogleCircleOptions(packet, isHalf)); - } else if (typeof L === "object") { - var center = packet.getLatLngLiteral(); - if (L.version <= "0.7.7") { - var range = this._getCircleRadius(packet, isHalf); - L.Circle.call( - this, - [center.lat, center.lng], - range, - this._getLeafletCircleOptions(packet, isHalf) - ); - } else { - L.Circle.call( - this, - center, - this._getLeafletCircleOptions(packet, isHalf) - ); - } - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.RngCircle.prototype = Object.create( - google.maps.Circle.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.RngCircle.prototype = Object.create(L.Circle.prototype); -} -trackdirect.models.RngCircle.prototype.constructor = - trackdirect.models.RngCircle; - -/** - * show the circle if it is not shown - */ -trackdirect.models.RngCircle.prototype.show = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - } else if (typeof L === "object") { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - } -}; - -/** - * hide circle if it is visible - */ -trackdirect.models.RngCircle.prototype.hide = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (this.getMap() !== null) { - this.setMap(null); - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - } -}; - -/** - * Get default options used for initializing circle - * @param {trackdirect.models.Packet} packet - * @param {boolean} isHalf - * @return {object} - */ -trackdirect.models.RngCircle.prototype._getGoogleCircleOptions = function ( - packet, - isHalf -) { - var color = trackdirect.services.stationColorCalculator.getColor(packet); - var range = this._getCircleRadius(packet, isHalf); - - var options = { - strokeColor: color, - strokeOpacity: 0.6, - strokeWeight: 1, - fillColor: color, - fillOpacity: 0.3, - map: null, - center: packet.getLatLngLiteral(), - radius: range * 1000, - }; - - return options; -}; - -/** - * Get default options used for initializing circle - * @param {trackdirect.models.Packet} packet - * @param {boolean} isHalf - * @return {object} - */ -trackdirect.models.RngCircle.prototype._getLeafletCircleOptions = function ( - packet, - isHalf -) { - var color = trackdirect.services.stationColorCalculator.getColor(packet); - var range = this._getCircleRadius(packet, isHalf); - - var options = { - color: color, - opacity: 0.6, - weight: 1, - fillColor: color, - fillOpacity: 0.3, - radius: range * 1000, - }; - - return options; -}; - -/** - * Get circle radius based on packet - * @param {trackdirect.models.Packet} packet - * @param {boolean} isHalf - * @return {float} - */ -trackdirect.models.RngCircle.prototype._getCircleRadius = function ( - packet, - isHalf -) { - var range = packet.getRNGRange(); - if (range === null) { - range = 0; - } - if (isHalf) { - range = range / 2; - } - - return range; -}; diff --git a/jslib/src/trackdirect/models/Ruler.js b/jslib/src/trackdirect/models/Ruler.js deleted file mode 100755 index 85b47a0..0000000 --- a/jslib/src/trackdirect/models/Ruler.js +++ /dev/null @@ -1,302 +0,0 @@ -/** - * Class trackdirect.models.Ruler - * @param {int} defaultLength - * @param {trackdirect.models.Map} map - */ -trackdirect.models.Ruler = function (defaultLength, map) { - this._map = map; - - if (typeof google === "object" && typeof google.maps === "object") { - this._googleMapsInit(defaultLength); - this._addGoolgeMapsListeners(); - } else if (typeof L === "object") { - this.leafletInit(defaultLength); - this._addLeafletListeners(); - } -}; - -/** - * Init ruler for Gogle Maps - * @param {int} defaultLength - */ -trackdirect.models.Ruler.prototype._googleMapsInit = function (defaultLength) { - this.marker1 = new google.maps.Marker({ - position: trackdirect.services.distanceCalculator.getPositionByDistance( - this._map.getCenterLiteral(), - 270, - defaultLength / 2 - ), - draggable: true, - map: this._map, - }); - - this.marker2 = new google.maps.Marker({ - position: trackdirect.services.distanceCalculator.getPositionByDistance( - this._map.getCenterLiteral(), - 90, - defaultLength / 2 - ), - draggable: true, - map: this._map, - }); - - this.marker1.markerLabel = new trackdirect.models.Label( - { - position: this.marker1.getPosition(), - text: this._getDistance(this.marker1, this.marker2), - }, - this._map - ); - this.marker1.markerLabel.show(); - - this.marker2.markerLabel = new trackdirect.models.Label( - { - position: this.marker2.getPosition(), - text: this._getDistance(this.marker2, this.marker1), - }, - this._map - ); - this.marker2.markerLabel.show(); - - this.line = new google.maps.Polyline({ - path: [this.marker1.getPosition(), this.marker2.getPosition()], - strokeColor: "#ffff00", - strokeOpacity: 0.7, - strokeWeight: 6, - }); - this.line.setMap(this._map); -}; - -/** - * Init ruler for Leaflet - * @param {int} defaultLength - */ -trackdirect.models.Ruler.prototype.leafletInit = function (defaultLength) { - this.marker1 = new L.Marker( - trackdirect.services.distanceCalculator.getPositionByDistance( - this._map.getCenterLiteral(), - 270, - defaultLength / 2 - ), - { draggable: true } - ); - this.marker1.addTo(this._map); - - this.marker2 = new L.Marker( - trackdirect.services.distanceCalculator.getPositionByDistance( - this._map.getCenterLiteral(), - 90, - defaultLength / 2 - ), - { draggable: true } - ); - this.marker2.addTo(this._map); - - this.marker1.markerLabel = new trackdirect.models.Label( - { - position: this.marker1.getLatLng(), - text: this._getDistance(this.marker1, this.marker2), - }, - this._map - ); - this.marker1.markerLabel.show(); - - this.marker2.markerLabel = new trackdirect.models.Label( - { - position: this.marker2.getLatLng(), - text: this._getDistance(this.marker2, this.marker1), - }, - this._map - ); - this.marker2.markerLabel.show(); - - this.line = new L.Polyline( - [this.marker1.getLatLng(), this.marker2.getLatLng()], - { - color: "#ffff00", - opacity: 0.8, - weight: 6, - } - ); - this.line.addTo(this._map); -}; - -/** - * Show ruler - */ -trackdirect.models.Ruler.prototype.show = function () { - this.marker1.markerLabel.show(); - this.marker2.markerLabel.show(); - - if (typeof google === "object" && typeof google.maps === "object") { - this.marker1.setMap(this._map); - this.marker2.setMap(this._map); - this.line.setMap(this._map); - } else if (typeof L === "object") { - this.marker1.addTo(this._map); - this.marker2.addTo(this._map); - this.line.addTo(this._map); - } -}; - -/** - * Hide ruler - */ -trackdirect.models.Ruler.prototype.hide = function () { - this.marker1.markerLabel.hide(); - this.marker2.markerLabel.hide(); - - if (typeof google === "object" && typeof google.maps === "object") { - this.marker1.setMap(null); - this.marker2.setMap(null); - this.line.setMap(null); - } else if (typeof L === "object") { - this._map.removeLayer(this.marker1); - this._map.removeLayer(this.marker2); - this._map.removeLayer(this.line); - } -}; - -/** - * Add listerners - */ -trackdirect.models.Ruler.prototype._addGoolgeMapsListeners = function () { - var me = this; - google.maps.event.addListener(this.marker1, "drag", function () { - me.line.setPath([me.marker1.getPosition(), me.marker2.getPosition()]); - me._updateLabels(); - }); - google.maps.event.addListener(this.marker2, "drag", function () { - me.line.setPath([me.marker1.getPosition(), me.marker2.getPosition()]); - me._updateLabels(); - }); -}; - -/** - * Add listerners - */ -trackdirect.models.Ruler.prototype._addLeafletListeners = function () { - var me = this; - this.marker1.on("drag", function (e) { - me.line.setLatLngs([me.marker1.getLatLng(), me.marker2.getLatLng()]); - me._updateLabels(); - }); - this.marker2.on("drag", function (e) { - me.line.setLatLngs([me.marker1.getLatLng(), me.marker2.getLatLng()]); - me._updateLabels(); - }); -}; - -/** - * Update labels with new text and new position - */ -trackdirect.models.Ruler.prototype._updateLabels = function () { - this.marker1.markerLabel.hide(); - this.marker2.markerLabel.hide(); - - if (typeof google === "object" && typeof google.maps === "object") { - this.marker1.markerLabel = new trackdirect.models.Label( - { - position: this.marker1.getPosition(), - text: this._getDistance(this.marker1, this.marker2), - }, - this._map - ); - this.marker2.markerLabel = new trackdirect.models.Label( - { - position: this.marker2.getPosition(), - text: this._getDistance(this.marker2, this.marker1), - }, - this._map - ); - } else if (typeof L === "object") { - this.marker1.markerLabel = new trackdirect.models.Label( - { - position: this.marker1.getLatLng(), - text: this._getDistance(this.marker1, this.marker2), - }, - this._map - ); - this.marker2.markerLabel = new trackdirect.models.Label( - { - position: this.marker2.getLatLng(), - text: this._getDistance(this.marker2, this.marker1), - }, - this._map - ); - } - - this.marker1.markerLabel.show(); - this.marker2.markerLabel.show(); -}; - -/** - * Get distance string for ruler - * @param {Marker} marker1 - * @param {Marker} marker2 - * @return {string} - */ -trackdirect.models.Ruler.prototype._getDistance = function (marker1, marker2) { - var p1 = this._getPositionLiteral(marker1); - var p2 = this._getPositionLiteral(marker2); - var distance = Math.round( - trackdirect.services.distanceCalculator.getDistance(p1, p2), - 0 - ); - if (distance > 99999) { - if (this._map.state.useImperialUnit) { - distance = - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - distance / 1000 - ) - ).toString() + " miles"; - } else { - distance = Math.round(distance / 1000).toString() + " km"; - } - } else if (distance > 999) { - if (this._map.state.useImperialUnit) { - distance = - ( - Math.round( - trackdirect.services.imperialConverter.convertKilometerToMile( - distance / 1000 - ) * 10 - ) / 10 - ).toString() + " miles"; - } else { - distance = (Math.round(distance / 100) / 10).toString() + " km"; - } - } else { - distance = distance.toString() + " m"; - } - var bearing = Math.round( - trackdirect.services.distanceCalculator.getBearing(p2, p1), - 0 - ).toString(); - return bearing + "º " + distance; -}; - -/** - * Get position literal - * @param {Marker} marker - * @return LatLngLiteral - */ -trackdirect.models.Ruler.prototype._getPositionLiteral = function (marker) { - if (typeof google === "object" && typeof google.maps === "object") { - var latLng = marker.getPosition(); - if (typeof latLng !== "undefined" && typeof latLng.lat === "function") { - return { lat: latLng.lat(), lng: latLng.lng() }; - } else { - return latLng; - } - } else if (typeof L === "object") { - var latLng = marker.getLatLng(); - if (typeof latLng !== "undefined") { - return { lat: latLng.lat, lng: latLng.lng }; - } else { - return latLng; - } - } - return null; -}; diff --git a/jslib/src/trackdirect/models/StationCoveragePolygon.js b/jslib/src/trackdirect/models/StationCoveragePolygon.js deleted file mode 100755 index 14e5c83..0000000 --- a/jslib/src/trackdirect/models/StationCoveragePolygon.js +++ /dev/null @@ -1,505 +0,0 @@ -/** - * Class trackdirect.models.StationCoveragePolygon - * @param {LatLngLiteral} center - * @param {trackdirect.models.Map} map - * @param {boolean} tryToShowCoveragePolygon - */ -trackdirect.models.StationCoveragePolygon = function ( - center, - map, - tryToShowCoveragePolygon -) { - tryToShowCoveragePolygon = - typeof tryToShowCoveragePolygon !== "undefined" - ? tryToShowCoveragePolygon - : true; - this._showPolygon = tryToShowCoveragePolygon; - - this._map = map; - this._center = center; - this._isRequestedToBeVisible = false; - - this._polygon = null; - this._polygonCoordinates = null; - - this._heatmapCoordinates = null; - this._heatmap = null; - - this._tdEventListeners = {}; - this._tdEventListenersOnce = {}; - - // I recommend ignoring positions with a very long distance. - // Ignoring everything with a distance longer than 1000km is reasonable. - this._upperMaxRangeInMeters = 1000 * 1000; - - // To get a smooth ploygon we add som padding to the convex hull positions. - this._paddingInPercentOfMaxRange = 10; - this._paddingMinInMeters = 1000; -}; - -/** - * Set coverage data - * @param {array} data - * @param {int} percentile - */ -trackdirect.models.StationCoveragePolygon.prototype.setData = function (data, percentile) { - this._addParametersToData(data); - this._heatmapCoordinates = this._getCoordinates(data); - - if (this._showPolygon) { - var maxRange = this._getCoveragePolygonMaxRange(data, percentile); - if (maxRange <= 0) { - this._showPolygon = false; - } else { - this._polygonCoordinates = this._getConvexHullCoordinates(data, maxRange); - } - } - - if (typeof google === "object" && typeof google.maps === "object") { - this._googleMapsInit(); - } else if (typeof L === "object") { - this._leafletInit(); - } -}; - -/** - * Add listener to events - * @param {string} event - * @param {string} handler - */ -trackdirect.models.StationCoveragePolygon.prototype.addTdListener = function ( - event, - handler, - execOnce -) { - execOnce = typeof execOnce !== "undefined" ? execOnce : false; - - if (execOnce) { - if (!(event in this._tdEventListenersOnce)) { - this._tdEventListenersOnce[event] = []; - } - this._tdEventListenersOnce[event].push(handler); - } else { - if (!(event in this._tdEventListeners)) { - this._tdEventListeners[event] = []; - } - this._tdEventListeners[event].push(handler); - } -}; - -/** - * Returns true if polygon has an area - * @return {boolean} - */ -trackdirect.models.StationCoveragePolygon.prototype.hasContent = function () { - if ( - this._heatmapCoordinates !== null && - this._heatmapCoordinates.length > 0 - ) { - return true; - } - return false; -}; - -/** - * Returns true if polygon is visible - * @return {boolean} - */ -trackdirect.models.StationCoveragePolygon.prototype.isRequestedToBeVisible = - function () { - return this._isRequestedToBeVisible; - }; - -/** - * Request polygon to be shown when complete - */ -trackdirect.models.StationCoveragePolygon.prototype.showWhenDone = function () { - this._isRequestedToBeVisible = true; -}; - -/** - * Show coverage - */ -trackdirect.models.StationCoveragePolygon.prototype.show = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (this._polygon !== null) { - this._polygon.setMap(this._map); - } - if (this._heatmap !== null) { - this._heatmap.setMap(this._map); - } - } else if (typeof L === "object") { - if (this._polygon !== null) { - this._polygon.addTo(this._map); - } - if (this._heatmap !== null) { - this._heatmap.addTo(this._map); - } - } - this._isRequestedToBeVisible = true; - - // show will be called again when data has been updated - if (this._showPolygon && this._polygonCoordinates !== null) { - this._emitTdEventListeners("visible"); - } else if (this._heatmapCoordinates !== null) { - this._emitTdEventListeners("visible"); - } -}; - -/** - * Hide coverage - * @param {boolean} stillMarkAsVisible - */ -trackdirect.models.StationCoveragePolygon.prototype.hide = function ( - stillMarkAsVisible -) { - stillMarkAsVisible = - typeof stillMarkAsVisible !== "undefined" ? stillMarkAsVisible : false; - - if (typeof google === "object" && typeof google.maps === "object") { - if (this._polygon !== null) { - this._polygon.setMap(null); - } - if (this._heatmap !== null) { - this._heatmap.setMap(null); - } - } else if (typeof L === "object") { - if (this._polygon !== null) { - this._map.removeLayer(this._polygon); - } - if (this._heatmap !== null) { - this._map.removeLayer(this._heatmap); - } - } - if (!stillMarkAsVisible) { - this._isRequestedToBeVisible = false; - } - this._emitTdEventListeners("hidden"); -}; - -/** - * Init function for Gogle Maps - */ -trackdirect.models.StationCoveragePolygon.prototype._googleMapsInit = - function () { - if ( - this._polygonCoordinates !== null && - this._polygonCoordinates.length > 0 - ) { - this._polygon = new google.maps.Polygon({ - paths: this._polygonCoordinates, - strokeColor: "#0000FF", - strokeOpacity: 0, - strokeWeight: 0, - fillColor: "#0000FF", - fillOpacity: 0.2, - }); - } - - if ( - this._heatmapCoordinates !== null && - this._heatmapCoordinates.length > 0 - ) { - var data = []; - for (var i = 0; i < this._heatmapCoordinates.length; i++) { - data.push({ location: this._heatmapCoordinates[i], weight: 1 }); - } - - this._heatmap = new google.maps.visualization.HeatmapLayer({ - data: data, - radius: 8, - maxIntensity: 5, - gradient: [ - "rgba(0, 255, 255, 0)", - "rgba(0, 255, 255, 1)", - "rgba(0, 191, 255, 1)", - "rgba(0, 127, 255, 1)", - "rgba(0, 63, 255, 1)", - "rgba(0, 0, 255, 1)", - "rgba(0, 0, 223, 1)", - "rgba(0, 0, 191, 1)", - "rgba(0, 0, 159, 1)", - "rgba(0, 0, 127, 1)", - "rgba(63, 0, 91, 1)", - "rgba(127, 0, 63, 1)", - "rgba(191, 0, 31, 1)", - "rgba(255, 0, 0, 1)", - ], - map: null, - }); - } - }; - -/** - * Init function for Leaflet - */ -trackdirect.models.StationCoveragePolygon.prototype._leafletInit = function () { - if ( - this._polygonCoordinates !== null && - this._polygonCoordinates.length > 0 - ) { - this._polygon = new L.polygon(this._polygonCoordinates, { - color: "#0000FF", - opacity: 0, - weight: 0, - fillColor: "#0000FF", - fillOpacity: 0.2, - }); - } - - if ( - this._heatmapCoordinates !== null && - this._heatmapCoordinates.length > 0 - ) { - var data = []; - for (var i = 0; i < this._heatmapCoordinates.length; i++) { - data.push([ - this._heatmapCoordinates[i].lat, - this._heatmapCoordinates[i].lng, - 10, - ]); - } - this._heatmap = L.heatLayer(this._heatmapCoordinates, { - minOpacity: 0.35, - radius: 6, - blur: 4, - }); - } -}; - -/** - * Get convex hull coordinates - * @param {array} data - * @param {int} maxRange - * @return {array} - */ -trackdirect.models.StationCoveragePolygon.prototype._getConvexHullCoordinates = - function (data, maxRange) { - var positions = this._getFilteredPositions(data, maxRange); - positions.push(this._center); - - var xyPositions = this._convertToXYPos(positions); - var convexHullXYPositions = convexhull.makeHull(xyPositions); - - // Calc padding - var latLngPadding = - this._paddingInPercentOfMaxRange * 0.01 * maxRange * 0.000009; - var latLngPaddingMin = this._paddingMinInMeters * 0.000009; - if (isNaN(latLngPadding) || latLngPadding < latLngPaddingMin) { - latLngPadding = latLngPaddingMin; - } - - // Add padding - var xyPositionsWithPadding = []; - for (var i = 0; i < convexHullXYPositions.length; i++) { - xyPositionsWithPadding.push(convexHullXYPositions[i]); - - for (var angle = 0; angle < 360; angle += 10) { - var x = - convexHullXYPositions[i]["x"] + - latLngPadding * Math.cos((angle * Math.PI) / 180); - var y = - convexHullXYPositions[i]["y"] + - latLngPadding * Math.sin((angle * Math.PI) / 180) * 2; - if (!isNaN(x) && !isNaN(y)) { - xyPositionsWithPadding.push({ x: x, y: y }); - } - } - } - var convexHullXYPositionsWithPadding = convexhull.makeHull( - xyPositionsWithPadding - ); - - // Convert to LatLng and return - return this._convertToLatLngPos(convexHullXYPositionsWithPadding); - }; - -/** - * Get an array with valid positions - * @param {array} data - * @param {int} maxRange - * @return {array} - */ -trackdirect.models.StationCoveragePolygon.prototype._getFilteredPositions = - function (data, maxRange) { - var result = []; - - for (var i = 0; i < data.length; i++) { - if (typeof maxRange !== "undefined" && data[i].distance > maxRange) { - continue; - } - - result.push(data[i].latLngLiteral); - } - - return result; - }; - -/** - * Calculate coverage polygon max range - * @param {array} data - * @param {int} percentile - * @return {int} - */ -trackdirect.models.StationCoveragePolygon.prototype._getCoveragePolygonMaxRange = - function (data, percentile) { - var maxRange = this._getDistancePercentile( - data, - percentile, - this._upperMaxRangeInMeters - ); - if (isNaN(maxRange)) { - maxRange = 0; - } - - return maxRange; - }; - -/** - * Calculate the specified percentile - * @param {array} data - * @param {int} percentile - * @param {int} upperMaxRange - * @return {int} - */ -trackdirect.models.StationCoveragePolygon.prototype._getDistancePercentile = - function (data, percentile, upperMaxRange) { - var values = []; - for (var i = 0; i < data.length; i++) { - if (data[i].distance + 0 < upperMaxRange) { - values.push(data[i].distance); - } - } - - values.sort(function (a, b) { - return a - b; - }); - - var index = (percentile / 100) * values.length; - var result; - if (Math.floor(index) == index) { - result = (values[index - 1] + values[index]) / 2; - } else { - result = values[Math.floor(index)]; - } - - return result; - }; - -/** - * Calculate number of values - * @param {array} data - * @param {int} maxRange - * @return {int} - */ -trackdirect.models.StationCoveragePolygon.prototype._getNumberOfValues = - function (data, maxRange) { - var counter = 0; - for (var i = 0; i < data.length; i++) { - if (data[i].distance > maxRange) { - continue; - } - - counter++; - } - - return counter; - }; - -/** - * Convert to xy positions - * @param {array} data - * @return {array} - */ -trackdirect.models.StationCoveragePolygon.prototype._convertToXYPos = function ( - positions -) { - var result = []; - for (var i = 0; i < positions.length; i++) { - result.push({ x: positions[i].lat, y: positions[i].lng }); - } - return result; -}; - -/** - * Convert to lat/lng positions - * @param {array} data - * @return {array} - */ -trackdirect.models.StationCoveragePolygon.prototype._convertToLatLngPos = - function (positions) { - var result = []; - for (var i = 0; i < positions.length; i++) { - result.push({ lat: positions[i].x, lng: positions[i].y }); - } - return result; - }; - -/** - * Get an array of all coordinates for the specified move type - * @param {array} data - * @return {array} - */ -trackdirect.models.StationCoveragePolygon.prototype._getCoordinates = function ( - data -) { - var result = []; - - for (var j = 0; j < data.length; j++) { - if (typeof google === "object" && typeof google.maps === "object") { - var position = new google.maps.LatLng( - parseFloat(data[j]["latitude"]), - parseFloat(data[j]["longitude"]) - ); - } else { - var position = { - lat: parseFloat(data[j]["latitude"]), - lng: parseFloat(data[j]["longitude"]), - }; - } - result.push(position); - } - - return result; -}; - -/** - * Add the angle paramter for each coverage position - * @param {array} data - */ -trackdirect.models.StationCoveragePolygon.prototype._addParametersToData = - function (data) { - for (var j = 0; j < data.length; j++) { - var latLngLiteral = { - lat: parseFloat(data[j].latitude), - lng: parseFloat(data[j].longitude), - }; - data[j].latLngLiteral = latLngLiteral; - data[j].angle = trackdirect.services.distanceCalculator.getBearing( - this._center, - latLngLiteral - ); - } - }; - -/** - * Emit all event listeners for a specified event - * @param {string} event - * @param {object} arg - */ -trackdirect.models.StationCoveragePolygon.prototype._emitTdEventListeners = - function (event, arg) { - if (event in this._tdEventListeners) { - for (var i = 0; i < this._tdEventListeners[event].length; i++) { - this._tdEventListeners[event][i](arg); - } - } - - if (event in this._tdEventListenersOnce) { - var eventListenersOnce = this._tdEventListenersOnce[event].splice(0); - this._tdEventListenersOnce[event] = []; - for (var i = 0; i < eventListenersOnce.length; i++) { - eventListenersOnce[i](arg); - } - } - }; diff --git a/jslib/src/trackdirect/models/TailPolyline.js b/jslib/src/trackdirect/models/TailPolyline.js deleted file mode 100755 index 4b85238..0000000 --- a/jslib/src/trackdirect/models/TailPolyline.js +++ /dev/null @@ -1,247 +0,0 @@ -/** - * Class trackdirect.models.TailPolyline - * @see https://developers.google.com/maps/documentation/javascript/reference#Polyline - * @param {string} color - * @param {trackdirect.models.Map} map - */ -trackdirect.models.TailPolyline = function (color, map) { - this._defaultMap = map; - this.markerIdKey = null; - this.ownerMarkerIdKey = null; - this.relatedMarkerIdKey = null; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Polyline.call(this, this._getGooglePolylineOptions(color)); - } else if (typeof L === "object") { - L.Polyline.call(this, {}, this._getLeafletPolylineOptions(color)); - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.TailPolyline.prototype = Object.create( - google.maps.Polyline.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.TailPolyline.prototype = Object.create( - L.Polyline.prototype - ); -} -trackdirect.models.TailPolyline.prototype.constructor = - trackdirect.models.TailPolyline; - -/** - * Get latLng object by index - */ -trackdirect.models.TailPolyline.prototype.getPathItem = function (index) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - return path.getAt(index); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - if (typeof list[index] !== "undefined") { - return list[index]; - } else { - return null; - } - } - return null; -}; - -/** - * Push latLng object to path - */ -trackdirect.models.TailPolyline.prototype.pushPathItem = function (latLng) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - path.push(latLng); - } else if (typeof L === "object") { - this.addLatLng(latLng); - } -}; - -/** - * Remove latLng object by index - */ -trackdirect.models.TailPolyline.prototype.removePathItem = function (index) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - path.removeAt(index); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - if (typeof list[index] !== "undefined") { - list.splice(index, 1); - this.setLatLngs(list); - } - } -}; - -/** - * Get Path length - */ -trackdirect.models.TailPolyline.prototype.getPathLength = function (index) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - return path.getLength(); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - return list.length; - } -}; - -/** - * Get latLng array - */ -trackdirect.models.TailPolyline.prototype.getPath = function () { - if (typeof google === "object" && typeof google.maps === "object") { - return google.maps.Polyline.prototype.getPath.call(this); - } else if (typeof L === "object") { - return this.getLatLngs(); - } - return []; -}; - -/** - * get polyline currently active Map - * @return {google.maps.Map} - */ -trackdirect.models.TailPolyline.prototype.getMap = function () { - if (typeof google === "object" && typeof google.maps === "object") { - var map = google.maps.Polyline.prototype.getMap.call(this); - if (typeof map !== "undefined") { - return map; - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - return this._defaultMap; - } - } - return null; -}; - -/** - * Set markerIdKey - * @param {int} markerIdKey - */ -trackdirect.models.TailPolyline.prototype.setMarkerIdKey = function ( - markerIdKey -) { - // Two names for the same thing... - this.markerIdKey = markerIdKey; - this.ownerMarkerIdKey = markerIdKey; - this._addInfoWindowListener(markerIdKey); -}; - -/** - * Set related markerIdKey - * @param {int} markerIdKey - */ -trackdirect.models.TailPolyline.prototype.setRelatedMarkerIdKey = function ( - markerIdKey -) { - this.relatedMarkerIdKey = markerIdKey; -}; - -/** - * Show polylne on default map - */ -trackdirect.models.TailPolyline.prototype.show = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - } else if (typeof L === "object") { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - } -}; - -/** - * Hide polylne transmit polyline - */ -trackdirect.models.TailPolyline.prototype.hide = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (this.getMap() !== null) { - this.setMap(null); - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - } -}; - -/** - * Add marker to polyline - * @param {trackdirect.models.Marker} marker - */ -trackdirect.models.TailPolyline.prototype.addMarker = function (marker) { - if (typeof google === "object" && typeof google.maps === "object") { - var latLng = new google.maps.LatLng( - parseFloat(marker.packet.latitude), - parseFloat(marker.packet.longitude) - ); - latLng.marker = marker; - this.pushPathItem(latLng); - } else if (typeof L === "object") { - var latLng = new L.latLng( - parseFloat(marker.packet.latitude), - parseFloat(marker.packet.longitude) - ); - latLng.marker = marker; - this.addLatLng(latLng); - } -}; - -/** - * Add infowindow listener - * @param {int} markerIdKey - */ -trackdirect.models.TailPolyline.prototype._addInfoWindowListener = function ( - markerIdKey -) { - var me = this; - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.event.addListener(this, "click", function (event) { - var marker = me._defaultMap.markerCollection.getMarker(markerIdKey); - me._defaultMap.openPolylineInfoWindow(marker, event.latLng); - }); - } else if (typeof L === "object") { - this.on("click", function (event) { - var marker = me._defaultMap.markerCollection.getMarker(markerIdKey); - me._defaultMap.openPolylineInfoWindow(marker, event.latlng); - }); - } -}; - -/** - * Get a suitable google polyline options object - * @param {string} color - * @return {object} - */ -trackdirect.models.TailPolyline.prototype._getGooglePolylineOptions = function ( - color -) { - return { - geodesic: false, - strokeOpacity: 0.6, - strokeWeight: 4, - strokeColor: color, - map: null, - zIndex: 100, - }; -}; - -/** - * Get a suitable leaflet polyline options object - * @param {string} color - * @return {object} - */ -trackdirect.models.TailPolyline.prototype._getLeafletPolylineOptions = - function (color) { - return { - opacity: 0.7, - weight: 4, - color: color, - }; - }; diff --git a/jslib/src/trackdirect/models/TransmitAnimation.js b/jslib/src/trackdirect/models/TransmitAnimation.js deleted file mode 100755 index a37e6ba..0000000 --- a/jslib/src/trackdirect/models/TransmitAnimation.js +++ /dev/null @@ -1,163 +0,0 @@ -/** - * Class trackdirect.models.TransmitAnimation inherits google.maps.Marker - * @see https://developers.google.com/maps/documentation/javascript/reference#Marker - * @param {trackdirect.models.Marker} marker - * @param {trackdirect.models.Map} map - */ -trackdirect.models.TransmitAnimation = function (marker, map) { - this._map = map; - this._marker = marker; - this.init(); -}; - -/** - * Show transmit animation - */ -trackdirect.models.TransmitAnimation.prototype.show = function () { - this._startAnimation(); -}; - -/** - * Hide transmit animation - */ -trackdirect.models.TransmitAnimation.prototype.hide = function () { - if (typeof google === "object" && typeof google.maps === "object") { - this.iconMarkers[1].setMap(null); - this.iconMarkers[2].setMap(null); - this.iconMarkers[3].setMap(null); - } else if (typeof L === "object") { - this._map.removeLayer(this.iconMarkers[1]); - this._map.removeLayer(this.iconMarkers[2]); - this._map.removeLayer(this.iconMarkers[3]); - } - this.marker.transmitPolyLine.hide(); -}; - -/** - * Show packet send animation - */ -trackdirect.models.TransmitAnimation.prototype.init = function () { - var newLatLng = this._marker.packet.getLatLngLiteral(); - this._marker.transmitPolyLine = new trackdirect.models.TransmitPolyline( - this._marker.packet, - this._map - ); - this.iconMarkers = []; - for (var i = 1; i <= 3; i++) { - var icon = this._getIcon(i); - if (typeof google === "object" && typeof google.maps === "object") { - var iconMarker = new google.maps.Marker({ - position: newLatLng, - zIndex: this._map.state.currentMarkerZindex, - icon: icon, - opacity: 0.6, - }); - } else if (typeof L === "object") { - var iconMarker = new L.Marker(newLatLng, { - zIndexOffset: this._map.state.currentMarkerZindex, - icon: icon, - opacity: 0.6, - }); - } - this.iconMarkers[i] = iconMarker; - } -}; - -/** - * Get transmit icon - * @param {int} index - * @return {object} - */ -trackdirect.models.TransmitAnimation.prototype._getIcon = function (index) { - if (typeof google === "object" && typeof google.maps === "object") { - var icon = { - url: - trackdirect.settings.baseUrl + - trackdirect.settings.imagesBaseDir + - "transmit" + - index + - ".png", - size: new google.maps.Size(60, 60), - origin: new google.maps.Point(0, 0), - anchor: new google.maps.Point(30, 30), - }; - } else if (typeof L === "object") { - var icon = L.icon({ - iconUrl: - trackdirect.settings.baseUrl + - trackdirect.settings.imagesBaseDir + - "transmit" + - index + - ".png", - iconSize: [60, 60], - iconAnchor: [30, 30], - }); - } - return icon; -}; - -/** - * Start the previously created activity animation - * @param {object} marker - * @param {array} iconMarkers - */ -trackdirect.models.TransmitAnimation.prototype._startAnimation = function () { - var me = this; - me._showIconMarker(1); - - window.setTimeout(function () { - me._showIconMarker(2); - }, 150); - - window.setTimeout(function () { - me._showIconMarker(3); - - if (me._marker.transmitPolyLine !== null) { - me._marker.transmitPolyLine.show(); - } - }, 300); - - window.setTimeout(function () { - me._hideIconMarker(1); - }, 800); - - window.setTimeout(function () { - me._hideIconMarker(2); - }, 900); - - window.setTimeout(function () { - me._hideIconMarker(3); - - if (me._marker.transmitPolyLine != null) { - me._marker.transmitPolyLine.hide(4000); - } - }, 1000); -}; - -/** - * Show icon marker with specified index - * @param {int} index - */ -trackdirect.models.TransmitAnimation.prototype._showIconMarker = function ( - index -) { - if (typeof google === "object" && typeof google.maps === "object") { - this.iconMarkers[index].setMap(this._map); - } else if (typeof L === "object") { - this.iconMarkers[index].addTo(this._map); - } -}; - -/** - * Hide icon marker with specified index - * @param {int} index - */ -trackdirect.models.TransmitAnimation.prototype._hideIconMarker = function ( - index -) { - if (typeof google === "object" && typeof google.maps === "object") { - this.iconMarkers[index].setMap(null); - } else if (typeof L === "object") { - this._map.removeLayer(this.iconMarkers[index]); - } -}; diff --git a/jslib/src/trackdirect/models/TransmitPolyline.js b/jslib/src/trackdirect/models/TransmitPolyline.js deleted file mode 100755 index 31abeac..0000000 --- a/jslib/src/trackdirect/models/TransmitPolyline.js +++ /dev/null @@ -1,334 +0,0 @@ -/** - * Class trackdirect.models.TransmitPolyline inherits google.maps.Polyline - * @see https://developers.google.com/maps/documentation/javascript/reference#Polyline - * @param {trackdirect.models.Marker} marker - * @param {trackdirect.models.Map} map - */ -trackdirect.models.TransmitPolyline = function (packet, map) { - this._packet = packet; - this._defaultMap = map; - this._relatedMarkerIdKeys = []; - - // Call the parent constructor - if (typeof google === "object" && typeof google.maps === "object") { - google.maps.Polyline.call(this, this._getGoolgePolylineOptions()); - } else if (typeof L === "object") { - L.Polyline.call(this, {}, this._getLeafletPolylineOptions()); - this.setLatLngs(this.getCoordinates()); - } -}; -if (typeof google === "object" && typeof google.maps === "object") { - trackdirect.models.TransmitPolyline.prototype = Object.create( - google.maps.Polyline.prototype - ); -} else if (typeof L === "object") { - trackdirect.models.TransmitPolyline.prototype = Object.create( - L.Polyline.prototype - ); -} -trackdirect.models.TransmitPolyline.prototype.constructor = - trackdirect.models.TransmitPolyline; - -/** - * Get latLng object by index - */ -trackdirect.models.TransmitPolyline.prototype.getPathItem = function (index) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - return path.getAt(index); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - if (typeof list[index] !== "undefined") { - return list[index]; - } else { - return null; - } - } - return null; -}; - -/** - * Push latLng object to path - */ -trackdirect.models.TransmitPolyline.prototype.pushPathItem = function (latLng) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - path.push(latLng); - } else if (typeof L === "object") { - this.addLatLng(latLng); - } -}; - -/** - * Remove latLng object by index - */ -trackdirect.models.TransmitPolyline.prototype.removePathItem = function ( - index -) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - path.removeAt(index); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - if (typeof list[index] !== "undefined") { - list.splice(index, 1); - this.setLatLngs(list); - } - } -}; - -/** - * Get Path length - */ -trackdirect.models.TransmitPolyline.prototype.getPathLength = function (index) { - if (typeof google === "object" && typeof google.maps === "object") { - var path = google.maps.Polyline.prototype.getPath.call(this); - return path.getLength(); - } else if (typeof L === "object") { - var list = this.getLatLngs(); - return list.length; - } -}; - -/** - * Get latLng array - */ -trackdirect.models.TransmitPolyline.prototype.getPath = function () { - if (typeof google === "object" && typeof google.maps === "object") { - return google.maps.Polyline.prototype.getPath.call(this); - } else if (typeof L === "object") { - return this.getLatLngs(); - } - return []; -}; - -/** - * Get Polyline currently active Map - * @return {google.maps.Map} - */ -trackdirect.models.TransmitPolyline.prototype.getMap = function () { - if (typeof google === "object" && typeof google.maps === "object") { - var map = google.maps.Polyline.prototype.getMap.call(this); - if (typeof map !== "undefined") { - return map; - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - return this._defaultMap; - } - } - return null; -}; - -/** - * Show Polyline on default map - */ -trackdirect.models.TransmitPolyline.prototype.show = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() === "undefined" || this.getMap() === null) { - this.setMap(this._defaultMap); - } - } else if (typeof L === "object") { - if (!this._defaultMap.hasLayer(this)) { - this.addTo(this._defaultMap); - } - } - - for (var i = 0; i < this._relatedMarkerIdKeys.length; i++) { - var relatedMarkerIdKey = this._relatedMarkerIdKeys[i]; - if ( - this._defaultMap.markerCollection.isExistingMarker(relatedMarkerIdKey) - ) { - var relatedMarker = - this._defaultMap.markerCollection.getMarker(relatedMarkerIdKey); - relatedMarker.show(); - relatedMarker.showLabel(); - } - } -}; - -/** - * Hide transmit polyline - * @param {int} delayInMilliSeconds - */ -trackdirect.models.TransmitPolyline.prototype.hide = function ( - delayInMilliSeconds -) { - if (typeof google === "object" && typeof google.maps === "object") { - if (this.getMap() !== null) { - this.setMap(null); - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - this._defaultMap.removeLayer(this); - } - } - - for (var i = 0; i < this._relatedMarkerIdKeys.length; i++) { - var relatedMarkerIdKey = this._relatedMarkerIdKeys[i]; - - if ( - this._defaultMap.markerCollection.isExistingMarker(relatedMarkerIdKey) - ) { - var relatedMarker = - this._defaultMap.markerCollection.getMarker(relatedMarkerIdKey); - if (relatedMarker !== null && relatedMarker.getMap() !== null) { - relatedMarker.hide(delayInMilliSeconds, true); - } - } - } -}; - -/** - * Returns true if marker is visible - * @return {boolean} - */ -trackdirect.models.TransmitPolyline.prototype.isVisible = function () { - if (typeof google === "object" && typeof google.maps === "object") { - if (typeof this.getMap() !== "undefined" && this.getMap() !== null) { - return true; - } - } else if (typeof L === "object") { - if (this._defaultMap.hasLayer(this)) { - return true; - } - } - return false; -}; - -/** - * Get a suitable google polyline options object - * @return {object} - */ -trackdirect.models.TransmitPolyline.prototype._getGoolgePolylineOptions = - function () { - var lineCoordinates = this.getCoordinates(); - if (lineCoordinates.length <= 1) { - lineCoordinates = []; - } - - var lineSymbol = { - path: "M 0,-0.1 0,0", - strokeOpacity: 0.7, - scale: 3, - }; - - return { - path: lineCoordinates, - strokeOpacity: 0, - strokeColor: "#0000ff", - icons: [ - { - icon: lineSymbol, - offset: "0px", - repeat: "5px", - }, - ], - map: null, - zIndex: 100, - }; - }; - -/** - * Get a suitable leaflet polyline options object - * @return {object} - */ -trackdirect.models.TransmitPolyline.prototype._getLeafletPolylineOptions = - function () { - return { - opacity: 0.6, - weight: 3, - color: "#0000ff", - dashArray: "1,5", - lineCap: "round", - lineJoin: "round", - }; - }; - -/** - * Returns coordinates for the transmit polyline - * @return {array} - */ -(trackdirect.models.TransmitPolyline.prototype.getCoordinates = function () { - // First we try to find other position by looking at station markers on map - // This is better if the receiving stations has moved - var lineCoordinates = this.getCoordinatesByStationMarkers(); - if (lineCoordinates.length < this._packet.station_location_path.length + 1) { - lineCoordinates = this.getCoordinatesByPositions(); - } - return lineCoordinates; -}), - /** - * Returns coordinates for the transmit polyline by looking at station markers - * @return {array} - */ - (trackdirect.models.TransmitPolyline.prototype.getCoordinatesByStationMarkers = - function () { - var lineCoordinates = []; - var startLatLng = this._packet.getLatLngLiteral(); - lineCoordinates.push(startLatLng); - - for (var i = 0; i < this._packet.station_id_path.length; i++) { - var stationId = this._packet.station_id_path[i]; - var stationMarkerIdKey = null; - var stationMarker = null; - var stationDistance = null; - var stationLatLng = null; - - for (var pointMarkerIdKey in this._defaultMap.markerCollection.getStationMarkerIdKeys( - stationId - )) { - var pointMarker = - this._defaultMap.markerCollection.getMarker(pointMarkerIdKey); - if (pointMarker !== null) { - var pointLatLng = pointMarker.packet.getLatLngLiteral(); - var distance = trackdirect.services.distanceCalculator.getDistance( - startLatLng, - pointLatLng - ); - - if (stationMarker === null || distance < stationDistance) { - stationMarkerIdKey = pointMarkerIdKey; - stationMarker = pointMarker; - stationDistance = distance; - stationLatLng = pointLatLng; - } - } - } - - if (stationLatLng !== null) { - lineCoordinates.push(stationLatLng); - this._relatedMarkerIdKeys.push(stationMarkerIdKey); - } - } - return lineCoordinates; - }), - /** - * Returns coordinates for the transmit polyline by looking at received positions - * @return {array} - */ - (trackdirect.models.TransmitPolyline.prototype.getCoordinatesByPositions = - function () { - var lineCoordinates = []; - var startLatLng = this._packet.getLatLngLiteral(); - lineCoordinates.push(startLatLng); - - if ( - lineCoordinates.length < - this._packet.station_location_path.length + 1 - ) { - // If we do not have stations on map we use the lat/lng positions - for (var i = 0; i < this._packet.station_location_path.length; i++) { - if ( - this._packet.station_location_path[i][0] !== null && - this._packet.station_location_path[i][1] !== null - ) { - lineCoordinates.push({ - lat: parseFloat(this._packet.station_location_path[i][0]), - lng: parseFloat(this._packet.station_location_path[i][1]), - }); - } - } - } - return lineCoordinates; - }); diff --git a/jslib/src/trackdirect/services/callbackExecutor.js b/jslib/src/trackdirect/services/callbackExecutor.js deleted file mode 100755 index 70ec367..0000000 --- a/jslib/src/trackdirect/services/callbackExecutor.js +++ /dev/null @@ -1,154 +0,0 @@ -trackdirect.services.callbackExecutor = { - /** @type {object} */ - settings: { - minTimeBeforeSleep: 30, // in ms - }, - - /** @type {boolean} */ - _running: false, - - /** @type {int} */ - _lastSleepTimestamp: 0, - - /** @type {object} */ - _lastAddedUniqueCallback: null, - - /** @type {array} */ - _lowPriorityQueue: [], - _normalPriorityQueue: [], - _highPriorityQueue: [], - - /** - * Add a call to the execution queue - * @param {object} thisObj - * @param {function} callback - * @param {array} argsArray - * @return {trackdirect.services.callbackExecutor} - */ - add: function (thisObj, callback, argsArray) { - var callBackString = callback.toString() + ":" + argsArray.toString(); - this._lastAddedUniqueCallback = callBackString; - - this._normalPriorityQueue.push(function () { - callback.apply(thisObj, argsArray); - trackdirect.services.callbackExecutor._next(); - }); - - this.start(); - return this; - }, - - /** - * Add a call to the execution queue if it is unique - * @param {object} thisObj - * @param {function} callback - * @param {array} argsArray - * @return {trackdirect.services.callbackExecutor} - */ - addIfUnique: function (thisObj, callback, argsArray) { - var callBackString = callback.toString() + ":" + argsArray.toString(); - if (this._lastAddedUniqueCallback == callBackString) { - return this; - } - this._lastAddedUniqueCallback = callBackString; - - this._normalPriorityQueue.push(function () { - callback.apply(thisObj, argsArray); - trackdirect.services.callbackExecutor._next(); - }); - - this.start(); - return this; - }, - - /** - * Add a call to the execution queue, and give it priority over regular calls - * @param {object} thisObj - * @param {function} callback - * @param {array} argsArray - * @return {trackdirect.services.callbackExecutor} - */ - addWithPriority: function (thisObj, callback, argsArray) { - this._highPriorityQueue.push(function () { - callback.apply(thisObj, argsArray); - trackdirect.services.callbackExecutor._next(); - }); - - this.start(); - return this; - }, - - /** - * Add a call to the execution queue, and give it lower priority than regular calls - * @param {object} thisObj - * @param {function} callback - * @param {array} argsArray - * @return {trackdirect.services.callbackExecutor} - */ - addWithLowPriority: function (thisObj, callback, argsArray) { - this._lowPriorityQueue.push(function () { - callback.apply(thisObj, argsArray); - trackdirect.services.callbackExecutor._next(); - }); - - this.start(); - return this; - }, - - /** - * Start the execution - * @return {trackdirect.services.callbackExecutor} - */ - start: function () { - if (!this._running) { - this._next(); - } - return this; - }, - - /** - * Execute the first call in queue when ready - */ - _next: function () { - var secondsSinceLastSleep = Date.now() - this._lastSleepTimestamp; - if (secondsSinceLastSleep > this.settings.minTimeBeforeSleep) { - // Sleep 1ms after some ms, to avoid browser freeze - // We also count recursive calls since last sleep to avoid the error: Maximum call stack size exceeded - this._lastSleepTimestamp = Date.now(); - var me = this; - setTimeout(function () { - me._dequeue(); - }, 1); - } else { - this._dequeue(); - } - }, - - /** - * Execute the first call in queue - */ - _dequeue: function () { - var shift = this._highPriorityQueue.shift(); - if (shift) { - this._running = true; - shift(); - return; - } - - shift = this._normalPriorityQueue.shift(); - if (shift) { - this._running = true; - shift(); - return; - } - - shift = this._lowPriorityQueue.shift(); - if (shift) { - this._running = true; - shift(); - return; - } - - this._running = false; - }, -}; diff --git a/jslib/src/trackdirect/services/dateFormatter.js b/jslib/src/trackdirect/services/dateFormatter.js deleted file mode 100755 index c8b7f14..0000000 --- a/jslib/src/trackdirect/services/dateFormatter.js +++ /dev/null @@ -1,100 +0,0 @@ -trackdirect.services.dateFormatter = { - /** - * Returns the timestamp in a humen readable form (based on browser locale settings) - * @param {int} timestamp - * @param {boolean} includeTimeZone - * @param {boolean} includeTime - * @param {boolean} useLocalTimeZone - * @return {string} - */ - getDateString: function ( - timestamp, - includeTimeZone, - includeTime, - useLocalTimeZone - ) { - includeTimeZone = - typeof includeTimeZone !== "undefined" ? includeTimeZone : true; - includeTime = typeof includeTime !== "undefined" ? includeTime : true; - useLocalTimeZone = - typeof useLocalTimeZone !== "undefined" ? useLocalTimeZone : true; - var date = new Date(timestamp * 1000); - - if (useLocalTimeZone) { - var theMoment = moment(date); - } else { - var theMoment = moment.utc(date); - } - - if (!theMoment.isValid()) { - return timestamp; - } - - if (includeTime) { - if (includeTimeZone) { - return theMoment.format("L LTSZ"); - } else { - return theMoment.format("L LTS"); - } - } else { - return theMoment.format("L"); - } - }, - - /** - * Get timestamp age as human readable string - * @param {int} timestamp - * @return {string} - */ - getAgeString: function (timestamp) { - // get total seconds between the times - var delta = Math.abs(Math.floor(Date.now() / 1000) - timestamp); - - // calculate (and subtract) whole days - var days = Math.floor(delta / 86400); - delta -= days * 86400; - - // calculate (and subtract) whole hours - var hours = Math.floor(delta / 3600) % 24; - delta -= hours * 3600; - - // calculate (and subtract) whole minutes - var minutes = Math.floor(delta / 60) % 60; - delta -= minutes * 60; - - // what's left is seconds - var seconds = Math.floor(delta % 60); - - var timeAgoList = []; - if (days > 1) { - timeAgoList.push(days + " days"); - } else if (days > 0) { - timeAgoList.push(days + " day"); - } - if (hours > 1) { - timeAgoList.push(hours + " hours"); - } else if (hours > 0) { - timeAgoList.push(hours + " hour"); - } - if (minutes > 1) { - timeAgoList.push(minutes + " minutes"); - } else if (minutes > 0) { - timeAgoList.push(minutes + " minute"); - } - if (seconds == 1) { - timeAgoList.push(seconds + " second"); - } else { - timeAgoList.push(seconds + " seconds"); - } - - if (timeAgoList.length > 1) { - return ( - timeAgoList.slice(0, timeAgoList.length - 1).join(", ") + - " and " + - timeAgoList[timeAgoList.length - 1] - ); - } else { - return timeAgoList[timeAgoList.length - 1]; - } - }, -}; diff --git a/jslib/src/trackdirect/services/distanceCalculator.js b/jslib/src/trackdirect/services/distanceCalculator.js deleted file mode 100755 index 93f3236..0000000 --- a/jslib/src/trackdirect/services/distanceCalculator.js +++ /dev/null @@ -1,133 +0,0 @@ -trackdirect.services.distanceCalculator = { - /** - * Get distance in meters between to positions - * @param {LatLngLiteral} p1 - * @param {LatLngLiteral} p2 - * @return {float} - */ - getDistance: function (p1, p2) { - var R = 6378137; // Earth’s mean radius in meter - var dLat = this._radians(p2.lat - p1.lat); - var dLong = this._radians(p2.lng - p1.lng); - var a = - Math.sin(dLat / 2) * Math.sin(dLat / 2) + - Math.cos(this._radians(p1.lat)) * - Math.cos(this._radians(p2.lat)) * - Math.sin(dLong / 2) * - Math.sin(dLong / 2); - var c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); - var d = R * c; - if (isNaN(d)) { - return null; - } else { - return d; // returns the distance in meter - } - }, - - /** - * Get center of specified coordinates - * @param {array} coords - * @return {LatLngLiteral} - */ - getCenter: function (coords) { - var x = coords.map(function (a) { - return a.lat; - }); - var y = coords.map(function (a) { - return a.lng; - }); - var minX = Math.min.apply(null, x); - var maxX = Math.max.apply(null, x); - var minY = Math.min.apply(null, y); - var maxY = Math.max.apply(null, y); - return { lat: (minX + maxX) / 2, lng: (minY + maxY) / 2 }; - }, - - /** - * Get position by course and distance - * @param {LatLngLiteral} latLng - * @param {int} course - * @param {int} distanceInMeters - * @return {LatLngLiteral} - */ - getPositionByDistance: function (latLng, course, distanceInMeters) { - var dist = distanceInMeters / 1000; // Convert to km - dist = dist / 6371; // Divide by Earth radius - var brng = (course * Math.PI) / 180; // Convert to Rad - - var lat1 = (latLng.lat * Math.PI) / 180, - lon1 = (latLng.lng * Math.PI) / 180; - - var lat2 = Math.asin( - Math.sin(lat1) * Math.cos(dist) + - Math.cos(lat1) * Math.sin(dist) * Math.cos(brng) - ); - - var lon2 = - lon1 + - Math.atan2( - Math.sin(brng) * Math.sin(dist) * Math.cos(lat1), - Math.cos(dist) - Math.sin(lat1) * Math.sin(lat2) - ); - - if (isNaN(lat2) || isNaN(lon2)) return null; - - // Convert to deg and return - var latitude = (lat2 * 180) / Math.PI; - var longitude = (lon2 * 180) / Math.PI; - return { - lat: Math.round(latitude * 100000) / 100000, - lng: Math.round(longitude * 100000) / 100000, - }; - }, - - /** - * Get bearing between two points - * @param {object} p1 - * @param {object} p2 - * @return {float} - */ - getBearing: function (p1, p2) { - startLat = this._radians(p1.lat); - startLong = this._radians(p1.lng); - endLat = this._radians(p2.lat); - endLong = this._radians(p2.lng); - - var dLong = endLong - startLong; - var dPhi = Math.log( - Math.tan(endLat / 2.0 + Math.PI / 4.0) / - Math.tan(startLat / 2.0 + Math.PI / 4.0) - ); - - //var dLong = Math.sin(endLong - startLong) * Math.cos(endLat); - //var dPhi = Math.cos(startLat)*Math.sin(endLat) - Math.sin(startLat)*Math.cos(endLat)*Math.cos(endLong-startLong); - - if (Math.abs(dLong) > Math.PI) { - if (dLong > 0.0) { - dLong = -(2.0 * Math.PI - dLong); - } else { - dLong = 2.0 * Math.PI + dLong; - } - } - - return (this._degrees(Math.atan2(dLong, dPhi)) + 360.0) % 360.0; - }, - - /** - * Convert degrees to radians - * @param {float} n - * @return {float} - */ - _radians: function (n) { - return n * (Math.PI / 180); - }, - - /** - * Convert radians to degrees - * @param {float} n - * @return {float} - */ - _degrees: function (n) { - return n * (180 / Math.PI); - }, -}; diff --git a/jslib/src/trackdirect/services/imperialConverter.js b/jslib/src/trackdirect/services/imperialConverter.js deleted file mode 100755 index c4622ad..0000000 --- a/jslib/src/trackdirect/services/imperialConverter.js +++ /dev/null @@ -1,64 +0,0 @@ -trackdirect.services.imperialConverter = { - /** - * Convert km to miles (or km/h to mph) - * @param {float} value - * @return float - */ - convertKilometerToMile: function (value) { - return value * 0.621371192; - }, - - /** - * Convert meter per second to miles per second - * @param {float} value - * @return float - */ - convertMpsToMph: function (value) { - return value * 2.23693629; - }, - - /** - * Convert meter to feet - * @param {float} value - * @return float - */ - convertMeterToFeet: function (value) { - return value * 3.2808399; - }, - - /** - * Convert meter to yard - * @param {float} value - * @return float - */ - convertMeterToYard: function (value) { - return value * 1.0936133; - }, - - /** - * Convert mm to inches - * @param {float} value - * @return float - */ - convertMmToInch: function (value) { - return value * 0.0393700787; - }, - - /** - * Convert celcius to fahrenheit - * @param {float} value - * @return float - */ - convertCelciusToFahrenheit: function (value) { - return value * (9 / 5) + 32; - }, - - /** - * Convert hPa/mbar to mmhg - * @param {float} value - * @return float - */ - convertMbarToMmhg: function (value) { - return value * 0.75006375541921; - }, -}; diff --git a/jslib/src/trackdirect/services/mapAttributionModifier.js b/jslib/src/trackdirect/services/mapAttributionModifier.js deleted file mode 100755 index a4a1d8f..0000000 --- a/jslib/src/trackdirect/services/mapAttributionModifier.js +++ /dev/null @@ -1,297 +0,0 @@ -trackdirect.services.mapAttributionModifier = { - _hereBaseAttributionData: null, - _hereAerialAttributionData: null, - _latestAttribution: null, - _isHereInitialized: false, - _eventListeners: {}, - _eventListenersOnce: {}, - - /** - * Update the map attribution - * @param {trackdirect.models.Map} map - */ - update: function (map) { - if (this._isHereTileProvider(map)) { - this.updateHereAttribution(map); - } else if (this._latestAttribution != null) { - // Just reset attribution to default - this.setMapAttribution(map, ""); - } - }, - - /** - * Update the HERE map attribution - * @param {trackdirect.models.Map} map - */ - updateHereAttribution: function (map) { - this._loadHereAttributionData(map); - var me = this; - var base = this._getMapTileBase(map); - if (base == "base") { - this.addListener( - "init-here-base", - function () { - var attribution = me._getHereAttributionString(map); - me.setMapAttribution(map, attribution); - }, - true - ); - } else if (base == "aerial") { - this.addListener( - "init-here-aerial", - function () { - var attribution = me._getHereAttributionString(map); - me.setMapAttribution(map, attribution); - }, - true - ); - } - }, - - /** - * Set map attribution to specified string - * @param {trackdirect.models.Map} map - * @param {string} attribution - */ - setMapAttribution: function (map, attribution) { - if (this._latestAttribution != attribution) { - map.attributionControl.removeAttribution(this._latestAttribution); - if (attribution != "") { - map.attributionControl.addAttribution(attribution); - } - } - - this._latestAttribution = attribution; - }, - - /** - * Add new event listener - * @param {string} event - * @param {string} handler - * @param {boolean} execOnce - */ - addListener: function (event, handler, execOnce) { - execOnce = typeof execOnce !== "undefined" ? execOnce : false; - - if (execOnce) { - if (!(event in this._eventListenersOnce)) { - this._eventListenersOnce[event] = []; - } - this._eventListenersOnce[event].push(handler); - } else { - if (!(event in this._eventListeners)) { - this._eventListeners[event] = []; - } - this._eventListeners[event].push(handler); - } - - if (event == "init-here-base" && this._isHereBaseInitialized) { - this._emitEventListeners("init-here-base"); - } - - if (event == "init-here-aerial" && this._isHereAerialInitialized) { - this._emitEventListeners("init-here-aerial"); - } - }, - - /** - * Returnes true if the map tile provider is here.com - * @param {trackdirect.models.Map} map - * @return {Boolean} - */ - _isHereTileProvider: function (map) { - var tileLayer = map.getLeafletTileLayer(); - if ( - tileLayer !== null && - typeof tileLayer._url !== "undefined" && - tileLayer._url.indexOf("here.com") >= 0 - ) { - return true; - } - - return false; - }, - - /** - * Get map tile variant - * @param {trackdirect.models.Map} map - */ - _getMapTileOptions: function (map) { - var tileLayer = map.getLeafletTileLayer(); - if (tileLayer !== null && typeof tileLayer.options !== "undefined") { - return tileLayer.options; - } - - return null; - }, - - /** - * Get map tile variant - * @param {trackdirect.models.Map} map - */ - _getMapTileVariant: function (map) { - var options = this._getMapTileOptions(map); - if (options.variant !== "undefined") { - return options.variant; - } - - return null; - }, - - /** - * Get map tile initial variant - * @param {trackdirect.models.Map} map - */ - _getMapTileInitialVariant: function (map) { - var mapVariant = this._getMapTileVariant(map); - var dotIndex = mapVariant.indexOf("."); - if (dotIndex >= 0) { - return mapVariant.substring(0, dotIndex); - } - return mapVariant; - }, - - /** - * Get map tile base variant - * @param {trackdirect.models.Map} map - */ - _getMapTileBase: function (map) { - var options = this._getMapTileOptions(map); - if (options.base !== "undefined") { - return options.base; - } - - return null; - }, - - /** - * Get HERE copyright string for the currnet map bounds - * @param {trackdirect.models.Map} map - */ - _getHereAttributionString: function (map) { - var result = []; - var mapBaseVariant = this._getMapTileInitialVariant(map); - - if (this._getMapTileBase(map) == "base") { - var data = this._hereBaseAttributionData; - } else if (this._getMapTileBase(map) == "aerial") { - var data = this._hereAerialAttributionData; - } - - if (data !== null && typeof data[mapBaseVariant] !== "undefined") { - for (var i = 0, len = data[mapBaseVariant].length; i < len; i++) { - var attributionArea = data[mapBaseVariant][i]; - - if ( - parseInt(map.getZoom()) >= parseInt(attributionArea.minLevel) && - parseInt(map.getZoom()) <= parseInt(attributionArea.maxLevel) - ) { - if ( - typeof attributionArea.boxes === "undefined" || - this._isAnyBoxVisible(attributionArea.boxes, map) - ) { - var attributionText = - '<span title="' + - attributionArea.alt + - '">' + - attributionArea.label + - "</span>"; - if (result.indexOf(attributionText) < 0) { - result.push(attributionText); - } - } - } - } - } - return result.join(", "); - }, - - /** - * Returnes true if any lat/lng box intersects with current map bounds - * @param {Array} boxes - * @param {trackdirect.models.Map} map - */ - _isAnyBoxVisible: function (boxes, map) { - if (typeof boxes !== "undefined" && Array.isArray(boxes)) { - for (var i = 0, len = boxes.length; i < len; i++) { - var box = boxes[i]; - if (Array.isArray(box) && box.length >= 4) { - var boxBounds = L.latLngBounds( - L.latLng(parseFloat(box[0]), parseFloat(box[1])), - L.latLng(parseFloat(box[2]), parseFloat(box[3])) - ); - if (boxBounds.isValid() && boxBounds.intersects(map.getBounds())) { - return true; - } - } - } - } - return false; - }, - - /** - * Download HERE copyright data - * @param {trackdirect.models.Map} map - */ - _loadHereAttributionData: function (map) { - var options = this._getMapTileOptions(map); - var base = this._getMapTileBase(map); - - if ( - (this._hereBaseAttributionData === null && base == "base") || - (this._hereAerialAttributionData === null && base == "aerial") - ) { - var me = this; - - jQuery.ajax({ - url: - "https://1." + - base + - ".maps.api.here.com/maptile/2.1/copyright/" + - options.mapID + - "?app_id=" + - options.app_id + - "&app_code=" + - options.app_code, - type: "GET", - dataType: "json", - timeout: 5000, // sets timeout to 5 seconds - success: function (result) { - if (base == "base") { - me._hereBaseAttributionData = result; - me._isHereBaseInitialized = true; - me._emitEventListeners("init-here-base"); - } else if (base == "aerial") { - me._hereAerialAttributionData = result; - me._isHereAerialInitialized = true; - me._emitEventListeners("init-here-aerial"); - } - }, - error: function (xhr) { - console.log("Failed to load map copyright data"); - }, - }); - } - }, - - /** - * Call all listeners that are listening on specified event - * @param {string} event - * @param {string} arg - */ - _emitEventListeners: function (event, arg) { - if (event in this._eventListeners) { - for (var i = 0; i < this._eventListeners[event].length; i++) { - this._eventListeners[event][i](arg); - } - } - - if (event in this._eventListenersOnce) { - var eventListenersOnce = this._eventListenersOnce[event].splice(0); - this._eventListenersOnce[event] = []; - for (var i = 0; i < eventListenersOnce.length; i++) { - eventListenersOnce[i](arg); - } - } - }, -}; diff --git a/jslib/src/trackdirect/services/mapSectorCalculator.js b/jslib/src/trackdirect/services/mapSectorCalculator.js deleted file mode 100755 index 153b667..0000000 --- a/jslib/src/trackdirect/services/mapSectorCalculator.js +++ /dev/null @@ -1,148 +0,0 @@ -trackdirect.services.MapSectorCalculator = { - /** - * Get all visible map sectors - * @param {LatLngBounds} bounds - * @return {array} - */ - getMapSectors: function (bounds) { - var result = []; - // We include some border map sectors so that markers appear before user enter those map-sectors (if they are loaded from server) - if (typeof google === "object" && typeof google.maps === "object") { - var maxLat = Math.ceil(bounds.getNorthEast().lat()) + 1; - var minLat = Math.floor(bounds.getSouthWest().lat()) - 1; - var maxLng = Math.ceil(bounds.getNorthEast().lng()) + 1; - var minLng = Math.floor(bounds.getSouthWest().lng()) - 1; - } else if (typeof L === "object") { - var maxLat = Math.ceil(bounds.getNorthEast().lat) + 1; - var minLat = Math.floor(bounds.getSouthWest().lat) - 1; - var maxLng = Math.ceil(bounds.getNorthEast().lng) + 1; - var minLng = Math.floor(bounds.getSouthWest().lng) - 1; - } - - if (maxLng < minLng) { - result = result.concat( - trackdirect.services.MapSectorCalculator.getMapSectorsByInterval( - minLat, - maxLat, - minLng, - 180.0 - ) - ); - minLng = -180.0; - } - - result = result.concat( - trackdirect.services.MapSectorCalculator.getMapSectorsByInterval( - minLat, - maxLat, - minLng, - maxLng - ) - ); - - // Add the world wide area code - // This seems to result in very bad performance... so we skip it - //result.push(99999999); - return result; - }, - - /** - * Get all visible map sectors - * @param {float} minLat - * @param {float} maxLat - * @param {float} minLng - * @param {float} maxLng - * @return {array} - */ - getMapSectorsByInterval: function (minLat, maxLat, minLng, maxLng) { - var result = []; - - var minAreaCode = this.getMapSector(minLat, minLng); - var maxAreaCode = this.getMapSector(maxLat, maxLng); - - lngDiff = parseInt(Math.ceil(maxLng)) - parseInt(Math.ceil(minLng)); - - var areaCode = minAreaCode; - while (areaCode <= maxAreaCode) { - if (areaCode % 10 == 5) { - result.push(areaCode); - } else { - result.push(areaCode); - result.push(areaCode + 5); - } - - for (var i = 1; i <= lngDiff; i++) { - if (areaCode % 10 == 5) { - result.push(areaCode + 10 * i - 5); - result.push(areaCode + 10 * i); - } else { - result.push(areaCode + 10 * i); - result.push(areaCode + 10 * i + 5); - } - } - - // Lat takes 0.2 jumps - areaCode = areaCode + 20000; - } - return result; - }, - - /** - * Get map sector based on latitude and longitude - * @param {float} latitude - * @param {float} longitude - */ - getMapSector: function (latitude, longitude) { - var lat = this._getMapSectorLatRepresentation(latitude); - var lng = this._getMapSectorLngRepresentation(longitude); - - // lat interval: 0 - 18000000 - // lng interval: 0 - 00003600 - return lat + lng; - }, - - /** - * Get map sector latitude part - * @param {float} latitude - * @return int - */ - _getMapSectorLatRepresentation: function (latitude) { - var lat = parseInt(Math.floor(latitude)) + 90; // Positive representation of lat; - var latDecimalPart = latitude - Math.floor(latitude); - - if (latDecimalPart < 0.2) { - lat = lat * 10 + 0; - } else if (latDecimalPart < 0.4) { - lat = lat * 10 + 2; - } else if (latDecimalPart < 0.6) { - lat = lat * 10 + 4; - } else if (latDecimalPart < 0.8) { - lat = lat * 10 + 6; - } else { - lat = lat * 10 + 8; - } - lat = lat * 10000; - - // lat interval: 0 - 18000000 - return lat; - }, - - /** - * Get map sector longitude part - * @param {float} longitude - * @return int - */ - _getMapSectorLngRepresentation: function (longitude) { - lng = parseInt(Math.floor(longitude)) + 180; // Positive representation of lng; - lngDecimalPart = longitude - Math.floor(longitude); - - if (lngDecimalPart < 0.5) { - lng = lng * 10 + 0; - } else { - lng = lng * 10 + 5; - } - - // lng interval: 0 - 00003600 - return lng; - }, -}; diff --git a/jslib/src/trackdirect/services/stationColorCalculator.js b/jslib/src/trackdirect/services/stationColorCalculator.js deleted file mode 100755 index 547ed09..0000000 --- a/jslib/src/trackdirect/services/stationColorCalculator.js +++ /dev/null @@ -1,67 +0,0 @@ -trackdirect.services.stationColorCalculator = { - _colors: [ - "#3333ff", // blue (#2A2AFF) - "#9900cc", // purple (#7002A7) - "#006600", // green (#005500) - "#cc0000", // red (#A70202) - ], - _stationColorId: {}, - - /** - * Get html (hex) color for specified packet - * @param {object} packet - * @return {string} - */ - getColor: function (packet) { - var colorId = this.getColorId(packet); - return this._colors[colorId]; - }, - - /** - * Get kml color for specified packet - * @param {object} packet - * @return {string} - */ - getKmlColor(packet) { - var hex = this.getColor(packet); - var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex); - if (result) { - return "FF" + result[3] + result[2] + result[1]; - } - return null; - }, - - /** - * Get color ID for specified packet - * Color will be selected by station/object name (this make sures that object with different senders still get the same color) - * @param {object} packet - * @return {int} - */ - getColorId: function (packet) { - if (packet.station_name in this._stationColorId) { - // This station has allready got a color, use it - colorId = this._stationColorId[packet.station_name]; - return colorId; - } else { - var hash = this._simplehashStr(packet.station_name); - var colorId = hash % this._colors.length; - this._stationColorId[packet.station_name] = colorId; - } - - return colorId; - }, - - /** - * Get simple hash from string (bad hash, but good for our usage) - * @param {string} str - * @return int - */ - _simplehashStr: function (str) { - var hash = 0; - for (var i = 0; i < str.length; i++) { - var charCode = str.charCodeAt(i); - hash += charCode; - } - return hash; - }, -}; diff --git a/jslib/src/trackdirect/services/symbolPathFinder.js b/jslib/src/trackdirect/services/symbolPathFinder.js deleted file mode 100755 index 017fba8..0000000 --- a/jslib/src/trackdirect/services/symbolPathFinder.js +++ /dev/null @@ -1,102 +0,0 @@ -trackdirect.services.symbolPathFinder = { - /** - * Returns icon http path - * - * - The default width and height is 24x24, if anything bigger is specified more space round the symbol will be added - * - The deafult scale is 24x24, if anything else is specified the image will be scaled to that size - * - * @param {string} symbolTable - * @param {string} symbol - * @param {int} course - * @param {int} width - * @param {int} height - * @param {int} scaleWidth - * @param {int} scaleHeight - * @return {string} - */ - getFilePath: function ( - symbolTable, - symbol, - course, - width, - height, - scaleWidth, - scaleHeight - ) { - if ( - typeof symbol !== "undefined" && - typeof symbolTable !== "undefined" && - symbol !== null && - symbolTable !== null && - symbol.length >= 1 && - symbolTable.length >= 1 - ) { - var symbolAsciiValue = symbol.charCodeAt(0); - var symbolTableAsciiValue = symbolTable.charCodeAt(0); - } else { - var symbolAsciiValue = 125; - var symbolTableAsciiValue = 47; - } - - var sizeStrValue = ""; - if (width !== null && height !== null) { - sizeStrValue = "-" + width + "x" + height; - } - - var scaleStrValue = this._getIconFilePathScalePart(scaleWidth, scaleHeight); - var courseStrValue = this._getIconFilePathCoursePart(course); - var url = - trackdirect.settings.markerSymbolBaseDir + - "symbol-" + - symbolAsciiValue + - "-" + - symbolTableAsciiValue + - courseStrValue + - sizeStrValue + - scaleStrValue + - ".png"; - - return trackdirect.settings.baseUrl + url; - }, - - /** - * Returns the course part of the icon http path - * - * @param {int} course - * @return {string} - */ - _getIconFilePathCoursePart: function (course) { - var courseStrValue = ""; - if (course !== null) { - var courseValue = Math.round(parseInt(course) / 10) * 10; - while (courseValue > 360) { - courseValue = courseValue - 360; - } - while (courseValue < 0) { - courseValue = courseValue + 360; - } - courseStrValue = "-" + courseValue; - } - return courseStrValue; - }, - - /** - * Returns the scale part of the icon http path - * - The default scale is 24x24, if anything else is specified the image will be scaled to that size - * - * @param {int} scaleWidth - * @param {int} scaleHeight - * @return {string} - */ - _getIconFilePathScalePart: function (scaleWidth, scaleHeight) { - var scaleStrValue = ""; - if (scaleWidth !== null && scaleHeight !== null) { - if (isHighDensity()) { - scaleStrValue = "-scale" + scaleWidth * 2 + "x" + scaleHeight * 2; - } else { - scaleStrValue = "-scale" + scaleWidth + "x" + scaleHeight; - } - } - return scaleStrValue; - }, -}; diff --git a/trackdirect-apache.dockerfile b/trackdirect-apache.dockerfile deleted file mode 100644 index 44d0452..0000000 --- a/trackdirect-apache.dockerfile +++ /dev/null @@ -1,23 +0,0 @@ -FROM php:7.2-apache - -RUN apt-get update && apt-get install -y \ - git \ - libpq-dev \ - postgresql-client-common \ - postgresql-client \ - libevent-dev \ - libmagickwand-dev \ - imagemagick \ - inkscape \ - && rm -rf /var/lib/apt/lists/* - -RUN pecl install imagick && docker-php-ext-enable imagick && docker-php-ext-install pdo pdo_pgsql && docker-php-ext-install gd && docker-php-ext-enable gd - -COPY . /root/trackdirect -COPY config/000-default.conf /etc/apache2/sites-enabled/ - -RUN a2enmod rewrite -RUN chmod a+rx / && chmod a+rx -R /root -RUN chmod 777 /root/trackdirect/htdocs/public/symbols -RUN chmod 777 /root/trackdirect/htdocs/public/heatmaps - diff --git a/trackdirect-python.dockerfile b/trackdirect-python.dockerfile deleted file mode 100644 index fb1dae3..0000000 --- a/trackdirect-python.dockerfile +++ /dev/null @@ -1,13 +0,0 @@ - -FROM ubuntu:20.04 -RUN apt-get update && apt-get install -y \ - python3 \ - python3-dev \ - python3-pip \ - python-is-python3 \ - git \ - && rm -rf /var/lib/apt/lists/* - -COPY . /root/trackdirect - -RUN pip install -r /root/trackdirect/requirements.txt -- GitLab